Dice Fortran Backend Documentation
shared_data.f90
Go to the documentation of this file.
1 ! ---------------------------------------------------------------------------------------
2 ! Dice Quantum Monte Carlo
3 ! ---------------------------------------------------------------------------------------
4 ! MODULE: constants
5 !
6 ! DESCRIPTION:
10 !
14 ! ---------------------------------------------------------------------------------------
15 
16 module constants
17 
18  use iso_fortran_env
19 
20  implicit none
21 
22  public
23 
24  real(real64), parameter :: pi = 3.1415926535897_real64
25  real(real64), parameter :: pi_dash = 0.5641895835_real64
26  real(real64), parameter :: pi_dash_2 = 0.0997355701_real64
27  real(real64), parameter :: hbar = 1.054571817e-34_real64
28  real(real64), parameter :: m_elec = 9.1093837015e-31_real64
29  real(real64), parameter :: e_chg = 1.602176634e-19_real64
30  real(real64), parameter :: a_0 = 5.29177210903e-11_real64
31  real(real64), parameter :: eps_0 = 8.8541878128e-12_real64
32  real(real64), parameter :: r2o2 = 0.7071067812_real64
33 
34 end module constants
35 
36 
37 ! ---------------------------------------------------------------------------------------
38 ! MODULE: shared data
39 !
40 ! DESCRIPTION:
43 !
48 ! ---------------------------------------------------------------------------------------
50 
51  use iso_fortran_env
52  use mpi
53 
54  implicit none
55 
56 public
57 
58 
59 ! ---------------------------------------------------------------------------------------
60 ! SECTION: Derived Types
61 ! ---------------------------------------------------------------------------------------
62 
63 
64  ! ---------------------------------------------------------------------------------------
66  ! ---------------------------------------------------------------------------------------
67  type :: qho_type
68  integer(int32) :: steps=100000_int32
69  integer(int32) :: burn_step=3000_int32
70  integer(int32) :: thin_step=10_int32
71  real(real64) :: rcut=3.0
72  real(real64) :: sigma=5.5
73  real(real64), dimension(3) :: alpha = (/0.1,1.0,10.0/)
74  end type qho_type
75 
76  ! ---------------------------------------------------------------------------------------
78  ! ---------------------------------------------------------------------------------------
79  type :: h2plus_type
80  integer(int32) :: steps=100000_int32
81  integer(int32) :: burn_step=5000_int32
82  integer(int32) :: thin_step=20_int32
83  real(real64) :: rcut=3.0_real64
84  real(real64) :: sigma=1.8_real64
85  logical :: auto_params = .false.
87  real(real64) :: ham_fdstep=1e-3_real64
88  real(real64) :: c_fdstep=1e-3_real64
89  real(real64) :: c = 0.7_real64
90  real(real64), dimension(3) :: c_grid = (/0,1,10/)
91  real(real64), dimension(3) :: bond = (/1,3,10/)
92  end type h2plus_type
93 
94  ! ---------------------------------------------------------------------------------------
96  ! ---------------------------------------------------------------------------------------
97  type :: h2_type
98  integer(int32) :: steps=100000_int32
99  integer(int32) :: burn_step=4000_int32
100  integer(int32) :: thin_step=40_int32
101  real(real64) :: rcut=3.0_real64
102  real(real64) :: sigma=0.1_real64
103  logical :: auto_params = .false.
105  real(real64) :: beta = 0.4_real64
106  real(real64), dimension(3) :: beta_grid = (/0,1,10/)
107  real(real64), dimension(3) :: bond = (/1,3,10/)
108  end type h2_type
109 
110  ! ---------------------------------------------------------------------------------------
112  ! ---------------------------------------------------------------------------------------
113  type :: restart_type
114  integer(int32) :: i_qoi=1
115  integer(int32) :: i_par=1
116  logical :: auto=.false.
117  real(real64) :: guess=0.0
118  end type restart_type
119 
120 
121 ! ---------------------------------------------------------------------------------------
122 ! SECTION: Global Variables
123 ! ---------------------------------------------------------------------------------------
124 
125 
126  ! Variable Declarations for CONTROL
127  character(len=10) :: p_system
128  logical :: run_equil=.false.
129  logical :: run_restart =.false.
130  logical :: write_restart = .true.
131  integer(int32) :: restart_num = 1
132  logical :: write_chains =.false.
133  logical :: write_log = .false.
134  character(len=*), parameter :: outfile = 'results.nc'
135  character(len=*), parameter :: logfile = 'out.log'
136 
137  ! Variable Declarations for PARAMETERS
138  type(qho_type) :: qho
140  type(h2_type) :: h2
141  integer(int32) :: d_eqsteps_qho =100000_int32
142  integer(int32) :: d_eqsteps_h2plus =100000_int32
143  integer(int32) :: d_eqsteps_h2 =100000_int32
144 
145  ! Variable Declarations for RESTART
146  type(restart_type) :: res
147  character(len=*), parameter :: resfile_nml = 'res_nml.txt'
148  character(len=*), parameter :: resfile_etot = 'res_etot.nc'
149  character(len=*), parameter :: resfile_epar = 'res_epar.nc'
150 
151  ! Extra variables for general code functions
152  integer(int64) :: seed
153  integer(int32) :: run_steps
154  integer(int32) :: tstep
155  integer(int32) :: alpha_start=1
156  integer(int32) :: bond_start=1
157  integer(int32) :: grid_start=1
158  integer(int32) :: auto_start=1
159  integer(int32) :: i_bond
160  integer :: logid
161  logical :: i_log=.false.
162  integer :: max_chain_len=100000
163 
164  ! MPI Variables
165  integer(int32) :: mpierr
166  integer(int32) :: p
167  integer(int32) :: my_rank
168  integer(int32) :: my_steps
169  integer(int32) :: ip
170  integer(int64) :: ip_seed
171  integer(int32) :: tag_seed=10
172  integer(int32) :: my_size
173  integer(int32) :: tot_size
174  integer,dimension(MPI_STATUS_SIZE) :: status
175  real(real64) :: per_step
176  real(real64) :: per_proc
177  real(real64) :: per_proc2
178 
179 end module shared_data
Contains mathematical constants needed throughout the code, all of which are globally accessible.
Definition: shared_data.f90:16
real(real64), parameter e_chg
Electron charge (C)
Definition: shared_data.f90:29
real(real64), parameter r2o2
sqrt(2)/2
Definition: shared_data.f90:32
real(real64), parameter pi
Pi.
Definition: shared_data.f90:24
real(real64), parameter pi_dash_2
1 / (4*sqrt(2*pi)) - multiplication factor used by H2s_wfn
Definition: shared_data.f90:26
real(real64), parameter m_elec
Electron rest mass (kg)
Definition: shared_data.f90:28
real(real64), parameter pi_dash
1 / sqrt(pi) - multiplication factor used by H1s_wfn
Definition: shared_data.f90:25
real(real64), parameter a_0
Bohr radius (m)
Definition: shared_data.f90:30
real(real64), parameter hbar
Reduced Planck constant (J s)
Definition: shared_data.f90:27
real(real64), parameter eps_0
Vacuum permittivity (F m^-1)
Definition: shared_data.f90:31
Contains derived types, and global variables to store input values of simulation parameters.
Definition: shared_data.f90:49
integer(int64) seed
Seed for the random number generator.
integer(int32) run_steps
Number of MMC steps after burning (for MPI worksharing)
integer(int32) restart_num
Interval of MMC loops between writing restart file.
integer(int32) d_eqsteps_qho
Default total steps for each QHO equilibration MMC chain.
type(h2_type) h2
To store inputs for H2 molecule system.
type(h2plus_type) h2plus
To store inputs for H2 ion system.
integer(int32) alpha_start
Start value for alpha grid, can be >1 for restarts.
character(len= *), parameter outfile
Default NetCDF output file name.
logical run_restart
Tag for restart runs.
type(restart_type) res
Instance of restart_type for reading restart files.
integer(int32) tstep
Interval of steps for thinning in non-equil runs (for MPI worksharing)
integer(int32) auto_start
Start value for automatic search of parameter c, can be >1 for restarts.
character(len= *), parameter resfile_epar
Name of restart file storing parameter energies.
logical write_chains
Tag to write final MMC chains.
integer(int32) ip
Processor rank for MPI communications.
integer(int32) i_bond
Index of bondlength grid value, for restart writing.
real(real64) per_step
Reused multiplicative factor, representing division by total number of MMC steps (tot_size)
real(real64) per_proc2
Reused multiplicative factor, representing division by square of number of processors (p^2)
character(len= *), parameter resfile_nml
Name of restart file storing RESTART namelist.
type(qho_type) qho
To store inputs for QHO system.
real(real64) per_proc
Reused multiplicative factor, representing division by number of processors (p)
logical i_log
Indicates whether the processor needs to write the logfile.
integer(int32) d_eqsteps_h2
Default total steps for each H2 equilibration MMC chain.
integer(int32) tag_seed
Unique tag for communicating rank seeds.
character(len= *), parameter resfile_etot
Name of restart file storing total energies.
logical run_equil
Tag for equilibration runs.
integer, dimension(mpi_status_size) status
Status of MPI Recv commands.
integer(int32) grid_start
Start value for grid search of parameter c, can be >1 for restarts.
integer(int32) my_size
Length of chain on a processor, after burning & thinning.
integer(int32) p
Number of processors.
integer(int32) bond_start
Start value for bondlength grid, can be >1 for restarts.
character(len=10) p_system
System of interest: QHO, H2plus, H2.
logical write_log
Tag to write logfile.
character(len= *), parameter logfile
Default log name (if write_log is True)
integer max_chain_len
Maximum length of energy chains for writing to netCDF files.
integer(int32) tot_size
Total length of chains across processors, after burning and thinning.
logical write_restart
Tag for writing restart files.
integer(int32) my_steps
Number of steps per processor.
integer(int64) ip_seed
Processor seed for MPI communications.
integer(int32) d_eqsteps_h2plus
Default total steps for each H2plus equilibration MMC chain.
integer(int32) my_rank
Rank of current processor.
integer(int32) mpierr
MPI error flag.
integer logid
To store logfile unit.
Derived Type for Hydrogen Molecule, including VQMC defaults.
Definition: shared_data.f90:97
Derived Type for Hydrogen Ion, including VQMC defaults.
Definition: shared_data.f90:79
Derived Type for Quantum Harmonic Oscillator, including VQMC defaults.
Definition: shared_data.f90:67
Derived Type to store restart data.