#include #include #include #include #include //---- physical constants //#define ALPHA (1.0/137.035989561) // fine structure constant //#define HBARC (197.3270529e-15) // Plank's hbar * light velocity [MeV m] // fundermental constants #define GRAVITY_CONSTANT 6.6725985e-11 // [Nm^2/kg^2] #define LIGHT_C 2.997924580e+08 // [m/s] #define PLANK_HBAR 1.0545726663e-34 // [Js] // constants about nucleus #define ELEMENTAL_CHARGE 1.6021773349e-19 // [C] #define ELECTRON_MASS 9.109389754e-31 // [kg] #define ELECTRON_CHARGE (-ELEMENTAL_CHARGE) // [C] #define PROTON_MASS 1.672623110e-27 // [kg] #define PROTON_CHARGE (+ELEMENTAL_CHARGE) // [C] #define NEUTRON_MASS 1.674928610e-27 // [kg] // constants about chemical physics #define AVOGADROS_NUMBER 6.022136736e+23 // [1/mol] #define BOLTZMANN_CONSTANT 1.38065812e-23 // [J/K] // constants about atom #define ALPHA (ELECTRON_CHARGE*ELECTRON_CHARGE\ *LIGHT_C/PLANK_HBAR/1e7) // [1] #define ALPHA_C (ALPHA*LIGHT_C) // [m/s] #define ALPHA_C2 (ALPHA_C*ALPHA_C) // [m^2/s^2] #define HBAR_ALPHA_C (PLANK_HBAR*ALPHA*LIGHT_C) // [Jm] #define HBAR_C (PLANK_HBAR*LIGHT_C) // [Jm] #define BOHR_RADIUS (PLANK_HBAR/(ELECTRON_MASS*ALPHA_C)) // [m] #define RYDBERG_CONSTANT (1.097373153413e7) // [1/m] #define CLASSICAL_ELECTRON_RADIUS (HBAR_ALPHA_C/(ELECTRON_MASS*LIGHT_C*LIGHT_C)) // [m] // base quantities of atomic unit #define ENERGY_AU (ELECTRON_MASS*ALPHA_C2) // [J] #define MOMENT_AU (ELECTRON_MASS*ALPHA_C) // [kgm/s] #define LENGTH_AU (PLANK_HBAR/(ELECTRON_MASS*ALPHA_C)) // [m] #define TIME_AU (PLANK_HBAR/(ELECTRON_MASS*ALPHA_C2)) // [s] // energy convertor #define J_TO_EV (1.0/1.602177335e-19) // [eV/J] #define EV_TO_J (1.602177335e-19) // [J/eV] //---- maximam of random value #ifndef RAND_MAX #define RAND_MAX (0x7fffffff) #endif //---- sets seed of random from time inline void Srand( void ) { srand(time(NULL)); } //---- uniformal random within [0,1] inline double Urand( void ) { return (double)rand()/RAND_MAX; } //---- uniformal random within (0,1] inline double Urand0( void ) { long r; do{ r=rand(); }while(r==0); return (double)r/RAND_MAX; } //---- square function #ifndef __TEMPLATE_SQR #define __TEMPLATE_SQR template inline T sqr( const T& c ) { return c*c; } #endif // __TEMPLATE_SQR