add zeta potential to Poisson
This commit is contained in:
parent
6ff5a9a8ae
commit
30014a49c0
@ -1067,6 +1067,16 @@ void ScaLBL_Communicator::SetupBounceBackList(IntArray &Map, signed char *id, in
|
||||
ScaLBL_CopyToDevice(bb_dist, bb_dist_tmp, local_count*sizeof(int));
|
||||
}
|
||||
|
||||
void ScaLBL_Communicator::SolidDirichletD3Q7(double *fq, double *assignValues){
|
||||
// fq is a D3Q7 distribution
|
||||
// assignValues is a list of values to assign at bounce-back sites
|
||||
for (int idx=0; idx<n_bb_d3q7; idx++){
|
||||
double value = assignValues[idx];
|
||||
int iq = bb_dist[idx];
|
||||
fq[iq] += value;
|
||||
}
|
||||
}
|
||||
|
||||
void ScaLBL_Communicator::SendD3Q19AA(double *dist){
|
||||
|
||||
// NOTE: the center distribution f0 must NOT be at the start of feven, provide offset to start of f2
|
||||
|
@ -170,6 +170,7 @@ public:
|
||||
MPI_Comm MPI_COMM_SCALBL; // MPI Communicator
|
||||
unsigned long int CommunicationCount,SendCount,RecvCount;
|
||||
int Nx,Ny,Nz,N;
|
||||
int n_bb_d3q7, n_bb_d3q19;
|
||||
int BoundaryCondition;
|
||||
|
||||
int next;
|
||||
@ -206,7 +207,7 @@ public:
|
||||
void RecvGrad(double *Phi, double *Gradient);
|
||||
void RegularLayout(IntArray map, const double *data, DoubleArray ®data);
|
||||
void SetupBounceBackList(IntArray &Map, signed char *id, int Np);
|
||||
//void SolidDirichletD3Q7();
|
||||
void SolidDirichletD3Q7(double *fq, double *assignValues);
|
||||
|
||||
// Routines to set boundary conditions
|
||||
void Color_BC_z(int *Map, double *Phi, double *Den, double vA, double vB);
|
||||
@ -270,7 +271,6 @@ private:
|
||||
int *dvcRecvDist_xy, *dvcRecvDist_yz, *dvcRecvDist_xz, *dvcRecvDist_Xy, *dvcRecvDist_Yz, *dvcRecvDist_xZ;
|
||||
int *dvcRecvDist_xY, *dvcRecvDist_yZ, *dvcRecvDist_Xz, *dvcRecvDist_XY, *dvcRecvDist_YZ, *dvcRecvDist_XZ;
|
||||
//......................................................................................
|
||||
int n_bb_d3q7, n_bb_d3q19;
|
||||
int *bb_dist;
|
||||
int *bb_interactions;
|
||||
//......................................................................................
|
||||
|
@ -183,7 +183,16 @@ void ScaLBL_Poisson::Create(){
|
||||
ScaLBL_AllocateDeviceMemory((void **) &fq, 7*dist_mem_size);
|
||||
ScaLBL_AllocateDeviceMemory((void **) &Psi, sizeof(double)*Np);
|
||||
ScaLBL_AllocateDeviceMemory((void **) &ElectricField, 3*sizeof(double)*Np);
|
||||
ScaLBL_AllocateDeviceMemory((void **) &zeta, sizeof(double)*ScaLBL_Comm->n_bb_d3q7);
|
||||
//...........................................................................
|
||||
// initialize the zeta function (example is zeta is constant on solid surface)
|
||||
double *tmpZeta = new double[ScaLBL_Comm->n_bb_d3q7];
|
||||
for int (i=0; i<ScaLBL_Comm->n_bb_d3q7; i++){
|
||||
tmpZeta[i] = 1.0/k2_inv; // this has to be read from input file
|
||||
}
|
||||
ScaLBL_CopyToDevice(zeta, tmpZeta, sizeof(double)*ScaLBL_Comm->n_bb_d3q7);
|
||||
delete [] tmpZeta;
|
||||
|
||||
// Update GPU data structures
|
||||
if (rank==0) printf ("Setting up device map and neighbor list \n");
|
||||
// copy the neighbor list
|
||||
@ -225,6 +234,7 @@ void ScaLBL_Poisson::Run(double *ChargeDensity){
|
||||
// Set boundary conditions
|
||||
/* ... */
|
||||
ScaLBL_D3Q7_AAodd_Poisson(NeighborList, fq, ChargeDensity, Psi, ElectricField, rlx, epsilon_LB, deltaT, 0, ScaLBL_Comm->LastExterior(), Np);
|
||||
ScaLBL_Comm->SolidDirichletD3Q7(fq, zeta);
|
||||
ScaLBL_DeviceBarrier(); MPI_Barrier(comm);
|
||||
|
||||
// *************EVEN TIMESTEP*************//
|
||||
@ -235,6 +245,7 @@ void ScaLBL_Poisson::Run(double *ChargeDensity){
|
||||
// Set boundary conditions
|
||||
/* ... */
|
||||
ScaLBL_D3Q7_AAeven_Poisson(fq, ChargeDensity, Psi, ElectricField, rlx, epsilon_LB, deltaT, 0, ScaLBL_Comm->LastExterior(), Np);
|
||||
ScaLBL_Comm->SolidDirichletD3Q7(fq, zeta);
|
||||
ScaLBL_DeviceBarrier(); MPI_Barrier(comm);
|
||||
//************************************************************************/
|
||||
|
||||
|
@ -58,6 +58,7 @@ public:
|
||||
double *fq;
|
||||
double *Psi;
|
||||
double *ElectricField;
|
||||
double *zeta;
|
||||
|
||||
private:
|
||||
MPI_Comm comm;
|
||||
|
Loading…
Reference in New Issue
Block a user