add reflection BC to MRT / Color
This commit is contained in:
parent
81f2548633
commit
e62208caaa
@ -1631,13 +1631,13 @@ double ScaLBL_Communicator::D3Q19_Flux_BC_z(int *neighborList, double *fq, doubl
|
|||||||
return din;
|
return din;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScaLBL_Communicator::D3Q19_Reflection_BC_z(int *neighborList, double *fq){
|
void ScaLBL_Communicator::D3Q19_Reflection_BC_z(double *fq){
|
||||||
if (kproc == 0)
|
if (kproc == 0)
|
||||||
ScaLBL_D3Q19_AAeven_Reflection_BC_z(dvcSendList_z, fq, sendCount_z, N);
|
ScaLBL_D3Q19_AAeven_Reflection_BC_z(dvcSendList_z, fq, sendCount_z, N);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScaLBL_Communicator::D3Q19_Reflection_BC_Z(int *neighborList, double *fq){
|
void ScaLBL_Communicator::D3Q19_Reflection_BC_Z(double *fq){
|
||||||
if (kproc == nprocz-1)
|
if (kproc == nprocz-1)
|
||||||
ScaLBL_D3Q19_AAeven_Reflection_BC_Z(dvcSendList_Z, fq, sendCount_Z, N);
|
ScaLBL_D3Q19_AAeven_Reflection_BC_Z(dvcSendList_Z, fq, sendCount_Z, N);
|
||||||
}
|
}
|
||||||
|
@ -193,8 +193,8 @@ public:
|
|||||||
void Color_BC_Z(int *Map, double *Phi, double *Den, double vA, double vB);
|
void Color_BC_Z(int *Map, double *Phi, double *Den, double vA, double vB);
|
||||||
void D3Q19_Pressure_BC_z(int *neighborList, double *fq, double din, int time);
|
void D3Q19_Pressure_BC_z(int *neighborList, double *fq, double din, int time);
|
||||||
void D3Q19_Pressure_BC_Z(int *neighborList, double *fq, double dout, int time);
|
void D3Q19_Pressure_BC_Z(int *neighborList, double *fq, double dout, int time);
|
||||||
void D3Q19_Reflection_BC_z(int *neighborList, double *fq);
|
void D3Q19_Reflection_BC_z(double *fq);
|
||||||
void D3Q19_Reflection_BC_Z(int *neighborList, double *fq);
|
void D3Q19_Reflection_BC_Z(double *fq);
|
||||||
double D3Q19_Flux_BC_z(int *neighborList, double *fq, double flux, int time);
|
double D3Q19_Flux_BC_z(int *neighborList, double *fq, double flux, int time);
|
||||||
|
|
||||||
// Debugging and unit testing functions
|
// Debugging and unit testing functions
|
||||||
|
@ -673,7 +673,7 @@ void ScaLBL_ColorModel::Run(){
|
|||||||
|
|
||||||
// Perform the collision operation
|
// Perform the collision operation
|
||||||
ScaLBL_Comm->SendD3Q19AA(fq); //READ FROM NORMAL
|
ScaLBL_Comm->SendD3Q19AA(fq); //READ FROM NORMAL
|
||||||
if (BoundaryCondition > 0){
|
if (BoundaryCondition > 0 && BoundaryCondition < 5){
|
||||||
ScaLBL_Comm->Color_BC_z(dvcMap, Phi, Den, inletA, inletB);
|
ScaLBL_Comm->Color_BC_z(dvcMap, Phi, Den, inletA, inletB);
|
||||||
ScaLBL_Comm->Color_BC_Z(dvcMap, Phi, Den, outletA, outletB);
|
ScaLBL_Comm->Color_BC_Z(dvcMap, Phi, Den, outletA, outletB);
|
||||||
}
|
}
|
||||||
@ -694,6 +694,10 @@ void ScaLBL_ColorModel::Run(){
|
|||||||
din = ScaLBL_Comm->D3Q19_Flux_BC_z(NeighborList, fq, flux, timestep);
|
din = ScaLBL_Comm->D3Q19_Flux_BC_z(NeighborList, fq, flux, timestep);
|
||||||
ScaLBL_Comm->D3Q19_Pressure_BC_Z(NeighborList, fq, dout, timestep);
|
ScaLBL_Comm->D3Q19_Pressure_BC_Z(NeighborList, fq, dout, timestep);
|
||||||
}
|
}
|
||||||
|
else if (BoundaryCondition == 5){
|
||||||
|
ScaLBL_Comm->D3Q19_Reflection_BC_z(fq);
|
||||||
|
ScaLBL_Comm->D3Q19_Reflection_BC_Z(fq);
|
||||||
|
}
|
||||||
ScaLBL_D3Q19_AAodd_Color(NeighborList, dvcMap, fq, Aq, Bq, Den, Phi, Velocity, rhoA, rhoB, tauA, tauB,
|
ScaLBL_D3Q19_AAodd_Color(NeighborList, dvcMap, fq, Aq, Bq, Den, Phi, Velocity, rhoA, rhoB, tauA, tauB,
|
||||||
alpha, beta, Fx, Fy, Fz, Nx, Nx*Ny, 0, ScaLBL_Comm->LastExterior(), Np);
|
alpha, beta, Fx, Fy, Fz, Nx, Nx*Ny, 0, ScaLBL_Comm->LastExterior(), Np);
|
||||||
ScaLBL_DeviceBarrier();
|
ScaLBL_DeviceBarrier();
|
||||||
@ -711,7 +715,7 @@ void ScaLBL_ColorModel::Run(){
|
|||||||
// Perform the collision operation
|
// Perform the collision operation
|
||||||
ScaLBL_Comm->SendD3Q19AA(fq); //READ FORM NORMAL
|
ScaLBL_Comm->SendD3Q19AA(fq); //READ FORM NORMAL
|
||||||
// Halo exchange for phase field
|
// Halo exchange for phase field
|
||||||
if (BoundaryCondition > 0){
|
if (BoundaryCondition > 0 && BoundaryCondition < 5){
|
||||||
ScaLBL_Comm->Color_BC_z(dvcMap, Phi, Den, inletA, inletB);
|
ScaLBL_Comm->Color_BC_z(dvcMap, Phi, Den, inletA, inletB);
|
||||||
ScaLBL_Comm->Color_BC_Z(dvcMap, Phi, Den, outletA, outletB);
|
ScaLBL_Comm->Color_BC_Z(dvcMap, Phi, Den, outletA, outletB);
|
||||||
}
|
}
|
||||||
@ -730,6 +734,10 @@ void ScaLBL_ColorModel::Run(){
|
|||||||
din = ScaLBL_Comm->D3Q19_Flux_BC_z(NeighborList, fq, flux, timestep);
|
din = ScaLBL_Comm->D3Q19_Flux_BC_z(NeighborList, fq, flux, timestep);
|
||||||
ScaLBL_Comm->D3Q19_Pressure_BC_Z(NeighborList, fq, dout, timestep);
|
ScaLBL_Comm->D3Q19_Pressure_BC_Z(NeighborList, fq, dout, timestep);
|
||||||
}
|
}
|
||||||
|
else if (BoundaryCondition == 5){
|
||||||
|
ScaLBL_Comm->D3Q19_Reflection_BC_z(fq);
|
||||||
|
ScaLBL_Comm->D3Q19_Reflection_BC_Z(fq);
|
||||||
|
}
|
||||||
ScaLBL_D3Q19_AAeven_Color(dvcMap, fq, Aq, Bq, Den, Phi, Velocity, rhoA, rhoB, tauA, tauB,
|
ScaLBL_D3Q19_AAeven_Color(dvcMap, fq, Aq, Bq, Den, Phi, Velocity, rhoA, rhoB, tauA, tauB,
|
||||||
alpha, beta, Fx, Fy, Fz, Nx, Nx*Ny, 0, ScaLBL_Comm->LastExterior(), Np);
|
alpha, beta, Fx, Fy, Fz, Nx, Nx*Ny, 0, ScaLBL_Comm->LastExterior(), Np);
|
||||||
ScaLBL_DeviceBarrier();
|
ScaLBL_DeviceBarrier();
|
||||||
|
@ -238,12 +238,38 @@ void ScaLBL_MRTModel::Run(){
|
|||||||
ScaLBL_Comm->SendD3Q19AA(fq); //READ FROM NORMAL
|
ScaLBL_Comm->SendD3Q19AA(fq); //READ FROM NORMAL
|
||||||
ScaLBL_D3Q19_AAodd_MRT(NeighborList, fq, ScaLBL_Comm->FirstInterior(), ScaLBL_Comm->LastInterior(), Np, rlx_setA, rlx_setB, Fx, Fy, Fz);
|
ScaLBL_D3Q19_AAodd_MRT(NeighborList, fq, ScaLBL_Comm->FirstInterior(), ScaLBL_Comm->LastInterior(), Np, rlx_setA, rlx_setB, Fx, Fy, Fz);
|
||||||
ScaLBL_Comm->RecvD3Q19AA(fq); //WRITE INTO OPPOSITE
|
ScaLBL_Comm->RecvD3Q19AA(fq); //WRITE INTO OPPOSITE
|
||||||
|
// Set boundary conditions
|
||||||
|
if (BoundaryCondition == 3){
|
||||||
|
ScaLBL_Comm->D3Q19_Pressure_BC_z(NeighborList, fq, din, timestep);
|
||||||
|
ScaLBL_Comm->D3Q19_Pressure_BC_Z(NeighborList, fq, dout, timestep);
|
||||||
|
}
|
||||||
|
else if (BoundaryCondition == 4){
|
||||||
|
din = ScaLBL_Comm->D3Q19_Flux_BC_z(NeighborList, fq, flux, timestep);
|
||||||
|
ScaLBL_Comm->D3Q19_Pressure_BC_Z(NeighborList, fq, dout, timestep);
|
||||||
|
}
|
||||||
|
else if (BoundaryCondition == 5){
|
||||||
|
ScaLBL_Comm->D3Q19_Reflection_BC_z(fq);
|
||||||
|
ScaLBL_Comm->D3Q19_Reflection_BC_Z(fq);
|
||||||
|
}
|
||||||
ScaLBL_D3Q19_AAodd_MRT(NeighborList, fq, 0, ScaLBL_Comm->LastExterior(), Np, rlx_setA, rlx_setB, Fx, Fy, Fz);
|
ScaLBL_D3Q19_AAodd_MRT(NeighborList, fq, 0, ScaLBL_Comm->LastExterior(), Np, rlx_setA, rlx_setB, Fx, Fy, Fz);
|
||||||
ScaLBL_DeviceBarrier(); MPI_Barrier(comm);
|
ScaLBL_DeviceBarrier(); MPI_Barrier(comm);
|
||||||
timestep++;
|
timestep++;
|
||||||
ScaLBL_Comm->SendD3Q19AA(fq); //READ FORM NORMAL
|
ScaLBL_Comm->SendD3Q19AA(fq); //READ FORM NORMAL
|
||||||
ScaLBL_D3Q19_AAeven_MRT(fq, ScaLBL_Comm->FirstInterior(), ScaLBL_Comm->LastInterior(), Np, rlx_setA, rlx_setB, Fx, Fy, Fz);
|
ScaLBL_D3Q19_AAeven_MRT(fq, ScaLBL_Comm->FirstInterior(), ScaLBL_Comm->LastInterior(), Np, rlx_setA, rlx_setB, Fx, Fy, Fz);
|
||||||
ScaLBL_Comm->RecvD3Q19AA(fq); //WRITE INTO OPPOSITE
|
ScaLBL_Comm->RecvD3Q19AA(fq); //WRITE INTO OPPOSITE
|
||||||
|
// Set boundary conditions
|
||||||
|
if (BoundaryCondition == 3){
|
||||||
|
ScaLBL_Comm->D3Q19_Pressure_BC_z(NeighborList, fq, din, timestep);
|
||||||
|
ScaLBL_Comm->D3Q19_Pressure_BC_Z(NeighborList, fq, dout, timestep);
|
||||||
|
}
|
||||||
|
else if (BoundaryCondition == 4){
|
||||||
|
din = ScaLBL_Comm->D3Q19_Flux_BC_z(NeighborList, fq, flux, timestep);
|
||||||
|
ScaLBL_Comm->D3Q19_Pressure_BC_Z(NeighborList, fq, dout, timestep);
|
||||||
|
}
|
||||||
|
else if (BoundaryCondition == 5){
|
||||||
|
ScaLBL_Comm->D3Q19_Reflection_BC_z(fq);
|
||||||
|
ScaLBL_Comm->D3Q19_Reflection_BC_Z(fq);
|
||||||
|
}
|
||||||
ScaLBL_D3Q19_AAeven_MRT(fq, 0, ScaLBL_Comm->LastExterior(), Np, rlx_setA, rlx_setB, Fx, Fy, Fz);
|
ScaLBL_D3Q19_AAeven_MRT(fq, 0, ScaLBL_Comm->LastExterior(), Np, rlx_setA, rlx_setB, Fx, Fy, Fz);
|
||||||
ScaLBL_DeviceBarrier(); MPI_Barrier(comm);
|
ScaLBL_DeviceBarrier(); MPI_Barrier(comm);
|
||||||
//************************************************************************/
|
//************************************************************************/
|
||||||
|
Loading…
Reference in New Issue
Block a user