Merge pull request #2963 from akohlmey/hybrid-one-coeff-bugfix

Make sure the one_coeff flag is applied to hybrid sub-styles
This commit is contained in:
Axel Kohlmeyer
2021-09-28 09:44:10 -04:00
committed by GitHub
3 changed files with 16 additions and 1 deletions

View File

@ -512,13 +512,16 @@ void PairHybrid::coeff(int narg, char **arg)
// then unset setflag/map assigned to that style before setting it below
// in case pair coeff for this sub-style is being called for 2nd time
if (!none && styles[m]->one_coeff)
if (!none && styles[m]->one_coeff) {
if ((strcmp(arg[0],"*") != 0) || (strcmp(arg[1],"*") != 0))
error->all(FLERR,"Incorrect args for pair coefficients");
for (int i = 1; i <= atom->ntypes; i++)
for (int j = i; j <= atom->ntypes; j++)
if (nmap[i][j] && map[i][j][0] == m) {
setflag[i][j] = 0;
nmap[i][j] = 0;
}
}
// set setflag and which type pairs map to which sub-style
// if sub-style is none: set hybrid setflag, wipe out map

View File

@ -70,6 +70,12 @@ void PairHybridOverlay::coeff(int narg, char **arg)
arg[2+multflag] = arg[1];
arg[1+multflag] = arg[0];
// ensure that one_coeff flag is honored
if (!none && styles[m]->one_coeff)
if ((strcmp(arg[0],"*") != 0) || (strcmp(arg[1],"*") != 0))
error->all(FLERR,"Incorrect args for pair coefficients");
// invoke sub-style coeff() starting with 1st remaining arg
if (!none) styles[m]->coeff(narg-1-multflag,arg+1+multflag);

View File

@ -474,6 +474,12 @@ void PairHybridScaled::coeff(int narg, char **arg)
arg[2 + multflag] = arg[1];
arg[1 + multflag] = arg[0];
// ensure that one_coeff flag is honored
if (!none && styles[m]->one_coeff)
if ((strcmp(arg[0],"*") != 0) || (strcmp(arg[1],"*") != 0))
error->all(FLERR,"Incorrect args for pair coefficients");
// invoke sub-style coeff() starting with 1st remaining arg
if (!none) styles[m]->coeff(narg - 1 - multflag, &arg[1 + multflag]);