git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@1602 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
@ -5,10 +5,10 @@ SHELL = /bin/sh
|
|||||||
# System-specific settings
|
# System-specific settings
|
||||||
|
|
||||||
CC = c++
|
CC = c++
|
||||||
CCFLAGS = -O -I../STUBS -I/sw/include -DFFT_FFTW
|
CCFLAGS = -O -I../STUBS -DFFT_FFTW
|
||||||
DEPFLAGS = -M
|
DEPFLAGS = -M
|
||||||
LINK = c++
|
LINK = c++
|
||||||
LINKFLAGS = -O -L/sw/lib
|
LINKFLAGS = -O
|
||||||
USRLIB = -lfftw ../STUBS/mpi.o
|
USRLIB = -lfftw ../STUBS/mpi.o
|
||||||
SYSLIB =
|
SYSLIB =
|
||||||
SIZE = size
|
SIZE = size
|
||||||
|
|||||||
@ -30,6 +30,9 @@ FixAddForce::FixAddForce(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
xvalue = atof(arg[3]);
|
xvalue = atof(arg[3]);
|
||||||
yvalue = atof(arg[4]);
|
yvalue = atof(arg[4]);
|
||||||
zvalue = atof(arg[5]);
|
zvalue = atof(arg[5]);
|
||||||
|
|
||||||
|
force_flag = 0;
|
||||||
|
foriginal[0] = foriginal[1] = foriginal[2] = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
@ -79,8 +82,14 @@ void FixAddForce::post_force(int vflag)
|
|||||||
int *mask = atom->mask;
|
int *mask = atom->mask;
|
||||||
int nlocal = atom->nlocal;
|
int nlocal = atom->nlocal;
|
||||||
|
|
||||||
|
foriginal[0] = foriginal[1] = foriginal[2] = 0.0;
|
||||||
|
force_flag = 0;
|
||||||
|
|
||||||
for (int i = 0; i < nlocal; i++)
|
for (int i = 0; i < nlocal; i++)
|
||||||
if (mask[i] & groupbit) {
|
if (mask[i] & groupbit) {
|
||||||
|
foriginal[0] += f[i][0];
|
||||||
|
foriginal[1] += f[i][1];
|
||||||
|
foriginal[2] += f[i][2];
|
||||||
f[i][0] += xvalue;
|
f[i][0] += xvalue;
|
||||||
f[i][1] += yvalue;
|
f[i][1] += yvalue;
|
||||||
f[i][2] += zvalue;
|
f[i][2] += zvalue;
|
||||||
@ -100,3 +109,18 @@ void FixAddForce::min_post_force(int vflag)
|
|||||||
{
|
{
|
||||||
post_force(vflag);
|
post_force(vflag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
return components of total force on fix group before force was changed
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
double FixAddForce::compute_vector(int n)
|
||||||
|
{
|
||||||
|
// only sum across procs one time
|
||||||
|
|
||||||
|
if (force_flag == 0) {
|
||||||
|
MPI_Allreduce(foriginal,foriginal_all,3,MPI_DOUBLE,MPI_SUM,world);
|
||||||
|
force_flag = 1;
|
||||||
|
}
|
||||||
|
return foriginal_all[n];
|
||||||
|
}
|
||||||
|
|||||||
@ -28,9 +28,12 @@ class FixAddForce : public Fix {
|
|||||||
void post_force(int);
|
void post_force(int);
|
||||||
void post_force_respa(int, int, int);
|
void post_force_respa(int, int, int);
|
||||||
void min_post_force(int);
|
void min_post_force(int);
|
||||||
|
double compute_vector(int);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
double xvalue,yvalue,zvalue;
|
double xvalue,yvalue,zvalue;
|
||||||
|
double foriginal[3],foriginal_all[3];
|
||||||
|
int force_flag;
|
||||||
int nlevels_respa;
|
int nlevels_respa;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -98,33 +98,33 @@ void FixAveForce::post_force(int vflag)
|
|||||||
int *mask = atom->mask;
|
int *mask = atom->mask;
|
||||||
int nlocal = atom->nlocal;
|
int nlocal = atom->nlocal;
|
||||||
|
|
||||||
double sum[3];
|
double foriginal[3];
|
||||||
sum[0] = sum[1] = sum[2] = 0.0;
|
foriginal[0] = foriginal[1] = foriginal[2] = 0.0;
|
||||||
|
|
||||||
for (int i = 0; i < nlocal; i++)
|
for (int i = 0; i < nlocal; i++)
|
||||||
if (mask[i] & groupbit) {
|
if (mask[i] & groupbit) {
|
||||||
sum[0] += f[i][0];
|
foriginal[0] += f[i][0];
|
||||||
sum[1] += f[i][1];
|
foriginal[1] += f[i][1];
|
||||||
sum[2] += f[i][2];
|
foriginal[2] += f[i][2];
|
||||||
}
|
}
|
||||||
|
|
||||||
// average the force on participating atoms
|
// average the force on participating atoms
|
||||||
// add in requested amount
|
// add in requested amount
|
||||||
|
|
||||||
double sumall[3];
|
MPI_Allreduce(foriginal,foriginal_all,3,MPI_DOUBLE,MPI_SUM,world);
|
||||||
MPI_Allreduce(sum,sumall,3,MPI_DOUBLE,MPI_SUM,world);
|
double fave[3];
|
||||||
sumall[0] = sumall[0]/ncount + xvalue;
|
fave[0] = foriginal_all[0]/ncount + xvalue;
|
||||||
sumall[1] = sumall[1]/ncount + yvalue;
|
fave[1] = foriginal_all[1]/ncount + yvalue;
|
||||||
sumall[2] = sumall[2]/ncount + zvalue;
|
fave[2] = foriginal_all[2]/ncount + zvalue;
|
||||||
|
|
||||||
// set force of all participating atoms to same value
|
// set force of all participating atoms to same value
|
||||||
// only for active dimensions
|
// only for active dimensions
|
||||||
|
|
||||||
for (int i = 0; i < nlocal; i++)
|
for (int i = 0; i < nlocal; i++)
|
||||||
if (mask[i] & groupbit) {
|
if (mask[i] & groupbit) {
|
||||||
if (xflag) f[i][0] = sumall[0];
|
if (xflag) f[i][0] = fave[0];
|
||||||
if (yflag) f[i][1] = sumall[1];
|
if (yflag) f[i][1] = fave[1];
|
||||||
if (zflag) f[i][2] = sumall[2];
|
if (zflag) f[i][2] = fave[2];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,27 +141,27 @@ void FixAveForce::post_force_respa(int vflag, int ilevel, int iloop)
|
|||||||
int *mask = atom->mask;
|
int *mask = atom->mask;
|
||||||
int nlocal = atom->nlocal;
|
int nlocal = atom->nlocal;
|
||||||
|
|
||||||
double sum[3];
|
double foriginal[3];
|
||||||
sum[0] = sum[1] = sum[2] = 0.0;
|
foriginal[0] = foriginal[1] = foriginal[2] = 0.0;
|
||||||
|
|
||||||
for (int i = 0; i < nlocal; i++)
|
for (int i = 0; i < nlocal; i++)
|
||||||
if (mask[i] & groupbit) {
|
if (mask[i] & groupbit) {
|
||||||
sum[0] += f[i][0];
|
foriginal[0] += f[i][0];
|
||||||
sum[1] += f[i][1];
|
foriginal[1] += f[i][1];
|
||||||
sum[2] += f[i][2];
|
foriginal[2] += f[i][2];
|
||||||
}
|
}
|
||||||
|
|
||||||
double sumall[3];
|
MPI_Allreduce(foriginal,foriginal_all,3,MPI_DOUBLE,MPI_SUM,world);
|
||||||
MPI_Allreduce(sum,sumall,3,MPI_DOUBLE,MPI_SUM,world);
|
double fave[3];
|
||||||
sumall[0] = sumall[0]/ncount;
|
fave[0] = foriginal_all[0]/ncount;
|
||||||
sumall[1] = sumall[1]/ncount;
|
fave[1] = foriginal_all[1]/ncount;
|
||||||
sumall[2] = sumall[2]/ncount;
|
fave[2] = foriginal_all[2]/ncount;
|
||||||
|
|
||||||
for (int i = 0; i < nlocal; i++)
|
for (int i = 0; i < nlocal; i++)
|
||||||
if (mask[i] & groupbit) {
|
if (mask[i] & groupbit) {
|
||||||
if (xflag) f[i][0] = sumall[0];
|
if (xflag) f[i][0] = fave[0];
|
||||||
if (yflag) f[i][1] = sumall[1];
|
if (yflag) f[i][1] = fave[1];
|
||||||
if (zflag) f[i][2] = sumall[2];
|
if (zflag) f[i][2] = fave[2];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -172,3 +172,12 @@ void FixAveForce::min_post_force(int vflag)
|
|||||||
{
|
{
|
||||||
post_force(vflag);
|
post_force(vflag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
return components of total force on fix group before force was changed
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
double FixAveForce::compute_vector(int n)
|
||||||
|
{
|
||||||
|
return foriginal_all[n];
|
||||||
|
}
|
||||||
|
|||||||
@ -28,10 +28,12 @@ class FixAveForce : public Fix {
|
|||||||
void post_force(int);
|
void post_force(int);
|
||||||
void post_force_respa(int, int, int);
|
void post_force_respa(int, int, int);
|
||||||
void min_post_force(int);
|
void min_post_force(int);
|
||||||
|
double compute_vector(int);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int xflag,yflag,zflag;
|
int xflag,yflag,zflag;
|
||||||
double xvalue,yvalue,zvalue;
|
double xvalue,yvalue,zvalue;
|
||||||
|
double foriginal_all[3];
|
||||||
int ncount;
|
int ncount;
|
||||||
int nlevels_respa;
|
int nlevels_respa;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -142,7 +142,7 @@ void FixSetForce::min_post_force(int vflag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------
|
/* ----------------------------------------------------------------------
|
||||||
return components of total force on fix group before reset
|
return components of total force on fix group before force was changed
|
||||||
------------------------------------------------------------------------- */
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
double FixSetForce::compute_vector(int n)
|
double FixSetForce::compute_vector(int n)
|
||||||
|
|||||||
@ -35,14 +35,14 @@ FixTempBerendsen::FixTempBerendsen(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
{
|
{
|
||||||
if (narg != 6) error->all("Illegal fix temp/berendsen command");
|
if (narg != 6) error->all("Illegal fix temp/berendsen command");
|
||||||
|
|
||||||
t_start = atof(arg[3]);
|
|
||||||
t_stop = atof(arg[4]);
|
|
||||||
t_period = atof(arg[5]);
|
|
||||||
|
|
||||||
// Berendsen thermostat should be applied every step
|
// Berendsen thermostat should be applied every step
|
||||||
|
|
||||||
nevery = 1;
|
nevery = 1;
|
||||||
|
|
||||||
|
t_start = atof(arg[3]);
|
||||||
|
t_stop = atof(arg[4]);
|
||||||
|
t_period = atof(arg[5]);
|
||||||
|
|
||||||
// error checks
|
// error checks
|
||||||
|
|
||||||
if (t_period <= 0.0) error->all("Fix temp/berendsen period must be > 0.0");
|
if (t_period <= 0.0) error->all("Fix temp/berendsen period must be > 0.0");
|
||||||
|
|||||||
Reference in New Issue
Block a user