apply_number_flux_override_arguments Subroutine

public subroutine apply_number_flux_override_arguments(plan, nspecies, number_flux_override_active, number_flux_override_m2_s)

外部 closure の number-flux override の有効フラグを検査して plan へ写す(flux 値は種の解決時に使う)。

Arguments

Type IntentOptional Attributes Name
type(particle_source_plan_type), intent(inout) :: plan
integer(kind=i32), intent(in) :: nspecies
logical, intent(in), optional :: number_flux_override_active(:)
real(kind=dp), intent(in), optional :: number_flux_override_m2_s(:)

Called by

proc~~apply_number_flux_override_arguments~~CalledByGraph proc~apply_number_flux_override_arguments apply_number_flux_override_arguments proc~build_particle_source_plan build_particle_source_plan proc~build_particle_source_plan->proc~apply_number_flux_override_arguments

Source Code

  subroutine apply_number_flux_override_arguments(plan, nspecies, number_flux_override_active, number_flux_override_m2_s)
    type(particle_source_plan_type), intent(inout) :: plan
    integer(i32), intent(in) :: nspecies
    logical, intent(in), optional :: number_flux_override_active(:)
    real(dp), intent(in), optional :: number_flux_override_m2_s(:)

    if (present(number_flux_override_active) .or. present(number_flux_override_m2_s)) then
      if (.not. present(number_flux_override_active) .or. .not. present(number_flux_override_m2_s)) then
        error stop 'particle source number-flux override requires active and flux arrays together.'
      end if
      if (size(number_flux_override_active) /= nspecies .or. &
          size(number_flux_override_m2_s) /= nspecies) then
        error stop 'particle source number-flux override species count mismatch.'
      end if
      if (any(number_flux_override_active .and. &
              (.not. ieee_is_finite(number_flux_override_m2_s) .or. number_flux_override_m2_s < 0.0_dp))) then
        error stop 'active particle source number-flux overrides must be finite and nonnegative.'
      end if
      plan%number_flux_override_active = number_flux_override_active
    end if
  end subroutine apply_number_flux_override_arguments