forked from lijiext/lammps
git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@11395 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
parent
1631ff7a4c
commit
6fbbb51569
|
@ -119,6 +119,17 @@ void FixPeriNeigh::init()
|
||||||
neighbor->requests[irequest]->half = 0;
|
neighbor->requests[irequest]->half = 0;
|
||||||
neighbor->requests[irequest]->full = 1;
|
neighbor->requests[irequest]->full = 1;
|
||||||
neighbor->requests[irequest]->occasional = 1;
|
neighbor->requests[irequest]->occasional = 1;
|
||||||
|
|
||||||
|
// compute PD scale factor, stored in Atom class, used by DumpCFG
|
||||||
|
|
||||||
|
int nlocal = atom->nlocal;
|
||||||
|
double vone = 0.0;
|
||||||
|
for (int i = 0; i < nlocal; i++) vone += atom->vfrac[i];
|
||||||
|
double vave;
|
||||||
|
MPI_Allreduce(&vone,&vave,1,MPI_DOUBLE,MPI_SUM,world);
|
||||||
|
if (atom->natoms) vave /= atom->natoms;
|
||||||
|
if (vave > 0.0) atom->pdscale = 1.44 / pow(vave,1.0/3.0);
|
||||||
|
else atom->pdscale = 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
|
@ -140,6 +140,10 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp)
|
||||||
cs_flag = csforce_flag = vforce_flag = ervelforce_flag= etag_flag = 0;
|
cs_flag = csforce_flag = vforce_flag = ervelforce_flag= etag_flag = 0;
|
||||||
rho_flag = e_flag = cv_flag = vest_flag = 0;
|
rho_flag = e_flag = cv_flag = vest_flag = 0;
|
||||||
|
|
||||||
|
// Peridynamic scale factor
|
||||||
|
|
||||||
|
pdscale = 1.0;
|
||||||
|
|
||||||
// ntype-length arrays
|
// ntype-length arrays
|
||||||
|
|
||||||
mass = NULL;
|
mass = NULL;
|
||||||
|
|
|
@ -114,6 +114,10 @@ class Atom : protected Pointers {
|
||||||
int cs_flag,csforce_flag,vforce_flag,ervelforce_flag,etag_flag;
|
int cs_flag,csforce_flag,vforce_flag,ervelforce_flag,etag_flag;
|
||||||
int rho_flag,e_flag,cv_flag,vest_flag;
|
int rho_flag,e_flag,cv_flag,vest_flag;
|
||||||
|
|
||||||
|
// Peridynamics scale factor, used by dump cfg
|
||||||
|
|
||||||
|
double pdscale;
|
||||||
|
|
||||||
// molecule templates
|
// molecule templates
|
||||||
// each template can be a set of consecutive molecules
|
// each template can be a set of consecutive molecules
|
||||||
// each with same ID (stored in molecules)
|
// each with same ID (stored in molecules)
|
||||||
|
|
|
@ -130,22 +130,16 @@ void DumpCFG::init_style()
|
||||||
|
|
||||||
void DumpCFG::write_header(bigint n)
|
void DumpCFG::write_header(bigint n)
|
||||||
{
|
{
|
||||||
// special handling for atom style peri
|
// set scale factor used by AtomEye for CFG viz
|
||||||
// use average volume of particles to scale particles to mimic C atoms
|
// default = 1.0
|
||||||
// scale box dimension to sc lattice for C with sigma = 1.44 Angstroms
|
// for peridynamics, set to pre-computed PD scale factor
|
||||||
// special handling for unwrapped coordinates
|
// so PD particles mimic C atoms
|
||||||
|
// for unwrapped coords, set to UNWRAPEXPAND (10.0)
|
||||||
|
// so molecules are not split across periodic box boundaries
|
||||||
|
|
||||||
double scale;
|
double scale = 1.0;
|
||||||
if (atom->peri_flag) {
|
if (atom->peri_flag) scale = atom->pdscale;
|
||||||
int nlocal = atom->nlocal;
|
else if (unwrapflag == 1) scale = UNWRAPEXPAND;
|
||||||
double vone = 0.0;
|
|
||||||
for (int i = 0; i < nlocal; i++) vone += atom->vfrac[i];
|
|
||||||
double vave;
|
|
||||||
MPI_Allreduce(&vone,&vave,1,MPI_DOUBLE,MPI_SUM,world);
|
|
||||||
if (atom->natoms) vave /= atom->natoms;
|
|
||||||
if (vave > 0.0) scale = 1.44 / pow(vave,1.0/3.0);
|
|
||||||
} else if (unwrapflag == 1) scale = UNWRAPEXPAND;
|
|
||||||
else scale = 1.0;
|
|
||||||
|
|
||||||
char str[64];
|
char str[64];
|
||||||
sprintf(str,"Number of particles = %s\n",BIGINT_FORMAT);
|
sprintf(str,"Number of particles = %s\n",BIGINT_FORMAT);
|
||||||
|
|
Loading…
Reference in New Issue