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) :
|
||||
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->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
|
||||
@ -214,7 +215,7 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge
|
||||
combo->setObjectName("group");
|
||||
combo->setToolTip("Select group to display");
|
||||
combo->setObjectName("group");
|
||||
int ngroup = lammps->id_count("group");
|
||||
int ngroup = lammps->id_count("group");
|
||||
constexpr int BUFLEN = 256;
|
||||
char gname[BUFLEN];
|
||||
for (int i = 0; i < ngroup; ++i) {
|
||||
@ -271,7 +272,7 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge
|
||||
// properties directly since lookup in reset_view() will have failed
|
||||
dobox->setChecked(showbox);
|
||||
dovdw->setChecked(vdwfactor > 1.0);
|
||||
dovdw->setEnabled(useelements || usediameter);
|
||||
dovdw->setEnabled(useelements || usediameter || usesigma);
|
||||
doaxes->setChecked(showaxes);
|
||||
dossao->setChecked(usessao);
|
||||
doanti->setChecked(antialias);
|
||||
@ -336,7 +337,7 @@ void ImageViewer::edit_size()
|
||||
void ImageViewer::toggle_ssao()
|
||||
{
|
||||
auto *button = qobject_cast<QPushButton *>(sender());
|
||||
usessao = !usessao;
|
||||
usessao = !usessao;
|
||||
button->setChecked(usessao);
|
||||
createImage();
|
||||
}
|
||||
@ -344,7 +345,7 @@ void ImageViewer::toggle_ssao()
|
||||
void ImageViewer::toggle_anti()
|
||||
{
|
||||
auto *button = qobject_cast<QPushButton *>(sender());
|
||||
antialias = !antialias;
|
||||
antialias = !antialias;
|
||||
button->setChecked(antialias);
|
||||
createImage();
|
||||
}
|
||||
@ -363,7 +364,7 @@ void ImageViewer::toggle_vdw()
|
||||
void ImageViewer::toggle_box()
|
||||
{
|
||||
auto *button = qobject_cast<QPushButton *>(sender());
|
||||
showbox = !showbox;
|
||||
showbox = !showbox;
|
||||
button->setChecked(showbox);
|
||||
createImage();
|
||||
}
|
||||
@ -371,7 +372,7 @@ void ImageViewer::toggle_box()
|
||||
void ImageViewer::toggle_axes()
|
||||
{
|
||||
auto *button = qobject_cast<QPushButton *>(sender());
|
||||
showaxes = !showaxes;
|
||||
showaxes = !showaxes;
|
||||
button->setChecked(showaxes);
|
||||
createImage();
|
||||
}
|
||||
@ -443,7 +444,7 @@ void ImageViewer::createImage()
|
||||
// determine elements from masses and set their covalent radii
|
||||
int ntypes = lammps->extract_setting("ntypes");
|
||||
int nbondtypes = lammps->extract_setting("nbondtypes");
|
||||
auto *masses = (double *)lammps->extract_atom("mass");
|
||||
auto *masses = (double *)lammps->extract_atom("mass");
|
||||
QString units = (const char *)lammps->extract_global("units");
|
||||
QString elements = "element ";
|
||||
QString adiams;
|
||||
@ -458,9 +459,19 @@ void ImageViewer::createImage()
|
||||
}
|
||||
}
|
||||
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
|
||||
if (useelements || usediameter) {
|
||||
if (useelements || usediameter || usesigma) {
|
||||
auto *button = findChild<QPushButton *>("vdw");
|
||||
if (button) button->setEnabled(true);
|
||||
} else {
|
||||
@ -469,7 +480,7 @@ void ImageViewer::createImage()
|
||||
if (button) button->setEnabled(false);
|
||||
}
|
||||
|
||||
if (!adiams.isEmpty())
|
||||
if (useelements)
|
||||
dumpcmd += blank + "element";
|
||||
else
|
||||
dumpcmd += blank + settings.value("color", "type").toString();
|
||||
@ -503,7 +514,8 @@ void ImageViewer::createImage()
|
||||
|
||||
dumpcmd += " modify boxcolor " + settings.value("boxcolor", "yellow").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();
|
||||
|
||||
lammps->command(dumpcmd.toLocal8Bit());
|
||||
|
||||
Reference in New Issue
Block a user