apply_panel_surface_config Subroutine

public subroutine apply_panel_surface_config(cfg, mesh, loaded_obj)

Arguments

Type IntentOptional Attributes Name
type(app_config), intent(in) :: cfg
type(mesh_type), intent(inout) :: mesh
logical, intent(in) :: loaded_obj

Calls

proc~~apply_panel_surface_config~~CallsGraph proc~apply_panel_surface_config apply_panel_surface_config proc~resolve_panel_surface_sides resolve_panel_surface_sides proc~apply_panel_surface_config->proc~resolve_panel_surface_sides proc~lower_ascii lower_ascii proc~resolve_panel_surface_sides->proc~lower_ascii

Called by

proc~~apply_panel_surface_config~~CalledByGraph proc~apply_panel_surface_config apply_panel_surface_config proc~build_mesh_from_config build_mesh_from_config proc~build_mesh_from_config->proc~apply_panel_surface_config proc~load_or_init_run_state load_or_init_run_state proc~load_or_init_run_state->proc~build_mesh_from_config program~main main program~main->proc~load_or_init_run_state

Source Code

  subroutine apply_panel_surface_config(cfg, mesh, loaded_obj)
    type(app_config), intent(in) :: cfg
    type(mesh_type), intent(inout) :: mesh
    logical, intent(in) :: loaded_obj
    integer(i32) :: i, mesh_id, status
    character(len=256) :: message

    if (any(mesh%panel_area <= 0.0_dp)) then
      error stop 'triangle_p0 requires finite, non-degenerate triangles.'
    end if
    if (loaded_obj) then
      call resolve_panel_surface_sides(mesh, cfg%mesh_surface_side_policy, status, message)
      if (status /= panel_surface_side_ok) error stop 'mesh.surface_side: '//trim(message)
    else
      mesh_id = 0_i32
      do i = 1, cfg%n_templates
        if (.not. cfg%templates(i)%enabled) cycle
        mesh_id = mesh_id + 1_i32
        call resolve_panel_surface_sides( &
          mesh, cfg%templates(i)%surface_side_policy, status, message, mesh_id=mesh_id &
          )
        if (status /= panel_surface_side_ok) error stop 'mesh.templates.surface_side: '//trim(message)
      end do
    end if
    if (any(abs(mesh%elem_vacuum_sign) /= 1_i32)) then
      error stop 'triangle_p0 requires a resolved vacuum side for every element.'
    end if
  end subroutine apply_panel_surface_config