diff --git a/src/iochamp.f90 b/src/iochamp.f90 index 0f81417..c25f350 100644 --- a/src/iochamp.f90 +++ b/src/iochamp.f90 @@ -81,6 +81,9 @@ PROGRAM iochamp phonon_energy = fdf_physical('phonon-energy', 0.01d0, 'eV') write(6,fmt=real_format) 'Phonon Energy:', phonon_energy + write(6,'(A)') + + write(6,*) '------------------------------------------------------' ! block containing other key-value pairs (currently not working) @@ -115,6 +118,9 @@ PROGRAM iochamp enddo endif + write(6,'(A)') + + write(6,*) '------------------------------------------------------' @@ -131,38 +137,46 @@ PROGRAM iochamp write(6,*) 'outside optimize_orbitals:', doit - - max_iter = fdf_integer('max_iteration', 100) write(6,*) 'Examples: maximum_iter =', max_iter - if (fdf_defined('molecule')) then - write(6,*) "molecule block has been defined :: molecule's geometry in angstrom units" -! molecule_name = fdf_string('molecule', 'h2o.xyz') -! write(6,*) 'Name of xyz file:', molecule_name - na = 24 ! debug - if (fdf_block('molecule', bfdf)) then - ia = 1 - do while(fdf_bline(bfdf, pline)) -! na = fdf_bintegers(pline, 1) -! write(*,*) na - symbol(ia) = fdf_bnames(pline, 1) - do i= 1, 3 - xa(i,ia) = fdf_breals(pline, i) - enddo - ia = ia + 1 - enddo - na = ia - 1 - endif - endif + + write(6,'(A)') + + write(6,*) '------------------------------------------------------' + + + +! if (fdf_defined('molecule')) then +! write(6,*) "molecule block has been defined :: molecule's geometry in angstrom units" +! ! molecule_name = fdf_string('molecule', 'h2o.xyz') +! ! write(6,*) 'Name of xyz file:', molecule_name +! na = 24 ! debug +! if (fdf_block('molecule', bfdf)) then +! ia = 1 +! do while(fdf_bline(bfdf, pline)) +! ! na = fdf_bintegers(pline, 1) +! ! write(*,*) na +! symbol(ia) = fdf_bnames(pline, 1) +! do i= 1, 3 +! xa(i,ia) = fdf_breals(pline, i) +! enddo +! ia = ia + 1 +! enddo +! na = ia - 1 +! endif +! endif - write(6,*) 'Coordinates from an external file:' - do ia = 1, 24 - write(6,'(A, 4x, 3F10.6)') symbol(ia), (xa(i,ia),i=1,3) - enddo +! write(6,*) 'Coordinates from an external file:' +! do ia = 1, 24 +! write(6,'(A, 4x, 3F10.6)') symbol(ia), (xa(i,ia),i=1,3) +! enddo + write(6,'(A)') + + write(6,*) '------------------------------------------------------' ! Molecule coordinate block begins here @@ -185,10 +199,14 @@ PROGRAM iochamp enddo ! Molecule coordinate block ends here + write(6,*) '------------------------------------------------------' + + write(6,'(A)') + + write(6,*) '------------------------------------------------------' - if (fdf_block('Other-Block', bfdf)) then - + if (fdf_block('inline_xyz', bfdf)) then ! Forward reading write(6,*) 'beginning of other block ' ia = 1 @@ -200,7 +218,13 @@ PROGRAM iochamp number_of_atoms = fdf_bintegers(pline, 1) write(*,*) "number of atoms", number_of_atoms endif - na = 3 + na = number_of_atoms + + if (pline%ntokens == 1) then + molecule_name = fdf_string('', 'Unknown molecule') + write(*,*) "Comment from the XYZ coordinate file", molecule_name + endif + if (pline%ntokens == 4) then symbol(ia) = fdf_bnames(pline, 1) do i= 1, na @@ -210,73 +234,78 @@ PROGRAM iochamp endif enddo - write(6,*) 'Other-Block (Forward):' - do ia= 1, na - write(6,'(A4,3F10.6)') symbol(ia), (xa(i,ia),i=1,3) - enddo - -! Backward reading - ia = 1 - do while((fdf_bbackspace(bfdf, pline)) .and. (ia .le. na)) - symbol(ia) = fdf_bnames(pline, 1) - do i= 1, na - xa(i,ia) = fdf_breals(pline, i) - enddo - ia = ia + 1 - enddo - - write(6,*) 'Other-Block (Backward):' - do ia= 1, na - write(6,'(A4,3F10.6)') symbol(ia), (xa(i,ia),i=1,3) - enddo - -! Forward reading - ia = 1 - do while((fdf_bline(bfdf, pline)) .and. (ia .le. na)) - symbol(ia) = fdf_bnames(pline, 1) - do i= 1, na - xa(i,ia) = fdf_breals(pline, i) - enddo - ia = ia + 1 - enddo - - write(6,*) 'Other-Block (Forward):' - do ia= 1, na - write(6,'(A4,3F10.6)') symbol(ia), (xa(i,ia),i=1,3) - enddo - -! Forward reading with rewind - call fdf_brewind(bfdf) - ia = 1 - do while((fdf_bline(bfdf, pline)) .and. (ia .le. na)) - symbol(ia) = fdf_bnames(pline, 1) - do i= 1, na - xa(i,ia) = fdf_breals(pline, i) - enddo - ia = ia + 1 - enddo - - write(6,*) 'Other-Block (Forward-with-rewind):' + 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 - if ( fdf_block('ListBlock',bfdf) ) then - i = 0 - do while ( fdf_bline(bfdf,pline) ) - i = i + 1 - na = fdf_bnlists(pline) - write(*,'(2(a,i0),a)') 'Listblock line: ',i,' has ',na,' lists' - do ia = 1 , na - j = -1 - call fdf_bilists(pline,ia,j,isa) - write(*,'(tr5,2(a,i0),a)') 'list ',ia,' has ',j,' entries' - call fdf_bilists(pline,ia,j,isa) - write(*,'(tr5,a,1000(tr1,i0))') 'list: ',isa(1:j) - end do - end do - end if + + + + +! ! Backward reading +! ia = 1 +! do while((fdf_bbackspace(bfdf, pline)) .and. (ia .le. na)) +! symbol(ia) = fdf_bnames(pline, 1) +! do i= 1, na +! xa(i,ia) = fdf_breals(pline, i) +! enddo +! ia = ia + 1 +! enddo + +! write(6,*) 'Other-Block (Backward):' +! do ia= 1, na +! write(6,'(A4,3F10.6)') symbol(ia), (xa(i,ia),i=1,3) +! enddo + +! ! Forward reading +! ia = 1 +! do while((fdf_bline(bfdf, pline)) .and. (ia .le. na)) +! symbol(ia) = fdf_bnames(pline, 1) +! do i= 1, na +! xa(i,ia) = fdf_breals(pline, i) +! enddo +! ia = ia + 1 +! enddo + +! write(6,*) 'Other-Block (Forward):' +! do ia= 1, na +! write(6,'(A4,3F10.6)') symbol(ia), (xa(i,ia),i=1,3) +! enddo + +! ! Forward reading with rewind +! call fdf_brewind(bfdf) +! ia = 1 +! do while((fdf_bline(bfdf, pline)) .and. (ia .le. na)) +! symbol(ia) = fdf_bnames(pline, 1) +! do i= 1, na +! xa(i,ia) = fdf_breals(pline, i) +! enddo +! ia = ia + 1 +! enddo + +! write(6,*) 'Other-Block (Forward-with-rewind):' +! do ia= 1, na +! write(6,'(A4,3F10.6)') symbol(ia), (xa(i,ia),i=1,3) +! enddo + + +! if ( fdf_block('ListBlock',bfdf) ) then +! i = 0 +! do while ( fdf_bline(bfdf,pline) ) +! i = i + 1 +! na = fdf_bnlists(pline) +! write(*,'(2(a,i0),a)') 'Listblock line: ',i,' has ',na,' lists' +! do ia = 1 , na +! j = -1 +! call fdf_bilists(pline,ia,j,isa) +! write(*,'(tr5,2(a,i0),a)') 'list ',ia,' has ',j,' entries' +! call fdf_bilists(pline,ia,j,isa) +! write(*,'(tr5,a,1000(tr1,i0))') 'list: ',isa(1:j) +! end do +! end do +! end if ! Check lists if ( fdf_islinteger('MyList') .and. fdf_islist('MyList') & diff --git a/src/test-champ.inp b/src/test-champ.inp index 16b6033..252fc5d 100644 --- a/src/test-champ.inp +++ b/src/test-champ.inp @@ -1,12 +1,12 @@ title "A Sample QMC input file parsed by libfdf interfaced to CHAMP" nextorb 280 -nblk_max 200 +nblk_max 200 nopt_iter 2 -sr_tau 1.023 -sr_eps 0.001 -sr_adiag 0.05 +sr_tau 1.023 +sr_eps 0.001 +sr_adiag 0.05 energy_tol 0.004 %block optimization_flags @@ -27,26 +27,12 @@ energy_tol 0.004 %block mixed max_iteration 3 Energy_Cutoff 500.0 eV - float_value 3.14e10 - filename 'sample read input.txt' - phonon-energy 344 cm**-1 + float_value 3.14e10 + filename 'sample read input.txt' + phonon-energy 344 cm**-1 %endblock -# Read molecule's geometry directly from the xyz file - -%block molecule < "caffeine.xyz" - -%block Other-Block -99 - Nh 1.500000 1.108000 -3.000000 - Ox 0.333000 0.000000 45.000000 - Pd -1.431000 -1.108000 20.000000 -%endblock Other-Block - - - - # An alternative way to provide coordinates %block Coordinates @@ -66,14 +52,18 @@ energy_tol 0.004 - - -# %include pool/BFD-T.bfinfo +%block inline_xyz +3 +molecule name unknown + Nh 1.50 1.108000 -3. + Ox 0.333000 0. 45. + Pd -1.431000 -1.108000 20. +%endblock inline_xyz -### To be implemented (large file reading support, possibly hdf5 files) -#%include TZ_1M_500.det -#%include jastrow_good_b3lyp.0 +### Read molecule's geometry directly from the xyz file + +### %block molecule < "caffeine.xyz"