From 39db434f63573a6ca484dabb1f2e83f13d8c3bec Mon Sep 17 00:00:00 2001 From: Manu Date: Thu, 2 Jul 2015 00:45:36 +0200 Subject: [PATCH 01/15] MRCC(PT2) converges --- plugins/MRCC/mrcc.irp.f | 2 +- plugins/MRCC/mrcc_dress.irp.f | 6 +- plugins/MRCC/mrcc_utils.irp.f | 94 +++++-- plugins/loc_cele/NEEDED_CHILDREN_MODULES | 1 + plugins/loc_cele/README.rst | 28 ++ plugins/loc_cele/loc.f | 163 +++++++++++ plugins/loc_cele/loc_cele.irp.f | 333 +++++++++++++++++++++++ plugins/loc_cele/tree_dependency.png | Bin 0 -> 48913 bytes src/Determinants/davidson.irp.f | 2 +- src/Determinants/occ_pattern.irp.f | 1 + src/Determinants/psi_cas.irp.f | 54 ++++ 11 files changed, 664 insertions(+), 20 deletions(-) create mode 100644 plugins/loc_cele/NEEDED_CHILDREN_MODULES create mode 100644 plugins/loc_cele/README.rst create mode 100644 plugins/loc_cele/loc.f create mode 100644 plugins/loc_cele/loc_cele.irp.f create mode 100644 plugins/loc_cele/tree_dependency.png diff --git a/plugins/MRCC/mrcc.irp.f b/plugins/MRCC/mrcc.irp.f index 2b879882..eaf3f6fa 100644 --- a/plugins/MRCC/mrcc.irp.f +++ b/plugins/MRCC/mrcc.irp.f @@ -48,7 +48,7 @@ subroutine run_mrcc E_new = 0.d0 delta_E = 1.d0 iteration = 0 - do while (delta_E > 1.d-8) + do while (delta_E > 1.d-10) iteration += 1 print *, '===========================' print *, 'MRCC Iteration', iteration diff --git a/plugins/MRCC/mrcc_dress.irp.f b/plugins/MRCC/mrcc_dress.irp.f index 083cea5a..23c15d13 100644 --- a/plugins/MRCC/mrcc_dress.irp.f +++ b/plugins/MRCC/mrcc_dress.irp.f @@ -138,7 +138,11 @@ subroutine mrcc_dress(delta_ij_,Ndet,i_generator,n_selected,det_buffer,Nint,ipro do i_state=1,N_states delta_ij_(idx_non_cas(k_sd),idx_cas(i_I),i_state) += dIa_hla(i_state,k_sd) delta_ij_(idx_cas(i_I),idx_non_cas(k_sd),i_state) += dIa_hla(i_state,k_sd) - delta_ij_(idx_cas(i_I),idx_cas(i_I),i_state) -= dIa_hla(i_state,k_sd) * ci_inv(i_state) * psi_non_cas_coef(k_sd,i_state) + if(dabs(psi_cas_coef(i_I,i_state)).ge.5.d-5)then + delta_ij_(idx_cas(i_I),idx_cas(i_I),i_state) -= dIa_hla(i_state,k_sd) * ci_inv(i_state) * psi_non_cas_coef(k_sd,i_state) + else + delta_ij_(idx_cas(i_I),idx_cas(i_I),i_state) = 0.d0 + endif enddo enddo call omp_unset_lock( psi_cas_lock(i_I) ) diff --git a/plugins/MRCC/mrcc_utils.irp.f b/plugins/MRCC/mrcc_utils.irp.f index 716d5ffc..476bd739 100644 --- a/plugins/MRCC/mrcc_utils.irp.f +++ b/plugins/MRCC/mrcc_utils.irp.f @@ -1,35 +1,78 @@ - -BEGIN_PROVIDER [ double precision, lambda_mrcc, (N_states,psi_det_size) ] + BEGIN_PROVIDER [ double precision, lambda_mrcc, (N_states,psi_det_size) ] &BEGIN_PROVIDER [ double precision, lambda_pert, (N_states,psi_det_size) ] implicit none BEGIN_DOC ! cm/ END_DOC integer :: i,k - double precision :: ihpsi(N_states), hij(N_states) + double precision :: ihpsi(N_states), hii +!integer :: icount +!integer :: icount_manu +!integer :: icount_gregoire +!icount = 0 +!icount_manu = 0 +!icount_gregoire = 0 + + + k = 1 + print*,'psi_cas_energy_diagonalized = ', psi_cas_energy_diagonalized(k) + nuclear_repulsion do i=1,N_det_non_cas + ! Questions : psi_cas_coef normalized or not ? call i_h_psi(psi_non_cas(1,1,i), psi_cas, psi_cas_coef, N_int, N_det_cas, & size(psi_cas_coef,1), n_states, ihpsi) - call i_h_j(psi_non_cas(1,1,i),psi_non_cas(1,1,i),N_int,hij) + call i_h_j(psi_non_cas(1,1,i),psi_non_cas(1,1,i),N_int,hii) do k=1,N_states - lambda_pert(k,i) = 1d0 / (CI_electronic_energy(k)-hij(k)) + + lambda_pert(k,i) = 0.d0 + lambda_mrcc(k,i) = 0.d0 + lambda_pert(k,i) = 1.d0 / (psi_cas_energy_diagonalized(k)-hii) lambda_mrcc(k,i) = psi_non_cas_coef(i,k)/ihpsi(k) - if ((lambda_mrcc(k,i)/lambda_pert(k,i))<0.d0 .or. (lambda_mrcc(k,i)/lambda_pert(k,i))>4.d0) then - lambda_mrcc(k,i) = lambda_pert(k,i) + lambda_mrcc(k,i) = lambda_pert(k,i) + cycle + if (dabs(psi_non_cas_coef(i,k)).le.1.d-6) then + cycle + else + lambda_pert(k,i) = 1.d0 / (psi_cas_energy_diagonalized(k)-hii) + lambda_mrcc(k,i) = psi_non_cas_coef(i,k)/ihpsi(k) + lambda_mrcc(k,i) = lambda_pert(k,i) + cycle +! icount = icount+1 + if (dabs(ihpsi(k)).le.1.d-6) then + lambda_pert(k,i) = 0.d0 + lambda_mrcc(k,i) = 0.d0 +! icount_manu = icount_manu+1 + cycle else - if ((lambda_mrcc(k,i)/lambda_pert(k,i))<0.1d0 .or. (lambda_mrcc(k,i)/lambda_pert(k,i))>=0d0) then - lambda_mrcc(k,i) = lambda_mrcc(k,i)*((cos((lambda_mrcc(k,i)/lambda_pert(k,i))*3.141592653589793d0/0.1d0+3.141592653589793d0)+1d0)/2.d0) & - + lambda_pert(k,i)*(1.d0-((cos((lambda_mrcc(k,i)/lambda_pert(k,i))*3.141592653589793d0/0.1d0+3.141592653589793d0)+1.d0)/2.d0)) - elseif ((lambda_mrcc(k,i)/lambda_pert(k,i))<=4.0d0 .or. (lambda_mrcc(k,i)/lambda_pert(k,i))>2.0d0) then - lambda_mrcc(k,i) = lambda_mrcc(k,i)*(1.d0-(cos(abs(2.d0-(lambda_mrcc(k,i)/lambda_pert(k,i)))*3.141592653589793d0/2.0d0+3.141592653589793d0)+1.d0)/2d0) & - + lambda_pert(k,i)*((cos(abs(2.d0-(lambda_mrcc(k,i)/lambda_pert(k,i)))*3.141592653589793d0/2.0d0+3.141592653589793d0)+1.d0)/2.d0) - else - lambda_mrcc(k,i) = lambda_mrcc(k,i) - endif - endif + if ((lambda_mrcc(k,i)*lambda_pert(k,i))<0.d0)then + lambda_mrcc(k,i) = lambda_pert(k,i) + else if ((lambda_mrcc(k,i)/lambda_pert(k,i))>1.2d0) then + lambda_mrcc(k,i) = lambda_pert(k,i) +! icount_gregoire = icount_gregoire + 1 + else + if ((lambda_mrcc(k,i)/lambda_pert(k,i))<0.1d0 .or. (lambda_mrcc(k,i)/lambda_pert(k,i))>=0d0) then + lambda_mrcc(k,i) = lambda_mrcc(k,i)*((cos((lambda_mrcc(k,i)/lambda_pert(k,i))*3.141592653589793d0/0.1d0+3.141592653589793d0)+1d0)/2.d0) & + + lambda_pert(k,i)*(1.d0-((cos((lambda_mrcc(k,i)/lambda_pert(k,i))*3.141592653589793d0/0.1d0+3.141592653589793d0)+1.d0)/2.d0)) + elseif ((lambda_mrcc(k,i)/lambda_pert(k,i))<=1.2d0 .or. (lambda_mrcc(k,i)/lambda_pert(k,i))>1.0d0) then + lambda_mrcc(k,i) = lambda_mrcc(k,i)*(1.d0-(cos(abs(2.d0-(lambda_mrcc(k,i)/lambda_pert(k,i)))*3.141592653589793d0/0.2d0+3.141592653589793d0)+1.d0)/2d0) & + + lambda_pert(k,i)*((cos(abs(2.d0-(lambda_mrcc(k,i)/lambda_pert(k,i)))*3.141592653589793d0/0.2d0+3.141592653589793d0)+1.d0)/2.d0) +! icount_gregoire = icount_gregoire + 1 + endif + endif + endif + endif enddo enddo +!print *, 'icount, icount_manu, icount_gregoire' +!print *, icount, icount_manu, icount_gregoire + + +!do i=1,N_det_non_cas +! write(33,*) float(lambda_mrcc(1,i)), float(lambda_pert(1,i)) +!enddo +!write(33,*) '' +!write(33,*) '' + END_PROVIDER @@ -71,6 +114,23 @@ BEGIN_PROVIDER [ double precision, delta_ij, (N_det,N_det,N_states) ] enddo enddo endif + do i = 1, N_det + do j = 1, N_det + do m = 1, N_states + if(isnan(delta_ij(j,i,m)))then + delta_ij(j,i,m) = 0.d0 + endif + enddo + enddo + enddo + +!integer :: i_I +!do i_I = 1, N_det_cas +! print*,'' +! print*,'i_I = ',i_I +! print*,'psi_coef_cas = ',psi_coef(idx_cas(i_I), 1) +! print*,'delta_ij ',delta_ij(idx_cas(i_I),idx_cas(i_I),1) +!enddo END_PROVIDER BEGIN_PROVIDER [ double precision, h_matrix_dressed, (N_det,N_det) ] diff --git a/plugins/loc_cele/NEEDED_CHILDREN_MODULES b/plugins/loc_cele/NEEDED_CHILDREN_MODULES new file mode 100644 index 00000000..a23aa5ae --- /dev/null +++ b/plugins/loc_cele/NEEDED_CHILDREN_MODULES @@ -0,0 +1 @@ +AO_Basis Electrons Ezfio_files MO_Basis Nuclei Utils diff --git a/plugins/loc_cele/README.rst b/plugins/loc_cele/README.rst new file mode 100644 index 00000000..431dae8a --- /dev/null +++ b/plugins/loc_cele/README.rst @@ -0,0 +1,28 @@ +=============== +loc_cele Module +=============== + +Documentation +============= + +.. Do not edit this section. It was auto-generated from the +.. by the `update_README.py` script. + +`loc_rasorb `_ + Undocumented + +Needed Modules +============== + +.. Do not edit this section. It was auto-generated from the +.. by the `update_README.py` script. + +.. image:: tree_dependency.png + +* `AO_Basis `_ +* `Electrons `_ +* `Ezfio_files `_ +* `MO_Basis `_ +* `Nuclei `_ +* `Utils `_ + diff --git a/plugins/loc_cele/loc.f b/plugins/loc_cele/loc.f new file mode 100644 index 00000000..e2439b7f --- /dev/null +++ b/plugins/loc_cele/loc.f @@ -0,0 +1,163 @@ +c************************************************************************ + subroutine maxovl(n,m,s,t,w) +C +C This subprogram contains an iterative procedure to find the +C unitary transformation of a set of n vectors which maximizes +C the sum of their square overlaps with a set of m reference +C vectors (m.le.n) +C +C S: overlap matrix +C T: rotation matrix +C W: new overlap matrix +C +C + implicit real*8(a-h,o-y),logical*1(z) + parameter (id1=300) + dimension s(id1,id1),t(id1,id1),w(id1,id1) + data small/1.d-6/ + + zprt=.true. + niter=100 + conv=1.d-8 + + write (6,5) n,m,conv + 5 format (//5x,'Unitary transformation of',i3,' vectors'/ + * 5x,'following the principle of maximum overlap with a set of', + * i3,' reference vectors'/5x,'required convergence on rotation ', + * 'angle =',f13.10///5x,'Starting overlap matrix'/) + do 6 i=1,m + write (6,145) i + 6 write (6,150) (s(i,j),j=1,n) + 8 mm=m-1 + if (m.lt.n) mm=m + iter=0 + do 20 j=1,n + do 16 i=1,n + t(i,j)=0.d0 + 16 continue + do 18 i=1,m + 18 w(i,j)=s(i,j) + 20 t(j,j)=1.d0 + sum=0.d0 + do 10 i=1,m + sum=sum+s(i,i)*s(i,i) + 10 continue + sum=sum/m + if (zprt) write (6,12) sum + 12 format (//5x,'Average square overlap =',f10.6) + if (n.eq.1) goto 100 + last=n + j=1 + 21 if (j.ge.last) goto 30 + sum=0.d0 + + do 22 i=1,n + 22 sum=sum+s(i,j)*s(i,j) + if (sum.gt.small) goto 28 + do 24 i=1,n + sij=s(i,j) + s(i,j)=-s(i,last) + s(i,last)=sij + tij=t(i,j) + t(i,j)=-t(i,last) + t(i,last)=tij + 24 continue + last=last-1 + goto 21 + 28 j=j+1 + goto 21 + 30 iter=iter+1 + imax=0 + jmax=0 + dmax=0.d0 + amax=0.d0 + do 60 i=1,mm + ip=i+1 + do 50 j=ip,n + a=s(i,j)*s(i,j)-s(i,i)*s(i,i) + b=-s(i,i)*s(i,j) + if (j.gt.m) goto 31 + a=a+s(j,i)*s(j,i)-s(j,j)*s(j,j) + b=b+s(j,i)*s(j,j) + 31 b=b+b + if (a.eq.0.d0) goto 32 + ba=b/a + if (dabs(ba).gt.small) goto 32 + if (a.gt.0.d0) goto 33 + tang=-0.5d0*ba + cosine=1.d0/dsqrt(1.d0+tang*tang) + sine=tang*cosine + goto 34 + 32 tang=0.d0 + if (b.ne.0.d0) tang=(a+dsqrt(a*a+b*b))/b + cosine=1.d0/dsqrt(1.d0+tang*tang) + sine=tang*cosine + goto 34 + 33 cosine=0.d0 + sine=1.d0 + 34 delta=sine*(a*sine+b*cosine) + if (zprt.and.delta.lt.0.d0) write (6,71) i,j,a,b,sine,cosine,delta + do 35 k=1,m + p=s(k,i)*cosine-s(k,j)*sine + q=s(k,i)*sine+s(k,j)*cosine + s(k,i)=p + 35 s(k,j)=q + do 40 k=1,n + p=t(k,i)*cosine-t(k,j)*sine + q=t(k,i)*sine+t(k,j)*cosine + t(k,i)=p + t(k,j)=q + 40 continue + 45 d=dabs(sine) + if (d.le.amax) goto 50 + imax=i + jmax=j + amax=d + dmax=delta + 50 continue + 60 continue + if (zprt) write (6,70) iter,amax,imax,jmax,dmax + 70 format (' iter=',i4,' largest rotation=',f12.8, + * ', vectors',i3,' and',i3,', incr. of diag. squares=',g12.5) + 71 format (' i,j,a,b,sin,cos,delta =',2i3,5f10.5) + if (amax.lt.conv) goto 100 + if (iter.lt.niter) goto 30 + write (6,80) + write (6,*) 'niter=',niter + 80 format (//5x,'*** maximum number of cycles exceeded ', + * 'in subroutine maxovl ***'//) + stop + 100 continue + do 120 j=1,n + if (s(j,j).gt.0.d0) goto 120 + do 105 i=1,m + 105 s(i,j)=-s(i,j) + do 110 i=1,n + 110 t(i,j)=-t(i,j) + 120 continue + sum=0.d0 + do 125 i=1,m + 125 sum=sum+s(i,i)*s(i,i) + sum=sum/m + do 122 i=1,m + do 122 j=1,n + sw=s(i,j) + s(i,j)=w(i,j) + 122 w(i,j)=sw + if (.not.zprt) return + write (6,12) sum + write (6,130) + 130 format (//5x,'transformation matrix') + do 140 i=1,n + write (6,145) i + 140 write (6,150) (t(i,j),j=1,n) + 145 format (i8) + 150 format (2x,10f12.8) + write (6,160) + 160 format (//5x,'new overlap matrix'/) + do 170 i=1,m + write (6,145) i + 170 write (6,150) (w(i,j),j=1,n) + return + end + diff --git a/plugins/loc_cele/loc_cele.irp.f b/plugins/loc_cele/loc_cele.irp.f new file mode 100644 index 00000000..5b9112ca --- /dev/null +++ b/plugins/loc_cele/loc_cele.irp.f @@ -0,0 +1,333 @@ + program loc_rasorb + + implicit none + +! + +! This program performs a localization of the active orbitals + +! of a CASSCF wavefunction, reading the orbitals from a RASORB + +! file of molcas. + +! + +! id1=max number of MO in a given symmetry. + +! + + + + + + + + integer id1 + + parameter (id1=300) + + + + character*1 jobz,uplo + + character*64 file1,file2 + + character*72 string(id1,8),cdum + + double precision :: cmo(id1,id1,1),cmoref(id1,id1,1),newcmo(id1,id1,1) + + double precision ::s(id1,id1,1),dum,ddum(id1,id1),ovl(id1,id1) + + double precision :: w(id1),work(3*id1),t(id1,id1),wi(id1,id1) + + integer n,i,j,k,l,nmo(8),isym,nsym,idum,nrot(8),irot(id1,8) + + integer ipiv(id1),info,lwork + + logical *1 z54 + print*,'passed the first copy' + + z54=.false. + + + + !Read the name of the RasOrb file + + + print*,'Entering in the loc program' + +! read(5,*) z54 + print*,'before = ' + accu_norm = 0.d0 + do i =1,mo_tot_num + accu_norm += dabs(mo_overlap(i,i)) + enddo + print*,'accu_norm = ',accu_norm + + nsym = 1 + + nmo(1) = mo_tot_num + + print*,'nmo(1) = ',nmo(1) + + cmo = 0.d0 + do isym=1,nsym + + do i=1,nmo(isym) + + do j = 1, ao_num + + cmo(j,i,isym) = mo_coef(j,i) + + enddo + + enddo + + enddo + print*,'passed the first copy' + + + + do isym=1,nsym + + do j=1,mo_tot_num + + do i=1,ao_num + + newcmo(i,j,isym)=cmo(i,j,isym) + + enddo + + enddo + + enddo + print*,'passed the copy' + + + + nrot(1) = 6 ! number of orbitals to be localized + + + integer :: index_rot(1000,1) + + + cmoref = 0.d0 + + ! Definition of the index of the MO to be rotated + irot(1,1) = 20 ! the first mo to be rotated is the 19 th MO + irot(2,1) = 21 ! the first mo to be rotated is the 20 th MO + irot(3,1) = 22 ! etc.... + irot(4,1) = 23 ! + irot(5,1) = 24 ! + irot(6,1) = 25 ! + + ! you define the guess vectors that you want + ! the new MO to be close to + ! cmore(i,j,1) = < AO_i | guess_vector_MO(j) > + ! i goes from 1 to ao_num + ! j goes from 1 to nrot(1) + + ! Here you must go to the GAMESS output file + ! where the AOs are listed and explicited + ! From the basis of this knowledge you can build your + ! own guess vectors for the MOs + ! The new MOs are provided in output + ! in the same order than the guess MOs + cmoref(3,1,1) = 1.d0 ! + cmoref(12,1,1) = 1.d0 ! + + cmoref(21,2,1) = 1.d0 ! + cmoref(30,2,1) = 1.d0 ! + + cmoref(39,3,1) = 1.d0 ! + cmoref(48,3,1) = 1.d0 ! + + cmoref(3,4,1) = 1.d0 ! + cmoref(12,4,1) =-1.d0 ! + + cmoref(21,5,1) = 1.d0 ! + cmoref(30,5,1) =-1.d0 ! + + cmoref(39,6,1) = 1.d0 ! + cmoref(48,6,1) =-1.d0 ! + + + + + print*,'passed the definition of the referent vectors ' + !Building the S (overlap) matrix in the AO basis. + + + + do isym=1,nsym + + if (nrot(isym).eq.0) cycle + + do i=1,ao_num + + s(i,i,isym)=1.d0 + + do j=1,ao_num + + if (i.ne.j) s(i,j,isym)=0.d0 + + ddum(i,j)=0.d0 + + do k=1,nmo(isym) + + ddum(i,j)=ddum(i,j)+cmo(i,k,isym)*cmo(j,k,isym) + + enddo + + enddo + + enddo + + call dgesv(ao_num,ao_num,ddum,id1,ipiv,s(1,1,isym),id1,info) + + if (info.ne.0) then + + write (6,*) 'Something wrong in dgsev',isym + + stop + + endif + + + + enddo + + + + + + !Now big loop over symmetry + + + + do isym=1,nsym + + if (nrot(isym).eq.0) cycle + + + + write (6,*) + + write (6,*) + + write (6,*) + + write (6,*) 'WORKING ON SYMMETRY',isym + + write (6,*) + + + + + + !Compute the overlap matrix + + + + + +! do i=1,nmo(isym) + do i=1,ao_num + + do j=1,nrot(isym) + + ddum(i,j)=0.d0 + + do k=1,ao_num + + ddum(i,j)=ddum(i,j)+s(i,k,isym)*cmo(k,irot(j,isym),isym) + + enddo + + enddo + + enddo + + + + do i=1,nrot(isym) + + do j=1,nrot(isym) + + ovl(i,j)=0.d0 + + do k=1,ao_num +! do k=1,mo_tot_num + + ovl(i,j)=ovl(i,j)+cmoref(k,i,isym)*ddum(k,j) + + enddo + + enddo + + enddo + + + + call maxovl(nrot(isym),nrot(isym),ovl,t,wi) + + + + do i=1,nrot(isym) + do j=1,ao_num + write (6,*) 'isym,',isym,nrot(isym),nmo(isym) + newcmo(j,irot(i,isym),isym)=0.d0 + do k=1,nrot(isym) + newcmo(j,irot(i,isym),isym)=newcmo(j,irot(i,isym),isym) + cmo(j,irot(k,isym),isym)*t(k,i) + enddo + enddo + enddo +! if(dabs(newcmo(3,19,1) - mo_coef(3,19)) .gt.1.d-10 )then +! print*,'Something wrong bitch !!' +! print*,'newcmo(3,19,1) = ',newcmo(3,19,1) +! print*,'mo_coef(3,19) = ',mo_coef(3,19) +! stop +! endif + + + + enddo !big loop over symmetry + + 10 format (4E18.12) + + +! Now we copyt the newcmo into the mo_coef + + mo_coef = 0.d0 + do isym=1,nsym + do i=1,nmo(isym) + do j = 1, ao_num + mo_coef(j,i) = newcmo(j,i,isym) + enddo + enddo + enddo +! if(dabs(newcmo(3,19,1) - mo_coef(3,19)) .gt.1.d-10 )then + print*,'mo_coef(3,19)',mo_coef(3,19) + pause + + +! we say that it hase been touched, and valid and that everything that +! depends on mo_coef must not be reprovided + double precision :: accu_norm + touch mo_coef + print*,'after = ' + accu_norm = 0.d0 + do i =1,mo_tot_num + accu_norm += dabs(mo_overlap(i,i)) + enddo + print*,'accu_norm = ',accu_norm +! We call the routine that saves mo_coef in the ezfio format + call save_mos + + + + + + stop + + end diff --git a/plugins/loc_cele/tree_dependency.png b/plugins/loc_cele/tree_dependency.png new file mode 100644 index 0000000000000000000000000000000000000000..244d9db0fba0ade3de45acd50a33b4bbb740d614 GIT binary patch literal 48913 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 CLo2l>>rVW54qga*lUZ{f@qjH{eRkJ3 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 literal 0 HcmV?d00001 diff --git a/src/Determinants/davidson.irp.f b/src/Determinants/davidson.irp.f index bdc979c4..e59fde4f 100644 --- a/src/Determinants/davidson.irp.f +++ b/src/Determinants/davidson.irp.f @@ -376,7 +376,7 @@ end ! Can be : [ energy | residual | both | wall_time | cpu_time | iterations ] END_DOC davidson_criterion = 'residual' - davidson_threshold = 1.d-6 + davidson_threshold = 1.d-9 END_PROVIDER subroutine davidson_converged(energy,residual,wall,iterations,cpu,N_st,converged) diff --git a/src/Determinants/occ_pattern.irp.f b/src/Determinants/occ_pattern.irp.f index a0fd4a3c..8027cf60 100644 --- a/src/Determinants/occ_pattern.irp.f +++ b/src/Determinants/occ_pattern.irp.f @@ -256,6 +256,7 @@ subroutine make_s2_eigenfunction integer :: N_det_new integer, parameter :: bufsze = 1000 logical, external :: is_in_wavefunction + return ! !TODO DEBUG ! do i=1,N_det diff --git a/src/Determinants/psi_cas.irp.f b/src/Determinants/psi_cas.irp.f index 8ca081d6..304a2370 100644 --- a/src/Determinants/psi_cas.irp.f +++ b/src/Determinants/psi_cas.irp.f @@ -13,6 +13,9 @@ use bitmasks logical :: good N_det_cas = 0 do i=1,N_det + do l = 1, N_states + psi_cas_coef(i,l) = 0.d0 + enddo do l=1,n_cas_bitmask good = .True. do k=1,N_int @@ -109,6 +112,57 @@ END_PROVIDER END_PROVIDER +BEGIN_PROVIDER [double precision, H_matrix_cas, (N_det_cas,N_det_cas)] + implicit none + integer :: i,j + double precision :: hij + do i = 1, N_det_cas + do j = 1, N_det_cas + call i_H_j(psi_cas(1,1,i),psi_cas(1,1,j),N_int,hij) + H_matrix_cas(i,j) = hij + enddo + enddo +END_PROVIDER + + BEGIN_PROVIDER [double precision, psi_coef_cas_diagonalized, (N_det_cas,N_states)] +&BEGIN_PROVIDER [double precision, psi_cas_energy_diagonalized, (N_states)] + implicit none + integer :: i,j + double precision, allocatable :: eigenvectors(:,:), eigenvalues(:) + allocate (eigenvectors(size(H_matrix_cas,1),N_det_cas)) + allocate (eigenvalues(N_det_cas)) + call lapack_diag(eigenvalues,eigenvectors, & + H_matrix_cas,size(H_matrix_cas,1),N_det_cas) + do i = 1, N_states + psi_cas_energy_diagonalized(i) = eigenvalues(i) + do j = 1, N_det_cas + psi_coef_cas_diagonalized(j,i) = eigenvectors(j,i) + enddo + enddo + + + END_PROVIDER + + BEGIN_PROVIDER [double precision, psi_cas_energy, (N_states)] + implicit none + integer :: i,j,k + double precision :: hij,norm,u_dot_v + psi_cas_energy = 0.d0 + + + do k = 1, N_states + norm = 0.d0 + do i = 1, N_det_cas + norm += psi_cas_coef(i,k) * psi_cas_coef(i,k) + do j = 1, N_det_cas + psi_cas_energy(k) += psi_cas_coef(i,k) * psi_cas_coef(j,k) * H_matrix_cas(i,j) + enddo + enddo + psi_cas_energy(k) = psi_cas_energy(k) /norm + enddo + +END_PROVIDER + From 7553b0877c41a0bb71b6b338183dbdabc30663e5 Mon Sep 17 00:00:00 2001 From: Thomas Applencourt Date: Thu, 2 Jul 2015 09:40:21 +0200 Subject: [PATCH 02/15] Remove the raise, for only show the 'source message' / cleaning configure --- configure | 43 +++++++++++++++++------------ scripts/module/qp_install_module.py | 6 ++-- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/configure b/configure index 6e73d312..58367ac5 100755 --- a/configure +++ b/configure @@ -45,7 +45,7 @@ QP_ROOT = os.getcwd() QP_ROOT_BIN = join(QP_ROOT, "bin") QP_ROOT_INSTALL = join(QP_ROOT, "install") -os.environ["PATH"] = os.environ["PATH"] + ":"+QP_ROOT_BIN +os.environ["PATH"] = os.environ["PATH"] + ":" + QP_ROOT_BIN d_dependency = { "ocaml": ["m4", "curl", "zlib", "patch", "gcc"], @@ -72,7 +72,8 @@ path_github = {"head": "http://github.com/", "tail": "archive/master.tar.gz"} ocaml = Info( url='http://raw.github.com/ocaml/opam/master/shell/opam_installer.sh', - description=' Ocaml, Opam and the Core library (it will take some time roughly 20min)', + description= + ' Ocaml, Opam and the Core library (it will take some time roughly 20min)', default_path=join(QP_ROOT_BIN, "opam")) m4 = Info( @@ -128,12 +129,12 @@ ezfio = Info( d_info = dict() -for m in ["ocaml", "m4", "curl", "zlib", "path", "irpf90", "docopt", +for m in ["ocaml", "m4", "curl", "zlib", "path", "irpf90", "docopt", "resultsFile", "ninja", "emsl", "ezfio"]: exec ("d_info['{0}']={0}".format(m)) -def find_path(bin_, l_installed): +def find_path(bin_, l_installed, var_for_qp_root=False): """Use the global variable * l_installed * d_info @@ -143,6 +144,10 @@ def find_path(bin_, l_installed): locate = l_installed[bin_] except KeyError: locate = d_info[bin_].default_path + + if var_for_qp_root: + locate = locate.replace(QP_ROOT, "${QP_ROOT}") + return locate @@ -158,7 +163,8 @@ def check_output(*popenargs, **kwargs): >>> check_output(['/usr/bin/python', '--version']) Python 2.6.2 """ - process = subprocess.Popen(stdout=subprocess.PIPE,stderr=subprocess.PIPE, *popenargs, **kwargs) + process = subprocess.Popen(stdout=subprocess.PIPE, + stderr=subprocess.PIPE, *popenargs, **kwargs) output, unused_err = process.communicate() retcode = process.poll() if retcode: @@ -277,7 +283,8 @@ def installation(l_install_descendant): def create_rule_ninja(): l_rules = [ - "rule download", " command = wget --no-check-certificate ${url} -O ${out} -o /dev/null", + "rule download", + " command = wget --no-check-certificate ${url} -O ${out} -o /dev/null", " description = Downloading ${descr}", "" ] @@ -429,12 +436,15 @@ def create_ninja_and_rc(l_installed): if os.path.isdir(path): l_python.append(path) - l_rc = [ 'export QP_ROOT={0}'.format(QP_ROOT) ] + \ - [ i.replace(QP_ROOT,"${QP_ROOT}") for i in - [ - 'export QP_EZFIO={0}'.format(find_path('ezfio', l_installed)), - 'export IRPF90={0}'.format(find_path("irpf90", l_installed)), - 'export NINJA={0}'.format(find_path("ninja", l_installed)), + path_ezfio = find_path('ezfio', l_installed, var_for_qp_root=True) + path_irpf90 = find_path("irpf90", l_installed, var_for_qp_root=True) + path_ninja = find_path("ninja", l_installed, var_for_qp_root=True) + + l_rc = [ + 'export QP_ROOT={0}'.format(QP_ROOT), + 'export QP_EZFIO={0}'.format(path_ezfio), + 'export IRPF90={0}'.format(path_irpf90), + 'export NINJA={0}'.format(path_ninja), 'export QP_PYTHON={0}'.format(":".join(l_python)), "", 'export PYTHONPATH="${QP_PYTHON}":"${PYTHONPATH}"', 'export PATH="${QP_PYTHON}":"${QP_ROOT}"/bin:"${QP_ROOT}"/ocaml:"${PATH}"', @@ -443,7 +453,7 @@ def create_ninja_and_rc(l_installed): 'source ${QP_ROOT}/install/EZFIO/Bash/ezfio.sh', "", 'source ${HOME}/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true', "" - ] ] + ] path = join(QP_ROOT, "quantum_package.rc") with open(path, "w+") as f: @@ -451,16 +461,14 @@ def create_ninja_and_rc(l_installed): print "[ OK ] ({0})".format(path) - print str_info("build"), - command = ['bash', '-c', 'source {0} && env'.format(path)] - proc = subprocess.Popen(command, stdout=subprocess.PIPE) - for line in proc.stdout: (key, _, value) = line.partition("=") os.environ[key] = value.strip() + print str_info("build"), + qp_create_ninja = os.path.join(QP_ROOT, "scripts", "compilation", "qp_create_ninja.py") @@ -474,7 +482,6 @@ def create_ninja_and_rc(l_installed): def recommendation(): - print "Last Step:" path = join(QP_ROOT, "quantum_package.rc") print "Now :" print " source {0}".format(path) diff --git a/scripts/module/qp_install_module.py b/scripts/module/qp_install_module.py index 8aad1ae1..60f7446a 100755 --- a/scripts/module/qp_install_module.py +++ b/scripts/module/qp_install_module.py @@ -23,10 +23,10 @@ try: from module_handler import get_l_module_descendant from update_README import Doc_key, Needed_key from qp_path import QP_SRC, QP_PLUGINS - except ImportError: - print "source .quantum_package.rc" - raise + print "Please check if you have source the .quantum_package.rc" + print "(`source .quantum_package.rc`)" + print sys.exit(1) def save_new_module(path, l_child): From a67fd36524ad9966772f5e5d52cfb4a6aa9275a3 Mon Sep 17 00:00:00 2001 From: Thomas Applencourt Date: Thu, 2 Jul 2015 09:55:41 +0200 Subject: [PATCH 03/15] Add Casino module --- plugins/Casino/.gitignore | 23 ++++++++++ plugins/Casino/NEEDED_CHILDREN_MODULES | 1 + plugins/Casino/README.rst | 27 ++++++++++++ .../Casino}/save_for_casino.irp.f | 0 plugins/Casino/tree_dependency.png | Bin 0 -> 65172 bytes plugins/Full_CI/.gitignore | 6 +-- plugins/Perturbation/README.rst | 36 ++++++++-------- scripts/module/qp_install_module.py | 3 +- src/Determinants/README.rst | 8 ---- src/Ezfio_files/README.rst | 40 +++++++----------- 10 files changed, 90 insertions(+), 54 deletions(-) create mode 100644 plugins/Casino/.gitignore create mode 100644 plugins/Casino/NEEDED_CHILDREN_MODULES create mode 100644 plugins/Casino/README.rst rename {src/Determinants => plugins/Casino}/save_for_casino.irp.f (100%) create mode 100644 plugins/Casino/tree_dependency.png diff --git a/plugins/Casino/.gitignore b/plugins/Casino/.gitignore new file mode 100644 index 00000000..acf88165 --- /dev/null +++ b/plugins/Casino/.gitignore @@ -0,0 +1,23 @@ +# Automatically created by /home/razoa/quantum_package/scripts/module/module_handler.py +IRPF90_temp +IRPF90_man +irpf90_entities +tags +irpf90.make +Makefile +Makefile.depend +.ninja_log +.ninja_deps +ezfio_interface.irp.f +Ezfio_files +Determinants +Integrals_Monoelec +MO_Basis +Utils +Pseudo +Bitmask +AO_Basis +Electrons +Nuclei +Integrals_Bielec +save_for_casino \ No newline at end of file diff --git a/plugins/Casino/NEEDED_CHILDREN_MODULES b/plugins/Casino/NEEDED_CHILDREN_MODULES new file mode 100644 index 00000000..aae89501 --- /dev/null +++ b/plugins/Casino/NEEDED_CHILDREN_MODULES @@ -0,0 +1 @@ +Determinants diff --git a/plugins/Casino/README.rst b/plugins/Casino/README.rst new file mode 100644 index 00000000..02d9dc66 --- /dev/null +++ b/plugins/Casino/README.rst @@ -0,0 +1,27 @@ +====== +Casino +====== + +Documentation +============= + +.. Do not edit this section. It was auto-generated from the +.. by the `update_README.py` script. + +`prog_save_casino `_ + Undocumented + + +`save_casino `_ + Undocumented + +Needed Modules +============== + +.. Do not edit this section. It was auto-generated from the +.. by the `update_README.py` script. + +.. image:: tree_dependency.png + +* `Determinants `_ + diff --git a/src/Determinants/save_for_casino.irp.f b/plugins/Casino/save_for_casino.irp.f similarity index 100% rename from src/Determinants/save_for_casino.irp.f rename to plugins/Casino/save_for_casino.irp.f diff --git a/plugins/Casino/tree_dependency.png b/plugins/Casino/tree_dependency.png new file mode 100644 index 0000000000000000000000000000000000000000..98994c93815248fad9b0a23156d5f9e98bdf199f GIT binary patch literal 65172 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 SP4g7|XT0fTljFv=YyTf&(w?pW literal 0 HcmV?d00001 diff --git a/plugins/Full_CI/.gitignore b/plugins/Full_CI/.gitignore index d2c39df7..57302ebb 100644 --- a/plugins/Full_CI/.gitignore +++ b/plugins/Full_CI/.gitignore @@ -1,4 +1,4 @@ -# Automatically created by /home/scemama/quantum_package/scripts/module/module_handler.py +# Automatically created by /home/razoa/quantum_package/scripts/module/module_handler.py IRPF90_temp IRPF90_man irpf90_entities @@ -27,6 +27,6 @@ Nuclei Hartree_Fock Properties target_pt2 -full_ci_no_skip +full_ci var_pt2_ratio -full_ci \ No newline at end of file +full_ci_no_skip \ No newline at end of file diff --git a/plugins/Perturbation/README.rst b/plugins/Perturbation/README.rst index 7be62489..9162e94b 100644 --- a/plugins/Perturbation/README.rst +++ b/plugins/Perturbation/README.rst @@ -85,92 +85,92 @@ Documentation Undocumented -`perturb_buffer_by_mono_delta_rho_one_point `_ +`perturb_buffer_by_mono_delta_rho_one_point `_ Applly pertubration ``delta_rho_one_point`` to the buffer of determinants generated in the H_apply routine. -`perturb_buffer_by_mono_dipole_moment_z `_ +`perturb_buffer_by_mono_dipole_moment_z `_ Applly pertubration ``dipole_moment_z`` to the buffer of determinants generated in the H_apply routine. -`perturb_buffer_by_mono_epstein_nesbet `_ +`perturb_buffer_by_mono_epstein_nesbet `_ Applly pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply routine. -`perturb_buffer_by_mono_epstein_nesbet_2x2 `_ +`perturb_buffer_by_mono_epstein_nesbet_2x2 `_ Applly pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply routine. -`perturb_buffer_by_mono_epstein_nesbet_sc2 `_ +`perturb_buffer_by_mono_epstein_nesbet_sc2 `_ Applly pertubration ``epstein_nesbet_sc2`` to the buffer of determinants generated in the H_apply routine. -`perturb_buffer_by_mono_epstein_nesbet_sc2_no_projected `_ +`perturb_buffer_by_mono_epstein_nesbet_sc2_no_projected `_ Applly pertubration ``epstein_nesbet_sc2_no_projected`` to the buffer of determinants generated in the H_apply routine. -`perturb_buffer_by_mono_epstein_nesbet_sc2_projected `_ +`perturb_buffer_by_mono_epstein_nesbet_sc2_projected `_ Applly pertubration ``epstein_nesbet_sc2_projected`` to the buffer of determinants generated in the H_apply routine. -`perturb_buffer_by_mono_h_core `_ +`perturb_buffer_by_mono_h_core `_ Applly pertubration ``h_core`` to the buffer of determinants generated in the H_apply routine. -`perturb_buffer_by_mono_moller_plesset `_ +`perturb_buffer_by_mono_moller_plesset `_ Applly pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply routine. -`perturb_buffer_delta_rho_one_point `_ +`perturb_buffer_delta_rho_one_point `_ Applly pertubration ``delta_rho_one_point`` to the buffer of determinants generated in the H_apply routine. -`perturb_buffer_dipole_moment_z `_ +`perturb_buffer_dipole_moment_z `_ Applly pertubration ``dipole_moment_z`` to the buffer of determinants generated in the H_apply routine. -`perturb_buffer_epstein_nesbet `_ +`perturb_buffer_epstein_nesbet `_ Applly pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply routine. -`perturb_buffer_epstein_nesbet_2x2 `_ +`perturb_buffer_epstein_nesbet_2x2 `_ Applly pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply routine. -`perturb_buffer_epstein_nesbet_sc2 `_ +`perturb_buffer_epstein_nesbet_sc2 `_ Applly pertubration ``epstein_nesbet_sc2`` to the buffer of determinants generated in the H_apply routine. -`perturb_buffer_epstein_nesbet_sc2_no_projected `_ +`perturb_buffer_epstein_nesbet_sc2_no_projected `_ Applly pertubration ``epstein_nesbet_sc2_no_projected`` to the buffer of determinants generated in the H_apply routine. -`perturb_buffer_epstein_nesbet_sc2_projected `_ +`perturb_buffer_epstein_nesbet_sc2_projected `_ Applly pertubration ``epstein_nesbet_sc2_projected`` to the buffer of determinants generated in the H_apply routine. -`perturb_buffer_h_core `_ +`perturb_buffer_h_core `_ Applly pertubration ``h_core`` to the buffer of determinants generated in the H_apply routine. -`perturb_buffer_moller_plesset `_ +`perturb_buffer_moller_plesset `_ Applly pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply routine. diff --git a/scripts/module/qp_install_module.py b/scripts/module/qp_install_module.py index 60f7446a..3240e142 100755 --- a/scripts/module/qp_install_module.py +++ b/scripts/module/qp_install_module.py @@ -79,7 +79,7 @@ if __name__ == '__main__': l_children = arguments[""] - path = os.path.join(QP_SRC, arguments[""]) + path = os.path.join(QP_PLUGINS, arguments[""][0]) print "You will create the module:" print path @@ -103,6 +103,7 @@ if __name__ == '__main__': print l_child_reduce save_new_module(path, l_child_reduce) + print "This was a plugin, you can install it now" elif arguments["download"]: pass # d_local = get_dict_child([QP_SRC]) diff --git a/src/Determinants/README.rst b/src/Determinants/README.rst index e44c6fcf..e081f0ed 100644 --- a/src/Determinants/README.rst +++ b/src/Determinants/README.rst @@ -605,10 +605,6 @@ Documentation Undocumented -`prog_save_casino `_ - Undocumented - - `psi_average_norm_contrib `_ Contribution of determinants to the state-averaged density @@ -815,10 +811,6 @@ Documentation z component of the Spin -`save_casino `_ - Undocumented - - `save_natorb `_ Undocumented diff --git a/src/Ezfio_files/README.rst b/src/Ezfio_files/README.rst index e23bf778..77b07e43 100644 --- a/src/Ezfio_files/README.rst +++ b/src/Ezfio_files/README.rst @@ -38,8 +38,8 @@ Documentation Output file for Bitmask -`output_cas_sd `_ - Output file for CAS_SD +`output_casino `_ + Output file for Casino `output_cpu_time_0 `_ @@ -62,63 +62,55 @@ Documentation Output file for Full_CI -`output_generators_cas `_ - Output file for Generators_CAS - - -`output_generators_full `_ +`output_generators_full `_ Output file for Generators_full -`output_hartree_fock `_ +`output_hartree_fock `_ Output file for Hartree_Fock -`output_integrals_bielec `_ +`output_integrals_bielec `_ Output file for Integrals_Bielec -`output_integrals_monoelec `_ +`output_integrals_monoelec `_ Output file for Integrals_Monoelec -`output_mo_basis `_ +`output_mo_basis `_ Output file for MO_Basis -`output_moguess `_ +`output_moguess `_ Output file for MOGuess -`output_mrcc `_ - Output file for MRCC +`output_molden `_ + Output file for Molden -`output_nuclei `_ +`output_nuclei `_ Output file for Nuclei -`output_perturbation `_ +`output_perturbation `_ Output file for Perturbation -`output_properties `_ +`output_properties `_ Output file for Properties -`output_pseudo `_ +`output_pseudo `_ Output file for Pseudo -`output_qmcchem `_ - Output file for QmcChem - - -`output_selectors_full `_ +`output_selectors_full `_ Output file for Selectors_full -`output_utils `_ +`output_utils `_ Output file for Utils From 0cf1ccf74e43f33df6749550f5d8dd07e1547d80 Mon Sep 17 00:00:00 2001 From: Thomas Applencourt Date: Thu, 2 Jul 2015 10:08:04 +0200 Subject: [PATCH 04/15] Fixe makefile for the ocaml to always update executable list --- ocaml/Makefile | 4 ++-- src/Ezfio_files/README.rst | 16 ++++++---------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/ocaml/Makefile b/ocaml/Makefile index 53a750b6..07803368 100644 --- a/ocaml/Makefile +++ b/ocaml/Makefile @@ -18,7 +18,7 @@ MLIFILES=$(wildcard *.mli) ALL_TESTS=$(patsubst %.ml,%.byte,$(wildcard test_*.ml)) ALL_EXE=$(patsubst %.ml,%.native,$(wildcard qp_*.ml)) qp_edit.native -.PHONY: executables default +.PHONY: executables default remake_executables default: $(ALL_TESTS) $(ALL_EXE) .gitignore @@ -34,7 +34,7 @@ default: $(ALL_TESTS) $(ALL_EXE) .gitignore executables: $(QP_ROOT)/data/executables -$(QP_ROOT)/data/executables: +$(QP_ROOT)/data/executables: remake_executables $(QP_ROOT)/scripts/module/create_executables_list.sh external_libs: diff --git a/src/Ezfio_files/README.rst b/src/Ezfio_files/README.rst index 77b07e43..2b3fd735 100644 --- a/src/Ezfio_files/README.rst +++ b/src/Ezfio_files/README.rst @@ -86,31 +86,27 @@ Documentation Output file for MOGuess -`output_molden `_ - Output file for Molden - - -`output_nuclei `_ +`output_nuclei `_ Output file for Nuclei -`output_perturbation `_ +`output_perturbation `_ Output file for Perturbation -`output_properties `_ +`output_properties `_ Output file for Properties -`output_pseudo `_ +`output_pseudo `_ Output file for Pseudo -`output_selectors_full `_ +`output_selectors_full `_ Output file for Selectors_full -`output_utils `_ +`output_utils `_ Output file for Utils From 30dcb63621b8eba7c3f9377a2ec07560cdd902cb Mon Sep 17 00:00:00 2001 From: Thomas Applencourt Date: Thu, 2 Jul 2015 15:55:57 +0200 Subject: [PATCH 05/15] Move aos_ezfio.confing into EZFIO.cfg --- scripts/ezfio_interface/ei_handler.py | 2 +- src/AO_Basis/EZFIO.cfg | 50 +++++++++++++++++++++++++++ src/AO_Basis/aos.ezfio_config | 12 ------- 3 files changed, 51 insertions(+), 13 deletions(-) create mode 100644 src/AO_Basis/EZFIO.cfg delete mode 100644 src/AO_Basis/aos.ezfio_config diff --git a/scripts/ezfio_interface/ei_handler.py b/scripts/ezfio_interface/ei_handler.py index 688898f5..18fb055d 100755 --- a/scripts/ezfio_interface/ei_handler.py +++ b/scripts/ezfio_interface/ei_handler.py @@ -367,7 +367,7 @@ def create_ezfio_stuff(dict_ezfio_cfg, config_or_default="config"): size_raw = str(size_raw) if size_raw.startswith('='): - size_convert = size_raw + size_convert = size_raw.replace('.', '_') else: size_raw = provider_info["size"].translate(None, "()") size_raw = size_raw.replace('.', '_') diff --git a/src/AO_Basis/EZFIO.cfg b/src/AO_Basis/EZFIO.cfg new file mode 100644 index 00000000..afcd941e --- /dev/null +++ b/src/AO_Basis/EZFIO.cfg @@ -0,0 +1,50 @@ +[ao_basis] +type: character*(256) +doc: name of the ao basis +interface: ezfio + +[ao_num] +type: integer +doc: number of ao +interface: ezfio + +[ao_prim_num] +type: integer +doc: number of prim +size: ao_basis.ao_num +interface: ezfio + +[ao_prim_num_max] +type: integer +doc: number of power +size: =maxval(ao_basis.ao_prim_num) +interface: ezfio + +[ao_nucl] +type: integer +doc: number of prim +size: ao_basis.ao_num +interface: ezfio + +[ao_power] +type: integer +doc: number of power +size: (ao_basis.ao_num,3) +interface: ezfio + +[ao_coef] +type: double precision +doc: number of power +size: (ao_basis.ao_num,ao_basis.ao_prim_num_max) +interface: ezfio + +[ao_expo] +type: double precision +doc: number of power +size: (ao_basis.ao_num,ao_basis.ao_prim_num_max) +interface: ezfio + +[ao_md5] +type: character*(32) +doc: number of power +interface: ezfio \ No newline at end of file diff --git a/src/AO_Basis/aos.ezfio_config b/src/AO_Basis/aos.ezfio_config deleted file mode 100644 index adcc5636..00000000 --- a/src/AO_Basis/aos.ezfio_config +++ /dev/null @@ -1,12 +0,0 @@ -ao_basis - ao_basis character*(256) - ao_num integer - ao_prim_num integer (ao_basis_ao_num) - ao_nucl integer (ao_basis_ao_num) - ao_power integer (ao_basis_ao_num,3) - ao_prim_num_max integer = maxval(ao_basis_ao_prim_num) - ao_coef double precision (ao_basis_ao_num,ao_basis_ao_prim_num_max) - ao_expo double precision (ao_basis_ao_num,ao_basis_ao_prim_num_max) - ao_md5 character*(32) - - From 19ec3a7d3c73ad2aa8ba2418b4a96f08d7e230d4 Mon Sep 17 00:00:00 2001 From: Thomas Applencourt Date: Thu, 2 Jul 2015 16:00:59 +0200 Subject: [PATCH 06/15] Move electrons_ezfio.confing into EZFIO.cfg --- src/Electrons/EZFIO.cfg | 15 +++++++++++++++ src/Electrons/electrons.ezfio_config | 5 ----- 2 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 src/Electrons/EZFIO.cfg delete mode 100644 src/Electrons/electrons.ezfio_config diff --git a/src/Electrons/EZFIO.cfg b/src/Electrons/EZFIO.cfg new file mode 100644 index 00000000..33801fce --- /dev/null +++ b/src/Electrons/EZFIO.cfg @@ -0,0 +1,15 @@ +[elec_alpha_num] +type: integer +doc: elec_alpha_num +interface: ezfio + +[elec_beta_num] +type: integer +doc: elec_beta_num +interface: ezfio + +[elec_num] +type: integer +doc: name of the ao basis +size: =(electrons.elec_alpha_num + electrons.elec_beta_num) +interface: ezfio \ No newline at end of file diff --git a/src/Electrons/electrons.ezfio_config b/src/Electrons/electrons.ezfio_config deleted file mode 100644 index d89823b7..00000000 --- a/src/Electrons/electrons.ezfio_config +++ /dev/null @@ -1,5 +0,0 @@ -electrons - elec_alpha_num integer - elec_beta_num integer - elec_num integer = electrons_elec_alpha_num + electrons_elec_beta_num - From a94d3e0e951fcf00aae8c42c597cc0eb56708161 Mon Sep 17 00:00:00 2001 From: Thomas Applencourt Date: Thu, 2 Jul 2015 16:51:56 +0200 Subject: [PATCH 07/15] AO provider --- plugins/Full_CI/README.rst | 46 ++++++++++++------------ scripts/ezfio_interface/ei_handler.py | 24 ++++++++----- scripts/generate_h_apply.py | 3 +- src/.gitignore | 1 + src/AO_Basis/EZFIO.cfg | 4 +-- src/AO_Basis/README.rst | 52 +++++++++++++-------------- src/AO_Basis/aos.irp.f | 11 ++---- src/Electrons/EZFIO.cfg | 20 +++++------ src/Electrons/README.rst | 26 +++++++------- src/Electrons/electrons.irp.f | 22 ++---------- 10 files changed, 98 insertions(+), 111 deletions(-) diff --git a/plugins/Full_CI/README.rst b/plugins/Full_CI/README.rst index 396fbcd6..d94675eb 100644 --- a/plugins/Full_CI/README.rst +++ b/plugins/Full_CI/README.rst @@ -14,7 +14,7 @@ Documentation Undocumented -`h_apply_fci `_ +`h_apply_fci `_ Calls H_apply on the HF determinant and selects all connected single and double excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. @@ -25,126 +25,126 @@ Documentation Assume N_int is already provided. -`h_apply_fci_mono `_ +`h_apply_fci_mono `_ Calls H_apply on the HF determinant and selects all connected single and double excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. -`h_apply_fci_mono_diexc `_ +`h_apply_fci_mono_diexc `_ Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. -`h_apply_fci_mono_monoexc `_ +`h_apply_fci_mono_monoexc `_ Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. -`h_apply_fci_monoexc `_ +`h_apply_fci_monoexc `_ Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. -`h_apply_fci_no_skip `_ +`h_apply_fci_no_skip `_ Calls H_apply on the HF determinant and selects all connected single and double excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. -`h_apply_fci_no_skip_diexc `_ +`h_apply_fci_no_skip_diexc `_ Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. -`h_apply_fci_no_skip_monoexc `_ +`h_apply_fci_no_skip_monoexc `_ Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. -`h_apply_fci_pt2 `_ +`h_apply_fci_pt2 `_ Calls H_apply on the HF determinant and selects all connected single and double excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. -`h_apply_fci_pt2_diexc `_ +`h_apply_fci_pt2_diexc `_ Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. -`h_apply_fci_pt2_monoexc `_ +`h_apply_fci_pt2_monoexc `_ Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. -`h_apply_pt2_mono_delta_rho `_ +`h_apply_pt2_mono_delta_rho `_ Calls H_apply on the HF determinant and selects all connected single and double excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. -`h_apply_pt2_mono_delta_rho_diexc `_ +`h_apply_pt2_mono_delta_rho_diexc `_ Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. -`h_apply_pt2_mono_delta_rho_monoexc `_ +`h_apply_pt2_mono_delta_rho_monoexc `_ Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. -`h_apply_pt2_mono_di_delta_rho `_ +`h_apply_pt2_mono_di_delta_rho `_ Calls H_apply on the HF determinant and selects all connected single and double excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. -`h_apply_pt2_mono_di_delta_rho_diexc `_ +`h_apply_pt2_mono_di_delta_rho_diexc `_ Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. -`h_apply_pt2_mono_di_delta_rho_monoexc `_ +`h_apply_pt2_mono_di_delta_rho_monoexc `_ Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. -`h_apply_select_mono_delta_rho `_ +`h_apply_select_mono_delta_rho `_ Calls H_apply on the HF determinant and selects all connected single and double excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. -`h_apply_select_mono_delta_rho_diexc `_ +`h_apply_select_mono_delta_rho_diexc `_ Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. -`h_apply_select_mono_delta_rho_monoexc `_ +`h_apply_select_mono_delta_rho_monoexc `_ Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. -`h_apply_select_mono_di_delta_rho `_ +`h_apply_select_mono_di_delta_rho `_ Calls H_apply on the HF determinant and selects all connected single and double excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. -`h_apply_select_mono_di_delta_rho_diexc `_ +`h_apply_select_mono_di_delta_rho_diexc `_ Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. -`h_apply_select_mono_di_delta_rho_monoexc `_ +`h_apply_select_mono_di_delta_rho_monoexc `_ Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. diff --git a/scripts/ezfio_interface/ei_handler.py b/scripts/ezfio_interface/ei_handler.py index 18fb055d..1be604da 100755 --- a/scripts/ezfio_interface/ei_handler.py +++ b/scripts/ezfio_interface/ei_handler.py @@ -239,13 +239,13 @@ def get_dict_config_file(module_obj): # Check if type is avalaible try: - type_ = config_file.get(section, "type") + type_ = config_file.get(section, "type").strip() except ConfigParser.NoOptionError: error("type", pvd, module_obj.path) sys.exit(1) if type_ not in type_dict: - print "{0} not avalaible. Choose in:".format(type_) + print "{0} not avalaible. Choose in:".format(type_).strip() print ", ".join(sorted([i for i in type_dict])) sys.exit(1) else: @@ -279,13 +279,16 @@ def get_dict_config_file(module_obj): d[pvd][option] = d_default[option] # If interface is input we need a default value information - if "ocaml" in d[pvd]["interface"]: - try: - default_raw = config_file.get(section, "default") - except ConfigParser.NoOptionError: + + try: + default_raw = config_file.get(section, "default") + except ConfigParser.NoOptionError: + if "ocaml" in d[pvd]["interface"]: error("default", pvd, module_obj.path) sys.exit(1) - + else: + pass + else: try: d[pvd]["default"] = is_bool(default_raw) except TypeError: @@ -435,13 +438,18 @@ def create_ezfio_stuff(dict_ezfio_cfg, config_or_default="config"): # It is the last so we don't need to right align it str_size = size_format_to_ezfio(size_raw) if size_raw else "" + if "default" in provider_info and provider_info["default"].fortran.startswith("="): + str_default = provider_info["default"].fortran.replace('.', '_') + else: + str_default = "" + # Get the string in to good format (left align and co) str_name = str_name_format(name_raw) str_fortran_type = str_type_format(fortran_type_raw) # Return the string if config_or_default == "config": - s = " {0} {1} {2}".format(str_name, str_fortran_type, str_size) + s = " {0} {1} {2} {3}".format(str_name, str_fortran_type, str_size, str_default) elif config_or_default == "default": try: str_value = provider_info["default"].ocaml diff --git a/scripts/generate_h_apply.py b/scripts/generate_h_apply.py index 9f878d7d..ce944864 100755 --- a/scripts/generate_h_apply.py +++ b/scripts/generate_h_apply.py @@ -43,7 +43,8 @@ class H_apply(object): self.perturbation = None #s["omp_parallel"] = """!$OMP PARALLEL DEFAULT(NONE) & - s["omp_parallel"] = """!$OMP PARALLEL DEFAULT(SHARED) & + s["omp_parallel"] = """ PROVIDE elec_num_tab + !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(i,j,k,l,keys_out,hole,particle, & !$OMP occ_particle,occ_hole,j_a,k_a,other_spin, & !$OMP hole_save,ispin,jj,l_a,ib_jb_pairs,array_pairs, & diff --git a/src/.gitignore b/src/.gitignore index 9bba1426..1e9f0bc4 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -23,3 +23,4 @@ QmcChem Selectors_full Selectors_no_sorted SingleRefMethod +Casino \ No newline at end of file diff --git a/src/AO_Basis/EZFIO.cfg b/src/AO_Basis/EZFIO.cfg index afcd941e..6ace9e9a 100644 --- a/src/AO_Basis/EZFIO.cfg +++ b/src/AO_Basis/EZFIO.cfg @@ -6,7 +6,7 @@ interface: ezfio [ao_num] type: integer doc: number of ao -interface: ezfio +interface: ezfio, provider [ao_prim_num] type: integer @@ -17,7 +17,7 @@ interface: ezfio [ao_prim_num_max] type: integer doc: number of power -size: =maxval(ao_basis.ao_prim_num) +default: =maxval(ao_basis.ao_prim_num) interface: ezfio [ao_nucl] diff --git a/src/AO_Basis/README.rst b/src/AO_Basis/README.rst index da1ba1dc..ec73b14f 100644 --- a/src/AO_Basis/README.rst +++ b/src/AO_Basis/README.rst @@ -46,61 +46,61 @@ Documentation .. Do not edit this section. It was auto-generated from the .. by the `update_README.py` script. -`ao_coef `_ +`ao_coef `_ AO Coefficients, read from input. Those should not be used directly, as the MOs are expressed on the basis of **normalized** AOs. -`ao_coef_normalized `_ +`ao_coef_normalized `_ Coefficients including the AO normalization -`ao_coef_normalized_ordered `_ +`ao_coef_normalized_ordered `_ Sorted primitives to accelerate 4 index MO transformation -`ao_coef_normalized_ordered_transp `_ +`ao_coef_normalized_ordered_transp `_ Transposed ao_coef_normalized_ordered -`ao_expo `_ +`ao_expo `_ AO Exponents read from input -`ao_expo_ordered `_ +`ao_expo_ordered `_ Sorted primitives to accelerate 4 index MO transformation -`ao_expo_ordered_transp `_ +`ao_expo_ordered_transp `_ Transposed ao_expo_ordered -`ao_l `_ +`ao_l `_ ao_l = l value of the AO: a+b+c in x^a y^b z^c -`ao_l_char `_ +`ao_l_char `_ ao_l = l value of the AO: a+b+c in x^a y^b z^c -`ao_l_char_space `_ +`ao_l_char_space `_ Undocumented -`ao_md5 `_ +`ao_md5 `_ MD5 key characteristic of the AO basis -`ao_nucl `_ +`ao_nucl `_ Index of the nuclei on which the ao is centered -`ao_num `_ - Number of atomic orbitals +`ao_num `_ + number of ao -`ao_num_align `_ - Number of atomic orbitals +`ao_num_align `_ + Number of atomic orbitals align `ao_overlap `_ @@ -128,27 +128,27 @@ Documentation :math:`\int \chi_i(r) \chi_j(r) dr)` -`ao_power `_ +`ao_power `_ Powers of x,y and z read from input -`ao_prim_num `_ +`ao_prim_num `_ Number of primitives per atomic orbital -`ao_prim_num_max `_ +`ao_prim_num_max `_ Undocumented -`ao_prim_num_max_align `_ +`ao_prim_num_max_align `_ Undocumented -`l_to_charater `_ +`l_to_charater `_ character corresponding to the "L" value of an AO orbital -`n_aos_max `_ +`n_aos_max `_ Number of AOs per atom @@ -160,21 +160,21 @@ Documentation Undocumented -`nucl_aos `_ +`nucl_aos `_ List of AOs attached on each atom -`nucl_list_shell_aos `_ +`nucl_list_shell_aos `_ Index of the shell type Aos and of the corresponding Aos Per convention, for P,D,F and G AOs, we take the index of the AO with the the corresponding power in the "X" axis -`nucl_n_aos `_ +`nucl_n_aos `_ Number of AOs per atom -`nucl_num_shell_aos `_ +`nucl_num_shell_aos `_ Index of the shell type Aos and of the corresponding Aos Per convention, for P,D,F and G AOs, we take the index of the AO with the the corresponding power in the "X" axis diff --git a/src/AO_Basis/aos.irp.f b/src/AO_Basis/aos.irp.f index b9c82327..b990e7c2 100644 --- a/src/AO_Basis/aos.irp.f +++ b/src/AO_Basis/aos.irp.f @@ -1,17 +1,10 @@ - BEGIN_PROVIDER [ integer, ao_num ] -&BEGIN_PROVIDER [ integer, ao_num_align ] +BEGIN_PROVIDER [ integer, ao_num_align ] implicit none BEGIN_DOC - ! Number of atomic orbitals + ! Number of atomic orbitals align END_DOC - ao_num = -1 - PROVIDE ezfio_filename - call ezfio_get_ao_basis_ao_num(ao_num) - if (ao_num <= 0) then - stop 'Number of contracted gaussians should be > 0' - endif integer :: align_double ao_num_align = align_double(ao_num) END_PROVIDER diff --git a/src/Electrons/EZFIO.cfg b/src/Electrons/EZFIO.cfg index 33801fce..aecf2dc0 100644 --- a/src/Electrons/EZFIO.cfg +++ b/src/Electrons/EZFIO.cfg @@ -1,15 +1,15 @@ [elec_alpha_num] -type: integer -doc: elec_alpha_num -interface: ezfio +type: Positive_int +doc: Numbers of electrons alpha ("up") +interface: ezfio, provider [elec_beta_num] -type: integer -doc: elec_beta_num -interface: ezfio +type: Positive_int +doc: Numbers of electrons beta ("down") +interface: ezfio, provider [elec_num] -type: integer -doc: name of the ao basis -size: =(electrons.elec_alpha_num + electrons.elec_beta_num) -interface: ezfio \ No newline at end of file +type: Positive_int +doc: Numbers total of electrons (alpha + beta) +default: =(electrons.elec_alpha_num + electrons.elec_beta_num) +interface: ezfio, provider \ No newline at end of file diff --git a/src/Electrons/README.rst b/src/Electrons/README.rst index ecbcf9c4..9c313547 100644 --- a/src/Electrons/README.rst +++ b/src/Electrons/README.rst @@ -34,18 +34,18 @@ Documentation .. Do not edit this section. It was auto-generated from the .. by the `update_README.py` script. -`elec_alpha_num `_ - Numbers of alpha ("up") , beta ("down") and total electrons - - -`elec_beta_num `_ - Numbers of alpha ("up") , beta ("down") and total electrons - - -`elec_num `_ - Numbers of alpha ("up") , beta ("down") and total electrons - - -`elec_num_tab `_ +`elec_alpha_num `_ + Numbers of electrons alpha ("up") + + +`elec_beta_num `_ + Numbers of electrons beta ("down") + + +`elec_num `_ + Numbers total of electrons (alpha + beta) + + +`elec_num_tab `_ Numbers of alpha ("up") , beta ("down") and total electrons diff --git a/src/Electrons/electrons.irp.f b/src/Electrons/electrons.irp.f index c442489d..939243cd 100644 --- a/src/Electrons/electrons.irp.f +++ b/src/Electrons/electrons.irp.f @@ -1,29 +1,13 @@ - BEGIN_PROVIDER [ integer, elec_alpha_num ] -&BEGIN_PROVIDER [ integer, elec_beta_num ] -&BEGIN_PROVIDER [ integer, elec_num ] -&BEGIN_PROVIDER [ integer, elec_num_tab, (2) ] +BEGIN_PROVIDER [ integer, elec_num_tab, (2)] implicit none BEGIN_DOC ! Numbers of alpha ("up") , beta ("down") and total electrons END_DOC PROVIDE ezfio_filename - call ezfio_get_electrons_elec_alpha_num(elec_alpha_num) - call ezfio_get_electrons_elec_beta_num(elec_beta_num) - call ezfio_get_electrons_elec_num(elec_num) + elec_num_tab(1) = elec_alpha_num elec_num_tab(2) = elec_beta_num - ASSERT (elec_alpha_num > 0) - ASSERT (elec_beta_num >= 0) - call write_time(output_Electrons) - call write_int(output_Electrons,elec_num, & - 'Number of electrons' ) - call write_int(output_Electrons,elec_alpha_num, & - 'Number of alpha electrons' ) - call write_int(output_Electrons,elec_beta_num, & - 'Number of beta electrons' ) - write(output_Electrons,*) + END_PROVIDER - - From 5b24f53ab6280e1015cc776cdd7bc1c46e088d32 Mon Sep 17 00:00:00 2001 From: Thomas Applencourt Date: Thu, 2 Jul 2015 18:51:08 +0200 Subject: [PATCH 08/15] Workaround for ezfio bug --- src/Electrons/EZFIO.cfg | 4 ++-- src/Electrons/README.rst | 12 ++++++------ src/Electrons/electrons.irp.f | 4 +++- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/Electrons/EZFIO.cfg b/src/Electrons/EZFIO.cfg index aecf2dc0..7f1d2f3d 100644 --- a/src/Electrons/EZFIO.cfg +++ b/src/Electrons/EZFIO.cfg @@ -11,5 +11,5 @@ interface: ezfio, provider [elec_num] type: Positive_int doc: Numbers total of electrons (alpha + beta) -default: =(electrons.elec_alpha_num + electrons.elec_beta_num) -interface: ezfio, provider \ No newline at end of file +default: = electrons.elec_alpha_num + electrons.elec_beta_num +interface: ezfio \ No newline at end of file diff --git a/src/Electrons/README.rst b/src/Electrons/README.rst index 9c313547..5c785e4e 100644 --- a/src/Electrons/README.rst +++ b/src/Electrons/README.rst @@ -34,7 +34,7 @@ Documentation .. Do not edit this section. It was auto-generated from the .. by the `update_README.py` script. -`elec_alpha_num `_ +`elec_alpha_num `_ Numbers of electrons alpha ("up") @@ -42,10 +42,10 @@ Documentation Numbers of electrons beta ("down") -`elec_num `_ - Numbers total of electrons (alpha + beta) - - -`elec_num_tab `_ +`elec_num `_ + Numbers of alpha ("up") , beta ("down") and total electrons + + +`elec_num_tab `_ Numbers of alpha ("up") , beta ("down") and total electrons diff --git a/src/Electrons/electrons.irp.f b/src/Electrons/electrons.irp.f index 939243cd..701a97d2 100644 --- a/src/Electrons/electrons.irp.f +++ b/src/Electrons/electrons.irp.f @@ -1,4 +1,5 @@ -BEGIN_PROVIDER [ integer, elec_num_tab, (2)] + BEGIN_PROVIDER [ integer, elec_num] +&BEGIN_PROVIDER [ integer, elec_num_tab, (2)] implicit none BEGIN_DOC @@ -6,6 +7,7 @@ BEGIN_PROVIDER [ integer, elec_num_tab, (2)] END_DOC PROVIDE ezfio_filename + call ezfio_get_electrons_elec_num(elec_num) elec_num_tab(1) = elec_alpha_num elec_num_tab(2) = elec_beta_num From ef82cdf124970df345f63ca625c55a0dd56345c6 Mon Sep 17 00:00:00 2001 From: Thomas Applencourt Date: Fri, 3 Jul 2015 10:35:17 +0200 Subject: [PATCH 09/15] Remove 100 ligne, now generated by AO_Basis/EZFIO.cfg --- plugins/Hartree_Fock/.gitignore | 1 - src/AO_Basis/EZFIO.cfg | 30 ++++---- src/AO_Basis/README.rst | 55 +++++++------- src/AO_Basis/aos.irp.f | 124 ++++---------------------------- src/Determinants/.gitignore | 1 - 5 files changed, 55 insertions(+), 156 deletions(-) diff --git a/plugins/Hartree_Fock/.gitignore b/plugins/Hartree_Fock/.gitignore index c6be1d0d..dbafb30b 100644 --- a/plugins/Hartree_Fock/.gitignore +++ b/plugins/Hartree_Fock/.gitignore @@ -6,7 +6,6 @@ tags irpf90.make Makefile Makefile.depend -build.ninja .ninja_log .ninja_deps ezfio_interface.irp.f diff --git a/src/AO_Basis/EZFIO.cfg b/src/AO_Basis/EZFIO.cfg index 6ace9e9a..4cb3b390 100644 --- a/src/AO_Basis/EZFIO.cfg +++ b/src/AO_Basis/EZFIO.cfg @@ -10,41 +10,41 @@ interface: ezfio, provider [ao_prim_num] type: integer -doc: number of prim -size: ao_basis.ao_num -interface: ezfio +doc: Number of primitives per atomic orbital +size: (ao_basis.ao_num) +interface: ezfio, provider [ao_prim_num_max] type: integer -doc: number of power +doc: number of primitive maximun default: =maxval(ao_basis.ao_prim_num) interface: ezfio [ao_nucl] type: integer -doc: number of prim -size: ao_basis.ao_num -interface: ezfio +doc: Index of the nuclei on which the ao is centered +size: (ao_basis.ao_num) +interface: ezfio, provider [ao_power] type: integer -doc: number of power +doc: power for each dimension for each ao_basis size: (ao_basis.ao_num,3) -interface: ezfio +interface: ezfio, provider [ao_coef] type: double precision -doc: number of power +doc: AO Coefficients, read from input. Those should not be used directly, as the MOs are expressed on the basis of **normalized** AOs. size: (ao_basis.ao_num,ao_basis.ao_prim_num_max) -interface: ezfio +interface: ezfio, provider [ao_expo] type: double precision -doc: number of power +doc: expo for each primitive of each ao_basis size: (ao_basis.ao_num,ao_basis.ao_prim_num_max) -interface: ezfio +interface: ezfio, provider [ao_md5] type: character*(32) -doc: number of power -interface: ezfio \ No newline at end of file +doc: MD5 key characteristic of the AO basis +interface: ezfio, provider \ No newline at end of file diff --git a/src/AO_Basis/README.rst b/src/AO_Basis/README.rst index ec73b14f..4a1aa1ef 100644 --- a/src/AO_Basis/README.rst +++ b/src/AO_Basis/README.rst @@ -46,56 +46,55 @@ Documentation .. Do not edit this section. It was auto-generated from the .. by the `update_README.py` script. -`ao_coef `_ - AO Coefficients, read from input. Those should not be used directly, as - the MOs are expressed on the basis of **normalized** AOs. +`ao_coef `_ + AO Coefficients, read from input. Those should not be used directly, as the MOs are expressed on the basis of **normalized** AOs. -`ao_coef_normalized `_ +`ao_coef_normalized `_ Coefficients including the AO normalization -`ao_coef_normalized_ordered `_ +`ao_coef_normalized_ordered `_ Sorted primitives to accelerate 4 index MO transformation -`ao_coef_normalized_ordered_transp `_ +`ao_coef_normalized_ordered_transp `_ Transposed ao_coef_normalized_ordered -`ao_expo `_ - AO Exponents read from input +`ao_expo `_ + expo for each primitive of each ao_basis -`ao_expo_ordered `_ +`ao_expo_ordered `_ Sorted primitives to accelerate 4 index MO transformation -`ao_expo_ordered_transp `_ +`ao_expo_ordered_transp `_ Transposed ao_expo_ordered -`ao_l `_ +`ao_l `_ ao_l = l value of the AO: a+b+c in x^a y^b z^c -`ao_l_char `_ +`ao_l_char `_ ao_l = l value of the AO: a+b+c in x^a y^b z^c -`ao_l_char_space `_ +`ao_l_char_space `_ Undocumented -`ao_md5 `_ +`ao_md5 `_ MD5 key characteristic of the AO basis -`ao_nucl `_ +`ao_nucl `_ Index of the nuclei on which the ao is centered -`ao_num `_ +`ao_num `_ number of ao @@ -128,27 +127,27 @@ Documentation :math:`\int \chi_i(r) \chi_j(r) dr)` -`ao_power `_ - Powers of x,y and z read from input +`ao_power `_ + power for each dimension for each ao_basis -`ao_prim_num `_ +`ao_prim_num `_ Number of primitives per atomic orbital -`ao_prim_num_max `_ +`ao_prim_num_max `_ Undocumented -`ao_prim_num_max_align `_ - Undocumented +`ao_prim_num_max_align `_ + Number of primitives per atomic orbital aligned -`l_to_charater `_ +`l_to_charater `_ character corresponding to the "L" value of an AO orbital -`n_aos_max `_ +`n_aos_max `_ Number of AOs per atom @@ -160,21 +159,21 @@ Documentation Undocumented -`nucl_aos `_ +`nucl_aos `_ List of AOs attached on each atom -`nucl_list_shell_aos `_ +`nucl_list_shell_aos `_ Index of the shell type Aos and of the corresponding Aos Per convention, for P,D,F and G AOs, we take the index of the AO with the the corresponding power in the "X" axis -`nucl_n_aos `_ +`nucl_n_aos `_ Number of AOs per atom -`nucl_num_shell_aos `_ +`nucl_num_shell_aos `_ Index of the shell type Aos and of the corresponding Aos Per convention, for P,D,F and G AOs, we take the index of the AO with the the corresponding power in the "X" axis diff --git a/src/AO_Basis/aos.irp.f b/src/AO_Basis/aos.irp.f index b990e7c2..27a79b4f 100644 --- a/src/AO_Basis/aos.irp.f +++ b/src/AO_Basis/aos.irp.f @@ -7,72 +7,17 @@ BEGIN_PROVIDER [ integer, ao_num_align ] integer :: align_double ao_num_align = align_double(ao_num) -END_PROVIDER - -BEGIN_PROVIDER [ integer, ao_power, (ao_num_align,3) ] - implicit none - BEGIN_DOC - ! Powers of x,y and z read from input - END_DOC - PROVIDE ezfio_filename - - integer :: i,j,k - integer, allocatable :: ibuffer(:,:) - allocate ( ibuffer(ao_num,3) ) - ibuffer = 0 - call ezfio_get_ao_basis_ao_power(ibuffer) - ao_power = 0 - do j = 1, 3 - do i = 1, ao_num - ao_power(i,j) = ibuffer(i,j) - enddo - enddo - deallocate(ibuffer) - -END_PROVIDER +END_PROVIDER -BEGIN_PROVIDER [ double precision, ao_expo, (ao_num_align,ao_prim_num_max) ] - implicit none - BEGIN_DOC - ! AO Exponents read from input - END_DOC - PROVIDE ezfio_filename - - double precision, allocatable :: buffer(:,:) - allocate ( buffer(ao_num,ao_prim_num_max) ) - integer :: i,j,k - ao_expo = 0.d0 - buffer = 0.d0 - call ezfio_get_ao_basis_ao_expo(buffer) - do j = 1, ao_prim_num_max - do i = 1, ao_num - ao_expo(i,j) = buffer(i,j) - enddo - enddo - deallocate(buffer) -END_PROVIDER - -BEGIN_PROVIDER [ double precision, ao_coef, (ao_num_align,ao_prim_num_max) ] - implicit none - BEGIN_DOC - ! AO Coefficients, read from input. Those should not be used directly, as - ! the MOs are expressed on the basis of **normalized** AOs. - END_DOC - PROVIDE ezfio_filename - - double precision, allocatable :: buffer(:,:) - allocate ( buffer(ao_num,ao_prim_num_max) ) - integer :: i,j,k - ao_coef = 0.d0 - buffer = 0.d0 - call ezfio_get_ao_basis_ao_coef(buffer) - do j = 1, ao_prim_num_max - do i = 1, ao_num - ao_coef(i,j) = buffer(i,j) - enddo - enddo - deallocate(buffer) -END_PROVIDER + BEGIN_PROVIDER [ integer, ao_prim_num_max ] +&BEGIN_PROVIDER [ integer, ao_prim_num_max_align ] + implicit none + ao_prim_num_max = 0 + PROVIDE ezfio_filename + call ezfio_get_ao_basis_ao_prim_num_max(ao_prim_num_max) + integer :: align_double + ao_prim_num_max_align = align_double(ao_prim_num_max) + END_PROVIDER BEGIN_PROVIDER [ double precision, ao_coef_normalized, (ao_num_align,ao_prim_num_max) ] implicit none @@ -151,7 +96,6 @@ BEGIN_PROVIDER [ double precision, ao_expo_ordered_transp, (ao_prim_num_max_alig END_PROVIDER - BEGIN_PROVIDER [ integer, ao_l, (ao_num) ] &BEGIN_PROVIDER [ character*(128), ao_l_char, (ao_num) ] implicit none @@ -165,49 +109,17 @@ END_PROVIDER enddo END_PROVIDER - - -BEGIN_PROVIDER [ integer, ao_prim_num, (ao_num_align) ] +BEGIN_PROVIDER [ integer, ao_prim_num_max_align ] implicit none - BEGIN_DOC -! Number of primitives per atomic orbital +! Number of primitives per atomic orbital aligned END_DOC - ao_prim_num = 0 - PROVIDE ezfio_filename - call ezfio_get_ao_basis_ao_prim_num(ao_prim_num) - integer :: i - character*(80) :: message - do i=1,ao_num - if (ao_prim_num(i) <= 0) then - write(message,'(A,I6,A)') 'Number of primitives of contraction ',i,' should be > 0' - print *, message - stop - endif - enddo - -END_PROVIDER - - BEGIN_PROVIDER [ integer, ao_prim_num_max ] -&BEGIN_PROVIDER [ integer, ao_prim_num_max_align ] - implicit none - ao_prim_num_max = 0 - PROVIDE ezfio_filename - call ezfio_get_ao_basis_ao_prim_num_max(ao_prim_num_max) integer :: align_double ao_prim_num_max_align = align_double(ao_prim_num_max) - END_PROVIDER - -BEGIN_PROVIDER [ integer, ao_nucl, (ao_num)] - BEGIN_DOC -! Index of the nuclei on which the ao is centered - END_DOC - implicit none - PROVIDE ezfio_filename - call ezfio_get_ao_basis_ao_nucl(ao_nucl) END_PROVIDER + BEGIN_PROVIDER [ character*(128), l_to_charater, (0:4)] BEGIN_DOC ! character corresponding to the "L" value of an AO orbital @@ -392,13 +304,3 @@ BEGIN_PROVIDER [ character*(4), ao_l_char_space, (ao_num) ] ao_l_char_space(i) = give_ao_character_space enddo END_PROVIDER - -BEGIN_PROVIDER [ character*(32), ao_md5 ] - BEGIN_DOC -! MD5 key characteristic of the AO basis - END_DOC - implicit none - PROVIDE ezfio_filename - call ezfio_get_ao_basis_ao_md5(ao_md5) -END_PROVIDER - diff --git a/src/Determinants/.gitignore b/src/Determinants/.gitignore index 15afac51..d845043c 100644 --- a/src/Determinants/.gitignore +++ b/src/Determinants/.gitignore @@ -24,6 +24,5 @@ guess_singlet truncate_wf save_natorb program_initial_determinants -save_for_casino det_svd guess_doublet \ No newline at end of file From c1d57e354f48c86b000e414a088e266f12120d43 Mon Sep 17 00:00:00 2001 From: Thomas Applencourt Date: Fri, 3 Jul 2015 11:03:12 +0200 Subject: [PATCH 10/15] Rename in ddci --- plugins/DDCI_selected/ddci.irp.f | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/DDCI_selected/ddci.irp.f b/plugins/DDCI_selected/ddci.irp.f index cab29542..3fcb443b 100644 --- a/plugins/DDCI_selected/ddci.irp.f +++ b/plugins/DDCI_selected/ddci.irp.f @@ -1,4 +1,4 @@ -program full_ci +program ddci implicit none integer :: i,k From 517c1a14ac8b6d80df5cf07ea20b85c9407b3532 Mon Sep 17 00:00:00 2001 From: Manu Date: Fri, 3 Jul 2015 11:49:07 +0200 Subject: [PATCH 11/15] MRCC(Var) converges --- plugins/MRCC/davidson.irp.f | 13 +++---- plugins/MRCC/mrcc_utils.irp.f | 67 +++-------------------------------- 2 files changed, 12 insertions(+), 68 deletions(-) diff --git a/plugins/MRCC/davidson.irp.f b/plugins/MRCC/davidson.irp.f index 52f03ff3..57900082 100644 --- a/plugins/MRCC/davidson.irp.f +++ b/plugins/MRCC/davidson.irp.f @@ -389,16 +389,17 @@ subroutine H_u_0_mrcc(v_0,u_0,H_jj,n,keys_tmp,Nint,istate) Vt = 0.d0 !$OMP DO SCHEDULE(guided) do i=1,n - idx(0) = i - call filter_connected_davidson(keys_tmp,keys_tmp(1,1,i),Nint,i-1,idx) - do jj=1,idx(0) - j = idx(jj) - if ( (dabs(u_0(j)) > 1.d-7).or.((dabs(u_0(i)) > 1.d-7)) ) then +! idx(0) = i +! call filter_connected_davidson(keys_tmp,keys_tmp(1,1,i),Nint,i-1,idx) +! do jj=1,idx(0) +! j = idx(jj) +! if ( (dabs(u_0(j)) > 1.d-7).or.((dabs(u_0(i)) > 1.d-7)) ) then + do j = 1, i-1 call i_H_j(keys_tmp(1,1,j),keys_tmp(1,1,i),Nint,hij) hij = hij + delta_ij(j,i,istate) vt (i) = vt (i) + hij*u_0(j) vt (j) = vt (j) + hij*u_0(i) - endif +! endif enddo enddo !$OMP END DO diff --git a/plugins/MRCC/mrcc_utils.irp.f b/plugins/MRCC/mrcc_utils.irp.f index 476bd739..b175d655 100644 --- a/plugins/MRCC/mrcc_utils.irp.f +++ b/plugins/MRCC/mrcc_utils.irp.f @@ -2,76 +2,26 @@ &BEGIN_PROVIDER [ double precision, lambda_pert, (N_states,psi_det_size) ] implicit none BEGIN_DOC - ! cm/ + ! cm/ or perturbative 1/Delta_E(m) END_DOC integer :: i,k double precision :: ihpsi(N_states), hii -!integer :: icount -!integer :: icount_manu -!integer :: icount_gregoire - -!icount = 0 -!icount_manu = 0 -!icount_gregoire = 0 - - k = 1 - print*,'psi_cas_energy_diagonalized = ', psi_cas_energy_diagonalized(k) + nuclear_repulsion do i=1,N_det_non_cas - ! Questions : psi_cas_coef normalized or not ? call i_h_psi(psi_non_cas(1,1,i), psi_cas, psi_cas_coef, N_int, N_det_cas, & size(psi_cas_coef,1), n_states, ihpsi) call i_h_j(psi_non_cas(1,1,i),psi_non_cas(1,1,i),N_int,hii) do k=1,N_states - lambda_pert(k,i) = 0.d0 - lambda_mrcc(k,i) = 0.d0 lambda_pert(k,i) = 1.d0 / (psi_cas_energy_diagonalized(k)-hii) lambda_mrcc(k,i) = psi_non_cas_coef(i,k)/ihpsi(k) - lambda_mrcc(k,i) = lambda_pert(k,i) - cycle - if (dabs(psi_non_cas_coef(i,k)).le.1.d-6) then - cycle - else - lambda_pert(k,i) = 1.d0 / (psi_cas_energy_diagonalized(k)-hii) - lambda_mrcc(k,i) = psi_non_cas_coef(i,k)/ihpsi(k) - lambda_mrcc(k,i) = lambda_pert(k,i) - cycle -! icount = icount+1 - if (dabs(ihpsi(k)).le.1.d-6) then - lambda_pert(k,i) = 0.d0 - lambda_mrcc(k,i) = 0.d0 -! icount_manu = icount_manu+1 - cycle - else - if ((lambda_mrcc(k,i)*lambda_pert(k,i))<0.d0)then - lambda_mrcc(k,i) = lambda_pert(k,i) - else if ((lambda_mrcc(k,i)/lambda_pert(k,i))>1.2d0) then - lambda_mrcc(k,i) = lambda_pert(k,i) -! icount_gregoire = icount_gregoire + 1 - else - if ((lambda_mrcc(k,i)/lambda_pert(k,i))<0.1d0 .or. (lambda_mrcc(k,i)/lambda_pert(k,i))>=0d0) then - lambda_mrcc(k,i) = lambda_mrcc(k,i)*((cos((lambda_mrcc(k,i)/lambda_pert(k,i))*3.141592653589793d0/0.1d0+3.141592653589793d0)+1d0)/2.d0) & - + lambda_pert(k,i)*(1.d0-((cos((lambda_mrcc(k,i)/lambda_pert(k,i))*3.141592653589793d0/0.1d0+3.141592653589793d0)+1.d0)/2.d0)) - elseif ((lambda_mrcc(k,i)/lambda_pert(k,i))<=1.2d0 .or. (lambda_mrcc(k,i)/lambda_pert(k,i))>1.0d0) then - lambda_mrcc(k,i) = lambda_mrcc(k,i)*(1.d0-(cos(abs(2.d0-(lambda_mrcc(k,i)/lambda_pert(k,i)))*3.141592653589793d0/0.2d0+3.141592653589793d0)+1.d0)/2d0) & - + lambda_pert(k,i)*((cos(abs(2.d0-(lambda_mrcc(k,i)/lambda_pert(k,i)))*3.141592653589793d0/0.2d0+3.141592653589793d0)+1.d0)/2.d0) -! icount_gregoire = icount_gregoire + 1 - endif - endif - endif + if (dabs(ihpsi(k)).le.1.d-3) then + lambda_mrcc(k,i) = 1.d0 / (psi_cas_energy_diagonalized(k)-hii) + icount_manu = icount_manu+1 + cycle endif enddo enddo -!print *, 'icount, icount_manu, icount_gregoire' -!print *, icount, icount_manu, icount_gregoire - - -!do i=1,N_det_non_cas -! write(33,*) float(lambda_mrcc(1,i)), float(lambda_pert(1,i)) -!enddo -!write(33,*) '' -!write(33,*) '' END_PROVIDER @@ -124,13 +74,6 @@ BEGIN_PROVIDER [ double precision, delta_ij, (N_det,N_det,N_states) ] enddo enddo -!integer :: i_I -!do i_I = 1, N_det_cas -! print*,'' -! print*,'i_I = ',i_I -! print*,'psi_coef_cas = ',psi_coef(idx_cas(i_I), 1) -! print*,'delta_ij ',delta_ij(idx_cas(i_I),idx_cas(i_I),1) -!enddo END_PROVIDER BEGIN_PROVIDER [ double precision, h_matrix_dressed, (N_det,N_det) ] From 09da801b1da5e4cf7d00e823798e93e7bf16da32 Mon Sep 17 00:00:00 2001 From: Thomas Applencourt Date: Fri, 3 Jul 2015 12:18:02 +0200 Subject: [PATCH 12/15] Fix #87 --- configure | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/configure b/configure index 58367ac5..d99c3811 100755 --- a/configure +++ b/configure @@ -72,8 +72,7 @@ path_github = {"head": "http://github.com/", "tail": "archive/master.tar.gz"} ocaml = Info( url='http://raw.github.com/ocaml/opam/master/shell/opam_installer.sh', - description= - ' Ocaml, Opam and the Core library (it will take some time roughly 20min)', + description=' Ocaml, Opam and the Core library (it will take some time roughly 20min)', default_path=join(QP_ROOT_BIN, "opam")) m4 = Info( @@ -416,10 +415,8 @@ def create_ninja_and_rc(l_installed): """ - d_print = { - "qp_root": "Creating quantum_package.rc...", - "build": "Creating build.ninja..." - } + d_print = {"qp_root": "Creating quantum_package.rc...", + "build": "Creating build.ninja..."} length = max(map(len, d_print.values())) @@ -474,9 +471,13 @@ def create_ninja_and_rc(l_installed): l = [qp_create_ninja, "create"] + sys.argv[1:] try: - subprocess.check_call(" ".join(l), shell=True) + subprocess.check_call(" ".join(l), shell=True,stderr="/dev/null") except: - raise + print "[ FAIL ]" + print "Check the valididy of the config file provided ({0})".format(sys.argv[1]) + print "Exit..." + sys.exit(1) + else: print "[ OK ]" From f93eeac8e22361809fdc7883fc59078da7d6b23e Mon Sep 17 00:00:00 2001 From: Thomas Applencourt Date: Fri, 3 Jul 2015 12:35:24 +0200 Subject: [PATCH 13/15] Realy fix #84 --- configure | 4 ++- plugins/loc_cele/NEEDED_CHILDREN_MODULES | 2 +- plugins/loc_cele/README.rst | 5 ---- plugins/loc_cele/tree_dependency.png | Bin 48913 -> 30510 bytes src/Determinants/README.rst | 32 +++++++++++++++++------ src/Ezfio_files/README.rst | 24 +++++++++++------ 6 files changed, 44 insertions(+), 23 deletions(-) diff --git a/configure b/configure index d99c3811..5047052c 100755 --- a/configure +++ b/configure @@ -470,8 +470,10 @@ def create_ninja_and_rc(l_installed): "qp_create_ninja.py") l = [qp_create_ninja, "create"] + sys.argv[1:] + try: - subprocess.check_call(" ".join(l), shell=True,stderr="/dev/null") + with open('/dev/null', 'w') as dnull: + subprocess.check_call(" ".join(l), shell=True,stderr=dnull) except: print "[ FAIL ]" print "Check the valididy of the config file provided ({0})".format(sys.argv[1]) diff --git a/plugins/loc_cele/NEEDED_CHILDREN_MODULES b/plugins/loc_cele/NEEDED_CHILDREN_MODULES index a23aa5ae..6731bb70 100644 --- a/plugins/loc_cele/NEEDED_CHILDREN_MODULES +++ b/plugins/loc_cele/NEEDED_CHILDREN_MODULES @@ -1 +1 @@ -AO_Basis Electrons Ezfio_files MO_Basis Nuclei Utils +MO_Basis \ No newline at end of file diff --git a/plugins/loc_cele/README.rst b/plugins/loc_cele/README.rst index 431dae8a..b9a97efe 100644 --- a/plugins/loc_cele/README.rst +++ b/plugins/loc_cele/README.rst @@ -19,10 +19,5 @@ Needed Modules .. image:: tree_dependency.png -* `AO_Basis `_ -* `Electrons `_ -* `Ezfio_files `_ * `MO_Basis `_ -* `Nuclei `_ -* `Utils `_ diff --git a/plugins/loc_cele/tree_dependency.png b/plugins/loc_cele/tree_dependency.png index 244d9db0fba0ade3de45acd50a33b4bbb740d614..9ab804fd08cbe2ed9101b039c6c77ae35b1f6a62 100644 GIT binary patch literal 30510 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 CLo2l>>rVW54qga*lUZ{f@qjH{eRkJ3 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 diff --git a/src/Determinants/README.rst b/src/Determinants/README.rst index e081f0ed..966dd14b 100644 --- a/src/Determinants/README.rst +++ b/src/Determinants/README.rst @@ -401,6 +401,10 @@ Documentation H matrix on the basis of the slater determinants defined by psi_det +`h_matrix_cas `_ + Undocumented + + `h_u_0 `_ Computes v_0 = H|u_0> .br @@ -458,7 +462,7 @@ Documentation determinants. idx_cas gives the indice of the CAS determinant in psi_det. -`idx_non_cas `_ +`idx_non_cas `_ Set of determinants which are not part of the CAS, defined from the application of the CAS bitmask on the determinants. idx_non_cas gives the indice of the determinant in psi_det. @@ -529,7 +533,7 @@ Documentation Max number of determinants in the wave function when you select for a given property -`n_det_non_cas `_ +`n_det_non_cas `_ Set of determinants which are not part of the CAS, defined from the application of the CAS bitmask on the determinants. idx_non_cas gives the indice of the determinant in psi_det. @@ -623,12 +627,20 @@ Documentation determinants. idx_cas gives the indice of the CAS determinant in psi_det. -`psi_cas_coef_sorted_bit `_ +`psi_cas_coef_sorted_bit `_ CAS determinants sorted to accelerate the search of a random determinant in the wave function. -`psi_cas_sorted_bit `_ +`psi_cas_energy `_ + Undocumented + + +`psi_cas_energy_diagonalized `_ + Undocumented + + +`psi_cas_sorted_bit `_ CAS determinants sorted to accelerate the search of a random determinant in the wave function. @@ -638,6 +650,10 @@ Documentation is empty +`psi_coef_cas_diagonalized `_ + Undocumented + + `psi_coef_sorted `_ Wave function sorted by determinants contribution to the norm (state-averaged) @@ -706,24 +722,24 @@ Documentation the research of connected determinants. -`psi_non_cas `_ +`psi_non_cas `_ Set of determinants which are not part of the CAS, defined from the application of the CAS bitmask on the determinants. idx_non_cas gives the indice of the determinant in psi_det. -`psi_non_cas_coef `_ +`psi_non_cas_coef `_ Set of determinants which are not part of the CAS, defined from the application of the CAS bitmask on the determinants. idx_non_cas gives the indice of the determinant in psi_det. -`psi_non_cas_coef_sorted_bit `_ +`psi_non_cas_coef_sorted_bit `_ CAS determinants sorted to accelerate the search of a random determinant in the wave function. -`psi_non_cas_sorted_bit `_ +`psi_non_cas_sorted_bit `_ CAS determinants sorted to accelerate the search of a random determinant in the wave function. diff --git a/src/Ezfio_files/README.rst b/src/Ezfio_files/README.rst index 2b3fd735..b0570428 100644 --- a/src/Ezfio_files/README.rst +++ b/src/Ezfio_files/README.rst @@ -78,35 +78,43 @@ Documentation Output file for Integrals_Monoelec -`output_mo_basis `_ +`output_loc_cele `_ + Output file for loc_cele + + +`output_mo_basis `_ Output file for MO_Basis -`output_moguess `_ +`output_moguess `_ Output file for MOGuess -`output_nuclei `_ +`output_molden `_ + Output file for Molden + + +`output_nuclei `_ Output file for Nuclei -`output_perturbation `_ +`output_perturbation `_ Output file for Perturbation -`output_properties `_ +`output_properties `_ Output file for Properties -`output_pseudo `_ +`output_pseudo `_ Output file for Pseudo -`output_selectors_full `_ +`output_selectors_full `_ Output file for Selectors_full -`output_utils `_ +`output_utils `_ Output file for Utils From adc82bb35ef054fe5de35c99347ad09e052bff38 Mon Sep 17 00:00:00 2001 From: Thomas Applencourt Date: Fri, 3 Jul 2015 12:40:48 +0200 Subject: [PATCH 14/15] Maj the doc for loc_cele --- plugins/loc_cele/README.rst | 9 ++++----- plugins/loc_cele/loc_cele.irp.f | 25 ++++++------------------- 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/plugins/loc_cele/README.rst b/plugins/loc_cele/README.rst index b9a97efe..2db141ee 100644 --- a/plugins/loc_cele/README.rst +++ b/plugins/loc_cele/README.rst @@ -1,7 +1,3 @@ -=============== -loc_cele Module -=============== - Documentation ============= @@ -9,7 +5,10 @@ Documentation .. by the `update_README.py` script. `loc_rasorb `_ - Undocumented + This program performs a localization of the active orbitals + of a CASSCF wavefunction, reading the orbitals from a RASORB + file of molcas. + id1=max number of MO in a given symmetry. Needed Modules ============== diff --git a/plugins/loc_cele/loc_cele.irp.f b/plugins/loc_cele/loc_cele.irp.f index 5b9112ca..7cb1797d 100644 --- a/plugins/loc_cele/loc_cele.irp.f +++ b/plugins/loc_cele/loc_cele.irp.f @@ -2,25 +2,12 @@ implicit none -! - -! This program performs a localization of the active orbitals - -! of a CASSCF wavefunction, reading the orbitals from a RASORB - -! file of molcas. - -! - -! id1=max number of MO in a given symmetry. - -! - - - - - - + BEGIN_DOC + ! This program performs a localization of the active orbitals + ! of a CASSCF wavefunction, reading the orbitals from a RASORB + ! file of molcas. + ! id1=max number of MO in a given symmetry. + END_DOC integer id1 From 85c6ed2d12469d7fff6054897b37467725dfaf40 Mon Sep 17 00:00:00 2001 From: Thomas Applencourt Date: Fri, 3 Jul 2015 13:37:10 +0200 Subject: [PATCH 15/15] Fix doc never remake --- plugins/loc_cele/loc_cele.irp.f | 2 +- scripts/compilation/qp_create_ninja.py | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/plugins/loc_cele/loc_cele.irp.f b/plugins/loc_cele/loc_cele.irp.f index 7cb1797d..30624c1d 100644 --- a/plugins/loc_cele/loc_cele.irp.f +++ b/plugins/loc_cele/loc_cele.irp.f @@ -6,7 +6,7 @@ ! This program performs a localization of the active orbitals ! of a CASSCF wavefunction, reading the orbitals from a RASORB ! file of molcas. - ! id1=max number of MO in a given symmetry. + ! id1=max is the number of MO in a given symmetry. END_DOC integer id1 diff --git a/scripts/compilation/qp_create_ninja.py b/scripts/compilation/qp_create_ninja.py index ad421858..67652890 100755 --- a/scripts/compilation/qp_create_ninja.py +++ b/scripts/compilation/qp_create_ninja.py @@ -520,11 +520,14 @@ def ninja_readme_build(path_module, d_irp, dict_root_path): root_module = dict_root_path[module] tags = join(root_module.abs, "tags") + str_depend = " ".join(d_irp[path_module]["l_depend"]) + tree = join(root_module.abs, "tree_dependency.png") - l_string = ["build {0}: build_readme {1} {2}".format(path_readme, - tags, - tree), + l_string = ["build {0}: build_readme {1} {2} {3}".format(path_readme, + tags, + str_depend, + tree), " module_root = {0}".format(root_module.abs), " module_abs = {0}".format(path_module.abs), " module_rel = {0}".format(path_module.rel), ""]