particle_set_Prepare Subroutine

private impure subroutine particle_set_Prepare(this, timer, parser, operators, monitors, update_time)

Prepares for use with solvers.

Type Bound

particle_set

Arguments

Type IntentOptional Attributes Name
class(particle_set), intent(inout) :: this

Set of particles

type(timer_obj), intent(in), target :: timer

Timer utility

type(parser_obj), intent(in), target :: parser

Parser for input file

type(op_obj), intent(in), target :: operators

Operators object

type(monitor_set), intent(in), target :: monitors

Monitors to print to stdout and files

logical, intent(in), optional :: update_time

Calls

proc~~particle_set_prepare~~CallsGraph proc~particle_set_prepare particle_set%particle_set_Prepare none~get~4 parser_obj%Get proc~particle_set_prepare->none~get~4 proc~lagrangian_set_setfilterkernel lagrangian_set%lagrangian_set_SetFilterKernel proc~particle_set_prepare->proc~lagrangian_set_setfilterkernel proc~lagrangian_set_setfiltersize lagrangian_set%lagrangian_set_SetFilterSize proc~particle_set_prepare->proc~lagrangian_set_setfiltersize proc~lagrangian_set_setreadfilename lagrangian_set%lagrangian_set_SetReadFileName proc~particle_set_prepare->proc~lagrangian_set_setreadfilename proc~lagrangian_set_setwritefilename lagrangian_set%lagrangian_set_SetWriteFileName proc~particle_set_prepare->proc~lagrangian_set_setwritefilename proc~particle_set_changeparttype particle_set%particle_set_ChangePartType proc~particle_set_prepare->proc~particle_set_changeparttype proc~parser_obj_read0d parser_obj%parser_obj_read0D none~get~4->proc~parser_obj_read0d proc~parser_obj_read1d parser_obj%parser_obj_read1D none~get~4->proc~parser_obj_read1d 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~lagrangian_set_resize lagrangian_set%lagrangian_set_Resize proc~particle_set_changeparttype->proc~lagrangian_set_resize 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~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

Source Code

    impure subroutine particle_set_Prepare(this,timer,parser,operators,monitors,update_time)
      !> Prepares for use with solvers.
      implicit none
      class(particle_set), intent(inout) :: this                               !! Set of particles
      type(timer_obj),     intent(in),    &
                                  target :: timer                              !! Timer utility
      type(parser_obj),    intent(in),    &
                                  target :: parser                             !! Parser for input file
      type(op_obj),        intent(in),    &
                                  target ::  operators                         !! Operators object
      type(monitor_set),   intent(in),    &
                                  target :: monitors                           !! Monitors to print to stdout and files
      logical,             intent(in),    &
                                optional :: update_time
      ! Work variables
      real(wp), parameter :: zero(3) = [0.0_wp, 0.0_wp, 0.0_wp]                !! Zero vector
      real(wp)            :: dl                                                !! Half filter width
      integer             :: kernel_interp                                     !! Interpolation kernel
      integer             :: kernel_extrap                                     !! Extrapolation kernel
      character(len=str64):: filename                                          !! String to store filenames
      real(wp)            :: time
      integer             :: iter
      character(len=str64):: part_type

      ! Associate pointers
      this%timer    => timer
      this%parser   => parser
      this%op       => operators
      this%monitors => monitors

      ! Determine particle type and change it if neeeded
      call this%parser%Get("Particle type",    part_type)
      call this%ChangePartType(part_type)

      call this%parser%Get('PP read file',  filename )
      call this%SetReadFileName(filename)

      call this%parser%Get('PP write file', filename )
      call this%SetWriteFileName(filename)

      call this%parser%Get('PP overwrite', this%overwrite, default= .true. )

      ! Filtering parameters
      dl = (2.0_wp - 1.0e3_wp*epsilon(1.0_wp))*minval(this%block%dx)
      call this%parser%Get('PP filter half width',  this%l_filter, default = dl     )
      call this%parser%Get('PP interp kernel',      kernel_interp, default = 1      )
      call this%parser%Get('PP extrap kernel',      kernel_extrap, default = 1      )
      call this%SetFilterKernel(kernel_interp,kernel_extrap)
      call this%SetFilterSize(this%l_filter)

      ! Other physical parameters
      call this%parser%Get("Gravity",           this%gravity,      default = zero   )
      call this%parser%Get("Fluid density",     this%rhof,         default = 0.0_wp )
      call this%parser%Get("Bodyforce CPG",     this%CPG,          default = zero   )

      ! Read resolved particle data
      call this%Read(iter,time)

      if (present(update_time)) then
        if (update_time) then
          this%timer%iter = iter
          this%timer%time = time
        end if
      end if

      return
    end subroutine particle_set_Prepare