add pseudo-reflection
This commit is contained in:
@@ -256,6 +256,7 @@ void Domain::Decomp( const std::string& Filename )
|
||||
int64_t i,j,k,n;
|
||||
int64_t xStart,yStart,zStart;
|
||||
int checkerSize;
|
||||
bool USE_CHECKER = false;
|
||||
//int inlet_layers_x, inlet_layers_y, inlet_layers_z;
|
||||
//int outlet_layers_x, outlet_layers_y, outlet_layers_z;
|
||||
xStart=yStart=zStart=0;
|
||||
@@ -295,6 +296,7 @@ void Domain::Decomp( const std::string& Filename )
|
||||
}
|
||||
if (database->keyExists( "checkerSize" )){
|
||||
checkerSize = database->getScalar<int>( "checkerSize" );
|
||||
USE_CHECKER = true;
|
||||
}
|
||||
else {
|
||||
checkerSize = SIZE[0];
|
||||
@@ -396,6 +398,7 @@ void Domain::Decomp( const std::string& Filename )
|
||||
}
|
||||
}
|
||||
|
||||
if (USE_CHECKER) {
|
||||
if (inlet_layers_x > 0){
|
||||
// use checkerboard pattern
|
||||
printf("Checkerboard pattern at x inlet for %i layers \n",inlet_layers_x);
|
||||
@@ -513,6 +516,37 @@ void Domain::Decomp( const std::string& Filename )
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (inlet_layers_z > 0){
|
||||
printf("Mixed reflection pattern at z inlet for %i layers, saturated with phase label=%i \n",inlet_layers_z,inlet_layers_phase);
|
||||
for (int k = zStart; k < zStart+inlet_layers_z; k++){
|
||||
for (int j = 0; j<global_Ny; j++){
|
||||
for (int i = 0; i<global_Nx; i++){
|
||||
signed char local_id = SegData[k*global_Nx*global_Ny+j*global_Nx+i];
|
||||
signed char reflection_id = SegData[(zStart + nz*nprocz - k)*global_Nx*global_Ny+j*global_Nx+i];
|
||||
if ( local_id < 1 && reflection_id > 0){
|
||||
SegData[k*global_Nx*global_Ny+j*global_Nx+i] = reflection_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (outlet_layers_z > 0){
|
||||
printf("Mixed reflection pattern at z outlet for %i layers, saturated with phase label=%i \n",outlet_layers_z,outlet_layers_phase);
|
||||
for (int k = zStart + nz*nprocz - outlet_layers_z; k < zStart + nz*nprocz; k++){
|
||||
for (int j = 0; j<global_Ny; j++){
|
||||
for (int i = 0; i<global_Nx; i++){
|
||||
signed char local_id = SegData[k*global_Nx*global_Ny+j*global_Nx+i];
|
||||
signed char reflection_id = SegData[(zStart + nz*nprocz - k)*global_Nx*global_Ny+j*global_Nx+i];
|
||||
if ( local_id < 1 && reflection_id > 0){
|
||||
SegData[k*global_Nx*global_Ny+j*global_Nx+i] = reflection_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Get the rank info
|
||||
int64_t N = (nx+2)*(ny+2)*(nz+2);
|
||||
|
||||
Reference in New Issue
Block a user