XGCa
 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 
5 // Kinetic energy
6 // E = (1/2) m v^2
7 KOKKOS_INLINE_FUNCTION double kinetic_energy(double mass, double v){
8  return 0.5*mass*v*v;
9 }
10 
11 // Return equilibrium distribution function
12 // f = (n / sqrt(T^3)) * exp(-E/T)
13 KOKKOS_INLINE_FUNCTION double maxwellian_dist(double den, double temp, double energy){
14  const double EXP_LIM = 64.0;
15  return den/(temp*sqrt(temp))*exp(-min(EXP_LIM,energy/temp));
16 }
17 
18 // gyro_radius
19 KOKKOS_INLINE_FUNCTION double gyro_radius(double B, double mu, double c2_2m){
20  return sqrt(mu/(B*c2_2m));
21 }
22 
23 // Convert from {rho, mu} to {energy, pitch}
24 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){
25  en = mu*B + c2_2m*(rho*rho*B*B);
26  double v_para = c_m*rho*B;
27  double v_perp2 = 2.0*mu*B/mass;
28  pitch=v_para/sqrt(v_para*v_para + v_perp2);
29 }
30 
31 // Convert from {energy, pitch} to {rho, mu}
32 KOKKOS_INLINE_FUNCTION void en_pitch_to_rho_mu(double B, double c2_2m, double en, double pitch, double& rho, double& mu){
33  rho = pitch*sqrt(en/c2_2m)/B;
34  mu = max(0.0,(1.0-pitch*pitch)*en/B);
35 }
36 
37 #endif
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:13
KOKKOS_INLINE_FUNCTION double kinetic_energy(double mass, double v)
Definition: basic_physics.hpp:7
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:24
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:32