compute_inflow_flux_from_drifting_maxwellian Function

public function compute_inflow_flux_from_drifting_maxwellian(number_density_m3, temperature_k, m_particle, drift_velocity, inward_normal, vmin_normal) result(gamma_in)

drifting Maxwellian の片側流入束 [#/m^2/s] を返す。

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: number_density_m3

粒子数密度 [1/m^3]。

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

温度 [K]。

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

粒子1個あたりの質量 [kg]。

real(kind=dp), intent(in) :: drift_velocity(3)
real(kind=dp), intent(in) :: inward_normal(3)
real(kind=dp), intent(in), optional :: vmin_normal

法線速度の下限 [m/s](省略時は 0)。

Return Value real(kind=dp)


Called by

proc~~compute_inflow_flux_from_drifting_maxwellian~~CalledByGraph proc~compute_inflow_flux_from_drifting_maxwellian compute_inflow_flux_from_drifting_maxwellian proc~compute_macro_particles_for_batch compute_macro_particles_for_batch proc~compute_macro_particles_for_batch->proc~compute_inflow_flux_from_drifting_maxwellian proc~no_photo_current_balance no_photo_current_balance proc~no_photo_current_balance->proc~compute_inflow_flux_from_drifting_maxwellian proc~resolve_reservoir_target_weight resolve_reservoir_target_weight proc~resolve_reservoir_target_weight->proc~compute_inflow_flux_from_drifting_maxwellian proc~solve_no_photo_floating_potential solve_no_photo_floating_potential proc~solve_no_photo_floating_potential->proc~compute_inflow_flux_from_drifting_maxwellian proc~solve_no_photo_floating_potential->proc~no_photo_current_balance proc~compute_macro_particles_for_species compute_macro_particles_for_species proc~compute_macro_particles_for_species->proc~compute_macro_particles_for_batch proc~init_particle_batch_from_config init_particle_batch_from_config proc~init_particle_batch_from_config->proc~resolve_reservoir_target_weight proc~init_particle_batch_from_config->proc~compute_macro_particles_for_species proc~resolve_sheath_injection_context resolve_sheath_injection_context proc~init_particle_batch_from_config->proc~resolve_sheath_injection_context proc~resolve_sheath_injection_context->proc~solve_no_photo_floating_potential

Source Code

  real(dp) function compute_inflow_flux_from_drifting_maxwellian( &
    number_density_m3, temperature_k, m_particle, drift_velocity, inward_normal, vmin_normal &
    ) result(gamma_in)
    real(dp), intent(in) :: number_density_m3
    real(dp), intent(in) :: temperature_k
    real(dp), intent(in) :: m_particle
    real(dp), intent(in) :: drift_velocity(3)
    real(dp), intent(in) :: inward_normal(3)
    real(dp), intent(in), optional :: vmin_normal
    real(dp) :: sigma, u_n, vmin

    if (number_density_m3 < 0.0_dp) error stop "number_density_m3 must be >= 0"
    if (temperature_k < 0.0_dp) error stop "temperature_k must be >= 0"
    if (m_particle <= 0.0_dp) error stop "m_particle must be > 0"

    vmin = 0.0_dp
    if (present(vmin_normal)) vmin = max(0.0_dp, vmin_normal)
    u_n = dot_product(drift_velocity, inward_normal)
    sigma = sqrt(k_boltzmann*temperature_k/m_particle)
    if (sigma <= 0.0_dp) then
      if (u_n < vmin) then
        gamma_in = 0.0_dp
      else
        gamma_in = number_density_m3*u_n
      end if
      return
    end if

    gamma_in = number_density_m3*flux_weighted_normal_tail(vmin, u_n, sigma)
  end function compute_inflow_flux_from_drifting_maxwellian