[sim] だけから field/panel の派生契約を構築する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(sim_config), | intent(in) | :: | sim | |||
| type(field_physics_config), | intent(out) | :: | field | |||
| type(panel_kernel_config), | intent(out) | :: | panel |
pure subroutine derive_field_panel_config(sim, field, panel) type(sim_config), intent(in) :: sim type(field_physics_config), intent(out) :: field type(panel_kernel_config), intent(out) :: panel field = field_physics_config() panel = panel_kernel_config() field%backend = lower_ascii(trim(sim%field_solver)) field%normalization = lower_ascii(trim(sim%field_normalization)) select case (trim(field%backend)) case ('direct') panel%kernel_id = 'triangle_p0_exact_direct' case ('treecode') panel%kernel_id = 'triangle_p0_exact_tree_near' case ('fmm') panel%kernel_id = 'triangle_p0_exact_p2m_near' case default panel%kernel_id = 'triangle_p0_exact_auto' end select end subroutine derive_field_panel_config