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

This commit is contained in:
sjplimp
2015-04-01 14:41:30 +00:00
parent dddce90b0c
commit d497d65930
11 changed files with 36 additions and 33 deletions

View File

@ -78,11 +78,9 @@ void ComputeTempRotate::setup()
void ComputeTempRotate::dof_compute() void ComputeTempRotate::dof_compute()
{ {
adjust_dof_fix(); adjust_dof_fix();
double natoms = group->count(igroup); natoms_temp = group->count(igroup);
dof = domain->dimension * natoms; dof = domain->dimension * natoms_temp;
dof -= extra_dof + fix_dof; dof -= extra_dof + fix_dof;
if (dof < 0.0 && natoms > 0.0)
error->all(FLERR,"Temperature compute degrees of freedom < 0");
if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz); if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz);
else tfactor = 0.0; else tfactor = 0.0;
} }
@ -144,6 +142,8 @@ double ComputeTempRotate::compute_scalar()
MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world);
if (dynamic) dof_compute(); if (dynamic) dof_compute();
if (dof < 0.0 && natoms_temp > 0.0)
error->all(FLERR,"Temperature compute degrees of freedom < 0");
scalar *= tfactor; scalar *= tfactor;
return scalar; return scalar;
} }

View File

@ -137,6 +137,7 @@ class Compute : protected Pointers {
protected: protected:
int instance_me; // which Compute class instantiation I am int instance_me; // which Compute class instantiation I am
double natoms_temp; // # of atoms used for temperature calculation
int extra_dof; // extra DOF for temperature computes int extra_dof; // extra DOF for temperature computes
int fix_dof; // DOF due to fixes int fix_dof; // DOF due to fixes
int dynamic; // recount atoms for temperature computes int dynamic; // recount atoms for temperature computes

View File

@ -61,11 +61,9 @@ void ComputeTemp::setup()
void ComputeTemp::dof_compute() void ComputeTemp::dof_compute()
{ {
adjust_dof_fix(); adjust_dof_fix();
double natoms = group->count(igroup); natoms_temp = group->count(igroup);
dof = domain->dimension * natoms; dof = domain->dimension * natoms_temp;
dof -= extra_dof + fix_dof; dof -= extra_dof + fix_dof;
//if (dof < 0.0 && natoms > 0.0)
// error->all(FLERR,"Temperature compute degrees of freedom < 0");
if (dof > 0.0) tfactor = force->mvv2e / (dof * force->boltz); if (dof > 0.0) tfactor = force->mvv2e / (dof * force->boltz);
else tfactor = 0.0; else tfactor = 0.0;
} }
@ -98,6 +96,8 @@ double ComputeTemp::compute_scalar()
MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world);
if (dynamic) dof_compute(); if (dynamic) dof_compute();
if (dof < 0.0 && natoms_temp > 0.0)
error->all(FLERR,"Temperature compute degrees of freedom < 0");
scalar *= tfactor; scalar *= tfactor;
return scalar; return scalar;
} }

View File

@ -288,10 +288,10 @@ double ComputeTempChunk::compute_scalar()
MPI_Allreduce(&rcount,&allcount,1,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(&rcount,&allcount,1,MPI_DOUBLE,MPI_SUM,world);
double dof = nchunk*cdof + adof*allcount; double dof = nchunk*cdof + adof*allcount;
if (dof < 0.0 && allcount > 0.0)
error->all(FLERR,"Temperature compute degrees of freedom < 0");
double tfactor = 0.0; double tfactor = 0.0;
if (dof > 0.0) tfactor = force->mvv2e / (dof * force->boltz); if (dof > 0.0) tfactor = force->mvv2e / (dof * force->boltz);
if (dof < 0.0 && allcount > 0.0)
error->all(FLERR,"Temperature compute degrees of freedom < 0");
scalar *= tfactor; scalar *= tfactor;
return scalar; return scalar;
} }

View File

@ -70,11 +70,9 @@ void ComputeTempCOM::setup()
void ComputeTempCOM::dof_compute() void ComputeTempCOM::dof_compute()
{ {
adjust_dof_fix(); adjust_dof_fix();
double natoms = group->count(igroup); natoms_temp = group->count(igroup);
dof = domain->dimension * natoms; dof = domain->dimension * natoms_temp;
dof -= extra_dof + fix_dof; dof -= extra_dof + fix_dof;
if (dof < 0.0 && natoms > 0.0)
error->all(FLERR,"Temperature compute degrees of freedom < 0");
if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz); if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz);
else tfactor = 0.0; else tfactor = 0.0;
} }
@ -113,6 +111,8 @@ double ComputeTempCOM::compute_scalar()
MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world);
if (dynamic) dof_compute(); if (dynamic) dof_compute();
if (dof < 0.0 && natoms_temp > 0.0)
error->all(FLERR,"Temperature compute degrees of freedom < 0");
scalar *= tfactor; scalar *= tfactor;
return scalar; return scalar;
} }

View File

@ -96,11 +96,9 @@ void ComputeTempDeform::setup()
void ComputeTempDeform::dof_compute() void ComputeTempDeform::dof_compute()
{ {
adjust_dof_fix(); adjust_dof_fix();
double natoms = group->count(igroup); natoms_temp = group->count(igroup);
dof = domain->dimension * natoms; dof = domain->dimension * natoms_temp;
dof -= extra_dof + fix_dof; dof -= extra_dof + fix_dof;
if (dof < 0.0 && natoms > 0.0)
error->all(FLERR,"Temperature compute degrees of freedom < 0");
if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz); if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz);
else tfactor = 0.0; else tfactor = 0.0;
} }
@ -150,6 +148,8 @@ double ComputeTempDeform::compute_scalar()
MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world);
if (dynamic) dof_compute(); if (dynamic) dof_compute();
if (dof < 0.0 && natoms_temp > 0.0)
error->all(FLERR,"Temperature compute degrees of freedom < 0");
scalar *= tfactor; scalar *= tfactor;
return scalar; return scalar;
} }

View File

@ -74,9 +74,9 @@ void ComputeTempPartial::setup()
void ComputeTempPartial::dof_compute() void ComputeTempPartial::dof_compute()
{ {
adjust_dof_fix(); adjust_dof_fix();
double natoms = group->count(igroup); natoms_temp = group->count(igroup);
int nper = xflag+yflag+zflag; int nper = xflag+yflag+zflag;
dof = nper * natoms; dof = nper * natoms_temp;
dof -= (1.0*nper/domain->dimension)*fix_dof + extra_dof; dof -= (1.0*nper/domain->dimension)*fix_dof + extra_dof;
if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz); if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz);
else tfactor = 0.0; else tfactor = 0.0;
@ -119,7 +119,7 @@ double ComputeTempPartial::compute_scalar()
MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world);
if (dynamic) dof_compute(); if (dynamic) dof_compute();
if (tfactor == 0.0 && atom->natoms != 0) if (dof < 0.0 && natoms_temp > 0.0)
error->all(FLERR,"Temperature compute degrees of freedom < 0"); error->all(FLERR,"Temperature compute degrees of freedom < 0");
scalar *= tfactor; scalar *= tfactor;
return scalar; return scalar;

View File

@ -195,11 +195,9 @@ void ComputeTempProfile::setup()
void ComputeTempProfile::dof_compute() void ComputeTempProfile::dof_compute()
{ {
adjust_dof_fix(); adjust_dof_fix();
double natoms = group->count(igroup); natoms_temp = group->count(igroup);
dof = domain->dimension * natoms; dof = domain->dimension * natoms_temp;
dof -= extra_dof + fix_dof; dof -= extra_dof + fix_dof;
if (dof < 0.0 && natoms > 0.0)
error->all(FLERR,"Temperature compute degrees of freedom < 0");
if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz); if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz);
else tfactor = 0.0; else tfactor = 0.0;
} }
@ -243,6 +241,8 @@ double ComputeTempProfile::compute_scalar()
MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world);
if (dynamic) dof_compute(); if (dynamic) dof_compute();
if (dof < 0.0 && natoms_temp > 0.0)
error->all(FLERR,"Temperature compute degrees of freedom < 0");
scalar *= tfactor; scalar *= tfactor;
return scalar; return scalar;
} }

View File

@ -126,11 +126,9 @@ void ComputeTempRamp::setup()
void ComputeTempRamp::dof_compute() void ComputeTempRamp::dof_compute()
{ {
adjust_dof_fix(); adjust_dof_fix();
double natoms = group->count(igroup); natoms_temp = group->count(igroup);
dof = domain->dimension * natoms; dof = domain->dimension * natoms_temp;
dof -= extra_dof + fix_dof; dof -= extra_dof + fix_dof;
if (dof < 0.0 && natoms > 0.0)
error->all(FLERR,"Temperature compute degrees of freedom < 0");
if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz); if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz);
else tfactor = 0.0; else tfactor = 0.0;
} }
@ -172,6 +170,8 @@ double ComputeTempRamp::compute_scalar()
MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world);
if (dynamic) dof_compute(); if (dynamic) dof_compute();
if (dof < 0.0 && natoms_temp > 0.0)
error->all(FLERR,"Temperature compute degrees of freedom < 0");
scalar *= tfactor; scalar *= tfactor;
return scalar; return scalar;
} }

View File

@ -136,6 +136,8 @@ double ComputeTempRegion::compute_scalar()
tarray[1] = t; tarray[1] = t;
MPI_Allreduce(tarray,tarray_all,2,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(tarray,tarray_all,2,MPI_DOUBLE,MPI_SUM,world);
dof = domain->dimension * tarray_all[0] - extra_dof; dof = domain->dimension * tarray_all[0] - extra_dof;
if (dof < 0.0 && tarray_all[0] > 0.0)
error->all(FLERR,"Temperature compute degrees of freedom < 0");
if (dof > 0) scalar = force->mvv2e * tarray_all[1] / (dof * force->boltz); if (dof > 0) scalar = force->mvv2e * tarray_all[1] / (dof * force->boltz);
else scalar = 0.0; else scalar = 0.0;
return scalar; return scalar;

View File

@ -125,7 +125,7 @@ void ComputeTempSphere::dof_compute()
int count,count_all; int count,count_all;
adjust_dof_fix(); adjust_dof_fix();
double natoms = group->count(igroup); natoms_temp = group->count(igroup);
// 6 or 3 dof for extended/point particles for 3d // 6 or 3 dof for extended/point particles for 3d
// 3 or 2 dof for extended/point particles for 2d // 3 or 2 dof for extended/point particles for 2d
@ -166,7 +166,7 @@ void ComputeTempSphere::dof_compute()
// additional adjustments to dof // additional adjustments to dof
if (tempbias == 1) { if (tempbias == 1) {
if (mode == ALL) dof -= tbias->dof_remove(-1) * natoms; if (mode == ALL) dof -= tbias->dof_remove(-1) * natoms_temp;
} else if (tempbias == 2) { } else if (tempbias == 2) {
int *mask = atom->mask; int *mask = atom->mask;
@ -206,8 +206,6 @@ void ComputeTempSphere::dof_compute()
} }
dof -= extra_dof + fix_dof; dof -= extra_dof + fix_dof;
if (dof < 0.0 && natoms > 0.0)
error->all(FLERR,"Temperature compute degrees of freedom < 0");
if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz); if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz);
else tfactor = 0.0; else tfactor = 0.0;
} }
@ -252,6 +250,8 @@ double ComputeTempSphere::compute_scalar()
MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world);
if (dynamic || tempbias == 2) dof_compute(); if (dynamic || tempbias == 2) dof_compute();
if (dof < 0.0 && natoms_temp > 0.0)
error->all(FLERR,"Temperature compute degrees of freedom < 0");
scalar *= tfactor; scalar *= tfactor;
return scalar; return scalar;
} }