Merge pull request #468 from andeplane/gcmc_fix_nlocal

Using correct value for atom->nlocal in translate/rotate in fix_gcmc.cpp
This commit is contained in:
sjplimp
2017-05-30 10:45:39 -06:00
committed by GitHub

View File

@ -1026,10 +1026,9 @@ void FixGCMC::attempt_molecule_translation()
com_displace[1] = displace*ry; com_displace[1] = displace*ry;
com_displace[2] = displace*rz; com_displace[2] = displace*rz;
int nlocal = atom->nlocal;
if (regionflag) { if (regionflag) {
int *mask = atom->mask; int *mask = atom->mask;
for (int i = 0; i < nlocal; i++) { for (int i = 0; i < atom->nlocal; i++) {
if (atom->molecule[i] == translation_molecule) { if (atom->molecule[i] == translation_molecule) {
mask[i] |= molecule_group_bit; mask[i] |= molecule_group_bit;
} else { } else {
@ -1060,7 +1059,7 @@ void FixGCMC::attempt_molecule_translation()
} }
double energy_after = 0.0; double energy_after = 0.0;
for (int i = 0; i < nlocal; i++) { for (int i = 0; i < atom->nlocal; i++) {
if (atom->molecule[i] == translation_molecule) { if (atom->molecule[i] == translation_molecule) {
coord[0] = x[i][0] + com_displace[0]; coord[0] = x[i][0] + com_displace[0];
coord[1] = x[i][1] + com_displace[1]; coord[1] = x[i][1] + com_displace[1];
@ -1077,7 +1076,7 @@ void FixGCMC::attempt_molecule_translation()
if (energy_after_sum < MAXENERGYTEST && if (energy_after_sum < MAXENERGYTEST &&
random_equal->uniform() < random_equal->uniform() <
exp(beta*(energy_before_sum - energy_after_sum))) { exp(beta*(energy_before_sum - energy_after_sum))) {
for (int i = 0; i < nlocal; i++) { for (int i = 0; i < atom->nlocal; i++) {
if (atom->molecule[i] == translation_molecule) { if (atom->molecule[i] == translation_molecule) {
x[i][0] += com_displace[0]; x[i][0] += com_displace[0];
x[i][1] += com_displace[1]; x[i][1] += com_displace[1];
@ -1112,9 +1111,8 @@ void FixGCMC::attempt_molecule_rotation()
error->warning(FLERR,"Energy of old configuration in " error->warning(FLERR,"Energy of old configuration in "
"fix gcmc is > MAXENERGYTEST."); "fix gcmc is > MAXENERGYTEST.");
int nlocal = atom->nlocal;
int *mask = atom->mask; int *mask = atom->mask;
for (int i = 0; i < nlocal; i++) { for (int i = 0; i < atom->nlocal; i++) {
if (atom->molecule[i] == rotation_molecule) { if (atom->molecule[i] == rotation_molecule) {
mask[i] |= molecule_group_bit; mask[i] |= molecule_group_bit;
} else { } else {
@ -1147,7 +1145,7 @@ void FixGCMC::attempt_molecule_rotation()
imageint *image = atom->image; imageint *image = atom->image;
double energy_after = 0.0; double energy_after = 0.0;
int n = 0; int n = 0;
for (int i = 0; i < nlocal; i++) { for (int i = 0; i < atom->nlocal; i++) {
if (mask[i] & molecule_group_bit) { if (mask[i] & molecule_group_bit) {
double xtmp[3]; double xtmp[3];
domain->unmap(x[i],image[i],xtmp); domain->unmap(x[i],image[i],xtmp);
@ -1176,7 +1174,7 @@ void FixGCMC::attempt_molecule_rotation()
random_equal->uniform() < random_equal->uniform() <
exp(beta*(energy_before_sum - energy_after_sum))) { exp(beta*(energy_before_sum - energy_after_sum))) {
int n = 0; int n = 0;
for (int i = 0; i < nlocal; i++) { for (int i = 0; i < atom->nlocal; i++) {
if (mask[i] & molecule_group_bit) { if (mask[i] & molecule_group_bit) {
image[i] = imagezero; image[i] = imagezero;
x[i][0] = atom_coord[n][0]; x[i][0] = atom_coord[n][0];
@ -1692,10 +1690,9 @@ void FixGCMC::attempt_molecule_translation_full()
com_displace[1] = displace*ry; com_displace[1] = displace*ry;
com_displace[2] = displace*rz; com_displace[2] = displace*rz;
int nlocal = atom->nlocal;
if (regionflag) { if (regionflag) {
int *mask = atom->mask; int *mask = atom->mask;
for (int i = 0; i < nlocal; i++) { for (int i = 0; i < atom->nlocal; i++) {
if (atom->molecule[i] == translation_molecule) { if (atom->molecule[i] == translation_molecule) {
mask[i] |= molecule_group_bit; mask[i] |= molecule_group_bit;
} else { } else {
@ -1725,7 +1722,7 @@ void FixGCMC::attempt_molecule_translation_full()
com_displace[2] = displace*rz; com_displace[2] = displace*rz;
} }
for (int i = 0; i < nlocal; i++) { for (int i = 0; i < atom->nlocal; i++) {
if (atom->molecule[i] == translation_molecule) { if (atom->molecule[i] == translation_molecule) {
x[i][0] += com_displace[0]; x[i][0] += com_displace[0];
x[i][1] += com_displace[1]; x[i][1] += com_displace[1];
@ -1744,7 +1741,7 @@ void FixGCMC::attempt_molecule_translation_full()
energy_stored = energy_after; energy_stored = energy_after;
} else { } else {
energy_stored = energy_before; energy_stored = energy_before;
for (int i = 0; i < nlocal; i++) { for (int i = 0; i < atom->nlocal; i++) {
if (atom->molecule[i] == translation_molecule) { if (atom->molecule[i] == translation_molecule) {
x[i][0] -= com_displace[0]; x[i][0] -= com_displace[0];
x[i][1] -= com_displace[1]; x[i][1] -= com_displace[1];
@ -1769,9 +1766,8 @@ void FixGCMC::attempt_molecule_rotation_full()
double energy_before = energy_stored; double energy_before = energy_stored;
int nlocal = atom->nlocal;
int *mask = atom->mask; int *mask = atom->mask;
for (int i = 0; i < nlocal; i++) { for (int i = 0; i < atom->nlocal; i++) {
if (atom->molecule[i] == rotation_molecule) { if (atom->molecule[i] == rotation_molecule) {
mask[i] |= molecule_group_bit; mask[i] |= molecule_group_bit;
} else { } else {
@ -1804,7 +1800,7 @@ void FixGCMC::attempt_molecule_rotation_full()
imageint *image = atom->image; imageint *image = atom->image;
imageint image_orig[natoms_per_molecule]; imageint image_orig[natoms_per_molecule];
int n = 0; int n = 0;
for (int i = 0; i < nlocal; i++) { for (int i = 0; i < atom->nlocal; i++) {
if (mask[i] & molecule_group_bit) { if (mask[i] & molecule_group_bit) {
atom_coord[n][0] = x[i][0]; atom_coord[n][0] = x[i][0];
atom_coord[n][1] = x[i][1]; atom_coord[n][1] = x[i][1];
@ -1837,7 +1833,7 @@ void FixGCMC::attempt_molecule_rotation_full()
} else { } else {
energy_stored = energy_before; energy_stored = energy_before;
int n = 0; int n = 0;
for (int i = 0; i < nlocal; i++) { for (int i = 0; i < atom->nlocal; i++) {
if (mask[i] & molecule_group_bit) { if (mask[i] & molecule_group_bit) {
x[i][0] = atom_coord[n][0]; x[i][0] = atom_coord[n][0];
x[i][1] = atom_coord[n][1]; x[i][1] = atom_coord[n][1];