make_boundary_inflow_spec Subroutine

public pure subroutine make_boundary_inflow_spec(sim, source_spec, face, inflow_spec)

box全面を開口とする一時的な legacy reservoir spec を構築する。

Arguments

Type IntentOptional Attributes Name
type(sim_config), intent(in) :: sim
type(particle_species_spec), intent(in) :: source_spec
integer(kind=i32), intent(in) :: face
type(particle_species_spec), intent(out) :: inflow_spec

Calls

proc~~make_boundary_inflow_spec~~CallsGraph proc~make_boundary_inflow_spec make_boundary_inflow_spec proc~boundary_face_name~2 boundary_face_name proc~make_boundary_inflow_spec->proc~boundary_face_name~2

Source Code

  pure subroutine make_boundary_inflow_spec(sim, source_spec, face, inflow_spec)
    type(sim_config), intent(in) :: sim
    type(particle_species_spec), intent(in) :: source_spec
    integer(i32), intent(in) :: face
    type(particle_species_spec), intent(out) :: inflow_spec
    integer(i32) :: axis
    logical :: high_side

    inflow_spec = source_spec
    inflow_spec%source_mode = 'reservoir_face'
    call boundary_face_name(face, inflow_spec%inject_face)
    inflow_spec%pos_low = sim%box_min
    inflow_spec%pos_high = sim%box_max
    axis = (face + 1_i32)/2_i32
    high_side = mod(face, 2_i32) == 0_i32
    if (high_side) then
      inflow_spec%pos_low(axis) = sim%box_max(axis)
      inflow_spec%pos_high(axis) = sim%box_max(axis)
    else
      inflow_spec%pos_low(axis) = sim%box_min(axis)
      inflow_spec%pos_high(axis) = sim%box_min(axis)
    end if
    inflow_spec%boundary_inflow_low = 0_i32
    inflow_spec%boundary_inflow_high = 0_i32
  end subroutine make_boundary_inflow_spec