Dice Fortran Backend Documentation
write_netcdf Module Reference

Contains NetCDF output functions for different problem main & equilibration runs. More...

Functions/Subroutines

subroutine error_check (ierr)
 Checks error status at each point of NetCDF file build. More...
 
subroutine write_qho_equilibration (position_array, energy_array, filename, ierr, QHO, accept_rate, alpha)
 Output QHO system traces for equilibration. More...
 
subroutine write_h2plus_equilibration (position_array, energy_array, filename, ierr, H2plus, accept_rate, c, bond_length)
 Output H2_plus system trace for equilibration. More...
 
subroutine write_h2_equilibration (position_array, energy_array, filename, ierr, H2, accept_rate, beta, bond_length)
 Output H2 system trace for equilibration. More...
 
subroutine write_qho_main (alpha_array, energy_array, uncertainty_array, filename, ierr, QHO, accept_rate)
 Output results of QHO MCMC run. More...
 
subroutine write_h2plus_main (param_array, bondlength_array, energy_array, uncertainty_array, filename, ierr, H2plus, accept_rate)
 Output results of H2plus MCMC run. More...
 
subroutine write_h2_main (param_a_array, param_beta_array, bondlength_array, energy_array, uncertainty_array, filename, ierr, H2, accept_rate)
 Output results of H2 MCMC run. More...
 
subroutine chain_output_1d (position_array, energy_array, filename, ierr)
 Output 1d position and energy arrays of MCMC run to NetCDF file [UNUSED]. More...
 
subroutine chain_output_3d (position_array_3d, energy_array, filename, ierr)
 Output 3d position and 1d energy arrays of MCMC run to NetCDF file [UNUSED]. More...
 
subroutine append_to_array (array, filename, ierr)
 Appends array to a 1d NetCDF array in file [UNUSED]. More...
 

Detailed Description

Contains NetCDF output functions for different problem main & equilibration runs.

Module containing output functions for quantum harmonic oscillator (QHO), hydrogen ion (H_2_plus) and hydrogen molecule (H_2), for both main output MCMC runs and equilibration runs to determine burning / thinning parameters.

Function/Subroutine Documentation

◆ error_check()

subroutine write_netcdf::error_check ( integer, intent(in)  ierr)

Checks error status at each point of NetCDF file build.

Will print error message/code corresponding to ierr input.

Parameters
[in]ierrInternal error value

Definition at line 42 of file netcdf_out.f90.

43  integer,intent(in) :: ierr
44  if (ierr /= nf90_noerr) then
45  print*, trim(nf90_strerror(ierr))
46  return
47  endif
+ Here is the caller graph for this function:

◆ write_qho_equilibration()

subroutine write_netcdf::write_qho_equilibration ( real(real64), dimension(:), intent(in)  position_array,
real(real64), dimension(:), intent(in)  energy_array,
character(len=*), intent(in)  filename,
integer  ierr,
type(qho_type), intent(in)  QHO,
real(real64), intent(in)  accept_rate,
real(real64), intent(in)  alpha 
)

Output QHO system traces for equilibration.

Takes problem specification for QHO system and writes the position and energy MCMC traces for use in equilibration runs.

Parameters
[in]position_array1D position trace
[in]energy_array1D energy trace
[in]filenameNetCDF filename
[in]QHOQHO type from shared data
[in]accept_rateAcceptance rate of MCMC run
[in]alphaQHO wavefunction parameter

Definition at line 73 of file netcdf_out.f90.

75  ! Declaring input variables
76  real(real64), intent(in), dimension(:) :: position_array, energy_array
77  character(len=*), intent(in) :: filename
78  type(QHO_type), intent(in) :: QHO
79  real(real64), intent(in) :: accept_rate, alpha
80 
81 
82  ! Declaring other variables
83  integer, parameter :: ndims=1 ! Dimension of array (1D)
84  integer, parameter :: n_arrays = 2 ! Number of arrays to output
85  integer, dimension(ndims) :: dim_id ! Size of array and dimension ID
86  character(len=1), dimension(ndims) :: dims=(/"t"/) ! Write along t axis
87  integer, dimension(n_arrays) :: var_id ! Variable IDs
88  integer :: ierr, file_id, i ! Error check status, file ID, iterator
89 
90 
91  ! Create file, overwrite if existing
92  ierr = nf90_create(filename, nf90_clobber, file_id)
93  call error_check(ierr)
94 
95  ! 1D array, define dimension
96  do i = 1, ndims
97  ierr = nf90_def_dim(file_id, dims(i), nf90_unlimited, dim_id(i))
98  call error_check(ierr)
99  enddo
100 
101  ! Global metadata
102 
103  ierr = nf90_put_att(file_id, nf90_global, "rcut", qho%rcut)
104  call error_check(ierr)
105  ierr = nf90_put_att(file_id, nf90_global, "sigma", qho%sigma)
106  call error_check(ierr)
107  ierr = nf90_put_att(file_id, nf90_global, "accept_rate", accept_rate)
108  call error_check(ierr)
109  ierr = nf90_put_att(file_id, nf90_global, "alpha", alpha)
110  call error_check(ierr)
111  ierr = nf90_put_att(file_id, nf90_global, "system", "QHO")
112  call error_check(ierr)
113 
114 
115  ! Define variable types from 1D array(s) (real)
116  ierr = nf90_def_var(file_id, "positions", nf90_double, dim_id, var_id(1))
117  call error_check(ierr)
118 
119  ierr = nf90_def_var(file_id, "energies", nf90_double, dim_id, var_id(2))
120  call error_check(ierr)
121 
122  ! Finish defining metadata
123  ierr = nf90_enddef(file_id)
124  call error_check(ierr)
125 
126  ! Actually write 1D array
127  ierr = nf90_put_var(file_id, var_id(1), position_array)
128  call error_check(ierr)
129 
130  ierr = nf90_put_var(file_id, var_id(2), energy_array)
131  call error_check(ierr)
132 
133  ! Close file
134  ierr = nf90_close(file_id)
135  call error_check(ierr)
136 
+ Here is the call graph for this function:

◆ write_h2plus_equilibration()

subroutine write_netcdf::write_h2plus_equilibration ( real(real64), dimension(:, :), intent(in)  position_array,
real(real64), dimension(:), intent(in)  energy_array,
character(len=*), intent(in)  filename,
integer  ierr,
type(h2plus_type), intent(in)  H2plus,
real(real64), intent(in)  accept_rate,
real(real64), intent(in)  c,
real(real64), intent(in)  bond_length 
)

Output H2_plus system trace for equilibration.

Takes problem specification for H2plus system and writes the MCMC trace for use in equilibration runs.

Parameters
[in]position_array3D position traces
[in]energy_array1D energy trace
[in]filenameNetCDF filename
[in]H2plusH2plus type from shared data
[in]accept_rateAcceptance rate of MCMC run
[in]cH2plus system parameter
[in]bond_lengthH2plus bondlength

Definition at line 158 of file netcdf_out.f90.

160  ! Declaring input variables
161  real(real64), intent(in), dimension(:, :) :: position_array
162  real(real64), intent(in), dimension(:) :: energy_array
163  character(len=*), intent(in) :: filename
164  type(H2plus_type), intent(in) :: H2plus
165  real(real64), intent(in) :: accept_rate
166  real(real64), intent(in) :: c
167  real(real64), intent(in) :: bond_length
168 
169 
170  ! Declaring other variables
171  integer, parameter :: ndims=2 ! Dimension of position array (2D)
172  integer, parameter :: n_arrays = 2 ! Number of arrays to output
173  integer, dimension(ndims) :: dim_id ! Size of array and dimension ID
174  character(len=1), dimension(ndims) :: dims=(/"y", "t"/) ! Write along t,y axes
175  integer, dimension(ndims) :: dim_lengths=(/3, nf90_unlimited/)
176  integer, dimension(n_arrays) :: var_id ! Variable IDs
177  integer :: ierr, file_id, i ! Error check status, file ID, iterator
178 
179 
180 
181  ! Create file, overwrite if existing
182  ierr = nf90_create(filename, nf90_clobber, file_id)
183  call error_check(ierr)
184 
185  ! 1D array, define dimension
186  do i = 1, ndims
187  ierr = nf90_def_dim(file_id, dims(i), dim_lengths(i), dim_id(i))
188  call error_check(ierr)
189  enddo
190 
191  ! Global metadata
192 
193  ierr = nf90_put_att(file_id, nf90_global, "rcut", h2plus%rcut)
194  call error_check(ierr)
195  ierr = nf90_put_att(file_id, nf90_global, "sigma", h2plus%sigma)
196  call error_check(ierr)
197  ierr = nf90_put_att(file_id, nf90_global, "accept_rate", accept_rate)
198  call error_check(ierr)
199  ierr = nf90_put_att(file_id, nf90_global, "parameter_c", c)
200  call error_check(ierr)
201  ierr = nf90_put_att(file_id, nf90_global, "bond_length", bond_length)
202  call error_check(ierr)
203  ierr = nf90_put_att(file_id, nf90_global, "system", "H2plus")
204  call error_check(ierr)
205 
206 
207  ! Define variable types from 2D array(s) (real)
208  ierr = nf90_def_var(file_id, "positions", nf90_double, dim_id, var_id(1))
209  call error_check(ierr)
210 
211  ! Define variable types from 1D array (real)
212  ierr = nf90_def_var(file_id, "energies", nf90_double, dim_id(2), var_id(2))
213  call error_check(ierr)
214 
215  ! Finish defining metadata
216  ierr = nf90_enddef(file_id)
217  call error_check(ierr)
218 
219  ! Actually write 2D array
220  ierr = nf90_put_var(file_id, var_id(1), position_array)
221  call error_check(ierr)
222  ! Actually write 1D array(s)
223  ierr = nf90_put_var(file_id, var_id(2), energy_array)
224  call error_check(ierr)
225 
226  ! Close file
227  ierr = nf90_close(file_id)
228  call error_check(ierr)
229 
+ Here is the call graph for this function:

◆ write_h2_equilibration()

subroutine write_netcdf::write_h2_equilibration ( real(real64), dimension(:, :), intent(in)  position_array,
real(real64), dimension(:), intent(in)  energy_array,
character(len=*), intent(in)  filename,
integer  ierr,
type(h2_type), intent(in)  H2,
real(real64), intent(in)  accept_rate,
real(real64), intent(in)  beta,
real(real64), intent(in)  bond_length 
)

Output H2 system trace for equilibration.

Takes problem specification for H2 system and writes the MCMC trace for use in equilibration runs.

Parameters
[in]position_array3D position traces
[in]energy_array1D energy trace
[in]filenameNetCDF filename
[in]H2H2 type from shared data
[in]accept_rateAcceptance rate of MCMC run
[in]betaH2 system parameter
[in]bond_lengthH2 bondlength

Definition at line 251 of file netcdf_out.f90.

253  ! Declaring input variables
254  real(real64), intent(in), dimension(:, :) :: position_array
255  real(real64), intent(in), dimension(:) :: energy_array
256  character(len=*), intent(in) :: filename
257  type(H2_type), intent(in) :: H2
258  real(real64), intent(in) :: accept_rate
259  real(real64), intent(in) :: beta
260  real(real64), intent(in) :: bond_length
261 
262 
263  ! Declaring other variables
264  integer, parameter :: ndims=2 ! Dimension of position array (2D)
265  integer, parameter :: n_arrays = 2 ! Number of arrays to output
266  integer, dimension(ndims) :: dim_id ! Size of array and dimension ID
267  character(len=1), dimension(ndims) :: dims=(/"y", "t"/) ! Write along t,y axes
268  integer, dimension(ndims) :: dim_lengths=(/3, nf90_unlimited/)
269  integer, dimension(n_arrays) :: var_id ! Variable IDs
270  integer :: ierr, file_id, i ! Error check status, file ID, iterator
271 
272 
273  ! Create file, overwrite if existing
274  ierr = nf90_create(filename, nf90_clobber, file_id)
275  call error_check(ierr)
276 
277  ! 1D array, define dimension
278  do i = 1, ndims
279  ierr = nf90_def_dim(file_id, dims(i), dim_lengths(i), dim_id(i))
280  call error_check(ierr)
281  enddo
282 
283  ! Global metadata
284 
285  ierr = nf90_put_att(file_id, nf90_global, "rcut", h2%rcut)
286  call error_check(ierr)
287  ierr = nf90_put_att(file_id, nf90_global, "sigma", h2%sigma)
288  call error_check(ierr)
289  ierr = nf90_put_att(file_id, nf90_global, "accept_rate", accept_rate)
290  call error_check(ierr)
291  ierr = nf90_put_att(file_id, nf90_global, "beta", beta)
292  call error_check(ierr)
293  ierr = nf90_put_att(file_id, nf90_global, "bond_length", bond_length)
294  call error_check(ierr)
295  ierr = nf90_put_att(file_id, nf90_global, "system", "H2")
296  call error_check(ierr)
297 
298 
299  ! Define variable types from 1D array(s) (real)
300  ierr = nf90_def_var(file_id, "positions", nf90_double, dim_id, var_id(1))
301  call error_check(ierr)
302 
303  ! Define variable types from 1D array (real)
304  ierr = nf90_def_var(file_id, "energies", nf90_double, dim_id(2), var_id(2))
305  call error_check(ierr)
306 
307  ! Finish defining metadata
308  ierr = nf90_enddef(file_id)
309  call error_check(ierr)
310 
311  ! Actually write 2D array
312  ierr = nf90_put_var(file_id, var_id(1), position_array)
313  call error_check(ierr)
314  ! Actually write 1D array(s)
315  ierr = nf90_put_var(file_id, var_id(2), energy_array)
316  call error_check(ierr)
317 
318  ! Close file
319  ierr = nf90_close(file_id)
320  call error_check(ierr)
321 
+ Here is the call graph for this function:

◆ write_qho_main()

subroutine write_netcdf::write_qho_main ( real(real64), dimension(:), intent(in)  alpha_array,
real(real64), dimension(:), intent(in)  energy_array,
real(real64), dimension(:), intent(in)  uncertainty_array,
character(len=*), intent(in)  filename,
integer  ierr,
type(qho_type), intent(in)  QHO,
real(real64), dimension(:), intent(in)  accept_rate 
)

Output results of QHO MCMC run.

Outputs arrays of parameter (alpha) and energies at those values to be visualised, as well as run information as metadata.

Parameters
[in]alpha_arrayArray of alpha values
[in]energy_arrayArray of energy values
[in]uncertainty_arrayArray of uncertainties in energy
[in]filenameNetCDF filename
[in]QHOQHO type from shared data
[in]accept_rateAcceptance rate of MCMC run

Definition at line 347 of file netcdf_out.f90.

348  ! Declaring input variables
349  real(real64), intent(in), dimension(:) :: alpha_array, energy_array, uncertainty_array
350  character(len=*), intent(in) :: filename
351  type(QHO_type), intent(in) :: QHO
352  real(real64), intent(in), dimension(:) :: accept_rate
353 
354 
355  ! Declaring other variables
356  integer, parameter :: ndims=1 ! Dimension of array (1D)
357  integer, dimension(ndims) :: dim_id ! Size of array and dimension ID
358  character(len=1), dimension(ndims) :: dims=(/"t"/) ! Write along t axis
359  integer :: ierr, file_id, var_id, var_id_, var_id__, i ! Error check status, file and variable ID(s), iterator
360 
361 
362  ! Create file, overwrite if existing
363  ! Check this! May need care if splitting write into sections
364  ierr = nf90_create(filename, nf90_clobber, file_id)
365  call error_check(ierr)
366 
367  ! 1D array, define dimension
368  do i = 1, ndims
369  ierr = nf90_def_dim(file_id, dims(i), nf90_unlimited, dim_id(i))
370  call error_check(ierr)
371  enddo
372 
373  ! Global metadata
374 
375  ierr = nf90_put_att(file_id, nf90_global, "burn_step", qho%burn_step)
376  call error_check(ierr)
377  ierr = nf90_put_att(file_id, nf90_global, "thin_step", qho%thin_step)
378  call error_check(ierr)
379  ierr = nf90_put_att(file_id, nf90_global, "rcut", qho%rcut)
380  call error_check(ierr)
381  ierr = nf90_put_att(file_id, nf90_global, "sigma", qho%sigma)
382  call error_check(ierr)
383  ierr = nf90_put_att(file_id, nf90_global, "accept_rate", accept_rate)
384  call error_check(ierr)
385  ierr = nf90_put_att(file_id, nf90_global, "system", "QHO")
386  call error_check(ierr)
387 
388  ! Define variable types from 1D array(s) (real)
389  ierr = nf90_def_var(file_id, "Alpha_array", nf90_double, dim_id, var_id)
390  call error_check(ierr)
391 
392  ierr = nf90_def_var(file_id, "total_energies", nf90_double, dim_id, var_id_)
393  call error_check(ierr)
394 
395  ierr = nf90_def_var(file_id, "Uncertainties", nf90_double, dim_id, var_id__)
396  call error_check(ierr)
397 
398  ! Finish defining metadata
399  ierr = nf90_enddef(file_id)
400  call error_check(ierr)
401 
402  ! Actually write 1D array(s)
403  ierr = nf90_put_var(file_id, var_id, alpha_array)
404  call error_check(ierr)
405 
406  ierr = nf90_put_var(file_id, var_id_, energy_array)
407  call error_check(ierr)
408 
409  ierr = nf90_put_var(file_id, var_id__, uncertainty_array)
410  call error_check(ierr)
411 
412  ! Close file
413  ierr = nf90_close(file_id)
414  call error_check(ierr)
415 
+ Here is the call graph for this function:

◆ write_h2plus_main()

subroutine write_netcdf::write_h2plus_main ( real(real64), dimension(:), intent(in)  param_array,
real(real64), dimension(:), intent(in)  bondlength_array,
real(real64), dimension(:), intent(in)  energy_array,
real(real64), dimension(:), intent(in)  uncertainty_array,
character(len=*), intent(in)  filename,
integer  ierr,
type(h2plus_type), intent(in)  H2plus,
real(real64), dimension(:), intent(in)  accept_rate 
)

Output results of H2plus MCMC run.

Outputs arrays of bondlength and energies to be visualised, as well as run information as metadata.

Parameters
[in]param_arrayArray of H2plus system parameters c
[in]bondlength_arrayArray of bondlengths
[in]energy_arrayArray of energy values
[in]uncertainty_arrayArray of uncertainties in energy
[in]filenameNetCDF filename
[in]H2plusH2plus type from shared data
[in]accept_rateAcceptance rate of MCMC run

Definition at line 437 of file netcdf_out.f90.

439 
440  ! Declaring input variables
441  real(real64), intent(in), dimension(:) :: param_array, bondlength_array
442  real(real64), intent(in), dimension(:) :: energy_array, uncertainty_array
443  character(len=*), intent(in) :: filename
444  type(H2plus_type), intent(in) :: H2plus
445  real(real64), intent(in), dimension(:) :: accept_rate
446 
447 
448  ! Declaring other variables
449  integer, parameter :: ndims=1 ! Dimension of array (1D)
450  integer, parameter :: n_arrays = 4 ! Number of arrays to output
451  integer, dimension(ndims) :: dim_id ! Size of array and dimension ID
452  character(len=1), dimension(ndims) :: dims=(/"t"/) ! Write along t axis
453  integer, dimension(n_arrays) :: var_id ! Variable IDs
454  integer :: ierr, file_id, i ! Error check status, file ID, iterator
455 
456 
457  ! Create file, overwrite if existing
458  ! Check this! May need care if splitting write into sections
459  ierr = nf90_create(filename, nf90_clobber, file_id)
460  call error_check(ierr)
461 
462  ! 1D array, define dimension
463  do i = 1, ndims
464  ierr = nf90_def_dim(file_id, dims(i), nf90_unlimited, dim_id(i))
465  call error_check(ierr)
466  enddo
467 
468  ! Global metadata
469 
470  ierr = nf90_put_att(file_id, nf90_global, "burn_step", h2plus%burn_step)
471  call error_check(ierr)
472  ierr = nf90_put_att(file_id, nf90_global, "thin_step", h2plus%thin_step)
473  call error_check(ierr)
474  ierr = nf90_put_att(file_id, nf90_global, "rcut", h2plus%rcut)
475  call error_check(ierr)
476  ierr = nf90_put_att(file_id, nf90_global, "sigma", h2plus%sigma)
477  call error_check(ierr)
478  ierr = nf90_put_att(file_id, nf90_global, "c_grid", h2plus%c_grid)
479  call error_check(ierr)
480  ierr = nf90_put_att(file_id, nf90_global, "accept_rate", accept_rate)
481  call error_check(ierr)
482  ierr = nf90_put_att(file_id, nf90_global, "system", "H2plus")
483  call error_check(ierr)
484 
485 
486  ! Define variable types from 1D array(s) (real)
487  ierr = nf90_def_var(file_id, "Parameter_array", nf90_double, dim_id, var_id(1))
488  call error_check(ierr)
489 
490  ierr = nf90_def_var(file_id, "Bondlength_array", nf90_double, dim_id, var_id(2))
491  call error_check(ierr)
492 
493  ierr = nf90_def_var(file_id, "total_energies", nf90_double, dim_id, var_id(3))
494  call error_check(ierr)
495 
496  ierr = nf90_def_var(file_id, "Uncertainties", nf90_double, dim_id, var_id(4))
497  call error_check(ierr)
498 
499  ! Finish defining metadata
500  ierr = nf90_enddef(file_id)
501  call error_check(ierr)
502 
503  ! Actually write 1D array(s)
504  ierr = nf90_put_var(file_id, var_id(1), param_array)
505  call error_check(ierr)
506 
507  ierr = nf90_put_var(file_id, var_id(2), bondlength_array)
508  call error_check(ierr)
509 
510  ierr = nf90_put_var(file_id, var_id(3), energy_array)
511  call error_check(ierr)
512 
513  ierr = nf90_put_var(file_id, var_id(4), uncertainty_array)
514  call error_check(ierr)
515 
516  ! Close file
517  ierr = nf90_close(file_id)
518  call error_check(ierr)
519 
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ write_h2_main()

subroutine write_netcdf::write_h2_main ( real(real64), dimension(:), intent(in)  param_a_array,
real(real64), dimension(:), intent(in)  param_beta_array,
real(real64), dimension(:), intent(in)  bondlength_array,
real(real64), dimension(:), intent(in)  energy_array,
real(real64), dimension(:), intent(in)  uncertainty_array,
character(len=*), intent(in)  filename,
integer  ierr,
type(h2_type), intent(in)  H2,
real(real64), dimension(:), intent(in)  accept_rate 
)

Output results of H2 MCMC run.

Outputs arrays of bondlength and energies to be visualised, as well as run information as metadata.

Parameters
[in]param_a_arrayArray of H2 system a parameters
[in]param_beta_arrayArray of H2 system beta parameters
[in]bondlength_arrayArray of bondlengths
[in]energy_arrayArray of energy values
[in]uncertainty_arrayArray of uncertainties in energy
[in]filenameNetCDF filename
[in]H2H2 type from shared data
[in]accept_rateAcceptance rate of MCMC run

Definition at line 542 of file netcdf_out.f90.

544  ! Declaring input variables
545  real(real64), intent(in), dimension(:) :: param_a_array, param_beta_array
546  real(real64), intent(in), dimension(:) :: bondlength_array, energy_array
547  real(real64), intent(in), dimension(:) :: uncertainty_array
548  character(len=*), intent(in) :: filename
549  type(H2_type), intent(in) :: H2
550  real(real64), intent(in), dimension(:) :: accept_rate
551 
552 
553  ! Declaring other variables
554  integer, parameter :: ndims=1 ! Dimension of array (1D)
555  integer, parameter :: n_arrays = 5 ! Number of arrays to output
556  integer, dimension(ndims) :: dim_id ! Size of array and dimension ID
557  character(len=1), dimension(ndims) :: dims=(/"t"/) ! Write along t axis
558  integer, dimension(n_arrays) :: var_id ! Variable IDs
559  integer :: ierr, file_id, i ! Error check status, file ID, iterator
560 
561 
562  ! Create file, overwrite if existing
563  ! Check this! May need care if splitting write into sections
564  ierr = nf90_create(filename, nf90_clobber, file_id)
565  call error_check(ierr)
566 
567  ! 1D array, define dimension
568  do i = 1, ndims
569  ierr = nf90_def_dim(file_id, dims(i), nf90_unlimited, dim_id(i))
570  call error_check(ierr)
571  enddo
572 
573  ! Global metadata
574 
575  ierr = nf90_put_att(file_id, nf90_global, "burn_step", h2%burn_step)
576  call error_check(ierr)
577  ierr = nf90_put_att(file_id, nf90_global, "thin_step", h2%thin_step)
578  call error_check(ierr)
579  ierr = nf90_put_att(file_id, nf90_global, "rcut", h2%rcut)
580  call error_check(ierr)
581  ierr = nf90_put_att(file_id, nf90_global, "sigma", h2%sigma)
582  call error_check(ierr)
583  ierr = nf90_put_att(file_id, nf90_global, "beta_grid", h2%beta_grid)
584  call error_check(ierr)
585  ierr = nf90_put_att(file_id, nf90_global, "accept_rate", accept_rate)
586  call error_check(ierr)
587  ierr = nf90_put_att(file_id, nf90_global, "system", "H2")
588  call error_check(ierr)
589 
590 
591  ! Define variable types from 1D array(s) (real)
592  ierr = nf90_def_var(file_id, "Parameter_a_array", nf90_double, dim_id, var_id(1))
593  call error_check(ierr)
594 
595  ierr = nf90_def_var(file_id, "Parameter_beta_array", nf90_double, dim_id, var_id(2))
596  call error_check(ierr)
597 
598  ierr = nf90_def_var(file_id, "Bondlength_array", nf90_double, dim_id, var_id(3))
599  call error_check(ierr)
600 
601  ierr = nf90_def_var(file_id, "total_energies", nf90_double, dim_id, var_id(4))
602  call error_check(ierr)
603 
604  ierr = nf90_def_var(file_id, "Uncertainties", nf90_double, dim_id, var_id(5))
605  call error_check(ierr)
606 
607  ! Finish defining metadata
608  ierr = nf90_enddef(file_id)
609  call error_check(ierr)
610 
611  ! Actually write 1D array(s)
612  ierr = nf90_put_var(file_id, var_id(1), param_a_array)
613  call error_check(ierr)
614 
615  ierr = nf90_put_var(file_id, var_id(2), param_beta_array)
616  call error_check(ierr)
617 
618  ierr = nf90_put_var(file_id, var_id(3), bondlength_array)
619  call error_check(ierr)
620 
621  ierr = nf90_put_var(file_id, var_id(4), energy_array)
622  call error_check(ierr)
623 
624  ierr = nf90_put_var(file_id, var_id(5), uncertainty_array)
625  call error_check(ierr)
626 
627  ! Close file
628  ierr = nf90_close(file_id)
629  call error_check(ierr)
630 
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ chain_output_1d()

subroutine write_netcdf::chain_output_1d ( real(real64), dimension(:), intent(in)  position_array,
real(real64), dimension(:), intent(in)  energy_array,
character(len=*), intent(in)  filename,
integer  ierr 
)

Output 1d position and energy arrays of MCMC run to NetCDF file [UNUSED].

Parameters
[in]position_arrayArray of positions
[in]energy_arrayArray of energy values
[in]filenameNetCDF filename

Definition at line 646 of file netcdf_out.f90.

647  ! Declaring input variables
648  real(real64), intent(in), dimension(:) :: position_array, energy_array
649  character(len=*), intent(in) :: filename
650 
651  ! Declaring other variables
652  integer, parameter :: ndims=1 ! Dimension of array (1D)
653  integer, parameter :: n_arrays = 2 ! Number of arrays to output
654  integer, dimension(ndims) :: dim_id ! Size of array and dimension ID
655  character(len=1), dimension(ndims) :: dims=(/"t"/) ! Write along t axis
656  integer, dimension(n_arrays) :: var_id ! Variable IDs
657  integer :: ierr, file_id, i ! Error check status, file ID, iterator
658 
659  ! Create file, overwrite if existing
660  ierr = nf90_create(filename, nf90_clobber, file_id)
661  call error_check(ierr)
662 
663  ! 1D array, define dimension
664  do i = 1, ndims
665  ierr = nf90_def_dim(file_id, dims(i), nf90_unlimited, dim_id(i))
666  call error_check(ierr)
667  enddo
668 
669  ! Global metadata
670  ! TO DO
671 
672  ! Define variable types from 1D array (real)
673  ierr = nf90_def_var(file_id, "Positions", nf90_double, dim_id, var_id(1))
674  call error_check(ierr)
675 
676  ierr = nf90_def_var(file_id, "Energies", nf90_double, dim_id, var_id(2))
677  call error_check(ierr)
678 
679  ! Finish defining metadata
680  ierr = nf90_enddef(file_id)
681  call error_check(ierr)
682 
683  ! Actually write 1D array(s)
684  ierr = nf90_put_var(file_id, var_id(1), position_array)
685  call error_check(ierr)
686 
687  ierr = nf90_put_var(file_id, var_id(2), energy_array)
688  call error_check(ierr)
689 
690  ! Close file
691  ierr = nf90_close(file_id)
692  call error_check(ierr)
693 
+ Here is the call graph for this function:

◆ chain_output_3d()

subroutine write_netcdf::chain_output_3d ( real(real64), dimension(:,:), intent(in)  position_array_3d,
real(real64), dimension(:), intent(in)  energy_array,
character(len=*), intent(in)  filename,
integer  ierr 
)

Output 3d position and 1d energy arrays of MCMC run to NetCDF file [UNUSED].

Parameters
[in]position_arrayArray of positions
[in]energy_arrayArray of energy values
[in]filenameNetCDF filename

Definition at line 708 of file netcdf_out.f90.

709 
710  ! Declaring input variables
711  real(real64), intent(in), dimension(:,:) :: position_array_3d
712  real(real64), intent(in), dimension(:) :: energy_array
713  character(len=*), intent(in) :: filename
714 
715  ! Declaring other variables
716  integer, parameter :: ndims=2 ! Dimension of position array (2D)
717  integer, parameter :: n_arrays = 2 ! Number of arrays to output
718  integer, dimension(ndims) :: dim_id ! Size of array and dimension ID
719  character(len=1), dimension(ndims) :: dims=(/"y", "t"/) ! Write along t,y axes
720  integer, dimension(ndims) :: dim_lengths=(/3, nf90_unlimited/)
721  integer, dimension(n_arrays) :: var_id ! Variable IDs
722  integer :: ierr, file_id, i ! Error check status, file ID, iterator
723 
724  ! Create file, overwrite if existing
725  ierr = nf90_create(filename, nf90_clobber, file_id)
726  call error_check(ierr)
727 
728  ! 2D array, define dimensions
729  do i = 1, ndims
730  ierr = nf90_def_dim(file_id, dims(i), dim_lengths(i), dim_id(i))
731  call error_check(ierr)
732  enddo
733 
734  ! Global metadata
735  ! TO DO
736 
737  ! Define variable types from 2D array (real)
738  ierr = nf90_def_var(file_id, "3D Positions", nf90_double, dim_id, var_id(1))
739  call error_check(ierr)
740  ! Define variable types from 1D array (real)
741  ierr = nf90_def_var(file_id, "Energies", nf90_double, dim_id(2), var_id(2))
742  call error_check(ierr)
743 
744  ! Finish defining metadata
745  ierr = nf90_enddef(file_id)
746  call error_check(ierr)
747 
748  ! Actually write 2D array(s)
749  ierr = nf90_put_var(file_id, var_id(1), position_array_3d)
750  call error_check(ierr)
751  ! Actually write 1D array(s)
752  ierr = nf90_put_var(file_id, var_id(2), energy_array)
753  call error_check(ierr)
754 
755  ! Close file
756  ierr = nf90_close(file_id)
757  call error_check(ierr)
758 
+ Here is the call graph for this function:

◆ append_to_array()

subroutine write_netcdf::append_to_array ( real, dimension(:), intent(in)  array,
character(len=*), intent(in)  filename,
integer  ierr 
)

Appends array to a 1d NetCDF array in file [UNUSED].

Parameters
[in]arrayArray to be appended
[in]filenameNetCDF filename with array

Definition at line 773 of file netcdf_out.f90.

774  ! Declaring inpit variables
775  real, intent(in), dimension(:) :: array
776  character(len=*), intent(in) :: filename
777 
778  ! Declaring other variables
779  integer, parameter :: ndims=1 ! Dimension of array (1D)
780  integer, dimension(ndims) :: dim_id ! Size of array and dimension ID
781  character(len=1), dimension(ndims) :: dims=(/"t"/) ! Write along t axis
782  integer :: ierr, file_id, var_id, i, array_length ! Error check status, file and variable ID, iterator
783  integer, dimension(1) :: start_array
784 
785 
786  ! Open existing NetCDF file in read / write mode
787  ierr = nf90_open(filename, nf90_write, file_id)
788  call error_check(ierr)
789 
790  ! Grab variable ID of Trace / 1D array
791  ierr = nf90_inq_varid(file_id, "Trace", var_id)
792  call error_check(ierr)
793 
794  ! Grab dimension ID of Trace / 1D array ("t")
795  do i = 1, ndims
796  ierr = nf90_inq_dimid(file_id, dims(i), dim_id(i))
797  call error_check(ierr)
798  enddo
799 
800  ! Grab length of dimension / 1D array
801  ierr = nf90_inquire_dimension(file_id, dim_id(1), dims(1), array_length)
802  call error_check(ierr)
803 
804  start_array(1) = array_length
805 
806  ! Write new data to end of 1D array
807  ierr = nf90_put_var(file_id, var_id, array, start=start_array)
808  call error_check(ierr)
809 
810  ! Close file
811  ierr = nf90_close(file_id)
812  call error_check(ierr)
813 
+ Here is the call graph for this function: