drifting Maxwellian の片側流入束 [#/m^2/s] を返す。
| Type | Intent | Optional | 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)。 |
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