#ifdef FIX_CLASS
FixStyle(lb/fluid,FixLbFluid)
#else
#ifndef LMP_FIX_LB_FLUID_H
#define LMP_FIX_LB_FLUID_H
#include "fix.h"
#if defined(MPI_STUBS)
#error "The USER-LB package cannot be compiled in serial with MPI STUBS"
#endif
namespace LAMMPS_NS {
class FixLbFluid : public Fix {
friend class FixLbMomentum;
friend class FixLbRigidPCSphere;
friend class FixLbPC;
friend class FixLbViscous;
public:
FixLbFluid(class LAMMPS *, int, char **);
~FixLbFluid();
int setmask();
void init();
void initial_integrate(int);
void setup(int);
void post_force(int);
void end_of_step();
void grow_arrays(int);
void copy_arrays(int, int, int);
int pack_exchange(int, double *);
int unpack_exchange(int, double *);
private:
double viscosity,densityinit_real,a_0_real,T;
int setdx,seta0;
int numvel;
double dm_lb,dx_lb,dt_lb;
int Nbx,Nby,Nbz; int subNbx,subNby,subNbz; int me, nprocs; MPI_Datatype oneslice; MPI_Datatype passxu,passyu,passzu;
MPI_Datatype passxf,passyf,passzf;
MPI_Datatype passxrho,passyrho,passzrho;
MPI_Datatype passxtemp,passytemp,passztemp;
double kB,densityinit,a_0; double *Gamma;
double *NodeArea;
int setGamma,setArea;
double **hydroF;
int groupbit_viscouslb, groupbit_pc, groupbit_rigid_pc_sphere;
double ***density_lb; double ****u_lb; double ****f_lb; double ****fnew; double ****feq; double ****feqold;
double ****feqn; double ****feqoldn; double ****Ff; double ****Fftempx;
double ****Fftempy;
double ****Fftempz;
double *Ng_lb; double *w_lb;
double **mg_lb;
int **e;
double tau;
double expminusdtovertau;
double Dcoeff;
double K_0;
double dtoverdtcollision;
int step;
double ****buf; double ****buf2;
double ****altogether;
double ****altogether2;
double bodyforcex,bodyforcey,bodyforcez; double vwtp,vwbt;
int noisestress; double namp,noisefactor;
int seed;
class RanMars *random;
int force_diagnostic; int igroupforce;
int typeLB;
int trilinear_stencil;
int readrestart; MPI_File pFileRead;
int printrestart; MPI_File pFileWrite;
int printfluid;
int fixviscouslb;
void rescale(void);
void (FixLbFluid::*initializeLB)(void);
void initializeLB15(void);
void initializeLB19(void);
void initialize_feq(void);
void (FixLbFluid::*equilibriumdist)(int,int,int,int,int,int);
void equilibriumdist15(int,int,int,int,int,int);
void equilibriumdist19(int,int,int,int,int,int);
void parametercalc_part(int,int,int,int,int,int);
void parametercalc_full(void);
void update_periodic(int,int,int,int,int,int);
void (FixLbFluid::*update_full)(void);
void update_full15(void);
void update_full19(void);
void streamout(void);
void read_restartfile(void);
void write_restartfile(void);
void peskin_interpolation(int);
void trilinear_interpolation(int);
void calc_fluidforce(void);
};
}
#endif
#endif