This commit is contained in:
Aidan Thompson
2022-03-11 16:41:22 -07:00
parent 5216a543ae
commit f691805062
6 changed files with 73 additions and 49 deletions

View File

@ -345,7 +345,7 @@ void MLIAPDescriptorSNAP::read_paramfile(char *paramfilename)
chemflag = 0; chemflag = 0;
bnormflag = 0; bnormflag = 0;
wselfallflag = 0; wselfallflag = 0;
switchinnerflag = 1; switchinnerflag = 0;
for (int i = 0; i < nelements; i++) delete[] elements[i]; for (int i = 0; i < nelements; i++) delete[] elements[i];
delete[] elements; delete[] elements;

View File

@ -54,7 +54,7 @@ ComputeSNAAtom::ComputeSNAAtom(LAMMPS *lmp, int narg, char **arg) :
chemflag = 0; chemflag = 0;
bnormflag = 0; bnormflag = 0;
wselfallflag = 0; wselfallflag = 0;
switchinnerflag = 1; switchinnerflag = 0;
nelements = 1; nelements = 1;
// offset by 1 to match up with types // offset by 1 to match up with types

View File

@ -54,7 +54,7 @@ ComputeSNADAtom::ComputeSNADAtom(LAMMPS *lmp, int narg, char **arg) :
chemflag = 0; chemflag = 0;
bnormflag = 0; bnormflag = 0;
wselfallflag = 0; wselfallflag = 0;
switchinnerflag = 1; switchinnerflag = 0;
nelements = 1; nelements = 1;
// process required arguments // process required arguments

View File

@ -61,7 +61,7 @@ ComputeSnap::ComputeSnap(LAMMPS *lmp, int narg, char **arg) :
chemflag = 0; chemflag = 0;
bnormflag = 0; bnormflag = 0;
wselfallflag = 0; wselfallflag = 0;
switchinnerflag = 1; switchinnerflag = 0;
nelements = 1; nelements = 1;
// process required arguments // process required arguments

View File

@ -53,7 +53,7 @@ ComputeSNAVAtom::ComputeSNAVAtom(LAMMPS *lmp, int narg, char **arg) :
chemflag = 0; chemflag = 0;
bnormflag = 0; bnormflag = 0;
wselfallflag = 0; wselfallflag = 0;
switchinnerflag = 1; switchinnerflag = 0;
nelements = 1; nelements = 1;
// process required arguments // process required arguments

View File

@ -674,7 +674,8 @@ void PairSNAP::read_files(char *coefffilename, char *paramfilename)
if (eof) break; if (eof) break;
MPI_Bcast(line,MAXLINE,MPI_CHAR,0,world); MPI_Bcast(line,MAXLINE,MPI_CHAR,0,world);
// strip comment, skip line if blank // words = ptrs to all words in line
// strip single and double quotes from words
std::vector<std::string> words; std::vector<std::string> words;
try { try {
@ -684,57 +685,80 @@ void PairSNAP::read_files(char *coefffilename, char *paramfilename)
} }
if (words.size() == 0) continue; if (words.size() == 0) continue;
if (words.size() < 2) if (words.size() < 2)
error->all(FLERR,"Incorrect format in SNAP parameter file"); error->all(FLERR,"Incorrect format in SNAP parameter file");
auto keywd = words[0]; auto keywd = words[0];
auto keyval = words[1]; auto keyval = words[1];
if (comm->me == 0) // check for keywords with one value per element
utils::logmesg(lmp,"SNAP keyword {} {}\n",keywd,keyval);
if (keywd == "rcutfac") { if (keywd == "rinner" || keywd == "drinner") {
rcutfac = utils::numeric(FLERR,keyval,false,lmp);
rcutfacflag = 1; if (nwords != nelements+1)
} else if (keywd == "twojmax") { error->all(FLERR,"Incorrect SNAP parameter file");
twojmax = utils::inumeric(FLERR,keyval,false,lmp);
twojmaxflag = 1; if (comm->me == 0)
} else if (keywd == "rfac0") utils::logmesg(lmp,"SNAP keyword {} {} ... \n", keywd, keyval);
rfac0 = utils::numeric(FLERR,keyval,false,lmp);
else if (keywd == "rmin0") if (keywd == "rinner") {
rmin0 = utils::numeric(FLERR,keyval,false,lmp); for (int ielem = 0; ielem < nelements; ielem++) {
else if (keywd == "switchflag") rinnerelem[ielem] = utils::numeric(FLERR,keyval,false,lmp);
switchflag = utils::inumeric(FLERR,keyval,false,lmp); keyval = strtok(nullptr,"' \t\n\r\f");
else if (keywd == "bzeroflag") }
bzeroflag = utils::inumeric(FLERR,keyval,false,lmp); rinnerflag = 1;
else if (keywd == "quadraticflag") } else if (keywd == "drinner") {
quadraticflag = utils::inumeric(FLERR,keyval,false,lmp); printf("drinner nelements = %d %s\n",nelements,keyval.c_str());
else if (keywd == "chemflag") for (int ielem = 0; ielem < nelements; ielem++) {
chemflag = utils::inumeric(FLERR,keyval,false,lmp); drinnerelem[ielem] = utils::numeric(FLERR,keyval,false,lmp);
else if (keywd == "bnormflag") keyval = strtok(nullptr,"' \t\n\r\f");
bnormflag = utils::inumeric(FLERR,keyval,false,lmp); printf("drinner ielem = %d drinnerelem[ielem] = %g\n",ielem,drinnerelem[ielem]);
else if (keywd == "wselfallflag") }
wselfallflag = utils::inumeric(FLERR,keyval,false,lmp); drinnerflag = 1;
else if (keywd == "switchinnerflag")
switchinnerflag = utils::inumeric(FLERR,keyval,false,lmp);
else if (keywd == "chunksize")
chunksize = utils::inumeric(FLERR,keyval,false,lmp);
else if (keywd == "parallelthresh")
parallel_thresh = utils::inumeric(FLERR,keyval,false,lmp);
else if (keywd == "rinner") {
for (int ielem = 0; ielem < nelements; ielem++) {
rinnerelem[ielem] = utils::numeric(FLERR,keyval,false,lmp);
keyval = strtok(nullptr,"' \t\n\r\f");
} }
rinnerflag = 1;
} else if (keywd == "drinner") { } else {
for (int ielem = 0; ielem < nelements; ielem++) {
drinnerelem[ielem] = utils::numeric(FLERR,keyval,false,lmp); // all other keywords take one value
keyval = strtok(nullptr,"' \t\n\r\f");
} if (nwords != 2)
drinnerflag = 1; error->all(FLERR,"Incorrect SNAP parameter file");
} else
error->all(FLERR,"Unknown parameter '{}' in SNAP parameter file", keywd); if (comm->me == 0)
utils::logmesg(lmp,"SNAP keyword {} {}\n",keywd,keyval);
if (keywd == "rcutfac") {
rcutfac = utils::numeric(FLERR,keyval,false,lmp);
rcutfacflag = 1;
} else if (keywd == "twojmax") {
twojmax = utils::inumeric(FLERR,keyval,false,lmp);
twojmaxflag = 1;
} else if (keywd == "rfac0")
rfac0 = utils::numeric(FLERR,keyval,false,lmp);
else if (keywd == "rmin0")
rmin0 = utils::numeric(FLERR,keyval,false,lmp);
else if (keywd == "switchflag")
switchflag = utils::inumeric(FLERR,keyval,false,lmp);
else if (keywd == "bzeroflag")
bzeroflag = utils::inumeric(FLERR,keyval,false,lmp);
else if (keywd == "quadraticflag")
quadraticflag = utils::inumeric(FLERR,keyval,false,lmp);
else if (keywd == "chemflag")
chemflag = utils::inumeric(FLERR,keyval,false,lmp);
else if (keywd == "bnormflag")
bnormflag = utils::inumeric(FLERR,keyval,false,lmp);
else if (keywd == "wselfallflag")
wselfallflag = utils::inumeric(FLERR,keyval,false,lmp);
else if (keywd == "switchinnerflag")
switchinnerflag = utils::inumeric(FLERR,keyval,false,lmp);
else if (keywd == "chunksize")
chunksize = utils::inumeric(FLERR,keyval,false,lmp);
else if (keywd == "parallelthresh")
parallel_thresh = utils::inumeric(FLERR,keyval,false,lmp);
else
error->all(FLERR,"Unknown parameter '{}' in SNAP parameter file", keywd);
}
} }
if (rcutfacflag == 0 || twojmaxflag == 0) if (rcutfacflag == 0 || twojmaxflag == 0)