mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-12-21 11:03:29 +01:00
54 lines
1.9 KiB
Fortran
54 lines
1.9 KiB
Fortran
|
subroutine write_cipsi_json(pt2_data, pt2_data_err)
|
||
|
use selection_types
|
||
|
implicit none
|
||
|
BEGIN_DOC
|
||
|
! Writes JSON data for CIPSI runs
|
||
|
END_DOC
|
||
|
type(pt2_type), intent(in) :: pt2_data, pt2_data_err
|
||
|
integer :: i,j,k
|
||
|
|
||
|
call lock_io
|
||
|
character*(64), allocatable :: fmtk(:)
|
||
|
integer :: N_states_p, N_iter_p
|
||
|
N_states_p = min(N_states,N_det)
|
||
|
N_iter_p = min(N_iter,8)
|
||
|
allocate(fmtk(0:N_iter_p))
|
||
|
fmtk(:) = '('' '',E22.15,'','')'
|
||
|
fmtk(N_iter_p) = '('' '',E22.15)'
|
||
|
|
||
|
write(json_unit, json_dict_uopen_fmt)
|
||
|
write(json_unit, json_int_fmt) 'n_det', N_det
|
||
|
if (s2_eig) then
|
||
|
write(json_unit, json_int_fmt) 'n_cfg', N_configuration
|
||
|
if (only_expected_s2) then
|
||
|
write(json_unit, json_int_fmt) 'n_csf', N_csf
|
||
|
endif
|
||
|
endif
|
||
|
write(json_unit, json_array_open_fmt) 'states'
|
||
|
do k=1,N_states_p
|
||
|
write(json_unit, json_dict_uopen_fmt)
|
||
|
write(json_unit, json_real_fmt) 'energy', psi_energy_with_nucl_rep(k)
|
||
|
write(json_unit, json_real_fmt) 's2', psi_s2(k)
|
||
|
write(json_unit, json_real_fmt) 'pt2', pt2_data % pt2(k)
|
||
|
write(json_unit, json_real_fmt) 'pt2_err', pt2_data_err % pt2(k)
|
||
|
write(json_unit, json_real_fmt) 'rpt2', pt2_data % rpt2(k)
|
||
|
write(json_unit, json_real_fmt) 'rpt2_err', pt2_data_err % rpt2(k)
|
||
|
write(json_unit, json_real_fmt) 'variance', pt2_data % variance(k)
|
||
|
write(json_unit, json_real_fmt) 'variance_err', pt2_data_err % variance(k)
|
||
|
write(json_unit, json_array_open_fmt) 'ex_energy'
|
||
|
do i=2,N_iter_p
|
||
|
write(json_unit, fmtk(i)) extrapolated_energy(i,k)
|
||
|
enddo
|
||
|
write(json_unit, json_array_close_fmtx)
|
||
|
if (k < N_states_p) then
|
||
|
write(json_unit, json_dict_close_fmt)
|
||
|
else
|
||
|
write(json_unit, json_dict_close_fmtx)
|
||
|
endif
|
||
|
enddo
|
||
|
write(json_unit, json_array_close_fmtx)
|
||
|
write(json_unit, json_dict_close_fmt)
|
||
|
deallocate(fmtk)
|
||
|
call unlock_io
|
||
|
end
|