mirror of https://github.com/lammps/lammps.git
git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@2356 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
parent
8f6991985a
commit
17092d4799
|
@ -74,7 +74,7 @@ class Data {
|
|||
char *atom_style;
|
||||
int style_angle,style_atomic,style_bond,style_charge,style_dipole;
|
||||
int style_dpd,style_ellipsoid,style_full,style_granular;
|
||||
int style_hybrid,style_molecular;
|
||||
int style_hybrid,style_molecular,style_peri;
|
||||
|
||||
int natoms,nbonds,nangles,ndihedrals,nimpropers;
|
||||
int ntypes,nbondtypes,nangletypes,ndihedraltypes,nimpropertypes;
|
||||
|
@ -176,10 +176,11 @@ class Data {
|
|||
|
||||
double *mass,*shape,*dipole;
|
||||
double *x,*y,*z,*vx,*vy,*vz;
|
||||
double *xphix,*xphiy,*xphiz,*omegax,*omegay,*omegaz;
|
||||
double *omegax,*omegay,*omegaz;
|
||||
int *tag,*type,*mask,*image;
|
||||
int *molecule;
|
||||
double *q,*mux,*muy,*muz,*radius,*density;
|
||||
double *q,*mux,*muy,*muz,*radius,*density,*vfrac,*rmass;
|
||||
double *s0,*x0x,*x0y,*x0z;
|
||||
double *quatw,*quati,*quatj,*quatk,*angmomx,*angmomy,*angmomz;
|
||||
int *bond_type,*angle_type,*dihedral_type,*improper_type;
|
||||
int *bond_atom1,*bond_atom2;
|
||||
|
@ -203,6 +204,7 @@ class Data {
|
|||
void write_atom_full(FILE *, int, int, int, int);
|
||||
void write_atom_granular(FILE *, int, int, int, int);
|
||||
void write_atom_molecular(FILE *, int, int, int, int);
|
||||
void write_atom_peri(FILE *, int, int, int, int);
|
||||
|
||||
void write_atom_angle_extra(FILE *, int);
|
||||
void write_atom_atomic_extra(FILE *, int);
|
||||
|
@ -214,6 +216,7 @@ class Data {
|
|||
void write_atom_full_extra(FILE *, int);
|
||||
void write_atom_granular_extra(FILE *, int);
|
||||
void write_atom_molecular_extra(FILE *, int);
|
||||
void write_atom_peri_extra(FILE *, int);
|
||||
|
||||
void write_vel_angle(FILE *, int);
|
||||
void write_vel_atomic(FILE *, int);
|
||||
|
@ -225,6 +228,7 @@ class Data {
|
|||
void write_vel_full(FILE *, int);
|
||||
void write_vel_granular(FILE *, int);
|
||||
void write_vel_molecular(FILE *, int);
|
||||
void write_vel_peri(FILE *, int);
|
||||
|
||||
void write_vel_angle_extra(FILE *, int);
|
||||
void write_vel_atomic_extra(FILE *, int);
|
||||
|
@ -236,6 +240,7 @@ class Data {
|
|||
void write_vel_full_extra(FILE *, int);
|
||||
void write_vel_granular_extra(FILE *, int);
|
||||
void write_vel_molecular_extra(FILE *, int);
|
||||
void write_vel_peri_extra(FILE *, int);
|
||||
};
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
|
@ -265,6 +270,7 @@ void allocate_ellipsoid(Data &data);
|
|||
void allocate_full(Data &data);
|
||||
void allocate_granular(Data &data);
|
||||
void allocate_molecular(Data &data);
|
||||
void allocate_peri(Data &data);
|
||||
|
||||
int atom_angle(double *, Data &, int);
|
||||
int atom_atomic(double *, Data &, int);
|
||||
|
@ -276,6 +282,7 @@ int atom_ellipsoid(double *, Data &, int);
|
|||
int atom_full(double *, Data &, int);
|
||||
int atom_granular(double *, Data &, int);
|
||||
int atom_molecular(double *, Data &, int);
|
||||
int atom_peri(double *, Data &, int);
|
||||
|
||||
int read_int(FILE *fp);
|
||||
double read_double(FILE *fp);
|
||||
|
@ -454,7 +461,7 @@ void header(FILE *fp, Data &data)
|
|||
data.style_angle = data.style_atomic = data.style_bond =
|
||||
data.style_charge = data.style_dipole = data.style_dpd =
|
||||
data.style_ellipsoid = data.style_full = data.style_granular =
|
||||
data.style_hybrid = data.style_molecular = 0;
|
||||
data.style_hybrid = data.style_molecular = data.style_peri = 0;
|
||||
|
||||
data.atom_style = read_char(fp);
|
||||
set_style(data.atom_style,data,1);
|
||||
|
@ -532,6 +539,7 @@ void set_style(char *name, Data &data, int flag)
|
|||
else if (strcmp(name,"granular") == 0) data.style_granular = flag;
|
||||
else if (strcmp(name,"hybrid") == 0) data.style_hybrid = flag;
|
||||
else if (strcmp(name,"molecular") == 0) data.style_molecular = flag;
|
||||
else if (strcmp(name,"peri") == 0) data.style_peri = flag;
|
||||
else {
|
||||
printf("ERROR: Unknown atom style %s\n",name);
|
||||
exit(1);
|
||||
|
@ -698,6 +706,7 @@ int atom(double *buf, Data &data)
|
|||
if (data.style_full) allocate_full(data);
|
||||
if (data.style_granular) allocate_granular(data);
|
||||
if (data.style_molecular) allocate_molecular(data);
|
||||
if (data.style_peri) allocate_peri(data);
|
||||
}
|
||||
|
||||
// read atom quantities from buf
|
||||
|
@ -720,6 +729,7 @@ int atom(double *buf, Data &data)
|
|||
if (k == data.style_full) m += atom_full(&buf[m],data,iatoms);
|
||||
if (k == data.style_granular) m += atom_granular(&buf[m],data,iatoms);
|
||||
if (k == data.style_molecular) m += atom_molecular(&buf[m],data,iatoms);
|
||||
if (k == data.style_peri) m += atom_peri(&buf[m],data,iatoms);
|
||||
}
|
||||
|
||||
data.iatoms++;
|
||||
|
@ -929,9 +939,6 @@ int atom_granular(double *buf, Data &data, int iatoms)
|
|||
|
||||
data.radius[iatoms] = buf[m++];
|
||||
data.density[iatoms] = buf[m++];
|
||||
data.xphix[iatoms] = buf[m++];
|
||||
data.xphiy[iatoms] = buf[m++];
|
||||
data.xphiz[iatoms] = buf[m++];
|
||||
data.omegax[iatoms] = buf[m++];
|
||||
data.omegay[iatoms] = buf[m++];
|
||||
data.omegaz[iatoms] = buf[m++];
|
||||
|
@ -1104,6 +1111,31 @@ int atom_molecular(double *buf, Data &data, int iatoms)
|
|||
return m;
|
||||
}
|
||||
|
||||
int atom_peri(double *buf, Data &data, int iatoms)
|
||||
{
|
||||
int m = 1;
|
||||
data.x[iatoms] = buf[m++];
|
||||
data.y[iatoms] = buf[m++];
|
||||
data.z[iatoms] = buf[m++];
|
||||
data.tag[iatoms] = static_cast<int> (buf[m++]);
|
||||
data.type[iatoms] = static_cast<int> (buf[m++]);
|
||||
data.mask[iatoms] = static_cast<int> (buf[m++]);
|
||||
data.image[iatoms] = static_cast<int> (buf[m++]);
|
||||
data.vx[iatoms] = buf[m++];
|
||||
data.vy[iatoms] = buf[m++];
|
||||
data.vz[iatoms] = buf[m++];
|
||||
|
||||
data.vfrac[iatoms] = buf[m++];
|
||||
data.density[iatoms] = buf[m++];
|
||||
data.rmass[iatoms] = buf[m++];
|
||||
data.s0[iatoms] = buf[m++];
|
||||
data.x0x[iatoms] = buf[m++];
|
||||
data.x0y[iatoms] = buf[m++];
|
||||
data.x0z[iatoms] = buf[m++];
|
||||
|
||||
return m;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// per-atom memory allocation routines
|
||||
// one routine per atom style
|
||||
|
@ -1184,9 +1216,6 @@ void allocate_granular(Data &data)
|
|||
{
|
||||
data.radius = new double[data.natoms];
|
||||
data.density = new double[data.natoms];
|
||||
data.xphix = new double[data.natoms];
|
||||
data.xphiy = new double[data.natoms];
|
||||
data.xphiz = new double[data.natoms];
|
||||
data.omegax = new double[data.natoms];
|
||||
data.omegay = new double[data.natoms];
|
||||
data.omegaz = new double[data.natoms];
|
||||
|
@ -1214,6 +1243,17 @@ void allocate_molecular(Data &data)
|
|||
data.improper_atom4 = new int[data.nimpropers];
|
||||
}
|
||||
|
||||
void allocate_peri(Data &data)
|
||||
{
|
||||
data.vfrac = new double[data.natoms];
|
||||
data.density = new double[data.natoms];
|
||||
data.rmass = new double[data.natoms];
|
||||
data.s0 = new double[data.natoms];
|
||||
data.x0x = new double[data.natoms];
|
||||
data.x0y = new double[data.natoms];
|
||||
data.x0z = new double[data.natoms];
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// pair coeffs
|
||||
// one section for each pair style
|
||||
|
@ -1488,12 +1528,14 @@ void pair(FILE *fp, Data &data, char *style, int flag)
|
|||
}
|
||||
}
|
||||
|
||||
} else if ((strcmp(style,"gran/history") == 0) ||
|
||||
(strcmp(style,"gran/no_history") == 0) ||
|
||||
(strcmp(style,"gran/hertzian") == 0)) {
|
||||
} else if ((strcmp(style,"gran/hooke") == 0) ||
|
||||
(strcmp(style,"gran/hooke/history") == 0) ||
|
||||
(strcmp(style,"gran/hertz/history") == 0)) {
|
||||
|
||||
double xkk = read_double(fp);
|
||||
double kn = read_double(fp);
|
||||
double kt = read_double(fp);
|
||||
double gamman = read_double(fp);
|
||||
double gammat = read_double(fp);
|
||||
double xmu = read_double(fp);
|
||||
int dampflag = read_int(fp);
|
||||
|
||||
|
@ -2980,6 +3022,7 @@ void Data::write(FILE *fp, FILE *fp2)
|
|||
if (style_full) write_atom_full(fp,i,ix,iy,iz);
|
||||
if (style_granular) write_atom_granular(fp,i,ix,iy,iz);
|
||||
if (style_molecular) write_atom_molecular(fp,i,ix,iy,iz);
|
||||
if (style_peri) write_atom_peri(fp,i,ix,iy,iz);
|
||||
fprintf(fp,"\n");
|
||||
|
||||
} else {
|
||||
|
@ -2996,6 +3039,7 @@ void Data::write(FILE *fp, FILE *fp2)
|
|||
if (k == style_full) write_atom_full_extra(fp,i);
|
||||
if (k == style_granular) write_atom_granular_extra(fp,i);
|
||||
if (k == style_molecular) write_atom_molecular_extra(fp,i);
|
||||
if (k == style_peri) write_atom_peri_extra(fp,i);
|
||||
}
|
||||
fprintf(fp," %d %d %d\n",ix,iy,iz);
|
||||
}
|
||||
|
@ -3017,6 +3061,7 @@ void Data::write(FILE *fp, FILE *fp2)
|
|||
if (style_full) write_vel_full(fp,i);
|
||||
if (style_granular) write_vel_granular(fp,i);
|
||||
if (style_molecular) write_vel_molecular(fp,i);
|
||||
if (style_peri) write_vel_peri(fp,i);
|
||||
fprintf(fp,"\n");
|
||||
|
||||
} else {
|
||||
|
@ -3032,6 +3077,7 @@ void Data::write(FILE *fp, FILE *fp2)
|
|||
if (k == style_full) write_vel_full_extra(fp,i);
|
||||
if (k == style_granular) write_vel_granular_extra(fp,i);
|
||||
if (k == style_molecular) write_vel_molecular_extra(fp,i);
|
||||
if (k == style_peri) write_vel_peri_extra(fp,i);
|
||||
}
|
||||
fprintf(fp,"\n");
|
||||
}
|
||||
|
@ -3134,6 +3180,12 @@ void Data::write_atom_molecular(FILE *fp, int i, int ix, int iy, int iz)
|
|||
tag[i],molecule[i],type[i],x[i],y[i],z[i],ix,iy,iz);
|
||||
}
|
||||
|
||||
void Data::write_atom_peri(FILE *fp, int i, int ix, int iy, int iz)
|
||||
{
|
||||
fprintf(fp,"%d %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d",
|
||||
tag[i],type[i],vfrac[i],density[i],rmass[i],x[i],y[i],z[i],ix,iy,iz);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// per-atom write routines of extra quantities unique to style
|
||||
// one routine per atom style
|
||||
|
@ -3183,6 +3235,11 @@ void Data::write_atom_molecular_extra(FILE *fp, int i)
|
|||
fprintf(fp," %d",molecule[i]);
|
||||
}
|
||||
|
||||
void Data::write_atom_peri_extra(FILE *fp, int i)
|
||||
{
|
||||
fprintf(fp," %-1.16e %-1.16e %-1.16e",vfrac[i],density[i],rmass[i]);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// per-atom velocity write routines
|
||||
// one routine per atom style
|
||||
|
@ -3240,6 +3297,11 @@ void Data::write_vel_molecular(FILE *fp, int i)
|
|||
fprintf(fp,"%d %-1.16e %-1.16e %-1.16e",tag[i],vx[i],vy[i],vz[i]);
|
||||
}
|
||||
|
||||
void Data::write_vel_peri(FILE *fp, int i)
|
||||
{
|
||||
fprintf(fp,"%d %-1.16e %-1.16e %-1.16e",tag[i],vx[i],vy[i],vz[i]);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// per-atom velocity write routines of extra quantities unique to style
|
||||
// one routine per atom style
|
||||
|
@ -3265,6 +3327,7 @@ void Data::write_vel_granular_extra(FILE *fp, int i)
|
|||
}
|
||||
|
||||
void Data::write_vel_molecular_extra(FILE *fp, int i) {}
|
||||
void Data::write_vel_peri_extra(FILE *fp, int i) {}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// binary reads from restart file
|
||||
|
|
Loading…
Reference in New Issue