gray/src/const_and_precisions.f90

65 lines
3.6 KiB
Fortran
Raw Normal View History

module const_and_precisions
implicit none
public
!------------------------------------------------------------------------
! Common precisions
!------------------------------------------------------------------------
integer, parameter :: i4 = selected_int_kind (9) ! Integer*4
integer, parameter :: i8 = selected_int_kind (18) ! Integer*8
integer, parameter :: r4 = selected_real_kind (6, 37) ! Real*4
integer, parameter :: r8 = selected_real_kind (15, 300) ! Real*8
integer, parameter :: wp_ = r8 ! Work precision
!------------------------------------------------------------------------
! Arithmetic constants
!------------------------------------------------------------------------
integer, parameter :: izero = 0 ! Integer 0
real(wp_), parameter :: zero = 0.0_wp_ ! Real 0
real(wp_), parameter :: half = 0.5_wp_ ! Real 1/2
real(wp_), parameter :: one = 1.0_wp_ ! Real 1
real(wp_), parameter :: two = 2.0_wp_ ! Real 2
real(wp_), parameter :: pi = 3.141592653589793_wp_ ! pi
real(wp_), parameter :: pihalf = 1.57079632679489661923_wp_ ! pi/2
real(wp_), parameter :: sqrt_pi = 1.772453850905516_wp_ ! sqrt(pi)
real(wp_), parameter :: degree = pi/180.0_wp_ ! 1° = pi/180
real(wp_), parameter :: emn1 = 0.367879441171442_wp_ ! exp(-1)
complex(wp_), parameter :: im = (0.0_wp_,1.0_wp_) ! Imaginary unit
complex(wp_), parameter :: czero = (0.0_wp_,0.0_wp_) ! Complex zero
complex(wp_), parameter :: cunit = (1.0_wp_,0.0_wp_) ! Complex one
!------------------------------------------------------------------------
! Computer constants
!------------------------------------------------------------------------
real(wp_), parameter :: comp_eps = epsilon(one) ! Smallest number larger than 1
real(wp_), parameter :: comp_tiny = tiny(one) ! Smallest positive number
real(wp_), parameter :: comp_huge = huge(one) ! Largest positive number
!------------------------------------------------------------------------
! Physical constants (SI)
!------------------------------------------------------------------------
real (wp_), parameter :: e_ = 1.602176487e-19_wp_ ! Elementary charge, C
real (wp_), parameter :: me_ = 9.10938215e-31_wp_ ! Electron mass, kg
real (wp_), parameter :: c_ = 2.99792458e8_wp_ ! Speed of light, m/s
real (wp_), parameter :: mu0_ = 4.0e-7_wp_ * pi ! Magnetic permeability of vacuum, H/m
!------------------------------------------------------------------------
! Physical constants (CGS)
!------------------------------------------------------------------------
real (wp_), parameter :: ccgs_ = c_*1.e2_wp_ ! Speed of light in a vacuum, cm/s
real (wp_), parameter :: mecgs_ = me_*1.e3_wp_ ! Electron mass, g
real (wp_), parameter :: ecgs_ = e_*c_*10._wp_ ! Elementary charge, statcoul
!------------------------------------------------------------------------
! Useful definitions
!------------------------------------------------------------------------
real(wp_), parameter :: kev_ = 1.e3_wp_*e_ ! 1 keV, J
real(wp_), parameter :: mc2_ = me_*c_**2/kev_ ! Electron rest energy, keV
real(wp_), parameter :: mu0inv = 1._wp_/mu0_ ! Inverse magnetic permeability of vacuum, m/H
real(wp_), parameter :: wce1_ = e_/me_ ! ECR (angular) frequency / magnetic field, rad/s/T
real(wp_), parameter :: cm = 0.01_wp_ ! Converts cm to m
end module const_and_precisions