From 6fbbb51569ba718fa2e8bfd8101a0b30f4f8a63c Mon Sep 17 00:00:00 2001 From: sjplimp Date: Thu, 30 Jan 2014 19:47:17 +0000 Subject: [PATCH] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@11395 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/PERI/fix_peri_neigh.cpp | 11 +++++++++++ src/atom.cpp | 4 ++++ src/atom.h | 4 ++++ src/dump_cfg.cpp | 24 +++++++++--------------- 4 files changed, 28 insertions(+), 15 deletions(-) diff --git a/src/PERI/fix_peri_neigh.cpp b/src/PERI/fix_peri_neigh.cpp index cd6e3d5c81..23e0a392af 100644 --- a/src/PERI/fix_peri_neigh.cpp +++ b/src/PERI/fix_peri_neigh.cpp @@ -119,6 +119,17 @@ void FixPeriNeigh::init() neighbor->requests[irequest]->half = 0; neighbor->requests[irequest]->full = 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; } /* ---------------------------------------------------------------------- */ diff --git a/src/atom.cpp b/src/atom.cpp index 98d199a013..fb2fa564ea 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -140,6 +140,10 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) cs_flag = csforce_flag = vforce_flag = ervelforce_flag= etag_flag = 0; rho_flag = e_flag = cv_flag = vest_flag = 0; + // Peridynamic scale factor + + pdscale = 1.0; + // ntype-length arrays mass = NULL; diff --git a/src/atom.h b/src/atom.h index 15ce88f08b..fd48f7620a 100644 --- a/src/atom.h +++ b/src/atom.h @@ -114,6 +114,10 @@ class Atom : protected Pointers { int cs_flag,csforce_flag,vforce_flag,ervelforce_flag,etag_flag; int rho_flag,e_flag,cv_flag,vest_flag; + // Peridynamics scale factor, used by dump cfg + + double pdscale; + // molecule templates // each template can be a set of consecutive molecules // each with same ID (stored in molecules) diff --git a/src/dump_cfg.cpp b/src/dump_cfg.cpp index 558512ace7..5b74642fe6 100755 --- a/src/dump_cfg.cpp +++ b/src/dump_cfg.cpp @@ -130,22 +130,16 @@ void DumpCFG::init_style() void DumpCFG::write_header(bigint n) { - // special handling for atom style peri - // use average volume of particles to scale particles to mimic C atoms - // scale box dimension to sc lattice for C with sigma = 1.44 Angstroms - // special handling for unwrapped coordinates + // set scale factor used by AtomEye for CFG viz + // default = 1.0 + // for peridynamics, set to pre-computed PD scale factor + // 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; - if (atom->peri_flag) { - 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) scale = 1.44 / pow(vave,1.0/3.0); - } else if (unwrapflag == 1) scale = UNWRAPEXPAND; - else scale = 1.0; + double scale = 1.0; + if (atom->peri_flag) scale = atom->pdscale; + else if (unwrapflag == 1) scale = UNWRAPEXPAND; char str[64]; sprintf(str,"Number of particles = %s\n",BIGINT_FORMAT);