Defines boundary conditions.
subroutine SetUpCaseBCS() !> Defines boundary conditions. use leapBC implicit none ! Work variables type(bc_set) :: bcs real(wp) :: xhi(3),xlo(3) real(wp), pointer :: BCVal(:,:,:) ! Initialize utility that handles boundary conditions call bcs%Initialize(block,parallel) ! Setup regions where boundary conditions apply associate (pmin => block%pmin, pmax => block%pmax) xlo = [pmin(1),pmin(2),pmin(3)] xhi = [pmin(1),pmax(2),pmax(3)] call bcs%Add('xL', xlo, xhi, normal = '+x1') xlo = [pmax(1),pmin(2),pmin(3)] xhi = [pmax(1),pmax(2),pmax(3)] call bcs%Add('xR', xlo, xhi, normal = '-x1') xlo = [pmin(1),pmin(2),pmax(3)] xhi = [pmax(1),pmax(2),pmax(3)] call bcs%Add('zR', xlo, xhi, normal = '-x3') xlo = [pmin(1),pmin(2),pmin(3)] xhi = [pmax(1),pmax(2),pmin(3)] call bcs%Add('zL', xlo, xhi, normal = '+x3') end associate call bcs%SetBC('xL', BC_OUTFLOW) call bcs%SetBC('xR', BC_OUTFLOW) call bcs%SetBC('zL', BC_OUTFLOW) call bcs%SetBC('zR', BC_OUTFLOW) call bcs%SetBC('xL', BC_DIRICHLET,'ibVF') call bcs%SetBC('xR', BC_DIRICHLET,'ibVF') call bcs%SetBC('zL', BC_DIRICHLET,'ibVF') call bcs%SetBC('zR', BC_DIRICHLET,'ibVF') call bcs%GetBCPointer('xL','ibVF',BCVal); BCVal=0.0_wp call bcs%GetBCPointer('xR','ibVF',BCVal); BCVal=0.0_wp call bcs%GetBCPointer('zL','ibVF',BCVal); BCVal=0.0_wp call bcs%GetBCPointer('zR','ibVF',BCVal); BCVal=0.0_wp ! Write boundary conditions call bcs%Write(0,0.0_wp) ! Clear data call bcs%Finalize() return end subroutine SetUpCaseBCS