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 i,j,k,n;
|
||||||
int64_t xStart,yStart,zStart;
|
int64_t xStart,yStart,zStart;
|
||||||
int checkerSize;
|
int checkerSize;
|
||||||
|
bool USE_CHECKER = false;
|
||||||
//int inlet_layers_x, inlet_layers_y, inlet_layers_z;
|
//int inlet_layers_x, inlet_layers_y, inlet_layers_z;
|
||||||
//int outlet_layers_x, outlet_layers_y, outlet_layers_z;
|
//int outlet_layers_x, outlet_layers_y, outlet_layers_z;
|
||||||
xStart=yStart=zStart=0;
|
xStart=yStart=zStart=0;
|
||||||
@@ -295,6 +296,7 @@ void Domain::Decomp( const std::string& Filename )
|
|||||||
}
|
}
|
||||||
if (database->keyExists( "checkerSize" )){
|
if (database->keyExists( "checkerSize" )){
|
||||||
checkerSize = database->getScalar<int>( "checkerSize" );
|
checkerSize = database->getScalar<int>( "checkerSize" );
|
||||||
|
USE_CHECKER = true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
checkerSize = SIZE[0];
|
checkerSize = SIZE[0];
|
||||||
@@ -396,6 +398,7 @@ void Domain::Decomp( const std::string& Filename )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (USE_CHECKER) {
|
||||||
if (inlet_layers_x > 0){
|
if (inlet_layers_x > 0){
|
||||||
// use checkerboard pattern
|
// use checkerboard pattern
|
||||||
printf("Checkerboard pattern at x inlet for %i layers \n",inlet_layers_x);
|
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
|
// Get the rank info
|
||||||
int64_t N = (nx+2)*(ny+2)*(nz+2);
|
int64_t N = (nx+2)*(ny+2)*(nz+2);
|
||||||
|
|||||||
Reference in New Issue
Block a user