support metal2real unit conversion in pair style drip

This commit is contained in:
Axel Kohlmeyer
2021-08-17 15:05:23 -04:00
parent 6d53cd1986
commit 4f9941e18d
3 changed files with 142 additions and 5 deletions

View File

@ -51,6 +51,7 @@ PairDRIP::PairDRIP(LAMMPS *lmp) : Pair(lmp)
restartinfo = 0;
manybody_flag = 1;
centroidstressflag = CENTROID_NOTAVAIL;
unit_convert_flag = utils::get_supported_conversions(utils::ENERGY);
params = nullptr;
nearest3neigh = nullptr;
@ -162,6 +163,11 @@ void PairDRIP::read_file(char *filename)
PotentialFileReader reader(lmp, filename, "drip", unit_convert_flag);
char *line;
// transparently convert units for supported conversions
int unit_convert = reader.get_unit_convert();
double conversion_factor = utils::get_conversion_factor(utils::ENERGY, unit_convert);
while ((line = reader.next_line(NPARAMS_PER_LINE))) {
try {
@ -214,6 +220,15 @@ void PairDRIP::read_file(char *filename)
error->one(FLERR, e.what());
}
if (unit_convert) {
params[nparams].C0 *= conversion_factor;
params[nparams].C2 *= conversion_factor;
params[nparams].C4 *= conversion_factor;
params[nparams].C *= conversion_factor;
params[nparams].A *= conversion_factor;
params[nparams].B *= conversion_factor;
}
// convenient precomputations
params[nparams].rhocutsq = params[nparams].rhocut * params[nparams].rhocut;
params[nparams].rcutsq = params[nparams].rcut * params[nparams].rcut;