mirror of
https://github.com/TREX-CoE/fparser.git
synced 2024-08-24 22:21:45 +02:00
creating minimal example
This commit is contained in:
parent
f45ab6db3d
commit
255096fc3b
15473
src/TZ_1M_15k.det
Normal file
15473
src/TZ_1M_15k.det
Normal file
File diff suppressed because one or more lines are too long
148
src/iochamp.f90
148
src/iochamp.f90
@ -33,6 +33,7 @@ PROGRAM iochamp
|
||||
character(len=20) :: real_format = '(A, T20, F14.8)'
|
||||
character(len=20) :: int_format = '(A, T20, I8)'
|
||||
character(len=80) :: string_format = '(A, T40, A)'
|
||||
character(len=80) :: logical_format = '(A, T40, L)'
|
||||
|
||||
! for determinants sections
|
||||
integer :: nelectrons, nexcitation, iostat
|
||||
@ -44,6 +45,8 @@ PROGRAM iochamp
|
||||
! Initialize
|
||||
call fdf_init('test-champ.inp', 'test-champ.out')
|
||||
|
||||
|
||||
write(6,*) '------------------------------------------------------'
|
||||
! strings/characters
|
||||
title = fdf_string('title', 'Default title')
|
||||
write(6,'(A)') 'Title of the calculation :: ', title
|
||||
@ -52,108 +55,53 @@ PROGRAM iochamp
|
||||
path_pool = fdf_string('pool', './')
|
||||
write(6,fmt=string_format) 'pool directory location :: ', path_pool
|
||||
|
||||
write(6,*) '------------------------------------------------------'
|
||||
|
||||
|
||||
! Get all the filenames from which the data is to be read
|
||||
file_molecule = fdf_load_filename('molecule', 'default.xyz')
|
||||
write(6,fmt=string_format) 'filename molecule :: ', trim(file_molecule)
|
||||
|
||||
file_pseudo = fdf_load_filename('pseudopot', 'default.psp')
|
||||
write(6,fmt=string_format) 'filename pseuodpotential :: ', trim(file_pseudo)
|
||||
|
||||
file_basis = fdf_load_filename('basis', 'default.bas')
|
||||
file_basis = fdf_load_filename('basis', 'default.gbs')
|
||||
write(6,fmt=string_format) 'filename basis :: ', trim(file_basis)
|
||||
|
||||
file_determinants = fdf_load_filename('determinants', 'default.det')
|
||||
write(6,fmt=string_format) 'filename determinants :: ', trim(file_determinants)
|
||||
|
||||
file_orbitals = fdf_load_filename('orbitals', 'default.orb')
|
||||
write(6,fmt=string_format) 'filename orbitals :: ', trim(file_orbitals)
|
||||
|
||||
file_jastrow = fdf_load_filename('jastrow', 'default.jas')
|
||||
write(6,fmt=string_format) 'filename jastrow :: ',trim(file_jastrow)
|
||||
write(6,*) '------------------------------------------------------'
|
||||
|
||||
file_jastrow_deriv = fdf_load_filename('jastrow_deriv', 'default.jasder')
|
||||
write(6,fmt=string_format) 'filename jastrow derivatives :: ', trim(file_jastrow_deriv)
|
||||
|
||||
|
||||
! &optwf ioptwf 1 ioptci 1 ioptjas 1 ioptorb 1
|
||||
! Logical variables
|
||||
optimize_wavefunction = fdf_boolean("optimize_wavefunction", .false.)
|
||||
write(6,*) ' optimize_wavefunction = ', optimize_wavefunction
|
||||
|
||||
optimize_ci = fdf_boolean('optimize_ci', .false.)
|
||||
write(6,*) ' optimize_ci = ', optimize_ci
|
||||
|
||||
optimize_jastrow = fdf_boolean('optimize_jastrow', .false.)
|
||||
write(6,*) ' optimize_jastrow = ', optimize_jastrow
|
||||
|
||||
optimize_orbitals = fdf_boolean('optimize_orbitals', .false.)
|
||||
write(6,*) ' optimize_orbitals = ', optimize_orbitals
|
||||
|
||||
write(6,'(A)')
|
||||
write(6,*) '------------------------------------------------------'
|
||||
|
||||
|
||||
! Integer numbers (keyword, default_value). The variable is assigned default_value when keyword is not present
|
||||
! &optwf ncore 0 nextorb 280 no_active 0
|
||||
! &optwf nblk_max 200 nopt_iter 2
|
||||
|
||||
ncore = fdf_integer('ncore', 0)
|
||||
write(6,fmt=int_format) 'NCore =', ncore
|
||||
|
||||
nextorb = fdf_integer('nextorb', 0)
|
||||
write(6,fmt=int_format) 'Next Orb =', nextorb
|
||||
|
||||
no_active = fdf_integer('no_active', 0)
|
||||
write(6,fmt=int_format) 'no_active =', no_active
|
||||
|
||||
nblk_max = fdf_integer('nblk_max', 0)
|
||||
write(6,fmt=int_format) 'nblk max =', nblk_max
|
||||
|
||||
nopt_iter = fdf_integer('nopt_iter', 0)
|
||||
write(6,fmt=int_format) 'nopt_iter =', nopt_iter
|
||||
|
||||
|
||||
! floats (keyword, default_value) variable is assigned default_value when keyword is not present
|
||||
|
||||
! &optwf sr_tau 0.025 sr_eps 0.001 sr_adiag 0.01
|
||||
! &optwf isample_cmat 0 energy_tol 0.0
|
||||
sr_eps = fdf_double('sr_eps', 0.025d0)
|
||||
write(6,fmt=real_format) 'sr_eps:', sr_eps
|
||||
|
||||
! logical :: true, .true., yes, T, 1, and TRUE are equivalent
|
||||
debug = fdf_boolean('Debug', .TRUE.)
|
||||
write(6,'(A, L2)') 'Debug:', debug
|
||||
|
||||
! floats/integers/strings/boolean can be parsed generically using fdf_get
|
||||
|
||||
sr_tau = fdf_get('sr_tau', 0.025d0)
|
||||
write(6,fmt=real_format) 'sr_tau:', sr_tau
|
||||
|
||||
sr_eps = fdf_get('sr_eps', 0.001d0)
|
||||
write(6,fmt=real_format) 'sr_eps:', sr_eps
|
||||
|
||||
sr_adiag = fdf_get('sr_adiag', 0.01d0)
|
||||
write(6,fmt=real_format) 'sr_adiag:', sr_adiag
|
||||
nspin1 = fdf_get('nspin1', 1)
|
||||
write(6,fmt=int_format) 'nspin1 from global.fdf ', nspin1
|
||||
|
||||
energy_tol = fdf_get('energy_tol', 0.00001d0)
|
||||
write(6,fmt=real_format) 'energy_tol:', energy_tol
|
||||
|
||||
! &optwf method sr_n multiple_adiag 0
|
||||
|
||||
opt_method = fdf_get('opt_method', "sr_n")
|
||||
write(6,*) 'Optimization method ', opt_method
|
||||
write(6,fmt=string_format) 'Optimization method ', opt_method
|
||||
|
||||
multiple_adiag = fdf_get('multiple_adiag', .false.)
|
||||
write(6,*) 'multiple_adiag:', multiple_adiag
|
||||
|
||||
|
||||
! logical :: true, .true., yes, T, and TRUE are equivalent
|
||||
debug = fdf_boolean('Debug', .TRUE.)
|
||||
write(6,'(A, L2)') 'Debug:', debug
|
||||
|
||||
|
||||
! ianalyt_lap 1 isc 2 nspin1 1 nspin2 1 ifock 0
|
||||
analytic_laplacian = fdf_get('ianalyt_lap', 1)
|
||||
write(6,*) 'analytic laplacian from global.fdf pointer explained ', ianalyt_lap
|
||||
|
||||
nspin1 = fdf_get('nspin1', 1)
|
||||
write(6,*) 'nspin1 from global.fdf ', nspin1
|
||||
|
||||
nspin2 = fdf_get('nspin2', 1)
|
||||
write(6,*) 'nspin2 from global.fdf ', nspin2
|
||||
|
||||
ifock = fdf_get('ifock', 1)
|
||||
write(6,*) 'ifock from global.fdf ', ifock
|
||||
write(6,fmt=logical_format) 'multiple_adiag:', multiple_adiag
|
||||
|
||||
|
||||
! mixed types in one line (for example, reading a number with units)
|
||||
@ -169,17 +117,6 @@ PROGRAM iochamp
|
||||
|
||||
|
||||
|
||||
! Additional keywords. check if they clash with existing
|
||||
|
||||
excess_charge = fdf_integer('excess_charge', 0)
|
||||
write(6,fmt=int_format) 'Excess charges =', excess_charge
|
||||
|
||||
multiplicity = fdf_integer('multiplicity', 1) ! default multiplicity singlet. An assertion is needed
|
||||
write(6,fmt=int_format) 'multiplicity =', multiplicity
|
||||
|
||||
|
||||
|
||||
|
||||
! write(6,'(A,4X)') 'optimize_wavefunction using bline', (subblock(i), i = 1, 4)
|
||||
|
||||
if (fdf_block('general', bfdf)) then
|
||||
@ -231,9 +168,8 @@ PROGRAM iochamp
|
||||
|
||||
if (fdf_block('molecule', bfdf)) then
|
||||
! External file reading
|
||||
write(6,*) 'beginning of external file coordinates block '
|
||||
write(6,*) 'Beginning of external file coordinates block '
|
||||
ia = 1
|
||||
! write(*,*) "linecount", fdf_block_linecount("molecule")
|
||||
|
||||
do while((fdf_bline(bfdf, pline)))
|
||||
! get the integer from the first line
|
||||
@ -284,37 +220,9 @@ PROGRAM iochamp
|
||||
write(6,*) '------------------------------------------------------'
|
||||
|
||||
|
||||
if (fdf_block('inline_xyz', bfdf)) then
|
||||
! Forward reading
|
||||
write(6,*) 'Reading an inline_xyz block '
|
||||
ia = 1
|
||||
|
||||
do while((fdf_bline(bfdf, pline)))
|
||||
|
||||
if (pline%ntokens == 1) then
|
||||
number_of_atoms = fdf_bintegers(pline, 1)
|
||||
write(*,*) "Number of atoms", number_of_atoms
|
||||
endif
|
||||
na = number_of_atoms
|
||||
|
||||
if (pline%ntokens == 4) then
|
||||
symbol(ia) = fdf_bnames(pline, 1)
|
||||
do i= 1, 3
|
||||
xa(i,ia) = fdf_bvalues(pline, i)
|
||||
enddo
|
||||
ia = ia + 1
|
||||
endif
|
||||
enddo
|
||||
|
||||
write(6,*) 'Inline XYZ Coordinates block:'
|
||||
do ia= 1, na
|
||||
write(6,'(A4,3F10.6)') symbol(ia), (xa(i,ia),i=1,3)
|
||||
enddo
|
||||
endif
|
||||
|
||||
write(6,'(A)')
|
||||
|
||||
write(6,*) '------------------------------------------------------'
|
||||
|
||||
|
||||
! Determinants as a block. read directly from the input file
|
||||
@ -361,18 +269,20 @@ PROGRAM iochamp
|
||||
if (.not. allocated(det_coeff)) allocate(det_coeff(ndeterminants))
|
||||
|
||||
read(11,*) (det_coeff(i), i=1,ndeterminants)
|
||||
write(fmt,*) '(', ndeterminants, '(f11.8,1x))'
|
||||
write(*,fmt) (det_coeff(i), i=1,ndeterminants)
|
||||
! write(*,'(<ndeterminants>(f11.8, 1x))') (det_coeff(i), i=1,ndeterminants) ! for Intel Fortran
|
||||
|
||||
nbeta = nelectrons - nalpha
|
||||
! allocate the orbital mapping array
|
||||
if (.not. allocated(iworbd)) allocate(iworbd(nelectrons, ndeterminants))
|
||||
|
||||
write(*,*) "total number of electrons ", nelectrons
|
||||
write(*,*) " number of alpha electrons ", nalpha
|
||||
write(*,*) " number of beta electrons ", nbeta
|
||||
|
||||
write(fmt,*) '(', ndeterminants, '(f11.8,1x))'
|
||||
write(*,fmt) (det_coeff(i), i=1,ndeterminants)
|
||||
|
||||
! allocate the orbital mapping array
|
||||
if (.not. allocated(iworbd)) allocate(iworbd(nelectrons, ndeterminants))
|
||||
|
||||
do i = 1, ndeterminants
|
||||
read(11,*) (iworbd(j,i), j=1,nelectrons)
|
||||
enddo
|
||||
|
4
src/sample.det
Normal file
4
src/sample.det
Normal file
@ -0,0 +1,4 @@
|
||||
&electrons nelec 22 nup 11
|
||||
determinants 12 1
|
||||
0.94725807 -0.09274559 -0.05238276 -0.05238264 -0.04867531 -0.04162750 -0.04054186 -0.04017050 -0.04017045 -0.02963522 -0.02749165 -0.02351945 0.02056895
|
||||
end
|
@ -3,7 +3,6 @@
|
||||
title "A Sample QMC input file parsed by libfdf interfaced to CHAMP"
|
||||
|
||||
pool ./pool
|
||||
pseudopot BFD
|
||||
basis BFD-T-normf0
|
||||
|
||||
%endmodule
|
||||
|
@ -1,37 +1,19 @@
|
||||
title A Sample QMC input file parsed by libfdf interfaced to CHAMP
|
||||
pool ./pool
|
||||
molecule default.xyz # default value
|
||||
pseudopot default.psp # default value
|
||||
basis BFD-T-normf0.bas
|
||||
determinants TZ_1M_500.det
|
||||
orbitals default.orb # default value
|
||||
jastrow default.jas # default value
|
||||
jastrow_deriv default.jasder # default value
|
||||
optimize_wavefunction T
|
||||
optimize_ci F
|
||||
optimize_jastrow T
|
||||
optimize_orbitals T
|
||||
ncore 0
|
||||
nextorb 280
|
||||
no_active 0 # default value
|
||||
nblk_max 0 # default value
|
||||
nopt_iter 2
|
||||
sr_tau 0.2500000000E-01
|
||||
sr_eps 0.1000000000E-02
|
||||
sr_adiag 0.1000000000E-01
|
||||
Debug T # default value
|
||||
sr_tau 0.2500000000E-01
|
||||
nspin1 1 # default value
|
||||
energy_tol 0.1000000000E-04
|
||||
opt_method sr_n
|
||||
multiple_adiag F
|
||||
Debug T # default value
|
||||
ianalyt_lap 1
|
||||
nspin1 1 # default value
|
||||
nspin2 1 # default value
|
||||
ifock 1 # default value
|
||||
tau 0.3999999911E-01
|
||||
etrial -408.1744362 eV
|
||||
# above item originally: etrial -15.00000000 Ha
|
||||
excess_charge 0 # default value
|
||||
multiplicity 1 # default value
|
||||
%block molecule
|
||||
%block molecule
|
||||
24
|
||||
|
Loading…
Reference in New Issue
Block a user