critical fix in Langevin
authorAdam Sieradzan <adasko@piasek4.chem.univ.gda.pl>
Fri, 15 May 2020 16:15:49 +0000 (18:15 +0200)
committerAdam Sieradzan <adasko@piasek4.chem.univ.gda.pl>
Fri, 15 May 2020 16:15:49 +0000 (18:15 +0200)
source/unres/MD.F90
source/unres/MREMD.F90

index e3aea93..9c0b702 100644 (file)
                       *dsqrt(gamsc(iabs(itype(i,mnum)),mnum))
         enddo
       endif
+
 ! Open the pdb file for snapshotshots
 #ifdef MPI
       if(mdpdb) then
index 3416526..e901e60 100644 (file)
                  econstr_temp_iex
       integer :: k,il,il1,i,j,nharp,ii,ierr,itime_master,irr,iex,&
             i_set_temp,itmp,i_temp,i_mult,i_iset,i_mset,i_dir,i_temp1,&
-            i_mult1,i_iset1,i_mset1,ierror,itime
+            i_mult1,i_iset1,i_mset1,ierror,itime,mnum
       integer,dimension(4,nres/3) :: iharp     !(4,nres/3)(4,maxres/3)
 !deb      imin_itime_old=0
       integer :: nres2 !el
           stdfsc(i,j)=dsqrt(2*Rb*t_bath/d_time)
        enddo 
        enddo
-
+         if (lang.gt.0 .and. .not.surfarea) then
+           do i=nnt,nct-1
+             mnum=(molnum(i))
+             stdforcp(i)=stdfp(mnum)*dsqrt(gamp(mnum))
+           enddo
+           do i=nnt,nct
+            mnum=molnum(i)
+             if (itype(i,mnum).ne.ntyp1) stdforcsc(i)=stdfsc(iabs(itype(i,mnum)),mnum)&
+                        *dsqrt(gamsc(iabs(itype(i,mnum)),mnum))
+           enddo
+         endif
 !      print *,'irep',me,t_bath
        if (.not.rest) then  
         if (me.eq.king .or. .not. out1file) &
           stdfsc(i,j)=dsqrt(2*Rb*t_bath/d_time)
        enddo 
        enddo
+         if (lang.gt.0 .and. .not.surfarea) then
+           do i=nnt,nct-1
+             mnum=(molnum(i))
+             stdforcp(i)=stdfp(mnum)*dsqrt(gamp(mnum))
+           enddo
+           do i=nnt,nct
+            mnum=molnum(i)
+             if (itype(i,mnum).ne.ntyp1) stdforcsc(i)=stdfsc(iabs(itype(i,mnum)),mnum)&
+                        *dsqrt(gamsc(iabs(itype(i,mnum)),mnum))
+           enddo
+         endif
        call rescale_weights(t_bath)
       endif
 
            stdfsc(i,j)=dsqrt(2*Rb*t_bath/d_time)
          enddo 
          enddo
+!c Compute the standard deviations of stochastic forces for Langevin dynamics
+!c if the friction coefficients do not depend on surface area
+         if (lang.gt.0 .and. .not.surfarea) then
+           do i=nnt,nct-1
+             mnum=(molnum(i))
+             stdforcp(i)=stdfp(mnum)*dsqrt(gamp(mnum))
+           enddo
+           do i=nnt,nct
+            mnum=molnum(i)
+             if (itype(i,mnum).ne.ntyp1) stdforcsc(i)=stdfsc(iabs(itype(i,mnum)),mnum)&
+                        *dsqrt(gamsc(iabs(itype(i,mnum)),mnum))
+           enddo
+         endif
 
 !de         write(iout,*) 'REMD after',me,t_bath
            time08=MPI_WTIME()