git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@8226 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
@ -5,7 +5,7 @@
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
@ -33,7 +33,7 @@ using namespace LAMMPS_NS;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
ComputeStressAtom::ComputeStressAtom(LAMMPS *lmp, int narg, char **arg) :
|
||||
ComputeStressAtom::ComputeStressAtom(LAMMPS *lmp, int narg, char **arg) :
|
||||
Compute(lmp, narg, arg)
|
||||
{
|
||||
if (narg < 3) error->all(FLERR,"Illegal compute stress/atom command");
|
||||
@ -67,9 +67,9 @@ ComputeStressAtom::ComputeStressAtom(LAMMPS *lmp, int narg, char **arg) :
|
||||
else if (strcmp(arg[iarg],"kspace") == 0) kspaceflag = 1;
|
||||
else if (strcmp(arg[iarg],"fix") == 0) fixflag = 1;
|
||||
else if (strcmp(arg[iarg],"virial") == 0) {
|
||||
pairflag = 1;
|
||||
bondflag = angleflag = dihedralflag = improperflag = 1;
|
||||
kspaceflag = fixflag = 1;
|
||||
pairflag = 1;
|
||||
bondflag = angleflag = dihedralflag = improperflag = 1;
|
||||
kspaceflag = fixflag = 1;
|
||||
} else error->all(FLERR,"Illegal compute stress/atom command");
|
||||
iarg++;
|
||||
}
|
||||
@ -132,35 +132,35 @@ void ComputeStressAtom::compute_peratom()
|
||||
double **vatom = force->pair->vatom;
|
||||
for (i = 0; i < npair; i++)
|
||||
for (j = 0; j < 6; j++)
|
||||
stress[i][j] += vatom[i][j];
|
||||
stress[i][j] += vatom[i][j];
|
||||
}
|
||||
|
||||
if (bondflag && force->bond) {
|
||||
double **vatom = force->bond->vatom;
|
||||
for (i = 0; i < nbond; i++)
|
||||
for (j = 0; j < 6; j++)
|
||||
stress[i][j] += vatom[i][j];
|
||||
stress[i][j] += vatom[i][j];
|
||||
}
|
||||
|
||||
if (angleflag && force->angle) {
|
||||
double **vatom = force->angle->vatom;
|
||||
for (i = 0; i < nbond; i++)
|
||||
for (j = 0; j < 6; j++)
|
||||
stress[i][j] += vatom[i][j];
|
||||
stress[i][j] += vatom[i][j];
|
||||
}
|
||||
|
||||
if (dihedralflag && force->dihedral) {
|
||||
double **vatom = force->dihedral->vatom;
|
||||
for (i = 0; i < nbond; i++)
|
||||
for (j = 0; j < 6; j++)
|
||||
stress[i][j] += vatom[i][j];
|
||||
stress[i][j] += vatom[i][j];
|
||||
}
|
||||
|
||||
if (improperflag && force->improper) {
|
||||
double **vatom = force->improper->vatom;
|
||||
for (i = 0; i < nbond; i++)
|
||||
for (j = 0; j < 6; j++)
|
||||
stress[i][j] += vatom[i][j];
|
||||
stress[i][j] += vatom[i][j];
|
||||
}
|
||||
|
||||
// add in per-atom contributions from relevant fixes
|
||||
@ -168,10 +168,10 @@ void ComputeStressAtom::compute_peratom()
|
||||
if (fixflag) {
|
||||
for (int ifix = 0; ifix < modify->nfix; ifix++)
|
||||
if (modify->fix[ifix]->virial_flag) {
|
||||
double **vatom = modify->fix[ifix]->vatom;
|
||||
for (i = 0; i < nlocal; i++)
|
||||
for (j = 0; j < 6; j++)
|
||||
stress[i][j] += vatom[i][j];
|
||||
double **vatom = modify->fix[ifix]->vatom;
|
||||
for (i = 0; i < nlocal; i++)
|
||||
for (j = 0; j < 6; j++)
|
||||
stress[i][j] += vatom[i][j];
|
||||
}
|
||||
}
|
||||
|
||||
@ -185,7 +185,7 @@ void ComputeStressAtom::compute_peratom()
|
||||
double **vatom = force->kspace->vatom;
|
||||
for (i = 0; i < nlocal; i++)
|
||||
for (j = 0; j < 6; j++)
|
||||
stress[i][j] += vatom[i][j];
|
||||
stress[i][j] += vatom[i][j];
|
||||
}
|
||||
|
||||
// zero virial of atoms not in group
|
||||
@ -215,27 +215,27 @@ void ComputeStressAtom::compute_peratom()
|
||||
|
||||
if (rmass) {
|
||||
for (i = 0; i < nlocal; i++)
|
||||
if (mask[i] & groupbit) {
|
||||
onemass = mvv2e * rmass[i];
|
||||
stress[i][0] += onemass*v[i][0]*v[i][0];
|
||||
stress[i][1] += onemass*v[i][1]*v[i][1];
|
||||
stress[i][2] += onemass*v[i][2]*v[i][2];
|
||||
stress[i][3] += onemass*v[i][0]*v[i][1];
|
||||
stress[i][4] += onemass*v[i][0]*v[i][2];
|
||||
stress[i][5] += onemass*v[i][1]*v[i][2];
|
||||
}
|
||||
if (mask[i] & groupbit) {
|
||||
onemass = mvv2e * rmass[i];
|
||||
stress[i][0] += onemass*v[i][0]*v[i][0];
|
||||
stress[i][1] += onemass*v[i][1]*v[i][1];
|
||||
stress[i][2] += onemass*v[i][2]*v[i][2];
|
||||
stress[i][3] += onemass*v[i][0]*v[i][1];
|
||||
stress[i][4] += onemass*v[i][0]*v[i][2];
|
||||
stress[i][5] += onemass*v[i][1]*v[i][2];
|
||||
}
|
||||
|
||||
} else {
|
||||
for (i = 0; i < nlocal; i++)
|
||||
if (mask[i] & groupbit) {
|
||||
onemass = mvv2e * mass[type[i]];
|
||||
stress[i][0] += onemass*v[i][0]*v[i][0];
|
||||
stress[i][1] += onemass*v[i][1]*v[i][1];
|
||||
stress[i][2] += onemass*v[i][2]*v[i][2];
|
||||
stress[i][3] += onemass*v[i][0]*v[i][1];
|
||||
stress[i][4] += onemass*v[i][0]*v[i][2];
|
||||
stress[i][5] += onemass*v[i][1]*v[i][2];
|
||||
}
|
||||
if (mask[i] & groupbit) {
|
||||
onemass = mvv2e * mass[type[i]];
|
||||
stress[i][0] += onemass*v[i][0]*v[i][0];
|
||||
stress[i][1] += onemass*v[i][1]*v[i][1];
|
||||
stress[i][2] += onemass*v[i][2]*v[i][2];
|
||||
stress[i][3] += onemass*v[i][0]*v[i][1];
|
||||
stress[i][4] += onemass*v[i][0]*v[i][2];
|
||||
stress[i][5] += onemass*v[i][1]*v[i][2];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user