SetUpCasePP Subroutine

subroutine SetUpCasePP()

Uses

  • proc~~setupcasepp~~UsesGraph proc~setupcasepp SetUpCasePP module~particles_point particles_point proc~setupcasepp->module~particles_point module~immersed_boundaries immersed_boundaries module~particles_point->module~immersed_boundaries module~leapblock leapBlock module~particles_point->module~leapblock module~leapdiffop leapDiffOp module~particles_point->module~leapdiffop module~leapeulerian leapEulerian module~particles_point->module~leapeulerian module~leapio leapIO module~particles_point->module~leapio module~leapkinds leapKinds module~particles_point->module~leapkinds module~leaplagrangian leapLagrangian module~particles_point->module~leaplagrangian module~leapmonitor leapMonitor module~particles_point->module~leapmonitor module~leapparallel leapParallel module~particles_point->module~leapparallel module~leapparser leapParser module~particles_point->module~leapparser module~leaptimer leapTimer module~particles_point->module~leaptimer 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 module~leapblock->module~leapkinds module~leapblock->module~leapparallel iso_fortran_env iso_fortran_env module~leapblock->iso_fortran_env module~leapio_hdf5 leapIO_hdf5 module~leapblock->module~leapio_hdf5 mpi_f08 mpi_f08 module~leapblock->mpi_f08 module~leapdiffop->module~leapblock module~leapdiffop->module~leapeulerian module~leapdiffop->module~leapkinds module~leapdiffop->module~leapparallel module~leapbc leapBC module~leapdiffop->module~leapbc module~leapeulerian->module~leapblock module~leapeulerian->module~leapio module~leapeulerian->module~leapkinds module~leapeulerian->module~leapparallel module~leapeulerian->iso_fortran_env module~leaputils leapUtils module~leapeulerian->module~leaputils module~leapeulerian->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->module~leapkinds module~leapmonitor->module~leapparallel module~leapmonitor->iso_fortran_env module~leapmonitor->module~leaputils module~leapparallel->module~leapkinds module~leapparallel->iso_fortran_env module~leapparallel->mpi_f08 module~leapparser->module~leapkinds module~leapparser->iso_fortran_env module~leapcli leapCli module~leapparser->module~leapcli module~leaptimer->module~leapkinds module~leaptimer->module~leapparallel module~leaptimer->module~leapparser module~leaptimer->module~leaputils module~immersed_boundaries_markers->module~leapblock module~immersed_boundaries_markers->module~leapdiffop module~immersed_boundaries_markers->module~leapeulerian module~immersed_boundaries_markers->module~leapio module~immersed_boundaries_markers->module~leapkinds module~immersed_boundaries_markers->module~leaplagrangian module~immersed_boundaries_markers->module~leapmonitor module~immersed_boundaries_markers->module~leapparallel module~immersed_boundaries_markers->module~leapparser module~immersed_boundaries_markers->module~leaptimer module~immersed_boundaries_markers->iso_fortran_env module~immersed_boundaries_markers->module~leapbc module~leaphypre leapHypre module~immersed_boundaries_markers->module~leaphypre 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~immersed_boundaries_solids->module~immersed_boundaries_markers module~leapbc->module~leapblock module~leapbc->module~leapeulerian module~leapbc->module~leapio module~leapbc->module~leapkinds module~leapbc->module~leapparallel module~leapbc->iso_fortran_env module~leapbc->module~leaputils module~leapbc->mpi_f08 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 module~leaphypre->module~leapblock module~leaphypre->module~leapeulerian module~leaphypre->module~leapkinds module~leaphypre->module~leapparallel module~leaphypre->mpi_f08 iso_c_binding iso_c_binding module~leaphypre->iso_c_binding

Builds and writes point particles.

Arguments

None

Calls

proc~~setupcasepp~~CallsGraph proc~setupcasepp SetUpCasePP none~finalize~28 particle_set%Finalize proc~setupcasepp->none~finalize~28 none~get parser_obj%Get proc~setupcasepp->none~get none~initialize~28 particle_set%Initialize proc~setupcasepp->none~initialize~28 p p proc~setupcasepp->p particle particle proc~setupcasepp->particle proc~lagrangian_set_applyperiodicity lagrangian_set%lagrangian_set_ApplyPeriodicity proc~setupcasepp->proc~lagrangian_set_applyperiodicity proc~lagrangian_set_resize lagrangian_set%lagrangian_set_Resize proc~setupcasepp->proc~lagrangian_set_resize proc~lagrangian_set_setwritefilename lagrangian_set%lagrangian_set_SetWriteFileName proc~setupcasepp->proc~lagrangian_set_setwritefilename proc~parallel_obj_rankisroot parallel_obj%parallel_obj_RankIsRoot proc~setupcasepp->proc~parallel_obj_rankisroot proc~particle_set_changeparttype particle_set%particle_set_ChangePartType proc~setupcasepp->proc~particle_set_changeparttype proc~respart_set_final ResPart_set%ResPart_set_Final none~finalize~28->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~28->proc~respart_set_init proc~particle_set_changeparttype->proc~lagrangian_set_resize proc~lagrangian_set_creatempitype lagrangian_set%lagrangian_set_CreateMPIType proc~particle_set_changeparttype->proc~lagrangian_set_creatempitype proc~lagrangian_set_freempitype lagrangian_set%lagrangian_set_FreeMPIType proc~particle_set_changeparttype->proc~lagrangian_set_freempitype proc~particle_set_setobjecttype particle_set%particle_set_SetObjectType proc~particle_set_changeparttype->proc~particle_set_setobjecttype 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 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->proc~lagrangian_set_freempitype none~finalize~27 marker_set%Finalize proc~respart_set_final->none~finalize~27 proc~respart_set_init->proc~lagrangian_set_resize proc~respart_set_init->proc~lagrangian_set_creatempitype none~initialize~27 marker_set%Initialize proc~respart_set_init->none~initialize~27 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 none~finalize~27->proc~respart_set_final none~initialize~27->proc~respart_set_init

Called by

proc~~setupcasepp~~CalledByGraph proc~setupcasepp SetUpCasePP program~main~6 main program~main~6->proc~setupcasepp

Source Code

    subroutine SetUpCasePP()
      use particles_point
      !> Builds and writes point particles.
      implicit none
      ! Work variables
      type(particle_set) :: PP
      character(str64)   :: filename
      character(str64)   :: part_type
      real(wp)           :: L(3)
      real(wp)           :: dp
      real(wp)           :: rhop
      integer            :: n
      ! Get info from parser
      call parser%Get("PP IC file",  filename)
      call parser%Get("Particle diameter",   dp       )
      call parser%Get("Particle density",    rhop     )
      call parser%Get("Particle type",       part_type, default = 'default')

      ! Initialize point particle data data
      call PP%Initialize('PP',block,parallel)
      call PP%ChangePartType(part_type)


      if (parallel%RankIsRoot()) then

        L = block%pmax - block%pmin

        ! Activate Np particles
        call PP%Resize(2)

        ! Place particles in head-on collisions
        select type (particle => PP%p)
        class is (particle_obj)
          do n=1,PP%count_
            ! Particle global ID
            particle(n)%id = int(n, kind=8)
            ! Particle diameter
            particle(n)%d  = dp
            select case (n)
            case (1)
              ! Particle position
              particle(n)%p(1) = 0.5_wp*(block%pmin(1) + block%pmax(1))
              particle(n)%p(2) = 0.5_wp*(block%pmin(2) + block%pmax(2)) - particle(n)%d
              particle(n)%p(3) = 0.5_wp*(block%pmin(3) + block%pmax(3))
              ! Particle velocity
              particle(n)%v  = [0.0_wp, 1.0_wp, 0.0_wp]
            case (2)
              ! Particle position
              particle(n)%p(1) = 0.5_wp*(block%pmin(1) + block%pmax(1))
              particle(n)%p(2) = 0.5_wp*(block%pmin(2) + block%pmax(2)) + particle(n)%d
              particle(n)%p(3) = 0.5_wp*(block%pmin(3) + block%pmax(3))
              ! Particle velocity
              particle(n)%v  = [0.0_wp, -1.0_wp, 0.0_wp]
            end select
            ! Particle density
            particle(n)%rho= rhop
            ! Force and Torque on particle
            particle(n)%Fh = 0.0_wp
            particle(n)%Th = 0.0_wp
            particle(n)%Fc = 0.0_wp
            particle(n)%Tc = 0.0_wp
          end do
        end select

      end if

      ! Apply periodicity
      call PP%ApplyPeriodicity()

      ! Write data to disk
      call PP%SetWriteFileName(filename)
      call PP%Write(0,0.0_wp)

      ! Clear data
      call PP%Finalize()
      return
    end subroutine SetUpCasePP