Skip to content
Snippets Groups Projects
Select Git revision
  • 1d4686894ff786e55531bde128b53a73f859dc8b
  • master default protected
  • albertpiwonski-master-patch-57409
  • quadspheres
  • fix_Tmatrix_code_epsr_background
  • albertpiwonski-master-patch-12427
  • cavity
  • c1
8 results

domRectangle.pro

Blame
  • 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;