SetUpCaseIB Subroutine

subroutine SetUpCaseIB()

Uses

  • proc~~setupcaseib~2~~UsesGraph proc~setupcaseib~2 SetUpCaseIB module~immersed_boundaries immersed_boundaries proc~setupcaseib~2->module~immersed_boundaries module~immersed_boundaries_markers immersed_boundaries_markers module~immersed_boundaries->module~immersed_boundaries_markers module~immersed_boundaries_solids immersed_boundaries_solids module~immersed_boundaries->module~immersed_boundaries_solids iso_fortran_env iso_fortran_env module~immersed_boundaries_markers->iso_fortran_env module~leapbc leapBC module~immersed_boundaries_markers->module~leapbc module~leapblock leapBlock module~immersed_boundaries_markers->module~leapblock module~leapdiffop leapDiffOp module~immersed_boundaries_markers->module~leapdiffop module~leapeulerian leapEulerian module~immersed_boundaries_markers->module~leapeulerian module~leaphypre leapHypre module~immersed_boundaries_markers->module~leaphypre module~leapio leapIO module~immersed_boundaries_markers->module~leapio module~leapkinds leapKinds module~immersed_boundaries_markers->module~leapkinds module~leaplagrangian leapLagrangian module~immersed_boundaries_markers->module~leaplagrangian module~leapmonitor leapMonitor module~immersed_boundaries_markers->module~leapmonitor module~leapparallel leapParallel module~immersed_boundaries_markers->module~leapparallel module~leapparser leapParser module~immersed_boundaries_markers->module~leapparser module~leaptimer leapTimer module~immersed_boundaries_markers->module~leaptimer module~immersed_boundaries_solids->module~immersed_boundaries_markers module~immersed_boundaries_solids->module~leapblock module~immersed_boundaries_solids->module~leapeulerian module~immersed_boundaries_solids->module~leapio module~immersed_boundaries_solids->module~leapkinds module~immersed_boundaries_solids->module~leaplagrangian module~immersed_boundaries_solids->module~leapparallel module~leapbc->iso_fortran_env module~leapbc->module~leapblock module~leapbc->module~leapeulerian module~leapbc->module~leapio module~leapbc->module~leapkinds module~leapbc->module~leapparallel module~leaputils leapUtils module~leapbc->module~leaputils mpi_f08 mpi_f08 module~leapbc->mpi_f08 module~leapblock->iso_fortran_env module~leapblock->module~leapkinds module~leapblock->module~leapparallel module~leapio_hdf5 leapIO_hdf5 module~leapblock->module~leapio_hdf5 module~leapblock->mpi_f08 module~leapdiffop->module~leapbc module~leapdiffop->module~leapblock module~leapdiffop->module~leapeulerian module~leapdiffop->module~leapkinds module~leapdiffop->module~leapparallel module~leapeulerian->iso_fortran_env module~leapeulerian->module~leapblock module~leapeulerian->module~leapio module~leapeulerian->module~leapkinds module~leapeulerian->module~leapparallel module~leapeulerian->module~leaputils module~leapeulerian->mpi_f08 module~leaphypre->module~leapblock module~leaphypre->module~leapeulerian module~leaphypre->module~leapkinds module~leaphypre->module~leapparallel iso_c_binding iso_c_binding module~leaphypre->iso_c_binding module~leaphypre->mpi_f08 module~leapio_h5hut leapIO_h5hut module~leapio->module~leapio_h5hut module~leapio->module~leapio_hdf5 module~leapio_silo leapIO_silo module~leapio->module~leapio_silo module~leapio_xdmf leapIO_xdmf module~leapio->module~leapio_xdmf module~leapkinds->iso_fortran_env module~leaplagrangian->module~leapblock module~leaplagrangian->module~leapio module~leaplagrangian->module~leapkinds module~leaplagrangian->module~leapparallel module~leapfilters leapfilters module~leaplagrangian->module~leapfilters module~leaplagrangian->module~leaputils module~leaplagrangian->mpi_f08 module~leapmonitor->iso_fortran_env module~leapmonitor->module~leapkinds module~leapmonitor->module~leapparallel module~leapmonitor->module~leaputils module~leapparallel->iso_fortran_env module~leapparallel->module~leapkinds module~leapparallel->mpi_f08 module~leapparser->iso_fortran_env module~leapparser->module~leapkinds module~leapcli leapCli module~leapparser->module~leapcli module~leaptimer->module~leapkinds module~leaptimer->module~leapparallel module~leaptimer->module~leapparser module~leaptimer->module~leaputils module~leapcli->module~leapkinds module~leapfilters->module~leapkinds module~leapio_h5hut->module~leapkinds module~leapio_h5hut->module~leapparallel module~leapio_h5hut->module~leapio_hdf5 module~leapio_hdf5->module~leapkinds module~leapio_hdf5->module~leapparallel module~leapio_hdf5->module~leaputils hdf5 hdf5 module~leapio_hdf5->hdf5 module~leapio_silo->module~leapkinds module~leapio_silo->module~leapparallel module~leapio_silo->module~leaputils module~leapio_silo->mpi_f08 module~leapio_xdmf->module~leapkinds module~leapio_xdmf->module~leaputils module~leaputils->module~leapkinds

Builds and writes immersed boundary.

Arguments

None

Calls

proc~~setupcaseib~2~~CallsGraph proc~setupcaseib~2 SetUpCaseIB none~finalize~27 marker_set%Finalize proc~setupcaseib~2->none~finalize~27 none~get parser_obj%Get proc~setupcaseib~2->none~get none~initialize~27 marker_set%Initialize proc~setupcaseib~2->none~initialize~27 proc~lagrangian_set_applyperiodicity lagrangian_set%lagrangian_set_ApplyPeriodicity proc~setupcaseib~2->proc~lagrangian_set_applyperiodicity proc~lagrangian_set_communicate lagrangian_set%lagrangian_set_Communicate proc~setupcaseib~2->proc~lagrangian_set_communicate proc~lagrangian_set_localize lagrangian_set%lagrangian_set_Localize proc~setupcaseib~2->proc~lagrangian_set_localize proc~lagrangian_set_setwritefilename lagrangian_set%lagrangian_set_SetWriteFileName proc~setupcaseib~2->proc~lagrangian_set_setwritefilename proc~marker_set_addplane marker_set%marker_set_AddPlane proc~setupcaseib~2->proc~marker_set_addplane proc~parallel_obj_rankisroot parallel_obj%parallel_obj_RankIsRoot proc~setupcaseib~2->proc~parallel_obj_rankisroot proc~respart_set_final ResPart_set%ResPart_set_Final none~finalize~27->proc~respart_set_final proc~parser_obj_read0d parser_obj%parser_obj_read0D none~get->proc~parser_obj_read0d proc~parser_obj_read1d parser_obj%parser_obj_read1D none~get->proc~parser_obj_read1d proc~respart_set_init ResPart_set%ResPart_set_Init none~initialize~27->proc~respart_set_init mpi_gather mpi_gather proc~lagrangian_set_communicate->mpi_gather mpi_recv mpi_recv proc~lagrangian_set_communicate->mpi_recv mpi_send mpi_send proc~lagrangian_set_communicate->mpi_send proc~lagrangian_set_recycle lagrangian_set%lagrangian_set_Recycle proc~lagrangian_set_communicate->proc~lagrangian_set_recycle proc~lagrangian_set_resize lagrangian_set%lagrangian_set_Resize proc~lagrangian_set_communicate->proc~lagrangian_set_resize proc~block_obj_getowningcell block_obj%block_obj_GetOwningCell proc~lagrangian_set_localize->proc~block_obj_getowningcell markers markers proc~marker_set_addplane->markers proc~marker_set_addplane->proc~lagrangian_set_resize proc~lagrangian_set_recycle->proc~lagrangian_set_resize none~assigndefault parser_obj%AssignDefault proc~parser_obj_read0d->none~assigndefault proc~parser_obj_fetchlabelid parser_obj%parser_obj_FetchLabelID proc~parser_obj_read0d->proc~parser_obj_fetchlabelid proc~parser_obj_read1d->none~assigndefault proc~parser_obj_read1d->proc~parser_obj_fetchlabelid proc~respart_set_final->none~finalize~27 proc~lagrangian_set_freempitype lagrangian_set%lagrangian_set_FreeMPIType proc~respart_set_final->proc~lagrangian_set_freempitype proc~respart_set_init->none~initialize~27 proc~respart_set_init->proc~lagrangian_set_resize proc~lagrangian_set_creatempitype lagrangian_set%lagrangian_set_CreateMPIType proc~respart_set_init->proc~lagrangian_set_creatempitype proc~respart_set_setobjecttype ResPart_set%ResPart_set_SetObjectType proc~respart_set_init->proc~respart_set_setobjecttype proc~parser_obj_assigndefault0d parser_obj%parser_obj_AssignDefault0D none~assigndefault->proc~parser_obj_assigndefault0d proc~parser_obj_assigndefault1d parser_obj%parser_obj_AssignDefault1D none~assigndefault->proc~parser_obj_assigndefault1d SetMPIDataTypeParams SetMPIDataTypeParams proc~lagrangian_set_creatempitype->SetMPIDataTypeParams mpi_type_commit mpi_type_commit proc~lagrangian_set_creatempitype->mpi_type_commit mpi_type_create_resized mpi_type_create_resized proc~lagrangian_set_creatempitype->mpi_type_create_resized mpi_type_create_struct mpi_type_create_struct proc~lagrangian_set_creatempitype->mpi_type_create_struct mpi_type_get_extent mpi_type_get_extent proc~lagrangian_set_creatempitype->mpi_type_get_extent mpi_type_size mpi_type_size proc~lagrangian_set_creatempitype->mpi_type_size mpi_type_free mpi_type_free proc~lagrangian_set_freempitype->mpi_type_free

Called by

proc~~setupcaseib~2~~CalledByGraph proc~setupcaseib~2 SetUpCaseIB program~main~4 main program~main~4->proc~setupcaseib~2

Source Code

    subroutine SetUpCaseIB()
      !> Builds and writes immersed boundary.
      use immersed_boundaries
      implicit none
      ! Work variables
      character(str64) :: filename
      type(marker_set) :: IB                                                   !! IB
      real(wp)         :: IBy(2)                                               !! IB plane vertical position
      real(wp)         :: center(3,2)                                          !! IB plane centroid
      character(len=3) :: normal(2)                                            !! IB plane normal direction
      real(wp)         :: width(3,2)                                           !! IB plane width
      real(wp)         :: vel(3,2)                                             !! IB plane velocity
      real(wp)         :: dl                                                   !! IB plane resolution (marker spacing)

      select case (CASE_ID)
      case (CASE_NORMAL_IB)
        call parser%Get('IB IC file',    filename   )
        call parser%Get("IB 1 position", IBy(1)    )
      case (CASE_CHANNEL_IB)
        call parser%Get('IB IC file',    filename   )
        call parser%Get("IB 1 position", IBy(1)    )
        call parser%Get("IB 2 position", IBy(2)    )
      end select

      ! Initialze resolved particles
      call IB%Initialize('IB',block,parallel)

      ! Root creates planes
      if (parallel%RankIsRoot()) then

        ! Plane 1 (bottom)
        center(:,1) = [ 0.5_wp*(block%pmin(1)+block%pmax(1)), &
                        IBy(1),                               &
                        0.5_wp*(block%pmin(3)+block%pmax(3))]
        normal(1)   = '+x2'
        width(:,1)  = [ block%pmax(1)-block%pmin(1),          &
                        0.0_wp,                               &
                        block%pmax(3)-block%pmin(3)           ]
        vel(:,1)    = 0.0_wp
        dl          = 0.5_wp*minval(block%dx)

        call IB%AddPlane(center(:,1),normal(1),width(:,1),vel(:,1),dl)

        ! Plane 2 (top)
        if (CASE_ID.eq.CASE_CHANNEL_IB) then
          center(:,2) = [ 0.5_wp*(block%pmin(1)+block%pmax(1)), &
                          IBy(2),                               &
                          0.5_wp*(block%pmin(3)+block%pmax(3))]
          normal(2)   = '-x2'
          width(:,2)  = [ block%pmax(1)-block%pmin(1),          &
                          0.0_wp,                               &
                          block%pmax(3)-block%pmin(3)           ]
          vel(:,2)    = 0.0_wp
          dl          = 0.5_wp*minval(block%dx)

          call IB%AddPlane(center(:,2),normal(2),width(:,2),vel(:,2),dl)
        end if
      end if

      ! Treatment for periodicity
      call IB%ApplyPeriodicity

      ! Send to the right rank
      call IB%Communicate

      ! Localize centers and markers on grid
      call IB%Localize

      ! Write data to disk
      call IB%SetWriteFileName(filename)
      call IB%Write(0,0.0_WP)

      ! Finalize
      call IB%Finalize
    end subroutine SetUpCaseIB