局所流入補正と通常 open 面モデルを一意な組へ解決する。
| Type | Intent | Optional | 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 |
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