zhao_outflow_refresh_type Derived Type

type, public :: zhao_outflow_refresh_type


Inherits

type~~zhao_outflow_refresh_type~~InheritsGraph type~zhao_outflow_refresh_type zhao_outflow_refresh_type sheath_matching_iteration sheath_matching_iteration type~zhao_outflow_refresh_type->sheath_matching_iteration outer type~irradiation_cell_contract_type irradiation_cell_contract_type type~zhao_outflow_refresh_type->type~irradiation_cell_contract_type cell type~surface_current_model_result_type surface_current_model_result_type type~zhao_outflow_refresh_type->type~surface_current_model_result_type state type~surface_closure_contract_type surface_closure_contract_type type~surface_current_model_result_type->type~surface_closure_contract_type

Type-Bound Procedures

procedure, public :: initialize

  • private subroutine initialize(self, app, mesh, receipt, surface_closure, cell)

    新規 run では設定の表面放出を外部源とする静的根から始め、再開では保存した外部源で根を再構成する。

    Arguments

    Type IntentOptional Attributes Name
    class(zhao_outflow_refresh_type), intent(out) :: self
    type(app_config), intent(in) :: app
    type(mesh_type), intent(in) :: mesh
    type(matching_plane_stats), intent(inout) :: receipt

    外部シースの receipt。再開では保存した外部源を読み、初期化後は現在の外部状態を書く。

    type(surface_closure_contract_type), intent(inout) :: surface_closure
    type(irradiation_cell_contract_type), intent(in), optional :: cell

procedure, public :: is_active

  • private function is_active(self) result(active)

    Arguments

    Type IntentOptional Attributes Name
    class(zhao_outflow_refresh_type), intent(in) :: self

    Return Value logical

procedure, public :: commit_batch

  • private subroutine commit_batch(self, app, mesh, mpi_ctx, moments_thread, emission_reaction_charge, fixed_escape_closed_charge, fixed_escape_unclosed_charge, batch_idx, receipt, surface_closure, refreshed)

    accepted batch の H 通過モーメントを窓へ加え、窓が満ちたら外部根を解き直して次 batch の closure を返す。

    Arguments

    Type IntentOptional Attributes Name
    class(zhao_outflow_refresh_type), intent(inout) :: self
    type(app_config), intent(in) :: app
    type(mesh_type), intent(in) :: mesh
    type(mpi_context), intent(in) :: mpi_ctx
    real(kind=dp), intent(in) :: moments_thread(:,:,:)
    real(kind=dp), intent(in) :: emission_reaction_charge(:)

    固定電流closureがrank合計した種ごとの表面放出の反作用電荷(raw)。

    real(kind=dp), intent(in) :: fixed_escape_closed_charge(:)

    固定電流closureが脱出目標の調整で収支に組み込んだ電荷と、組み込めなかった電荷(帯電符号の大きさ、0 以上)。

    real(kind=dp), intent(in) :: fixed_escape_unclosed_charge(:)

    固定電流closureが脱出目標の調整で収支に組み込んだ電荷と、組み込めなかった電荷(帯電符号の大きさ、0 以上)。

    integer(kind=i32), intent(in) :: batch_idx
    type(matching_plane_stats), intent(inout) :: receipt

    候補 batch の外部シース receipt。

    type(surface_closure_contract_type), intent(inout) :: surface_closure
    logical, intent(out) :: refreshed

Source Code

  type, public :: zhao_outflow_refresh_type
    private
    logical :: active = .false.
    integer(i32) :: refresh_batches = 0_i32
    integer(i32) :: window_batches = 0_i32
    integer(i32) :: photo_idx = 0_i32
    integer(i32) :: secondary_idx = 0_i32
    !> 反射して H を抜けた上流電子を外部源に含めるときの電子 species(含めなければ 0)と、最後の窓のその束。
    integer(i32) :: reflected_idx = 0_i32
    real(dp) :: reflected_flux_m2_s = 0.0_dp
    real(dp) :: window_duration = 0.0_dp
    integer(i32) :: accepted_solves = 0_i32
    real(dp) :: area = 0.0_dp
    real(dp) :: photo_abs_charge = 0.0_dp
    real(dp) :: last_change = 0.0_dp
    !> 窓内の H 外向き通過数、その法線運動エネルギー和 [J]、表面放出数。raw weight 単位。
    !! group 1 = PE、2 = SEE、3 = 反射して H を抜けた上流電子。
    real(dp) :: window_moments(3, 3) = 0.0_dp
    !> 窓内の H 外向き通過数の法線運動エネルギー bin 別内訳。raw weight 単位。
    real(dp) :: window_spectrum(outflow_spectrum_bins, 3) = 0.0_dp
    type(irradiation_cell_contract_type) :: cell
    type(surface_current_model_result_type) :: state
    !> 外部根と、その放出源。更新は前回の根を初期値にする。
    type(sheath_matching_iteration) :: outer
  contains
    procedure :: initialize
    procedure :: is_active
    procedure :: commit_batch
  end type zhao_outflow_refresh_type