try using LJ sigma for particle radius in VDW mode
This commit is contained in:
@ -132,7 +132,8 @@ static const QString blank(" ");
|
|||||||
|
|
||||||
ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidget *parent) :
|
ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidget *parent) :
|
||||||
QDialog(parent), menuBar(new QMenuBar), imageLabel(new QLabel), scrollArea(new QScrollArea),
|
QDialog(parent), menuBar(new QMenuBar), imageLabel(new QLabel), scrollArea(new QScrollArea),
|
||||||
lammps(_lammps), group("all"), filename(fileName), useelements(false), usediameter(false)
|
lammps(_lammps), group("all"), filename(fileName), useelements(false), usediameter(false),
|
||||||
|
usesigma(false)
|
||||||
{
|
{
|
||||||
imageLabel->setBackgroundRole(QPalette::Base);
|
imageLabel->setBackgroundRole(QPalette::Base);
|
||||||
imageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
|
imageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
|
||||||
@ -271,7 +272,7 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge
|
|||||||
// properties directly since lookup in reset_view() will have failed
|
// properties directly since lookup in reset_view() will have failed
|
||||||
dobox->setChecked(showbox);
|
dobox->setChecked(showbox);
|
||||||
dovdw->setChecked(vdwfactor > 1.0);
|
dovdw->setChecked(vdwfactor > 1.0);
|
||||||
dovdw->setEnabled(useelements || usediameter);
|
dovdw->setEnabled(useelements || usediameter || usesigma);
|
||||||
doaxes->setChecked(showaxes);
|
doaxes->setChecked(showaxes);
|
||||||
dossao->setChecked(usessao);
|
dossao->setChecked(usessao);
|
||||||
doanti->setChecked(antialias);
|
doanti->setChecked(antialias);
|
||||||
@ -458,9 +459,19 @@ void ImageViewer::createImage()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
usediameter = lammps->extract_setting("radius_flag") != 0;
|
usediameter = lammps->extract_setting("radius_flag") != 0;
|
||||||
|
// use Lennard-Jones sigma for radius, if available
|
||||||
|
usesigma = false;
|
||||||
|
const char *pair_style = (const char *)lammps->extract_global("pair_style");
|
||||||
|
if (!useelements && pair_style && (strncmp(pair_style, "lj/", 3) == 0)) {
|
||||||
|
double **sigma = (double **) lammps->extract_pair("sigma");
|
||||||
|
if (sigma) {
|
||||||
|
usesigma = true;
|
||||||
|
for (int i = 1; i <= ntypes; ++i)
|
||||||
|
adiams += QString("adiam %1 %2 ").arg(i).arg(vdwfactor * sigma[i][i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
// adjust pushbutton state and clear adiams string to disable VDW display, if needed
|
// adjust pushbutton state and clear adiams string to disable VDW display, if needed
|
||||||
if (useelements || usediameter) {
|
if (useelements || usediameter || usesigma) {
|
||||||
auto *button = findChild<QPushButton *>("vdw");
|
auto *button = findChild<QPushButton *>("vdw");
|
||||||
if (button) button->setEnabled(true);
|
if (button) button->setEnabled(true);
|
||||||
} else {
|
} else {
|
||||||
@ -469,7 +480,7 @@ void ImageViewer::createImage()
|
|||||||
if (button) button->setEnabled(false);
|
if (button) button->setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!adiams.isEmpty())
|
if (useelements)
|
||||||
dumpcmd += blank + "element";
|
dumpcmd += blank + "element";
|
||||||
else
|
else
|
||||||
dumpcmd += blank + settings.value("color", "type").toString();
|
dumpcmd += blank + settings.value("color", "type").toString();
|
||||||
@ -503,7 +514,8 @@ void ImageViewer::createImage()
|
|||||||
|
|
||||||
dumpcmd += " modify boxcolor " + settings.value("boxcolor", "yellow").toString();
|
dumpcmd += " modify boxcolor " + settings.value("boxcolor", "yellow").toString();
|
||||||
dumpcmd += " backcolor " + settings.value("background", "black").toString();
|
dumpcmd += " backcolor " + settings.value("background", "black").toString();
|
||||||
if (!adiams.isEmpty()) dumpcmd += blank + elements + blank + adiams + blank;
|
if (useelements) dumpcmd += blank + elements + blank + adiams + blank;
|
||||||
|
if (usesigma) dumpcmd += blank + adiams + blank;
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
lammps->command(dumpcmd.toLocal8Bit());
|
lammps->command(dumpcmd.toLocal8Bit());
|
||||||
|
|||||||
@ -88,7 +88,7 @@ private:
|
|||||||
int xsize, ysize;
|
int xsize, ysize;
|
||||||
int hrot, vrot;
|
int hrot, vrot;
|
||||||
double zoom, vdwfactor;
|
double zoom, vdwfactor;
|
||||||
bool showbox, showaxes, antialias, usessao, useelements, usediameter;
|
bool showbox, showaxes, antialias, usessao, useelements, usediameter, usesigma;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -76,6 +76,19 @@ void *LammpsWrapper::extract_global(const char *keyword)
|
|||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void *LammpsWrapper::extract_pair(const char *keyword)
|
||||||
|
{
|
||||||
|
void *val = nullptr;
|
||||||
|
if (lammps_handle) {
|
||||||
|
#if defined(LAMMPS_GUI_USE_PLUGIN)
|
||||||
|
val = ((liblammpsplugin_t *)plugin_handle)->extract_pair(lammps_handle, keyword);
|
||||||
|
#else
|
||||||
|
val = lammps_extract_pair(lammps_handle, keyword);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
void *LammpsWrapper::extract_atom(const char *keyword)
|
void *LammpsWrapper::extract_atom(const char *keyword)
|
||||||
{
|
{
|
||||||
void *val = nullptr;
|
void *val = nullptr;
|
||||||
|
|||||||
@ -32,6 +32,7 @@ public:
|
|||||||
int version();
|
int version();
|
||||||
int extract_setting(const char *keyword);
|
int extract_setting(const char *keyword);
|
||||||
void *extract_global(const char *keyword);
|
void *extract_global(const char *keyword);
|
||||||
|
void *extract_pair(const char *keyword);
|
||||||
void *extract_atom(const char *keyword);
|
void *extract_atom(const char *keyword);
|
||||||
|
|
||||||
int id_count(const char *idtype);
|
int id_count(const char *idtype);
|
||||||
|
|||||||
Reference in New Issue
Block a user