diff --git a/dipole.f90 b/dipole.f90 index 12e85f7..f3cee8f 100644 --- a/dipole.f90 +++ b/dipole.f90 @@ -1016,7 +1016,6 @@ subroutine dm_intensity_symmvec(Jval) write(my_fmt1,'(a,i0,a,i0,a,i0,a,i0,a)') "(/t4,a1,t6,a8,t17,a1,t19,a5,t25,a3,t35,a2,t42,a2,t50,a2,t62,a5,t85,",nclasses,& "(4x),1x,",nmodes,"(4x),3x,a2,14x,",nclasses,"(4x),1x,",nmodes,& "(4x),8x,a7,10x,a5,12x,a7,12x,a2,8x,a2,8x,a1)" - ! !write(my_fmt1,'(a)') "(/t4,a1,t6,a8,t17,a1,t19,a5)" !write(out,"(/t4a1,t6a8,t17a1,t19a5,t25a3,t35a1,t42a2,t50a1,t62a5,t85,(4x),1x,(4x),3x,a2,14x,(4x),1x,(4x),8x,a7,10x,a5,12x,a7,12x,a1,8x,a1,8x,a1)") 'J','Gamma <-','J','Gamma','Typ','Ef','<-','Ei','nu_if','<-','S(f<-i)','A(if)','I(f<-i)','Ni','Nf','N' diff --git a/fields.f90 b/fields.f90 index 004fb6a..2f4c0e3 100644 --- a/fields.f90 +++ b/fields.f90 @@ -1955,7 +1955,6 @@ subroutine FLReadInput(NPTorder,Npolyads,Natoms,Nmodes,Jrot) (job%bset(i)%periodic.eqv.job%bset(i-1)%periodic) .and.job%bset(i)%iperiod ==job%bset(i-1)%iperiod ) then ! job%bset(i)%species = ispecies - ! else ispecies = ispecies + 1 job%bset(i)%species = ispecies @@ -4038,7 +4037,7 @@ subroutine FLReadInput(NPTorder,Npolyads,Natoms,Nmodes,Jrot) ! enddo ! - call readi(i_t); extF%ifit(iterm,imu) = i_t + call readf(f_t); extF%ifit(iterm,imu) = int(f_t) call readf(f_t); extF%coef(iterm,imu) = f_t ! write(my_fmt,'(a,i0,a)') "(a,",Ncoords,"i1)" @@ -4376,7 +4375,7 @@ subroutine FLsetMolecule ! trove%bonds(1:Nbonds,:) = bonds(1:Nbonds,:) trove%angles(1:Nangles,:) = angles(1:Nangles,:) - trove%dihedrals(:,:) = dihedrals(:,:) + trove%dihedrals(0:Ndihedrals,:) = dihedrals(0:Ndihedrals,:) trove%dihedtype(:) = dihedtype(:) ! ! We define the coordinates @@ -15494,7 +15493,7 @@ subroutine fingerprintWrite write(chkptIO,"(i8,' <- Jrot, rotational angular momentum')") bset%dscr(0)%range(1) ! do imode = 0,trove%Nmodes - write(chkptIO,"(6x,i4,1x,3(a10,1x),i5,3x,a2,3x,i2,5x,i2,1x,2i4,2x,f6.1,2x,i9,1x,2f9.3,1x,i2,1x,i2,1x,a10,i9,i3,i3,i3)") & + write(chkptIO,"(6x,i4,1x,3(a10,1x),i5,3x,a2,3x,i2,5x,i2,1x,2i4,2x,f6.1,2x,i9,1x,2f9.3,1x,l,1x,i2,1x,a10,i9,l,l,l)") & imode, bset%dscr(imode) enddo ! diff --git a/lapack.f90 b/lapack.f90 index 1b58041..b52b0e0 100644 --- a/lapack.f90 +++ b/lapack.f90 @@ -1790,8 +1790,8 @@ subroutine dseupd_p_arpack(n,bterm,nroots,factor,maxitr_,tol,h,e) ! blacs_or_mpi = 'MPI' ! -#endif ! +#endif ! diff --git a/makefile b/makefile index fdd909e..3327ce1 100644 --- a/makefile +++ b/makefile @@ -11,36 +11,37 @@ checkin: pot_user = pot_ch4 PLAT = _2205_i17 -###FOR = ifort -FOR = ifort -FFLAGS = -ip -openmp -O3 -static +FOR = ifort +FFLAGS = -qopenmp -xHost -O3 -ip -g3 +#FOR = gfortran +#FFLAGS = -fopenmp -march=native -O3 -fcray-pointer -g3 #ARPACK = ~/libraries/ARPACK/libarpack_omp_64.a -#LAPACK = -mkl -LAPACK = -mkl=parallel +LAPACK = -mkl +#LAPACK = -L${MKLROOT}/lib/intel64 -Wl,--no-as-needed -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl LIB = $(LAPACK) %.o : %.f90 - $(FOR) -c $(FFLAGS) $< + $(FOR) -cpp -c $(FFLAGS) $< ############################################################################### -trove.x: trove.o accuracy.o perturbation.o fields.o symmetry.o molecules.o me_numer.o me_str.o me_bnd.o me_rot.o \ +trove.x: trove.o accuracy.o perturbation.o fields.o symmetry.o molecules.o me_numer.o me_str.o me_bnd.o me_rot.o \ lapack.o plasma.o moltype.o refinement.o dipole.o refinement.o tran.o diag.o timer.o input.o \ - mol_xy.o mol_xy2.o mol_xy3.o mol_xy4.o mol_zxy2.o mol_zxy3.o mol_ch3oh.o mol_abcd.o mol_c2h4.o mol_c2h6.o \ - pot_xy2.o pot_xy3.o pot_xy4.o pot_zxy2.o pot_zxy3.o pot_ch3oh.o pot_abcd.o pot_c2h4.o pot_c2h6.o $(pot_user).o + mol_xy.o mol_xy2.o mol_xy3.o mol_xy4.o mol_zxy2.o mol_zxy3.o mol_ch3oh.o mol_abcd.o mol_c2h4.o mol_c2h6.o mol_c3h6.o \ + pot_xy2.o pot_xy3.o pot_xy4.o pot_zxy2.o pot_zxy3.o pot_ch3oh.o pot_abcd.o pot_c2h4.o pot_c2h6.o pot_c3h6.o $(pot_user).o $(FOR) $(FFLAGS) -o j-trove$(PLAT).x $^ $(LIB) trove.o: accuracy.o fields.o perturbation.o symmetry.o timer.o moltype.o dipole.o refinement.o tran.o perturbation.o: accuracy.o molecules.o lapack.o fields.o timer.o symmetry.o diag.o plasma.o fields.o: accuracy.o molecules.o lapack.o me_str.o timer.o me_numer.o input.o me_rot.o moltype.o symmetry.o me_bnd.o symmetry.o: accuracy.o -molecules.o: accuracy.o moltype.o mol_xy.o mol_xy2.o mol_xy3.o mol_xy4.o mol_zxy2.o mol_zxy3.o mol_ch3oh.o mol_abcd.o mol_c2h4.o mol_c2h6.o \ - lapack.o pot_xy2.o pot_xy3.o mol_xy4.o pot_zxy2.o pot_zxy3.o pot_ch3oh.o pot_abcd.o pot_c2h4.o pot_c2h6.o \ +molecules.o: accuracy.o moltype.o mol_xy.o mol_xy2.o mol_xy3.o mol_xy4.o mol_zxy2.o mol_zxy3.o mol_ch3oh.o mol_abcd.o mol_c2h4.o mol_c2h6.o mol_c3h6.o \ + lapack.o pot_xy2.o pot_xy3.o mol_xy4.o pot_zxy2.o pot_zxy3.o pot_ch3oh.o pot_abcd.o pot_c2h4.o pot_c2h6.o pot_c3h6.o \ symmetry.o $(pot_user).o me_numer.o: accuracy.o molecules.o timer.o @@ -66,6 +67,7 @@ mol_zxy3.o: accuracy.o moltype.o mol_ch3oh.o: accuracy.o moltype.o pot_ch3oh.o mol_c2h4.o: accuracy.o moltype.o mol_c2h6.o: accuracy.o moltype.o +mol_c3h6.o: accuracy.o moltype.o mol_abcd.o: accuracy.o moltype.o pot_abcd.o pot_ch4.o: accuracy.o moltype.o @@ -74,10 +76,10 @@ pot_xy3.o: accuracy.o moltype.o pot_xy4.o: accuracy.o moltype.o symmetry.o pot_zxy2.o: accuracy.o moltype.o pot_zxy3.o: accuracy.o moltype.o -pot_c2h6.o: accuracy.o moltype.o +pot_c2h6.o: accuracy.o moltype.o mol_c2h6.o pot_ch3oh.o: accuracy.o moltype.o pot_c2h4.o: accuracy.o moltype.o -pot_c2h6.o: accuracy.o moltype.o +pot_c3h6.o: accuracy.o moltype.o pot_abcd.o: accuracy.o moltype.o lapack.o clean: diff --git a/perturbation.f90 b/perturbation.f90 index 9c22385..586aa05 100644 --- a/perturbation.f90 +++ b/perturbation.f90 @@ -9813,7 +9813,7 @@ subroutine diagonalization_contract(jrot,gamma,dimen_s,mat,zpe,rlevel,total_roo ! spur = spur*exp(-beta*mat0) ! - write(out, '(/1x, a, 1x, es16.8)'), 'qpart = ', spur + write(out, '(/1x, a, 1x, es16.8)') 'qpart = ', spur ! !mat = mat / (-planck * vellgt) * (boltz * intensity%temperature) !do ielem = 1, dimen_s @@ -9826,7 +9826,7 @@ subroutine diagonalization_contract(jrot,gamma,dimen_s,mat,zpe,rlevel,total_roo ! if (gamma==sym%Nrepresen) then ! - write(out, '(/1x, a, 1x, es16.8)'), 'partition function value is', job%partfunc%value + write(out, '(/1x, a, 1x, es16.8)') 'partition function value is', job%partfunc%value ! endif ! @@ -32468,7 +32468,7 @@ subroutine partfunc_matexp_taylor(dimen,m,norm_thresh,max_deg,spur_thresh,max_or ! ! perform squaring ! - write(out, '(/1x, a/1x, a, 1x, a)'), 'perform squaring', 'deg of 2', 'norm' + write(out, '(/1x, a/1x, a, 1x, a)') 'perform squaring', 'deg of 2', 'norm' ! if (job%verbose>=2) call TimerStart('Partition function my mat-exp') ! @@ -32483,13 +32483,13 @@ subroutine partfunc_matexp_taylor(dimen,m,norm_thresh,max_deg,spur_thresh,max_or ! do if (deg > max_deg) then - write(out, '(/1x, a, 1x, i3, 1x, a)'), 'max degree of 2', max_deg, 'is reached' + write(out, '(/1x, a, 1x, i3, 1x, a)') 'max degree of 2', max_deg, 'is reached' exit end if ! norm = norm / real(2**deg, kind = rk) ! - write(out, '(1x, i3, 1x, es16.8)'), deg, norm + write(out, '(1x, i3, 1x, es16.8)') deg, norm ! if (abs(norm) <= norm_thresh) exit deg = deg + 1 @@ -32547,14 +32547,14 @@ subroutine partfunc_matexp_taylor(dimen,m,norm_thresh,max_deg,spur_thresh,max_or spur = real(dimen, kind = rk) spur0 = spur ! - write(out, '(/1x, a/1x, a, 13x, a)'), 'compute exponential', 'ord', 'spur' + write(out, '(/1x, a/1x, a, 13x, a)') 'compute exponential', 'ord', 'spur' ! ! loop over Taylor series ! do iorder = iorder + 1 if (iorder > max_order) then - write(out, '(/1x, a, 1x, i3, 1x, a)'), 'max exp degree', max_order, 'is reached' + write(out, '(/1x, a, 1x, i3, 1x, a)') 'max exp degree', max_order, 'is reached' exit end if ! @@ -32791,7 +32791,7 @@ subroutine partfunc_matexp_taylor(dimen,m,norm_thresh,max_deg,spur_thresh,max_or end do !$omp end parallel do ! - write(out, '(1x, i3, 1x, es16.8)'), iorder, spur + write(out, '(1x, i3, 1x, es16.8)') iorder, spur ! if (abs(spur - spur0) <= spur_thresh) exit spur0 = spur @@ -37888,8 +37888,9 @@ subroutine calc_gvib_contr_matrix(isymcoeff,hvib) ! icontr = PT%icase2icontr(isymcoeff,ideg) ! - !$omp parallel do private(jcontr,energy_j,jsymcoeff,matelem,iclass,jclass,imode,imode_,jmode,jmode_,icomb,iterm,kclass,nu_i,nu_j,& - !$omp& ilambda,imu,iterm_uniq,me_class0,nterms,n0,iclass_n,prod0,matelem0,n) shared(hvib) schedule(dynamic) + !$omp parallel do private(jcontr,energy_j,jsymcoeff,matelem,iclass,jclass,imode,imode_,jmode,jmode_,icomb,iterm,kclass, & + !$omp& nu_i,nu_j,ilambda,imu,iterm_uniq,me_class0,nterms,n0,iclass_n,prod0,matelem0,n) & + !$omp& shared(hvib) schedule(dynamic) do jcontr=1,icontr ! jsymcoeff = PT%icontr2icase(jcontr,1) diff --git a/refinement.f90 b/refinement.f90 index dad12ce..029f0b7 100644 --- a/refinement.f90 +++ b/refinement.f90 @@ -1244,7 +1244,7 @@ subroutine sf_fitting(Jval) ! v = pot_values(i)-eps(i+en_npts) ! - write (abinitunit,my_fmt_pot2),& + write (abinitunit,my_fmt_pot2) & local(:,i), & pot_values(i),v, & eps(i+en_npts),wtall(i+en_npts) diff --git a/tran.f90 b/tran.f90 index a14589a..8624f0e 100644 --- a/tran.f90 +++ b/tran.f90 @@ -805,7 +805,8 @@ subroutine read_eigenval(njval, jval, error) !write(out,"(i12,1x,f12.6,1x,i6,1x,i7,2x,a3,2x,i3,1x,(1x,a3),1x,2i4,1x,a3,2x,f5.2,a3,1x,i9,1x,i3)") & ! write(my_fmt,'(a,i0,a,i0,a,i0,a)') & - "(i12,1x,f12.6,1x,i6,1x,i7,2x,a3,2x,",nmodes,"i3,1x",nclasses,"(1x,a3),2i4,1x,a3,2x,f5.2,a3,1x,i9,1x",nmodes,"i3)" + "(i12,1x,f12.6,1x,i6,1x,i7,2x,a3,2x,",nmodes,"i3,1x",nclasses,& + "(1x,a3),2i4,1x,a3,2x,f5.2,a3,1x,i9,1x",nmodes,"i3)" ! write(out,my_fmt) & ID_,energy-intensity%ZPE,int(intensity%gns(gamma),4)*(2*J_+1),J_,sym%label(gamma),& diff --git a/trove.f90 b/trove.f90 index 8dfb59e..e6b6149 100644 --- a/trove.f90 +++ b/trove.f90 @@ -16,6 +16,7 @@ module tp_module implicit none + public ptmain ! ! Defining the calculations !