XGC1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
basic_physics.hpp
Go to the documentation of this file.
1 #ifndef BASIC_PHYSICS_HPP
2 #define BASIC_PHYSICS_HPP
3 #include "space_settings.hpp"
4 #include "constants.hpp"
5 
6 // Kinetic energy
7 // E = (1/2) m v^2
8 KOKKOS_INLINE_FUNCTION double kinetic_energy(double mass, double v){
9  return 0.5*mass*v*v;
10 }
11 
12 // Return equilibrium distribution function
13 // f = (n / sqrt(T^3)) * exp(-E/T)
14 KOKKOS_INLINE_FUNCTION double maxwellian_dist(double den, double temp, double energy){
15  const double EXP_LIM = 64.0;
16  return den/(temp*sqrt(temp))*exp(-min(EXP_LIM,energy/temp));
17 }
18 
19 // gyro_radius
20 KOKKOS_INLINE_FUNCTION double gyro_radius(double B, double mu, double c2_2m){
21  return sqrt(mu/(B*c2_2m));
22 }
23 
24 /* Returns thermal velocity
25  * @param[in] mass species mass
26  * @param[in] temp_ev reference temperature
27  * return thermal velocity
28  */
29 KOKKOS_INLINE_FUNCTION double thermal_velocity(double mass, double temp_ev){
30  return sqrt((temp_ev*EV_2_J)/mass);
31 }
32 
33 /* Returns velocity normalized by thermal velocity
34  * @param[in] mass species mass
35  * @param[in] temp_ev reference temperature
36  * @param[in] v input velocity
37  * return normalized velocity
38  */
39 KOKKOS_INLINE_FUNCTION double normalize_to_vth(double mass, double temp_ev, double v){
40  return v*sqrt(mass/(temp_ev*EV_2_J));
41 }
42 
43 /* Returns normalized parallel velocity
44  * @param[in] c_m species charge over mass
45  * @param[in] mass species mass
46  * @param[in] B magnetic field magnitude
47  * @param[in] temp_ev reference temperature
48  * @param[in] rho gyroradius
49  * return normalized parallel velocity
50  */
51 KOKKOS_INLINE_FUNCTION double normalized_v_para(double c_m, double mass, double B, double temp_ev, double rho){
52  return c_m*rho*B*sqrt(mass/(temp_ev*EV_2_J));
53 }
54 
55 /* Returns normalized sqrt(mu)
56  * @param[in] B magnetic field magnitude
57  * @param[in] temp_ev particle/reference temperature
58  * @param[out] mu mu
59  * return normalized sqrt(mu)
60 */
61 KOKKOS_INLINE_FUNCTION double normalized_sqrt_mu(double B, double temp_ev, double mu){
62  return sqrt(mu*2.0*B/(temp_ev*EV_2_J));
63 }
64 
65 // Convert from {rho, mu} to {energy, pitch}
66 KOKKOS_INLINE_FUNCTION void rho_mu_to_en_pitch(double B, double c_m, double c2_2m, double mass, double rho, double mu, double& en, double& pitch){
67  en = mu*B + c2_2m*(rho*rho*B*B);
68  double v_para = c_m*rho*B;
69  double v_perp2 = 2.0*mu*B/mass;
70  pitch=v_para/sqrt(v_para*v_para + v_perp2);
71 }
72 
73 // Convert from {energy, pitch} to {rho, mu}
74 KOKKOS_INLINE_FUNCTION void en_pitch_to_rho_mu(double B, double c2_2m, double en, double pitch, double& rho, double& mu){
75  rho = pitch*sqrt(en/c2_2m)/B;
76  mu = max(0.0,(1.0-pitch*pitch)*en/B);
77 }
78 
79 #endif
KOKKOS_INLINE_FUNCTION double normalized_v_para(double c_m, double mass, double B, double temp_ev, double rho)
Definition: basic_physics.hpp:51
constexpr double EV_2_J
Conversion rate ev to J.
Definition: constants.hpp:5
KOKKOS_INLINE_FUNCTION double thermal_velocity(double mass, double temp_ev)
Definition: basic_physics.hpp:29
real(kind=8) function gyro_radius(x, mu, isp)
Definition: poisson_extra.F90:74
KOKKOS_INLINE_FUNCTION double maxwellian_dist(double den, double temp, double energy)
Definition: basic_physics.hpp:14
KOKKOS_INLINE_FUNCTION double kinetic_energy(double mass, double v)
Definition: basic_physics.hpp:8
KOKKOS_INLINE_FUNCTION void rho_mu_to_en_pitch(double B, double c_m, double c2_2m, double mass, double rho, double mu, double &en, double &pitch)
Definition: basic_physics.hpp:66
KOKKOS_INLINE_FUNCTION double normalize_to_vth(double mass, double temp_ev, double v)
Definition: basic_physics.hpp:39
KOKKOS_INLINE_FUNCTION double normalized_sqrt_mu(double B, double temp_ev, double mu)
Definition: basic_physics.hpp:61
KOKKOS_INLINE_FUNCTION void en_pitch_to_rho_mu(double B, double c2_2m, double en, double pitch, double &rho, double &mu)
Definition: basic_physics.hpp:74