More
This commit is contained in:
@ -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;
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user