⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unite.f

📁 分子动力学模拟程序
💻 F
字号:
*=============== IUNITS ===============================================*      SUBROUTINE IUNITS*      include "mdee.h"*      DIMENSION  DM(3),QM(3,3),OM(3,3,3),HM(3,3,3,3)     X          ,DI(3),QI(3,3),OI(3,3,3),HI(3,3,3,3)      data ODIN/1.d0/**Calculate box dimensions etc:*      FACTM       = AVSNO*1000.0      TOTMAS      = TOTMAS/FACTM      AVOFNR      = AVSNO/FNOP      IF(BOXL*BOYL*BOZL.EQ.0.D0) THEN        IF(RHO.NE.0.D0) THEN          VOLM        = AVOFNR*(TOTMAS/(RHO*1000.0))          VOL      = VOLM*FNOP*1.d30/AVSNO          BOXL       = VOL**(1.0/3.0)          BOYL=BOXL          BOZL=BOXL          write(*,*)'Setting cubic box of L=',BOXL        ELSE*Vacuum simulation - arbitrary box size:          BOXL        = 1000.D0          PRINT "(/,'*** VACUUM SIMULATION ***',/)"          BOYL=BOXL          BOZL=BOXL        ENDIF      END IF      call RECLEN(ODIN,ODIN,ODIN)       VOLM        = 1.d-30*VOL*AVOFNR 	VOLF	= VOL  	BOXF	= 0.5*CL*      *Generate internal units:*            UNITL       = 1.d-10      UNITM       = TOTMAS      UNITT       = DT      UNITE       = UNITM*(UNITL/UNITT)**2      UNITP       = UNITE*1.e-5/UNITL**3**Define dimensionless quantities and conversion factors*      TSTEP       = UNITT/SQRT((UNITM/UNITE)*UNITL**2)      TSTEB       = TSTEP*FTIMES      ENERF       = AVSNO*UNITE      TEMPF       = 2.0/(3.0*AVSNO*BOLTZ)      BETA	    = UNITE/(TRTEMP*BOLTZ)      COULF       = (ELECHG/EPS0)*(ELECHG/UNITE)/(4.D0*PI*UNITL)      ELFAC	    = COULF*BETA      PERMOL      = ENERF*1.D-3/FNOP       CONVET      = 3.*ENERF*TEMPF/FNST      SHORT2	    = SHORT**2      SHORTA	    = SHORT-1.d-11/UNITL   !  -0.1A*	if(IPRINT.ge.7)then        PRINT "(/'*** UNIT MASS         ',D12.6,' kg      ' )",UNITM        PRINT "( '*** UNIT TIME         ',D12.6,' S       ' )",UNITT        PRINT "( '*** UNIT ENERGY       ',D12.6,' J       ' )",UNITE        PRINT "( '*** UNIT LENGTH       ',D12.6,' m       ' )",UNITL        PRINT"('*** UNIT PRESSURE     ',D12.6,' 10**5 N/m**2  '/)",UNITP        PRINT "('*** LONG  TIME STEP   ',F12.6,' .I.U.   ' )",TSTEP        PRINT "( '*** SHORT TIME STEP   ',F12.6,' .I.U.   ' )",TSTEB        PRINT "( '*** ENERGY  FACTOR    ',D12.6,' J/mol   ' )",ENERF        PRINT "( '*** TEMP    FACTOR    ',D12.6,' K/J     ' )",TEMPF        PRINT "( '*** COULOMB FACTOR    ',D12.6,'         '/)",COULF        PRINT "( '*** BETA    ',D12.6,2x,D12.6)",BETA*1.d3/ENERF	end if**dimensionless mass parameters:*      DO IS      =  1,NSITES      MASSD (IS)  = MASS (IS)/FACTM/UNITM      END DO! OF I**Specific data for molecule types:*      IADDR (1)      = 0      ISADR (1)      = 0      ISADDR(1)      = 0      DO ITYP        = 1,NTYPES      IADDR (ITYP+1) = IADDR (ITYP)+NSPEC(ITYP)      ISADR (ITYP+1) = ISADR (ITYP)+NSITS(ITYP)      ISADDR(ITYP+1) = ISADDR(ITYP)+NSITS(ITYP)*NSPEC(ITYP)      END DO! OF ITYP*     	if(IPRINT.ge.9)then      PRINT "(25X,'*** ADDRESSES: ***'/)"      DO ITYP        = 1,NTYPES+1      PRINT "(10X,4(1X,I8))",ITYP,ISADR(ITYP),IADDR(ITYP),ISADDR(ITYP)      END DO! OF ITYP	end if**** 	call RECINT      N              = 0      MT             = 0      DO ITYP        = 1,NTYPES      QS             = 0.D0      if(IPRINT.ge.10)     +PRINT "(/'*** POTENTIAL MODEL FOR :',A6)",NAME(ITYP)      NSB            =  ISADR (ITYP)+1      NSE            =  ISADR (ITYP+1)      IF(IPRINT.GT.10) PRINT "(/,' SOME SITE DATA: ')"      DO I           = 1,NSPEC(ITYP)      DO IS          = NSB,NSE      N              = N+1      MASSDI(N)      = 1.0/MASSD(IS)      Q     (N)      =    CHARGE(IS)      NAM   (N)      = NM(IS)      QS             = QS+DABS(Q(N))      IF(IPRINT.GT.10)      XPRINT "(I4,3X,I4,3X,A4,6X,'Q: ',F6.3,5X,'MI:  ',F12.6)",     XN,IS,NAM(N),Q(N),MASSDI(N)      END DO! OF I      END DO! OF IS*      QSUM(ITYP)     = QS*      IF(IPRINT.GT.9) THEN      PRINT *      DO IS          = NSB,NSE      PRINT "('# SITE:',I3,':  ',A4     X,' EPS:',F7.3,'  SIG:',F7.3,'  CHARGE:',F7.3,'  MASS:',F7.3)"     X,IS,NM(IS),EPSIL(IS),SIGMA(IS),CHARGE(IS),MASS(IS)      END DO! OF IS      END IF!(IPR...*      NNN            = NS      CALL MPOLES(R,CHARGE,DM,QM,OM,HM,NSB,NSE,NNN)*      DO I		= 1,3      DI(I)		= DM(I)*2.5418      DO J		= 1,3      QI(I,J)		= QM(I,J)*1.345      DO K		= 1,3      OI(I,J,K)		= OM(I,J,K)*0.7118      DO L		= 1,3      HI(I,J,K,L)	= HM(I,J,K,L)*0.3767      END DO! OF L      END DO! OF K      END DO! OF J      END DO! OF I*	      DII		= DSQRT(DI(1)**2+DI(2)**2+DI(3)**2)      DMM		= DSQRT(DM(1)**2+DM(2)**2+DM(3)**2)*      IF(DABS(DMM).GT.0.0001D0) THEN      if(IPRINT.ge.9)WRITE(6,160) DMM,DII  160 FORMAT(/1X,'*** DIPOLE MOMENT    (MAGNITUDE)   ',F10.5,     +' A.U.  -> ',F10.5,'  10**-18 esu '/)      END IF*      DO JTYP        = ITYP,NTYPES      MT             = MT+1      MDX(ITYP,JTYP) = MT      MDX(JTYP,ITYP) = MT      POTES(MT)      = 0.D0      POTLJ(MT)      = 0.D0        if(IPRINT.ge.7)write(*,*)' mol.int. no ',MT,' types',ITYP,JTYP      END DO! OF JTYP      END DO! OF ITYP      MOLINT         = MT*      if(IPRINT.ge.9)     +PRINT "(/' *** ',I2,' MOLECULAR INTERACTIONS ***'/)",MT*      DO ITYP         = 1,NTYPES      DO JTYP         = ITYP,NTYPES      MT              = MDX(ITYP,JTYP)      if(IPRINT.ge.9)     +PRINT "(' NR: ',I2,5X,A6,'  <-->  ',A6)",MT,NAME(ITYP),NAME(JTYP)      END DO! OF JTYP      END DO! OF ITYP**	CONVERSION TO INTERNAL UNITS:**	Bond stretching **Harmonic potentials*      FACTOR     = 1.D3/AVSNO/UNITE      EFACT      = FACTOR      EFACB      = EFACT      DO I       = 1,NB        FB(I)      = FB(I)*EFACB      END DO! OF I** Morse potentials:*      DO I       = 1,NB        DB(I)      = DB(I)*FACTOR      END DO! OF I*                  *	Angle bending:*      DO I         = 1,NA        FA(I)        = FA(I)*EFACT        RA(I)        = RA(I)/TODGR      END DO! OF I**	Torsional angles*      DO  I        = 1,NT        FT (I)       = FT (I)*EFACT        RT (I)       = RT (I)/TODGR        FT1(I)       = FT1(I)*EFACT        FT2(I)       = FT2(I)*EFACT        FT3(I)       = FT3(I)*EFACT      END DO! OF I***  1.7.5 Lennard-Jones parameters:	do IS=1,NS	  EPSIL(IS)=2.d0*dsqrt(EPSIL(IS)*EFACT)	  SIGMA(IS)=0.5d0*SIGMA(IS)	end do	do IS=1,NNAD	  EPAD(IS)=2.d0*dsqrt(EPAD(IS)*EFACT)	  SIGAD(IS)=0.5d0*SIGAD(IS)	end do        do IS=1,NS          do JS=1,NS            EPS(IS,JS)=EPSIL(IS)*EPSIL(JS)            SIG(IS,JS)=SIGMA(IS)+SIGMA(JS)          end do        end do      RETURN      END**=============== RECLEN ===============================================*      SUBROUTINE RECLEN(SCX,SCY,SCZ)*      include "mdee.h"*      BOXL=BOXL*SCX      BOYL=BOYL*SCY      BOZL=BOZL*SCZ      HBOXL=0.5*BOXL      HBOYL=0.5*BOYL      HBOZL=0.5*BOZL      RF          = HBOXL      RCUTT=RCUT      IF(RCUT.LE.0.D0)RCUTT = HBOXL      RSSQ        = RCUTT**2      BOXLI       =   1.0/BOXL      BOYLI       =   1.0/BOYL      BOZLI       =   1.0/BOZL      VOL	= BOXL*BOYL*BOZL      ALPHAD	= ALPHA/RCUTT      RHO	= TOTMAS*1.d27/VOL      return      end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -