Select Git revision
domRectangle.pro
domRectangle.pro 6.12 KiB
Include "domRectangle.dat";
// =================================================================================================
// FUNCTIONS
// =================================================================================================
Function{
If (FLAG_PBM == PBM_SCATT_RECT)
f_inc[] = Complex[Cos[WAVENUMBER*X[]], Sin[WAVENUMBER*X[]]];
f_ref[] = AcousticFieldSoftCylinder[XYZ[]]{WAVENUMBER, R_SCA};
f_dir[] = -f_inc[];
EndIf
If (FLAG_PBM == PBM_MARMOUSI)
f_inc[] = 0;
f_ref[] = 0;
velocityField[] = InterpolationBilinear[ $1, $2 ]{ ListFromFile["domRectangleMarmousi.dat"] };
cData[] = velocityField[ X[], Y[] ];
f_dir[] = -f_inc[];
f_sou = 1;
For iDom In {0:N_DOM-1}
f_sou~{iDom} = 1;
EndFor
EndIf
}
// =================================================================================================
// LISTS ABC/TBC
// =================================================================================================
// Is there an ABC for main domain? (1=yes, 0=no)
isEdgeABC~{0} = 1;
isEdgeABC~{1} = 1;
isEdgeABC~{2} = 1;
isEdgeABC~{3} = 1;
isEdgeRad~{0} = 0;
isEdgeRad~{1} = 0;
isEdgeRad~{2} = 0;
isEdgeRad~{3} = 0;
ListOfSubdom = {};
For xdom In {0:Nx_DOM-1}
For ydom In {0:Ny_DOM-1}
iDom = ydom*Nx_DOM + xdom;
If (iDom % MPI_Size == MPI_Rank)
ListOfSubdom += iDom;
EndIf
iDomNeigh~{iDom}~{0} = (ydom-1)*Nx_DOM + xdom; // Down
iDomNeigh~{iDom}~{1} = ydom*Nx_DOM + (xdom+1); // Right
iDomNeigh~{iDom}~{2} = (ydom+1)*Nx_DOM + xdom; // Top
iDomNeigh~{iDom}~{3} = ydom*Nx_DOM + (xdom-1); // Left
iEdgeNeigh~{iDom}~{0} = 2;
iEdgeNeigh~{iDom}~{1} = 3;
iEdgeNeigh~{iDom}~{2} = 0;
iEdgeNeigh~{iDom}~{3} = 1;
// Is there an ABC or TBC? (1=yes, 0=no)
For iEdge In {0:3}
isEdgeABC~{iDom}~{iEdge} = 0;
isEdgeTBC~{iDom}~{iEdge} = 1;
isEdgeRad~{iDom}~{iEdge} = 0;
EndFor
If(ydom == 0)
isEdgeABC~{iDom}~{0} = 1;
isEdgeTBC~{iDom}~{0} = 0;
EndIf
If(xdom == Nx_DOM-1)
isEdgeABC~{iDom}~{1} = 1;
isEdgeTBC~{iDom}~{1} = 0;