git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15189 f3b2605a-c512-4ea7-a41b-209d697bcdaa

This commit is contained in:
sjplimp
2016-06-17 20:54:47 +00:00
parent e135e3ee79
commit b74ea86bcf
6 changed files with 436 additions and 0 deletions

View File

@ -16,6 +16,7 @@
#include "atom.h"
#include "update.h"
#include "domain.h"
#include "modify.h"
#include "respa.h"
#include "error.h"
@ -28,6 +29,16 @@ FixEnforce2D::FixEnforce2D(LAMMPS *lmp, int narg, char **arg) :
Fix(lmp, narg, arg)
{
if (narg != 3) error->all(FLERR,"Illegal fix enforce2d command");
nfixlist = 0;
flist = NULL;
}
/* ---------------------------------------------------------------------- */
FixEnforce2D::~FixEnforce2D()
{
delete [] flist;
}
/* ---------------------------------------------------------------------- */
@ -47,6 +58,22 @@ void FixEnforce2D::init()
{
if (domain->dimension == 3)
error->all(FLERR,"Cannot use fix enforce2d with 3d simulation");
// list of fixes with enforce2d methods
nfixlist = 0;
for (int i = 0; i < modify->nfix; i++)
if (modify->fix[i]->enforce2d_flag) nfixlist++;
if (nfixlist) {
delete [] flist;
flist = new Fix*[nfixlist];
nfixlist = 0;
for (int i = 0; i < modify->nfix; i++) {
if (modify->fix[i]->enforce2d_flag)
flist[nfixlist++] = modify->fix[i];
}
}
}
/* ---------------------------------------------------------------------- */
@ -116,6 +143,12 @@ void FixEnforce2D::post_force(int vflag)
torque[i][1] = 0.0;
}
}
// invoke other fixes that enforce 2d
// fix rigid variants
for (int m = 0; m < nfixlist; m++)
flist[m]->enforce2d();
}
/* ---------------------------------------------------------------------- */