evaluate_surface_current_model Subroutine

public subroutine evaluate_surface_current_model(app, result, cell, outer)

設定されたmodelをdispatchし、固定電流closure用のtarget配列を返す。 zhao_stationary で outer を渡すと、後の更新に使う外部解を返す。

Arguments

Type IntentOptional Attributes Name
type(app_config), intent(in) :: app
type(surface_current_model_result_type), intent(out) :: result
type(irradiation_cell_contract_type), intent(in), optional :: cell
type(sheath_matching_iteration), intent(out), optional :: outer

Calls

proc~~evaluate_surface_current_model~~CallsGraph proc~evaluate_surface_current_model evaluate_surface_current_model conditions conditions proc~evaluate_surface_current_model->conditions emitted_fluxes emitted_fluxes proc~evaluate_surface_current_model->emitted_fluxes initialize initialize proc~evaluate_surface_current_model->initialize maxwellian_emission maxwellian_emission proc~evaluate_surface_current_model->maxwellian_emission none~outward_normal_velocity irradiation_cell_contract_type%outward_normal_velocity proc~evaluate_surface_current_model->none~outward_normal_velocity none~wall_area irradiation_cell_contract_type%wall_area proc~evaluate_surface_current_model->none~wall_area none~wall_tangents_periodic irradiation_cell_contract_type%wall_tangents_periodic proc~evaluate_surface_current_model->none~wall_tangents_periodic proc~lower_ascii lower_ascii proc~evaluate_surface_current_model->proc~lower_ascii proc~resolve_irradiation_cell_contract resolve_irradiation_cell_contract proc~evaluate_surface_current_model->proc~resolve_irradiation_cell_contract proc~species_number_density_m3 species_number_density_m3 proc~evaluate_surface_current_model->proc~species_number_density_m3 proc~species_temperature_k species_temperature_k proc~evaluate_surface_current_model->proc~species_temperature_k proc~resolve_irradiation_cell_contract->proc~lower_ascii

Called by

proc~~evaluate_surface_current_model~~CalledByGraph proc~evaluate_surface_current_model evaluate_surface_current_model proc~evaluate_surface_closure evaluate_surface_closure proc~evaluate_surface_closure->proc~evaluate_surface_current_model

Source Code

  subroutine evaluate_surface_current_model(app, result, cell, outer)
    type(app_config), intent(in) :: app
    type(surface_current_model_result_type), intent(out) :: result
    type(irradiation_cell_contract_type), intent(in), optional :: cell
    type(sheath_matching_iteration), intent(out), optional :: outer
    type(sheath_matching_iteration) :: local_outer
    type(irradiation_cell_contract_type) :: active_cell
    integer(i32) :: status
    character(len=256) :: message

    if (present(cell)) then
      active_cell = cell
    else
      call resolve_irradiation_cell_contract(app, active_cell, status, message)
      if (status /= irradiation_cell_ok) error stop trim(message)
    end if
    call allocate_closure_channels(app, result)
    result%model = trim(lower_ascii(app%surface_current%model))

    select case (trim(result%model))
    case ('none')
      return
    case ('zhao_stationary')
      call evaluate_zhao_stationary_current(app, result, active_cell, local_outer)
      if (present(outer)) outer = local_outer
    case default
      error stop 'Unknown surface current model dispatch.'
    end select
  end subroutine evaluate_surface_current_model