git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@11946 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
@ -300,7 +300,7 @@ void Balance::command(int narg, char **arg)
|
|||||||
|
|
||||||
if (domain->triclinic) domain->x2lamda(atom->nlocal);
|
if (domain->triclinic) domain->x2lamda(atom->nlocal);
|
||||||
Irregular *irregular = new Irregular(lmp);
|
Irregular *irregular = new Irregular(lmp);
|
||||||
irregular->migrate_atoms();
|
irregular->migrate_atoms(1);
|
||||||
delete irregular;
|
delete irregular;
|
||||||
if (domain->triclinic) domain->lamda2x(atom->nlocal);
|
if (domain->triclinic) domain->lamda2x(atom->nlocal);
|
||||||
|
|
||||||
|
|||||||
@ -362,7 +362,7 @@ void ChangeBox::command(int narg, char **arg)
|
|||||||
if (domain->triclinic) domain->x2lamda(atom->nlocal);
|
if (domain->triclinic) domain->x2lamda(atom->nlocal);
|
||||||
domain->reset_box();
|
domain->reset_box();
|
||||||
Irregular *irregular = new Irregular(lmp);
|
Irregular *irregular = new Irregular(lmp);
|
||||||
irregular->migrate_atoms();
|
irregular->migrate_atoms(1);
|
||||||
delete irregular;
|
delete irregular;
|
||||||
if (domain->triclinic) domain->lamda2x(atom->nlocal);
|
if (domain->triclinic) domain->lamda2x(atom->nlocal);
|
||||||
|
|
||||||
|
|||||||
@ -400,7 +400,7 @@ void CreateAtoms::command(int narg, char **arg)
|
|||||||
if (domain->triclinic) domain->x2lamda(atom->nlocal);
|
if (domain->triclinic) domain->x2lamda(atom->nlocal);
|
||||||
domain->reset_box();
|
domain->reset_box();
|
||||||
Irregular *irregular = new Irregular(lmp);
|
Irregular *irregular = new Irregular(lmp);
|
||||||
irregular->migrate_atoms();
|
irregular->migrate_atoms(1);
|
||||||
delete irregular;
|
delete irregular;
|
||||||
if (domain->triclinic) domain->lamda2x(atom->nlocal);
|
if (domain->triclinic) domain->lamda2x(atom->nlocal);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -270,7 +270,7 @@ void DisplaceAtoms::command(int narg, char **arg)
|
|||||||
if (domain->triclinic) domain->x2lamda(atom->nlocal);
|
if (domain->triclinic) domain->x2lamda(atom->nlocal);
|
||||||
domain->reset_box();
|
domain->reset_box();
|
||||||
Irregular *irregular = new Irregular(lmp);
|
Irregular *irregular = new Irregular(lmp);
|
||||||
irregular->migrate_atoms();
|
irregular->migrate_atoms(1);
|
||||||
delete irregular;
|
delete irregular;
|
||||||
if (domain->triclinic) domain->lamda2x(atom->nlocal);
|
if (domain->triclinic) domain->lamda2x(atom->nlocal);
|
||||||
|
|
||||||
|
|||||||
@ -78,7 +78,7 @@ Irregular::~Irregular()
|
|||||||
for triclinic: atoms must be in lamda coords (0-1) before this is called
|
for triclinic: atoms must be in lamda coords (0-1) before this is called
|
||||||
------------------------------------------------------------------------- */
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
void Irregular::migrate_atoms()
|
void Irregular::migrate_atoms(int sortflag)
|
||||||
{
|
{
|
||||||
// clear global->local map since atoms move to new procs
|
// clear global->local map since atoms move to new procs
|
||||||
// clear old ghosts so map_set() at end will operate only on local atoms
|
// clear old ghosts so map_set() at end will operate only on local atoms
|
||||||
@ -145,10 +145,8 @@ void Irregular::migrate_atoms()
|
|||||||
|
|
||||||
// create irregular communication plan, perform comm, destroy plan
|
// create irregular communication plan, perform comm, destroy plan
|
||||||
// returned nrecv = size of buffer needed for incoming atoms
|
// returned nrecv = size of buffer needed for incoming atoms
|
||||||
// debug: turn on sorting for repoducible irregular() via extra final arg
|
|
||||||
|
|
||||||
//int nrecv = create_atom(nsendatom,sizes,proclist,1);
|
int nrecv = create_atom(nsendatom,sizes,proclist,sortflag);
|
||||||
int nrecv = create_atom(nsendatom,sizes,proclist);
|
|
||||||
if (nrecv > maxrecv) grow_recv(nrecv);
|
if (nrecv > maxrecv) grow_recv(nrecv);
|
||||||
exchange_atom(buf_send,sizes,buf_recv);
|
exchange_atom(buf_send,sizes,buf_recv);
|
||||||
destroy_atom();
|
destroy_atom();
|
||||||
@ -255,7 +253,7 @@ int Irregular::migrate_check()
|
|||||||
return total # of doubles I will recv (not including self)
|
return total # of doubles I will recv (not including self)
|
||||||
------------------------------------------------------------------------- */
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
int Irregular::create_atom(int n, int *sizes, int *proclist, int sort)
|
int Irregular::create_atom(int n, int *sizes, int *proclist, int sortflag)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -370,7 +368,7 @@ int Irregular::create_atom(int n, int *sizes, int *proclist, int sort)
|
|||||||
// useful for debugging to insure reproducible ordering of received atoms
|
// useful for debugging to insure reproducible ordering of received atoms
|
||||||
// invoke by adding final arg = 1 to create_atom() call in migrate_atoms()
|
// invoke by adding final arg = 1 to create_atom() call in migrate_atoms()
|
||||||
|
|
||||||
if (sort) {
|
if (sortflag) {
|
||||||
int *order = new int[nrecv];
|
int *order = new int[nrecv];
|
||||||
int *proc_recv_ordered = new int[nrecv];
|
int *proc_recv_ordered = new int[nrecv];
|
||||||
int *length_recv_ordered = new int[nrecv];
|
int *length_recv_ordered = new int[nrecv];
|
||||||
|
|||||||
@ -27,7 +27,7 @@ class Irregular : protected Pointers {
|
|||||||
|
|
||||||
Irregular(class LAMMPS *);
|
Irregular(class LAMMPS *);
|
||||||
~Irregular();
|
~Irregular();
|
||||||
void migrate_atoms();
|
void migrate_atoms(int sortflag = 0);
|
||||||
int migrate_check();
|
int migrate_check();
|
||||||
int create_data(int, int *);
|
int create_data(int, int *);
|
||||||
void exchange_data(char *, int, char *);
|
void exchange_data(char *, int, char *);
|
||||||
@ -87,7 +87,7 @@ class Irregular : protected Pointers {
|
|||||||
PlanAtom *aplan;
|
PlanAtom *aplan;
|
||||||
PlanData *dplan;
|
PlanData *dplan;
|
||||||
|
|
||||||
int create_atom(int, int *, int *, int sort = 0);
|
int create_atom(int, int *, int *, int);
|
||||||
void exchange_atom(double *, int *, double *);
|
void exchange_atom(double *, int *, double *);
|
||||||
void destroy_atom();
|
void destroy_atom();
|
||||||
int coord2proc(double *, int &, int &, int &);
|
int coord2proc(double *, int &, int &, int &);
|
||||||
|
|||||||
@ -547,7 +547,7 @@ void ReadDump::atoms()
|
|||||||
if (triclinic) domain->x2lamda(atom->nlocal);
|
if (triclinic) domain->x2lamda(atom->nlocal);
|
||||||
domain->reset_box();
|
domain->reset_box();
|
||||||
Irregular *irregular = new Irregular(lmp);
|
Irregular *irregular = new Irregular(lmp);
|
||||||
irregular->migrate_atoms();
|
irregular->migrate_atoms(1);
|
||||||
delete irregular;
|
delete irregular;
|
||||||
if (triclinic) domain->lamda2x(atom->nlocal);
|
if (triclinic) domain->lamda2x(atom->nlocal);
|
||||||
|
|
||||||
|
|||||||
@ -429,13 +429,14 @@ void ReadRestart::command(int narg, char **arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// move atoms to new processors via irregular()
|
// move atoms to new processors via irregular()
|
||||||
|
// turn sorting on in migrate_atoms() to avoid non-reproducible restarts
|
||||||
// in case read by different proc than wrote restart file
|
// in case read by different proc than wrote restart file
|
||||||
// first do map_init() since irregular->migrate_atoms() will do map_clear()
|
// first do map_init() since irregular->migrate_atoms() will do map_clear()
|
||||||
|
|
||||||
if (atom->map_style) atom->map_init();
|
if (atom->map_style) atom->map_init();
|
||||||
if (domain->triclinic) domain->x2lamda(atom->nlocal);
|
if (domain->triclinic) domain->x2lamda(atom->nlocal);
|
||||||
Irregular *irregular = new Irregular(lmp);
|
Irregular *irregular = new Irregular(lmp);
|
||||||
irregular->migrate_atoms();
|
irregular->migrate_atoms(1);
|
||||||
delete irregular;
|
delete irregular;
|
||||||
if (domain->triclinic) domain->lamda2x(atom->nlocal);
|
if (domain->triclinic) domain->lamda2x(atom->nlocal);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user