add pair style coul/cut/global and fix restart/data bugs in coul/cut

This commit is contained in:
Axel Kohlmeyer
2021-04-10 00:25:00 -04:00
parent ec6e2d35cb
commit d88cf587b2
10 changed files with 311 additions and 71 deletions

View File

@ -13,22 +13,24 @@
#include "pair_coul_cut.h"
#include <cmath>
#include <cstring>
#include "atom.h"
#include "comm.h"
#include "force.h"
#include "neighbor.h"
#include "neigh_list.h"
#include "memory.h"
#include "error.h"
#include "force.h"
#include "memory.h"
#include "neigh_list.h"
#include "neighbor.h"
#include <cmath>
#include <cstring>
using namespace LAMMPS_NS;
/* ---------------------------------------------------------------------- */
PairCoulCut::PairCoulCut(LAMMPS *lmp) : Pair(lmp) {}
PairCoulCut::PairCoulCut(LAMMPS *lmp) : Pair(lmp) {
writedata = 1;
}
/* ---------------------------------------------------------------------- */
@ -208,8 +210,10 @@ void PairCoulCut::init_style()
double PairCoulCut::init_one(int i, int j)
{
if (setflag[i][j] == 0)
if (setflag[i][j] == 0) {
cut[i][j] = mix_distance(cut[i][i],cut[j][j]);
scale[i][j] = 1.0;
}
scale[j][i] = scale[i][j];
@ -225,11 +229,15 @@ void PairCoulCut::write_restart(FILE *fp)
write_restart_settings(fp);
int i,j;
for (i = 1; i <= atom->ntypes; i++)
for (i = 1; i <= atom->ntypes; i++) {
for (j = i; j <= atom->ntypes; j++) {
fwrite(&scale[i][j],sizeof(double),1,fp);
fwrite(&setflag[i][j],sizeof(int),1,fp);
if (setflag[i][j]) fwrite(&cut[i][j],sizeof(double),1,fp);
if (setflag[i][j]) {
fwrite(&cut[i][j],sizeof(double),1,fp);
}
}
}
}
/* ----------------------------------------------------------------------
@ -243,15 +251,21 @@ void PairCoulCut::read_restart(FILE *fp)
int i,j;
int me = comm->me;
for (i = 1; i <= atom->ntypes; i++)
for (i = 1; i <= atom->ntypes; i++) {
for (j = i; j <= atom->ntypes; j++) {
if (me == 0) utils::sfread(FLERR,&setflag[i][j],sizeof(int),1,fp,nullptr,error);
if (me == 0) {
utils::sfread(FLERR,&scale[i][j],sizeof(double),1,fp,nullptr,error);
utils::sfread(FLERR,&setflag[i][j],sizeof(int),1,fp,nullptr,error);
}
MPI_Bcast(&scale[i][j],1,MPI_DOUBLE,0,world);
MPI_Bcast(&setflag[i][j],1,MPI_INT,0,world);
if (setflag[i][j]) {
if (me == 0) utils::sfread(FLERR,&cut[i][j],sizeof(double),1,fp,nullptr,error);
if (me == 0)
utils::sfread(FLERR,&cut[i][j],sizeof(double),1,fp,nullptr,error);
MPI_Bcast(&cut[i][j],1,MPI_DOUBLE,0,world);
}
}
}
}
/* ----------------------------------------------------------------------
@ -281,6 +295,27 @@ void PairCoulCut::read_restart_settings(FILE *fp)
MPI_Bcast(&mix_flag,1,MPI_INT,0,world);
}
/* ----------------------------------------------------------------------
proc 0 writes to data file
------------------------------------------------------------------------- */
void PairCoulCut::write_data(FILE *fp)
{
for (int i = 1; i <= atom->ntypes; i++)
fprintf(fp,"%d\n",i);
}
/* ----------------------------------------------------------------------
proc 0 writes all pairs to data file
------------------------------------------------------------------------- */
void PairCoulCut::write_data_all(FILE *fp)
{
for (int i = 1; i <= atom->ntypes; i++)
for (int j = i; j <= atom->ntypes; j++)
fprintf(fp,"%d %d %g\n",i,j,cut[i][j]);
}
/* ---------------------------------------------------------------------- */
double PairCoulCut::single(int i, int j, int /*itype*/, int /*jtype*/,