|
|
ÎÒÈÏΪ¿ÉÄÜÊǰ´ÕÕÈÎÒâÒ»¸öatomÉÏforceµÄnorm¿¼Âǵ쬣¨±ÈÈç˵µÚi¸öÔ×Ó£©Ò²¾ÍÊÇ˵|f_i|=sqrt(gx_i^2+gy_i^2+gz+i^2)£¬ÊÖ²áÉÏû˵Õâ¼þÊ£¬ÎÒµÄÒÀ¾ÝÊÇmain.FÀïÃæ£º
¡£¡£¡£¡£¡££¨Ê¡ÂÔ£©
!-----forces on ions
REAL(q) ,ALLOCATABLE:: EWIFOR(:, , TIFOR(:, !TIFORÓ¦¸ÃÊÇÿ¸öÔ×ÓµÄÁ¦£¬3xNµÄ¾ØÕó¡£
¡£¡£¡£¡£¡££¨Ê¡ÂÔ£©
!-----------------------------------------------------------------------
! set DYN%D2C to forces in cartesian coordinates multiplied by FACT
! FACT is determined from timestep in a way, that a stable timestep
! gives a good trial step
!-----------------------------------------------------------------------
FACT=0
IF (DYN%ISIF<5) FACT=10*DYN%POTIM*EVTOJ/AMTOKG *1E-10_q
LSTOP2=.TRUE.
NI=1
DO NT=1,T_INFO%NTYP
DO NI=NI,T_INFO%NITYP(NT)+NI-1
¡£¡£¡£¡£¡££¨Ê¡ÂÔ£©
IF (SQRT(TIFOR(1,NI)**2+TIFOR(2,NI)**2+TIFOR(3,NI)**2) & !ÿ¸öÔ×ÓµÄ|f|×÷ΪÅжϣ¬Ö»ÒªÓÐÈÎÒâÔ×ÓµÄ|f|>|EDIFFG|£¬¾ÍÓÐLSTOP2=.FALSE
& >ABS(DYN%EDIFFG)) LSTOP2=.FALSE.
ENDDO
ENDDO
¡£¡£¡£¡£¡££¨Ê¡ÂÔ£©
IF (DYN%EDIFFG<0) INFO%LSTOP=LSTOP2 !EDIFFF<0µÄʱºòÒÔÁ¦ÊÕÁ²Îª±ê×¼£¬´ËʱÓÉÂß¼±äÁ¿LSTOP2¸³Öµ¸øINFO%LSTOP
¡£¡£¡£¡£¡££¨Ê¡ÂÔ£©
! use forces as stopping criterion if EDIFFG<0
IF (INFO%LSTOP) THEN !µ±INFO%LSTOPΪtrueµÄʱºò£¬´òÓ¡¡°reached required accuracy - stopping¡±
¡£¡£¡£¡££¨Ê¡ÂÔ£©
WRITE(TIU6,*) 'reached required accuracy - stopping ', &
'structural energy minimisation'
ENDIF
ÐéÏßÏÂÃæÓ¦¸Ã¶ÔÓ¦µÄÊÇÕû¸öϵͳµÄtotal force¡£
¶ÔÓÚ·Ö²½ÓÅ»¯£¬ÕâÖÖÇé¿ö·ÖÁ½ÖÖÌÖÂÛ£º
1¡¢Ïàͬ¾«¶È·Ö²½ÓÅ»¯¡£ÔÔòÉÏ£¬ÕâÑùµÄÇéÐκÍÒ»´Î×öµ½µ×°ÑNSWÉèÖôóµãÃ»Ê²Ã´Çø±ð£¬Èç¹ûÔÚ¿¼ÂǽøÈë³ÌÐò»¹Òª³ÌÐò³õʼ»¯£¬¶Áȡһ´ó¶Ñ¶«Î÷Æäʵ²»¼ûµÃºÏËã¡£
2¡¢ÏȾ«¶ÈµÍ¡¢ºó¾«¶È¸ß¡£(1)ʵ¼ÊÓпÉÄܾ«¶ÈµÍµÄʱºòËã³öÀ´µÄ½á¹¹²»Ò»¶¨¿É¿¿£¬ÉõÖÁÓпÉÄܸüÆ«Àë¸ß¾«¶ÈÏÂµÄÆ½ºâ½á¹¹£¬´Ëʱ·´¶ø±È½ÏÂý£»(2)µÍ¾«¶ÈÏÂÓпÉÄÜ»ý·ÖÎó²î¡¢SCFµÄÊÕÁ²²»×ãµÈ¶¼»á»áµ¼ÖÂÊÆÄÜÃæÃ«Ô꣬¿ÉÄܵ¼Ö¹¹Ð͵ãÔÚÖÜΧ¼¸¸öÐé¼ÙµÄ¼«Ð¡µãÀ´»ØÌø¶ø½á¹¹ÓÅ»¯ÄÑÒÔÊÕÁ²¡£
ËùÒÔÎÒÈÏΪ´ó²¿·ÖÇé¿öÕâÑùµÄ×ö·¨Ã»ÓÐÌØ±ð´óµÄ¼ÛÖµ¡£ |
|