resolve_external_boundary_contract Subroutine

public subroutine resolve_external_boundary_contract(reservoir_potential_model, open_boundary_model, contract, status, message)

局所流入補正と通常 open 面モデルを一意な組へ解決する。

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: reservoir_potential_model
character(len=*), intent(in) :: open_boundary_model
type(external_boundary_contract_type), intent(out) :: contract
integer(kind=i32), intent(out) :: status
character(len=*), intent(out) :: message

Calls

proc~~resolve_external_boundary_contract~~CallsGraph proc~resolve_external_boundary_contract resolve_external_boundary_contract proc~lower_ascii lower_ascii proc~resolve_external_boundary_contract->proc~lower_ascii

Source Code

  subroutine resolve_external_boundary_contract( &
    reservoir_potential_model, open_boundary_model, contract, status, message &
    )
    character(len=*), intent(in) :: reservoir_potential_model
    character(len=*), intent(in) :: open_boundary_model
    type(external_boundary_contract_type), intent(out) :: contract
    integer(i32), intent(out) :: status
    character(len=*), intent(out) :: message

    character(len=32) :: reservoir, open_model

    contract = external_boundary_contract_type()
    status = external_boundary_ok
    message = ''
    reservoir = lower_ascii(trim(reservoir_potential_model))
    open_model = lower_ascii(trim(open_boundary_model))

    select case (trim(open_model))
    case ('escape')
      contract%ordinary_open_model = external_open_escape
    case ('potential_barrier')
      contract%ordinary_open_model = external_open_potential_barrier
    case default
      call reject('Unknown sim.open_boundary_model.', status, message)
      return
    end select

    select case (trim(reservoir))
    case ('none')
      contract%inflow_map = external_inflow_none
    case ('infinity_barrier')
      contract%inflow_map = external_inflow_scalar_barrier
    case default
      call reject('Unknown sim.reservoir_potential_model.', status, message)
      return
    end select
  end subroutine resolve_external_boundary_contract