h_artn_units
-
namespace h_artn_units
UNITS module contains all the tool to reconize the Engine and its units to convert the energy/force/length/time in atomic units Atomic Units (au) in plugin-ARTn is the Rydberg-bohr-aut.
- Author
Matic Poberznik,
- Author
Miha Gunde,
- Author
Nicolas Salles
Centralize routines for convert and unconvret: Can be called for any real(DP),rank=0 variable name, will be properly converted according to <name>. NOTE: this could be made better to include flags for each variable, if it is already converted or not, to avoid error of converting multiple times.
- Todo:
Change the unit philosophy: In principle ARTn could work whitout to convert the quantities.
Functions
- pure logical function defined_int (val)
- pure logical function defined_real (val)
- pure logical function defined_str (val)
- pure elemental logical function is_inf_int (val)
- pure elemental logical function is_finite_int (val)
- pure elemental logical function is_nan_int (val)
- pure elemental logical function is_inf_real (val)
- pure elemental logical function is_finite_real (val)
- pure elemental logical function is_nan_real (val)
-
subroutine allocate_int1d(dim1, array, src_val)
-
subroutine allocate_int2d(dim1, dim2, array, src_val)
-
subroutine allocate_real1d(dim1, array, src_val)
-
subroutine allocate_real2d(dim1, dim2, array, src_val)
-
subroutine allocate_real3d(dim1, dim2, dim3, array, src_val)
-
subroutine allocate_str1d(dim1, strlen, array, src_val)
- integer function, public lenstr_local (str)
- integer function, public size_i1d (i1d)
- integer function, public size_r1d (r1d)
- integer function, public size_r2d (r2d, ax)
Variables
- integer, parameter, public caller_is_engine = 10
- integer, parameter, public caller_is_api = 20
- integer, parameter, public nan_int = huge( 1 )
- real(dp), parameter, public nan_real = HUGE( 1.0_DP )
Biggest number in DP representation.
- character(len= *), parameter, public nan_str = "BBBB"
- real(dp), parameter, public eps = epsilon(NAN_REAL)
- real(dp), parameter, public pi = 3.141592653589793_DP
@brief pi number
- real(dp), parameter h_planck_si = 6.62607015E-34_DP
@brief J s
- real(dp), parameter k_boltzmann_si = 1.380649E-23_DP
@brief J K^-1
- real(dp), parameter electron_si = 1.602176634E-19_DP
@brief C
- real(dp), parameter electronvolt_si = 1.602176634E-19_DP
@brief J
- real(dp), parameter electronmass_si = 9.1093837015E-31_DP
@brief Kg
- real(dp), parameter hartree_si = 4.3597447222071E-18_DP
@brief J
- real(dp), parameter rydberg_si = HARTREE_SI/2.0_DP
@brief J
- real(dp), parameter bohr_radius_si = 0.529177210903E-10_DP
@brief m
- real(dp), parameter amu_si = 1.66053906660E-27_DP
@brief Kg
- real(dp), parameter c_si = 2.99792458E+8_DP
@brief m sec^-1
- real(dp), parameter na = 6.022140857E+23_DP
@brief mol^-1
- real(dp), parameter ry2ev = 13.605691930242388_DP
@brief Ry to eV conversion
- real(dp), parameter ry2kcal = 5.2065348237317E-22_DP
@brief Ry to kcal conversion
- real(dp), parameter ry2kj = 2.17987197E-21_DP
@brief Ry to kJoules conversion
- real(dp), parameter ry2kcalpmol = RY2KCAL*NA
@brief Ry to kcal/mole conversion
- real(dp), parameter ry2kjpmol = RY2KJ*NA
@brief Ry to kJoules per mole conversion
- real(dp), parameter, public b2a = 0.529177210903_DP
@brief bohr to angstrom conversion
- real(dp), parameter amu_ry2 = 911.4442431086564_DP
@brief calculated from QE using DP
- real(dp), parameter ps2aut = 41341.374575751_DP/2_DP
@brief picosecond to atomic unit of time
- real(dp), parameter aut2s = 4.8378E-17_DP
@brief atomic time to second (Ry atomic unit)
- real(dp), parameter amu_au = 1822.8884862173129_DP
@brief AMU_SI / ELECTRONMASS_SI Dimensionless Hartree
- real(dp), parameter amu_ry = 911.44421386718750_DP
@brief AMU_AU / 2.0_DP Dimensionless Rydberg
- real(dp), parameter au_sec = 4.83776865317143E-017_DP
@brief H_PLANCK_SI/(2.*pi)/RYDBERG_SI Atomic time to second
- real(dp), parameter au_ps = 4.83776865317143E-005_DP
@brief AU_SEC * 1.0E+12_DP Atomic time to picosecond
- real(dp), parameter au_fs = 4.83776865317143E-002_DP
AU_SEC * 1.0E+15_DP Atomic time to femtosecond.
- character(*), parameter aa = char(197)
Angstrom (ANSI code)
- character(*), parameter to2 = "**2"
exponent 2
- character(len=256), public strg_units
String containing the unit of the system with the output format.
- real(dp), public, protected mass
Mass in Rydberg to buid the force - ARTn is in Rydberg (QE)
- logical, public, protected units_are_set = .false.
flag if the engine_units are known or not.
-
interface allocate_var
Private Functions
-
subroutine allocate_int1d(dim1, array, src_val)
-
subroutine allocate_int2d(dim1, dim2, array, src_val)
-
subroutine allocate_real1d(dim1, array, src_val)
-
subroutine allocate_real2d(dim1, dim2, array, src_val)
-
subroutine allocate_real3d(dim1, dim2, dim3, array, src_val)
-
subroutine allocate_str1d(dim1, strlen, array, src_val)
-
subroutine allocate_int1d(dim1, array, src_val)
-
interface convert_param
-
interface defined_var
Private Functions
- pure logical function defined_int (val)
- pure logical function defined_real (val)
- pure logical function defined_str (val)
-
interface is_finite
Private Functions
- pure elemental logical function is_finite_int (val)
- pure elemental logical function is_finite_real (val)
-
interface is_inf
Private Functions
- pure elemental logical function is_inf_int (val)
- pure elemental logical function is_inf_real (val)
-
interface is_nan
Private Functions
- pure elemental logical function is_nan_int (val)
- pure elemental logical function is_nan_real (val)
-
interface make_units
-
interface unconvert_param
-
interface unit_char