diff -Naur lammps-11Jan08/doc/Eqs/stress_tensor.jpg lammps-12Jan08/doc/Eqs/stress_tensor.jpg --- lammps-11Jan08/doc/Eqs/stress_tensor.jpg 2007-11-30 16:29:01.000000000 -0700 +++ lammps-12Jan08/doc/Eqs/stress_tensor.jpg 2008-01-09 14:57:06.000000000 -0700 @@ -1,63 +1,43 @@ -JFIFHHC  !"$"$C~"F  -!1"AQ2aq#5t$3BRr6bu%47Cvc23qr ?JRJRJRJRJRJ{umei-6)i%"(I=|>[kFN#e@T$oD~"vVs z<4+SN%$)T+)JP)JP)JP)JP)JP)JP)JPW}Ibb?]T -R -R -R -wO<@xy:G~gIU3&ΫOł_bn23{QYJ5Ti:I:=.T(wɝ./kܸ`JPFqLg!k#hh#-ďx:}aKZWD*;*#;*U+> 7E|3l&Y" -M[:a⼂%x.bM}m uB:4]*x.۱PYrXIͱK$pX5Ēh:^*vueE,GN(((((((("_ԭEg?io᧩Z w)-%%)JYJWh;:iJPEqL\zh̽돒Mt%;$f&fx{ _FWȊcr."v[Y%,Ia*]d$Ki{lnӱu{r!7؃h5ٻK{K`a,M=Vܬv"X'S3F#vHZoolLJJHݕglW$?,1 n;--c*/n<\`eŎ@6`Yf{޿ - Ж%t\-@uxt߈܀B\M-fb-;} - W\u6:׼ўˡyײӯ{%c?*ؠr.?!gqxd^Kf]`1ʸVl|}r9ܐ(+wZ|N=>6RߵZF@}-t'`~IFQkg3)pYiUM4@ydOȪI 4ێ}s~L$GF+·IK۰*>1ӿMbK"f#E}$vplD@kzGGX }Jf ^(Nv."!_%$$h$h&W͔d9.vїP'V%NOK/ʲv )ߴ7u.bܺO6?H!WBXW}M)W$6AR7c8en=O&)h~?ucujjLlomfeW%G ǿqP^l7\[m-V<֒,Lz[}ޫA}"/2IsEagDRİ#®\>gqO}a=M!!:Tl(=< ;`nR S# lrm#!%B`/~H -`5qo&'e{B3#R`Y:h 7!{}ܭ6c";I &Z9P@d;64MS2|ܑ\EPYh\\S x4 oe&G\ŕ׷rV(i_]h.5̽qeElgVtB4ҀX#}ÚeX\~X+MF !D}+2˾)wum2-GaڒM$o$}||k_#A dsv1\}$HaHo؍wU/KFfY3AjҘIm:?]|[NI%.a! sHD( ŏQ;MTv46]mG*VgP<'Ze1Ŕ'%}jbw*F~Q'}qⱓZ md6{=R:Pf1>,q9V^=.:9G$)ЏqJom-]gaQb[?hY"&q=B.mԎ>GVyQs{i6  *ahGV ;Ƅt .Ke#Tmm,%km϶-⸹UFWj7_tvCkmI 8iQ@|T=u Ck[w oo֍+cK){sIPt:To`e1).m9+QxcefG#t?VUah9Wr(-ռA~$9pU$k[Q|Caq(Mv5No:q\+ ;6qZE0.H FZqi$rGen'^7ھ=@eso{ZL ꤏ ^dEc#qquxK{edfv"X-|1>G_-[j;NaЌTo:4,9>5a: 83{SNiL7h]:|NE׏6O\+tf -蘋^stWNUƤm2\K !ECNGS!5oE9Mܓ٘df=ͣ|x*bdQ,yʯ-b π@ZVM|2ƾ~*#KYwk&I0;V_:!p@#DTb[S03+}u7rTxb`ve쭣3E/c'dcNeI:zry,y "Zc/|~LIxJv /̯ms -]!qEf^0,S IQxy-hh# moG_Ec01!k&'  eo͍V,e|'7^fxmYHp#\S1sdo8𻏗 ͜ *š!C O蘼-/.D)qkFBPȿp#GOq. qx8"Cz$}MqL-LlNTlY$Rp7WyDB5~2+Hlw^C-؋L_Y=,6?l}6( y)e6zuxn3p >>4CcKLކ;+K9'Tߵ)-/nU=T.^{Qqd%ʺB$_,HN@-V[+(0D)U+g[븚fRi&啴;촌{wT/H28fŵ*!m%P[#-#c3p*aoY }I6ZfkzMNjgqőrח1#-q'RЌkUvYꗤ3dAbK*ftFh;FÙÑmY^@쑠%t L2h@:{kg֎IJ$Q - -.3IeXn'\Z8]>7FI x.KiI#`j0X.3p^ommXөX`pQ_Z=QnCs8yw2q+DǢV^"I & $F4xw443ܺ*Ԯ#K*u$J[.?oCAcw胤mk_`z6[kKYf X*=|T+IO qm4si$lX}AUeV$&##!&Cu+|Нlkޚfoy'y{hSi3\O=ǹ(/gR>!،-#6O?vvI3~j?z\=bȼ7@OZ\8!׍|lVq{֗Gu}]Dc`Os*eh(((((+wZUwԟ._V*)J)J)JSO.mgs]-g@X]G7.4Lxpy8ķ7X駞_\)Lұvm)rv֟" \l,88͢@z'Q?1M^+z{wmɱYhU-!Ll[Rt\oGsMA7d~]|CJp.sq+[^ {GIPnz?ou:wվǻh+ Y>˒(9Y_g`TO:%w\$,Ҁ$ ҁJRJRJRXi"(z'^OYi@)@{4|rT+k{E)8t n߃ZRJR+9O =JVs z'xҒے_Z|Rkst.^η_e(((((() @>u3NMbluYJ캢9#|T9 ;'k\F29bBXo@ XR@lU|g# |ckɄY^8n uwdh:*/2׸ Y'>II _;)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@Ce3c# ->VIOmJD~.~hoٛ-ͶZ92v]<:mюB'`@d~F3vݲ9X..(#Htu:FbUH u)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J |8)/'K=mmCdY: -Xf`[3$A$oҭIX|,5U%#҂JR+9O =JVs z'xҒے_Z|R(((((( Bf 6IUқ;2[{&-f6؀uvlج.lo'eݺa> -:l@>Hao6>q+V 3nJtlĐ4EuZV }BQ5K42Sඁ8b]u<FλdU9N=Ne:hߏBG9ߓ8o[;ˬD1ӟNB -G>bZ\.^Gs{Yep3L] $^%F] FJ-g}.:VFSTA"n̽qeElgVtB4ҀX#}Únd!z/mcq(-!-#]Jd 1$3Dԍ){cekn{Ҫukζ{ 䖙L|1e=_A]ʑTo{/w: P: gPu| ?J+-VGlpܻՒ#j>QsA}K\675B]:D0 èu<ͯc=sl׎}X$ /ewą~]R@'zx+V%EyPYfT$}tOƃj[[渆 -|Fӄ:FYJO`;WQ6?x8"2z1]!@=ZTMvqxkgw$vW ;Y]0:𚖠R_S"nˎ66G$ K&λCtI{xno. @WLmһ: -Gm۰Q6N?ν H/'RFX:#?P> y߽X׻4NHd'΂JrSqms"X滷^@ -i '\3Yq8s -4FI -QݎzM/,oBVvҴ36f$鑔Ձ{* g1p0;,^՜4RtSH:`A^{9M-,F C :+W}@tuyoX\E`%$Fty= t@}1xۣNyKlYS~@P{<)42$HсVR6#5􌮡)Aت_b ,Tf(ai9:D_.le#b6/Za}nDڧu(B=zT6 b{#Jv63@ql͜sEq9 Kݗ\mmHA;ܖMwz^, -n1csl%Abt#vB >@JUcr[+Y+4XO%M•i]ˣjU#rFlo['@q/I&\Iu%Un9-`^:ՑZ7EZOXؐ U+W cncNfCGT/F{^}ZdieP X:=*iL0V[%!iQnC7R7 !X/vGqo.)P:06 20a6?ΫK/Gj\e(HMGGBM)[W:$q"hǿB҂JR+9O =JVs z'xҒے_Z|R((((((Yr;b)oinpUw3H'mmtme:V`E7㾷jmrVg^KvpX(%LdC#C-2#*:D}@p`fKV{37]3ʪt8)>K+,WYV@z-ۤ3Q0rw6Q4QOԧ15ӳTǤ[p!tƬ?0MNc6^)kwUw4i$zPO`>jqws>Ec0kY?IchȘk rD|K&,!b"4v;xu]`׋E4Oq$yWFt <{arWӘ+qmqLKh2.ɉ_F^?T(!"6' c!+[[Ȫ$ӒGuF)_;'Xd/+NHUQ -:KSl9h; t&Ԑi#y$DZ[123$ڣD2:?JrL3ŋ6t;?L3t -#?^Q#}Xɭn6w2HYTwW; | }RC JWbc{T()ާbE.\L% t.2 9c0Og(3{K6f:RdBfJ -]z9h'imfe+h2TnVcε渜S!VX}[Z4Qr'P} [(* 3͒E#4W@$mq2 !#l~ I7j("v6|7b.7 iZ2JHIu`V901͡]H[d$>D? -|&r5.s$b Iw ,\vQܧrd 6s٘S0 $K A{: =(*qIx|EMrI{s{-[O,;0mQY6v/R(ϴ4pq02mx_$ƯpK~8!gi!oL#t,]ktW5bW^]GLKWnmvSԠcg஢x1s0bvmK۹O}v2gž4fo'YH9iXf]$f!T$~I,KsVl<0)Wl{]m~?7 --p])DvNurD)D{Ƕjw^=dyjki.X lPЙ渋!Oji8 zLG^O脒197cnfWB7mԠ#!yl;Y%BKxs*%3Jݚ"#]t]:R[˞uN<}3fDb'~ʻ\)A[Зb0XS{;=#sVkkG5%uhRF9% !idN7@U >!,J6Tcڢq˲9vx6ȠIpHֵ]Gm҃_)o52&9mb^>1|71R[caExđDBԣD(=ORSg1hncDh72FJgruU$]G l ܗf֦EVVf1MZAW; 읆,g:,"i2]@;ވ*/<v[s -`hi"NsA@(*wb_r!OG K/GXĿoZPXJPEg?io᧩Z~~OR<R[rKOJRB;KnNc5@+,dQDz&SlL1FXN>ܿS s3HR7܃9AIU?ꬄԭ(+o2/6[%&BYDhY~ Ʊ;}װ;&V++ȋ8L$*E7ąE'_Mޥ'Ɉ{ż4 V:o骛(((((((((((((((5W8)/WVܞU4m6H]6L{sʲFLZ@)Aj+9O =JoiIm/>i)JU -R -R \ No newline at end of file +JFIFHHC  !"$"$ `J +!1"A2Qaq#B$3Rbu56CU&cr7V?˥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRsv/pa[rhSfKh#*JIF`O})JR)JR)JR)JR)JR)JR)JR)JR)JR+;k5 V)JU6S??0\d!ԤM!/>s^q3o¬w9#WvB(vo#ܗt:ڧǟ $R5ҭj"B IwH)JR)JRS _񖲹IVv)+4ŷW5%tw7\FJfsY].QwW2@VrOKo\O}XฒՒg1G#8,FڮV)JR)JR)JR)Jx{c(ԳUP>a\,8+gkr{LFcQԪR)Y_bT)JR9tfWH;ӷTfm &KW7{.:X23&Far| m"q^WplhT=ȋl0mƟWۭl8kYUϏ[%0>} y'"F}Ҡ^fw/+C-+zyd}_ЙdޛGFR*rN<^TQh[^GϾσj}յWvwʡ'؂<_  A#R}a޺R,7vAǧ6B M^f~dc=[Ҳ.-|odr";/ˏ Ym`U7w7X~Nn4%v)۷aH>q<6i)`v'@ԓ])J{Z(3eum{iݝ76hã WZRw3k\#U'mTVUd9c'j?-7N]cl~R)JR)JHbs.:ᡊ!#gUb3 %߶c3ym,FNIRoLƿ1I)K@ ֈelNp|u}u߿6e."sHVn'GCѨsTc;@8eB<~?jTwiw-xw?EX~Sp{LHd#''Vg x߿WG J'F^TNʮwdaz?swnA!6:>knD*!GσU2776ߒ~][V;v?RK산 lkIA>;7{ךiq?ɮ-"_ I 45 $tX/կY@'.fh."Yc, VV@"=y0i.Qe[+'ܰR:}CS>Tj-.#ՍfU޵,-, ŜV'2Tt*) WLcF;ءUQ*{E2u#`^5N?>ydߙRt_z}{miVX&dE; 650qH16!/UK=#xE?dg6l-m20\KPţH}.}'ʃ4im nG祳_۩{8d.[*:s^?,>6[cc?z=K^QDH=?We%fCu. iVYt:;g۲DJTlD?yNE[x/evRFh㪩$14vEIq^\;ƥX B0W(iu'[Y׏i~ lrsnbi,e_IIe`q^nhʛnK0<aT>(y"WYĶXO$pv?U<+* #023-S)#@iyc ջF̎SAڼ[| ix_ IrKI`= ${}[KmsMc7WR4ApEdn-1o/g/ (ߺ)ȹKrܯc\ZE?2̠3<ŽHԭ|uU$>-c/"'Ƈf>ݺ~6VKHccә/݉ m)GGg6\ ¦7u Ů0&1:Pd0'ך%Gk$')KtVDw,PϕZX֏qo TM1>+%Ĺ$̻ܽ,cm2vst-4 #ȱO ZLVsI4q$6FF1HD7{vZ|/~Gwf@ْu y".;_fl zIk8ލlY[ [)k/qG$O20 Rlyk;Cc}rA+в_k +ski@(el|lZNS{ + KLvWq]BV)JR)J&v\ [mcqcdFv_mVxk6(ўvQ!;!5:cl.nm{۵fy[RK3< .|K*+UM h hc%TB߀?zJVw=m8k̷ d;ݫr;ExDmT:|;퉩<_? 9c餂E]kFvߍ ;ы<$IV#?B,OcqnMt?@)5ֶ@2C.'/\\"y:Z"#40@cRO{(rONc+Yq\YB6@2*~[{_6ߩ&cX[&>Z\qe2dbo4b&S7)}\EswT6l?d2q,hRw#2vhWȗ=?:V-alMW#eye5bRH\v@!M}rz󪸱Xg k㩊2J]U]n'}ka$֘乔H x, `N_|w1W,c)>Y]zvC_X:5ۈq;>3w3~fmȉ@,jWy'Ş6Lu{VHScwie82$H1!Th3 lummlo[޶*ƫqK,S5d+;3lJُcXKo焵Ň)UK7$e NQ%g%J/xǖ{A$6FEY;l{jˈ`8q gmTPJy>M`"Ip'T=]JGbS= خ h`: :PH_̻XZccoel8-XQQ?Wf}~+gqktޫݷuyכf|نE{'7bL]:}#`kۈ4ҸT@bOcY<3m$ NZtg`#u q+l%mFTW.dc(۳lAas+kh_{ c9?1I!+G3P LB6X*5;;oU[!b}`l~r\7ygClmhA($UDZ +ӌqwy,zKqU.(ȮLl.K K$EV !f}6Ae^Gg-sJJ4і;-=ׯx]zoC{w{uر=v<5RKk<ٝ'@fbwןZd@[,#@to +J/K 6/UFx9' 2wֿ)umxHë3k ]*cbUIm(9`/u#{uGHa߳]u5iqEk>numεV4)JR)JR)JRN5+EJR+~)r6YC$IF?f2H1}V&Hlk׊zT?+!aKq!U%D>Bz1 1V>:,|# Q3܍ScqgkQ$24!F*)JR)JRr&|mw܄k`d!RJO䌒T hzu;^3Ɋ埇ɌeI V9aH$u갫3[.Ω HF*EGp;72.=useG.𺝫v߂r)JR)JR)JR)JR)JR\)r5wX[_Ve;Ɔ؁մWVG< )c`F<GEt)JRcc1KpmHRuPe 8ܩ U.G岖y9[m8 x ǼWqY^DY^fBSzHTRulT.~5Ǔx#iVArV;bo]Ҕ)JR)JRHrxENHG +vG1Nn7mpgd0I:#Vs9wLSOMrhb"A++Hve^gCٯR)JR)JR)JR)JR)Qr,v&ͯr K U`5N ⾖ŲO[c| JIaIoZة)JR)JR)JR* cQC#ipk/o]oawz}㯬VQ_c-&^OH~¤R)JR)JR)JR)JR)JRr0wvO +O*.)~Å.2; .%45c&+K\ /q:F`vK7T6LŹJ\],LS%qXegm.7Z;3AZ1$]$> O)JR)JR)JRdl\~Gk qޯX:[i98Mvc 4-h&ja ލ\ea.qk{sghP JIde>4.ƍkJR)JR)JR)JR)JR)Uܙ.%u<G($<?ַ ZIkughѴRA^u/1^yY{yibϏ#svr[+Ï>&)~k?||:8/pܕ1[w6<,<:$!^A ZyeC͹U[l![eVvg '&ǜo-q3vs ̱@FWakc[ҹfKye`2V]`AbgrӚd.W2_3:NlyjˌB줱bQBdWY 0ߟެZKuu4pA +%F +l'y$JR<+1Y+\0t"юjӏW1e-%h+vʒ: +H5[qK ѐv~>-ZщF",;P~݇+dgم\txylԋ^miV5BlEXmr iHYv67ד|8~a6|bXFʛ;h;htA?mWƗ>K[+Yއ1@1>+UsK,%FKkg!D@:-,t]^@;+5o-nyvWbWظaD#U2'{էʮb[1\Kn V$u$: jƹObK a`0U]br@~9*K6kg~gw<\cT'E2md`5Mo$HȽYv7>)jF'DʥC0 vE^ǍdfGxidT6O@w Om>;"@DQ:L~m}jO@R5ڬљE ;`G~Ok)T<ەX;+;k˅Ugipr~kyr>'n0*LDev۩ƶ<ս@[䯱iybe8&9ꭦItԶKV1<$EvU* PO۰Et)JRSr{Uo ?gunߎnO|h"%%w!})Gc۱;k/gr~ݚYقbXRǟY$cΗYޙ^Xf[ʻV G`kq.K5-r9SΫ0d.dDJo_I@v A~v|ػOx#_sCaȋ IS`uT5C5xb=X!cG{@SaV=䮲_$ש}?)􁯠oZ|>Jm■;GZFÙ28b9v[,?˧އ7ʣF"yrsdr&7^,;{Xl}&@G"Nc+qʗk{{WStCuFꁈA5Mo$HȽYv7>"_LXGmJH  o2:׭e>uSp.G,_?[`OcnDx>W*TCڼG.x`Xjă:˯a=ßc +sO7Qɯ@Xlr =L_Wso|EKnGKY +WS2hGRVs9q]z׫tB}kcg+*._39AlOaA5X,5ƛ3L͵ )b/$=!\1 7 ǧ~7=޺[ADS7vGg9TPYۭA5 +Az9Q Zn?_%\d]b k4<xÞCə¶75{܊6?gp-pi>>DG2\7F +;fkE+klw1X[~]UdtF|)qZ@u::d/|)6߄d4>uZ~}/Z,;K"Q.ChG^V7gWavJ/ %ĘP7҈>U1Odb#Q3 nl֎OROArãu#w S/y*z +V|k);1n#EXFF=@ -BU̮U-dTPNH$FNΰ19%d?r׏ڲV>h o1:׭{>3~沫4ke$HJq-'A2 3f%ز$#4: ,@}D1"mxPO +J_=xb=X!cG{@SaW179NHzvƞU_ 4ۑ{T('% +NRV?qgRqo}m31c~ֽk-k +9u*9e7}Ҕ)JUW&'%ilr{;n7#9<: /yfZk.mS/q5 +'T*ӷղsyxr3cbd Y"8Z=[Ҧ\3&0b܋jngr(ynYƤ?,,5]n͠䛎7l. Iױ.2֣?JUwy?٭~}BjKK+XMBibd.v폀~䛣Ü`rzѷO[[޻zP9|8Y}ݢp꿙t6<*,c 5LKbA!t;[-j>:nYFK;䑤sgca፦0B>z5{m,ce'qudu8^Acd팖ZFc!ر:;&lF-|f*ŦbҵF]nl/"㹼'aVMW._7So_9L(km=ķ!GBLM#*գםR'EObԫ OW1c̽Gr~'_g2<^1o}.nS!o!nwn)$vp&b20A9Bq$HVNm(֘ xN+|V6Ӷb_#!vKysee.KIT"Uy[+S/_d8n 4%!^A%GmR@ >KY2pd-A G'c^f4ǹ܊U9 N"Ϛry7@~ʍGx2w/e{&m)ad a$Wqna-.nY9|CbbYvnؖ 'v,c-e+SZ[Œ}܏{)qlWtCxWJnPiwoQ-yfdnhlR]qyXPcIc&ض?bd5XFy'1U$*۸~ͥwb6/Cv,K?ֲd.G0dzVE9b unj"SY$>@N4l- ȽXhQ؍OXW6Wsc\]\G4GjlPn" +tPTq'Ac1&dM?~w iP*׊K^=J1۷%B 2/A(r4 j%82OH#RFFqcyEZq+Z]C:Km0< b2HתN{|S9xޜ[D[O:%ru'_!A6Xɓ$nd9;$dg;1=R)JR;%ywf6fiWct=X4=qۼFOeBn%x-ٌP*A 1XC3hl+>f+$חB̑2M! ?`/Bxruz @}Ԫ?\K)-l`R.}_X'_+OJR)JR)JR)X~O.nZ-0)/IW +wI؟r͕ +[g$ltrD3&̄c/ͅn!9 Su`N] 2e5[FbE e lIjJR)JR)JR)JR)JR)JFWEt`j%MhK_] Ffb02*=ǿPpG)iV[x [\WH"Hnu hfx&A$Rԍx JR)JR)JR)JR)XOXgF2.*I7ktb ׷V%!IʺFbN;Xfge-с$oMv&)PVfmr, +E@`7kPq-"F(E +Ϊ=-)JR)JR)JR)JUW0 -OC ::5 _i+z|Ekuͭ#Yʬ|hj,Pr+saŶ7kHG! +G_bXe,$NSJR)JR)JR)JR|M,PD"G ~Þk}Ž޴}}Ut׵~Ks)sض #g^I +m!^߰'KJRT)JR)JR)JR)QrC#73[Hzv{~ǎb\\AgA O׸DP UxN3'pkx&!)PGش<-xo'㶙ln3۬п!I#aGӊq=åIǬ8ۤiDJP{'?1-yvi,"b90C'},X!^6[ 0`!(c{ץ!uGٕRFѿJ>AE-0DeEc` K;X}$ +{9 !;򤊋ՕU/zoKJ?%=Nׯ~g[{h)z0c.?`Hρ2V9k/ ejHhR*A Ժ>In->/O.3߈>KzJVRN3䟧u[r%/DI`lw/Oe3>|^~G[ַV5W8|nFuu1lCߨ ցx<.)37P Rkq-]c.,qPIy2A(IKΉmʙ.'(ф>z;>|wV]rXEuzޥ孯^uO=o_}kV5E'0qg&V4;HguEoX|\2%$T%$^|x^Oגoho©O$,-qoJke^+"[ƓJ%Pp{y:o.wp[]—tH~; 7!7UuO䷸oCz7]kƽ~{}NN'-DaR?B xG K?OKcks.vNf=G#̑{mTz&.=sS{ ]M Rj./]]:w +5ٵ^u~ p{m1(hd4 +FȲ{X/W5~Ǭ-(!AApzX@+E#u9$Oi۹rX2mt0ן g~?팧)JR)JR)JR)JkȾ_ ?/ۧٛ |v޼[;i7"Ϫ=ּ|d&EiF`HQA@A iN3<9 { qp#1gS߷MF#dl)?jfqy܏~?|\nhuXO:E0fAc \͒!9U´{$[M_rLg?\R9_Aw離+zn$~z*i#+R[U&dnARy~ +18'{ D?R57K|}J{{#93]y#hRye೸8+xvLBKq3s˾]x`bhhMđoěWe|糝oms fKxҾrH31h2X"Ie1jļ8@ ܤPs7 +'C@y?Ư vx VIGv U +76Bv6F])b?Պk#b.E+d^F9ufOJVG N;/[EUM`z + ޲ +|jvoYC2HCԣ_?q36nQyCw{ &[p'$+,袇P 鸋2VKshPtNH`"0.JiN[#$Ws^ChPҁV'`gոyru9¸9^MZ[䲈Ѧc[k&.!U2)OP +@=a,1wvhl<[O#r]6K@Jwn]AO;;٭|i-q $+*)mkBvr5#oZ5. hd2*cᔂ?e1}Qmbonn(nH ?_:P6B O>My<>#춫5 !BI gp@OpW-.;|5hom +C b/,g,R+2+{H帛l_R`\ oY3c[N/UАI+Bv-39;C)umy \m[!I[h STk[_휧hJR)JR)JR)JRy2]\[Ee 6ӱ[I7(;0ߔݽfO-?6P! Vǚ8 9676_ + Xg2AeC4NGvDv*y<&5rP4JbqRqg;NjK^deNqW}(%kkemk5ORmm^ U")o wo2F]Hʬ@ vAHJT+|N:#&FH@ۯmaآl'z*ǰܤ;1 ЈG(Rz @kjҕ cdKHyW`~ +<Cɩ|K*+U`XY.^푧&W~"buU_`?J7֖֒Z]³A*tocagmcl-"DC٘1'%$$Mw*>B.ꮲ! Uea sc,plV2oekI:!ckwuWY*2ED&+HqF*_`B`AңฺZ= fp#ocǝכ~s 66,v7!"WkřܖfbĖ$I$eǐp7! VhbRAUx7˅c8}1􊎚]Tʫ^=\f-bN >tMy*ZW̱ؼm.Bb(PI;'J~@>?팧)JR)JR)JR)JuWFGPLlT\f/c,Qس+f?r Z`y<vחY.N$L=LGVF3.Ċǒ4ɍRmtǮ/%\XI vC}P7U)JR)JR)JR)JRE2y>:X[g LbxiepAkv~JXKUfg5IDVV8Y{6$ +.%ؼjFr^Qp;wco0]Yේ2t)6bD^I?rܖbYI)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR \ No newline at end of file diff -Naur lammps-11Jan08/doc/Eqs/stress_tensor.tex lammps-12Jan08/doc/Eqs/stress_tensor.tex --- lammps-11Jan08/doc/Eqs/stress_tensor.tex 2007-11-30 16:29:01.000000000 -0700 +++ lammps-12Jan08/doc/Eqs/stress_tensor.tex 2008-01-09 14:57:06.000000000 -0700 @@ -5,14 +5,14 @@ \begin{eqnarray*} S_{ab} & = & - \left[ m v_a v_b + \frac{1}{2} \sum_{n = 1}^{N_p} (r_{1_a} F_{1_b} + r_{2_a} F_{2_b}) + - \frac{1}{2} \sum_{n = 1}^{N_b} (r_{1_a} F_{1_b} + r_{2_a} F_{2_b}) + - \frac{1}{3} \sum_{n = 1}^{N_a} (r_{1_a} F_{1_b} + r_{2_a} F_{2_b} + - r_{3_a} F_{3_b}) + \right. \\ -&& \left. \frac{1}{4} \sum_{n = 1}^{N_d} (r_{1_a} F_{1_b} + r_{2_a} F_{2_b} + - r_{3_a} F_{3_b} + r_{4_a} F_{4_b}) + - \frac{1}{4} \sum_{n = 1}^{N_i} (r_{1_a} F_{1_b} + r_{2_a} F_{2_b} + - r_{3_a} F_{3_b} + r_{4_a} F_{4_b}) - \right] + \frac{1}{2} \sum_{n = 1}^{N_b} (r_{1_a} F_{1_b} + r_{2_a} F_{2_b}) + \right. \\ +&& \left. \frac{1}{3} \sum_{n = 1}^{N_a} (r_{1_a} F_{1_b} + r_{2_a} F_{2_b} + + r_{3_a} F_{3_b}) + + \frac{1}{4} \sum_{n = 1}^{N_d} (r_{1_a} F_{1_b} + r_{2_a} F_{2_b} + + r_{3_a} F_{3_b} + r_{4_a} F_{4_b}) + \right. \\ +&& \left. \frac{1}{4} \sum_{n = 1}^{N_i} (r_{1_a} F_{1_b} + r_{2_a} F_{2_b} + + r_{3_a} F_{3_b} + r_{4_a} F_{4_b}) + + \sum_{n = 1}^{N_f} r_{i_a} F_{i_b} \right] \end{eqnarray*} \end{document} diff -Naur lammps-11Jan08/doc/compute_stress_atom.html lammps-12Jan08/doc/compute_stress_atom.html --- lammps-11Jan08/doc/compute_stress_atom.html 2008-01-03 17:56:10.000000000 -0700 +++ lammps-12Jan08/doc/compute_stress_atom.html 2008-01-09 14:59:42.000000000 -0700 @@ -18,7 +18,7 @@
  • ID, group-ID are documented in compute command
  • stress/atom = style name of this compute command
  • zero or more keywords may be appended -
  • keyword = ke or pair or bond or angle or dihedral or improper +
  • keyword = ke or pair or bond or angle or dihedral or improper or fix

Examples:

@@ -51,14 +51,20 @@ atoms in the pairwise interaction, and F1 and F2 are the forces on the 2 atoms resulting from the pairwise interaction. The third term is a bond contribution of similar form for the Nb bonds which atom -I is part of. The remaining terms are for the Na angle, Nd +I is part of. There are similar terms for the Na angle, Nd dihedral, and Ni improper interactions atom I is part of. +Finally, there is a term for the Nf fixes that apply +internal constraint forces to atom I. Currently, only the fix +shake and fix rigid commands +contribute to this term.

As the coefficients in the formula imply, a virial contribution produced by a small set of atoms (e.g. 4 atoms in a dihedral or 3 atoms in a Tersoff 3-body interaction) is assigned in equal portions to each atom in the set. E.g. 1/4 of the dihedral virial to each of -the 4 atoms. +the 4 atoms, or 1/3 of the fix virial due to SHAKE constraints applied +to atoms in a a water molecule via the fix shake +command.

If no extra keywords are listed, all of the terms in this formula are included in the per-atom stress tensor. If any extra keywords are @@ -81,22 +87,20 @@ system, the result should be -P, where P is the total pressure of the system.

-

These lines in an input script should yield that result (assuming -there is no fix or long-range contribution to the stress). I.e. the +

These lines in an input script should yield that result. I.e. the last 2 columns of thermo output will be the same:

compute		peratom all stress/atom
-compute		p all sum peratom1 peratom2 peratom3
+compute		p all sum c_peratom1 c_peratom2 c_peratom3
 variable	press equal -(c_p1+c_p2+c_p3)/(3*vol)
 thermo_style	custom step temp etotal press v_press 
 

IMPORTANT NOTE: The per-atom stress does NOT include contributions due -to fixes (e.g. SHAKE) or long-range Coulombic -interactions (via the kspace_style command). The -former needs to be added to LAMMPS. We're not sure if the latter is -possible to compute. There are also a few pair styles for manybody -potentials that are not yet instrumented to yield per-atom stress. -See the Restrictions below. +to long-range Coulombic interactions (via the +kspace_style command). It's not clear this +contribution can easily be computed. There are also a few pair styles +for manybody potentials that are not yet instrumented to yield +per-atom stress. See the Restrictions below.

Output info:

diff -Naur lammps-11Jan08/doc/compute_stress_atom.txt lammps-12Jan08/doc/compute_stress_atom.txt --- lammps-11Jan08/doc/compute_stress_atom.txt 2008-01-03 17:56:10.000000000 -0700 +++ lammps-12Jan08/doc/compute_stress_atom.txt 2008-01-09 14:59:42.000000000 -0700 @@ -15,7 +15,7 @@ ID, group-ID are documented in "compute"_compute.html command stress/atom = style name of this compute command zero or more keywords may be appended -keyword = {ke} or {pair} or {bond} or {angle} or {dihedral} or {improper} :ul +keyword = {ke} or {pair} or {bond} or {angle} or {dihedral} or {improper} or {fix} :ul [Examples:] @@ -47,14 +47,20 @@ atoms in the pairwise interaction, and {F1} and {F2} are the forces on the 2 atoms resulting from the pairwise interaction. The third term is a bond contribution of similar form for the {Nb} bonds which atom -{I} is part of. The remaining terms are for the {Na} angle, {Nd} +{I} is part of. There are similar terms for the {Na} angle, {Nd} dihedral, and {Ni} improper interactions atom {I} is part of. +Finally, there is a term for the {Nf} "fixes"_fix.html that apply +internal constraint forces to atom {I}. Currently, only the "fix +shake"_fix_shake.html and "fix rigid"_fix_rigid.html commands +contribute to this term. As the coefficients in the formula imply, a virial contribution produced by a small set of atoms (e.g. 4 atoms in a dihedral or 3 atoms in a Tersoff 3-body interaction) is assigned in equal portions to each atom in the set. E.g. 1/4 of the dihedral virial to each of -the 4 atoms. +the 4 atoms, or 1/3 of the fix virial due to SHAKE constraints applied +to atoms in a a water molecule via the "fix shake"_fix_shake.html +command. If no extra keywords are listed, all of the terms in this formula are included in the per-atom stress tensor. If any extra keywords are @@ -77,22 +83,20 @@ system, the result should be -P, where P is the total pressure of the system. -These lines in an input script should yield that result (assuming -there is no fix or long-range contribution to the stress). I.e. the +These lines in an input script should yield that result. I.e. the last 2 columns of thermo output will be the same: compute peratom all stress/atom -compute p all sum peratom[1] peratom[2] peratom[3] +compute p all sum c_peratom[1] c_peratom[2] c_peratom[3] variable press equal -(c_p[1]+c_p[2]+c_p[3])/(3*vol) thermo_style custom step temp etotal press v_press :pre IMPORTANT NOTE: The per-atom stress does NOT include contributions due -to fixes (e.g. "SHAKE"_fix_shake.html) or long-range Coulombic -interactions (via the "kspace_style"_kspace_style.html command). The -former needs to be added to LAMMPS. We're not sure if the latter is -possible to compute. There are also a few pair styles for manybody -potentials that are not yet instrumented to yield per-atom stress. -See the Restrictions below. +to long-range Coulombic interactions (via the +"kspace_style"_kspace_style.html command). It's not clear this +contribution can easily be computed. There are also a few pair styles +for manybody potentials that are not yet instrumented to yield +per-atom stress. See the Restrictions below. [Output info:] diff -Naur lammps-11Jan08/src/ASPHERE/fix_npt_asphere.cpp lammps-12Jan08/src/ASPHERE/fix_npt_asphere.cpp --- lammps-11Jan08/src/ASPHERE/fix_npt_asphere.cpp 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/ASPHERE/fix_npt_asphere.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -43,7 +43,7 @@ 1st half of Verlet update ------------------------------------------------------------------------- */ -void FixNPTASphere::initial_integrate() +void FixNPTASphere::initial_integrate(int vflag) { int i; diff -Naur lammps-11Jan08/src/ASPHERE/fix_npt_asphere.h lammps-12Jan08/src/ASPHERE/fix_npt_asphere.h --- lammps-11Jan08/src/ASPHERE/fix_npt_asphere.h 2007-10-10 16:22:16.000000000 -0600 +++ lammps-12Jan08/src/ASPHERE/fix_npt_asphere.h 2008-01-09 14:56:57.000000000 -0700 @@ -22,7 +22,7 @@ public: FixNPTASphere(class LAMMPS *, int, char **); ~FixNPTASphere() {} - void initial_integrate(); + void initial_integrate(int); void final_integrate(); private: diff -Naur lammps-11Jan08/src/ASPHERE/fix_nve_asphere.cpp lammps-12Jan08/src/ASPHERE/fix_nve_asphere.cpp --- lammps-11Jan08/src/ASPHERE/fix_nve_asphere.cpp 2007-10-10 16:22:16.000000000 -0600 +++ lammps-12Jan08/src/ASPHERE/fix_nve_asphere.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -60,7 +60,7 @@ /* ---------------------------------------------------------------------- */ -void FixNVEASphere::initial_integrate() +void FixNVEASphere::initial_integrate(int vflag) { double dtfm; diff -Naur lammps-11Jan08/src/ASPHERE/fix_nve_asphere.h lammps-12Jan08/src/ASPHERE/fix_nve_asphere.h --- lammps-11Jan08/src/ASPHERE/fix_nve_asphere.h 2007-10-10 16:22:16.000000000 -0600 +++ lammps-12Jan08/src/ASPHERE/fix_nve_asphere.h 2008-01-09 14:56:57.000000000 -0700 @@ -23,7 +23,7 @@ FixNVEASphere(class LAMMPS *, int, char **); ~FixNVEASphere(); void init(); - void initial_integrate(); + void initial_integrate(int); void final_integrate(); private: diff -Naur lammps-11Jan08/src/ASPHERE/fix_nvt_asphere.cpp lammps-12Jan08/src/ASPHERE/fix_nvt_asphere.cpp --- lammps-11Jan08/src/ASPHERE/fix_nvt_asphere.cpp 2007-10-10 16:22:16.000000000 -0600 +++ lammps-12Jan08/src/ASPHERE/fix_nvt_asphere.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -43,7 +43,7 @@ /* ---------------------------------------------------------------------- */ -void FixNVTASphere::initial_integrate() +void FixNVTASphere::initial_integrate(int vflag) { double dtfm; diff -Naur lammps-11Jan08/src/ASPHERE/fix_nvt_asphere.h lammps-12Jan08/src/ASPHERE/fix_nvt_asphere.h --- lammps-11Jan08/src/ASPHERE/fix_nvt_asphere.h 2007-10-10 16:22:16.000000000 -0600 +++ lammps-12Jan08/src/ASPHERE/fix_nvt_asphere.h 2008-01-09 14:56:57.000000000 -0700 @@ -22,7 +22,7 @@ public: FixNVTASphere(class LAMMPS *, int, char **); ~FixNVTASphere() {} - void initial_integrate(); + void initial_integrate(int); void final_integrate(); private: diff -Naur lammps-11Jan08/src/DIPOLE/fix_nve_dipole.cpp lammps-12Jan08/src/DIPOLE/fix_nve_dipole.cpp --- lammps-11Jan08/src/DIPOLE/fix_nve_dipole.cpp 2007-10-10 16:22:16.000000000 -0600 +++ lammps-12Jan08/src/DIPOLE/fix_nve_dipole.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -79,7 +79,7 @@ /* ---------------------------------------------------------------------- */ -void FixNVEDipole::initial_integrate() +void FixNVEDipole::initial_integrate(int vflag) { double dtfm,msq,scale; @@ -169,14 +169,14 @@ /* ---------------------------------------------------------------------- */ -void FixNVEDipole::initial_integrate_respa(int ilevel, int flag) +void FixNVEDipole::initial_integrate_respa(int vflag, int ilevel, int flag) { if (flag) return; // only used by NPT,NPH dtv = step_respa[ilevel]; dtf = 0.5 * step_respa[ilevel] * force->ftm2v; - if (ilevel == 0) initial_integrate(); + if (ilevel == 0) initial_integrate(vflag); else final_integrate(); } diff -Naur lammps-11Jan08/src/DIPOLE/fix_nve_dipole.h lammps-12Jan08/src/DIPOLE/fix_nve_dipole.h --- lammps-11Jan08/src/DIPOLE/fix_nve_dipole.h 2007-10-10 16:22:16.000000000 -0600 +++ lammps-12Jan08/src/DIPOLE/fix_nve_dipole.h 2008-01-09 14:56:57.000000000 -0700 @@ -24,9 +24,9 @@ ~FixNVEDipole(); int setmask(); void init(); - void initial_integrate(); + void initial_integrate(int); void final_integrate(); - void initial_integrate_respa(int,int); + void initial_integrate_respa(int, int, int); void final_integrate_respa(int); void reset_dt(); diff -Naur lammps-11Jan08/src/GRANULAR/fix_freeze.cpp lammps-12Jan08/src/GRANULAR/fix_freeze.cpp --- lammps-11Jan08/src/GRANULAR/fix_freeze.cpp 2007-06-21 12:58:43.000000000 -0600 +++ lammps-12Jan08/src/GRANULAR/fix_freeze.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -55,9 +55,9 @@ /* ---------------------------------------------------------------------- */ -void FixFreeze::setup() +void FixFreeze::setup(int vflag) { - post_force(1); + post_force(vflag); } /* ---------------------------------------------------------------------- */ diff -Naur lammps-11Jan08/src/GRANULAR/fix_freeze.h lammps-12Jan08/src/GRANULAR/fix_freeze.h --- lammps-11Jan08/src/GRANULAR/fix_freeze.h 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/GRANULAR/fix_freeze.h 2008-01-09 14:56:57.000000000 -0700 @@ -23,7 +23,7 @@ FixFreeze(class LAMMPS *, int, char **); int setmask(); void init(); - void setup(); + void setup(int); void post_force(int); }; diff -Naur lammps-11Jan08/src/GRANULAR/fix_nve_gran.cpp lammps-12Jan08/src/GRANULAR/fix_nve_gran.cpp --- lammps-11Jan08/src/GRANULAR/fix_nve_gran.cpp 2007-10-10 16:22:16.000000000 -0600 +++ lammps-12Jan08/src/GRANULAR/fix_nve_gran.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -61,7 +61,7 @@ /* ---------------------------------------------------------------------- */ -void FixNVEGran::initial_integrate() +void FixNVEGran::initial_integrate(int vflag) { double dtfm; diff -Naur lammps-11Jan08/src/GRANULAR/fix_nve_gran.h lammps-12Jan08/src/GRANULAR/fix_nve_gran.h --- lammps-11Jan08/src/GRANULAR/fix_nve_gran.h 2007-10-10 16:22:16.000000000 -0600 +++ lammps-12Jan08/src/GRANULAR/fix_nve_gran.h 2008-01-09 14:56:57.000000000 -0700 @@ -23,7 +23,7 @@ FixNVEGran(class LAMMPS *, int, char **); int setmask(); void init(); - void initial_integrate(); + void initial_integrate(int); void final_integrate(); void reset_dt(); diff -Naur lammps-11Jan08/src/GRANULAR/fix_wall_gran.cpp lammps-12Jan08/src/GRANULAR/fix_wall_gran.cpp --- lammps-11Jan08/src/GRANULAR/fix_wall_gran.cpp 2007-10-10 16:22:16.000000000 -0600 +++ lammps-12Jan08/src/GRANULAR/fix_wall_gran.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -196,9 +196,9 @@ /* ---------------------------------------------------------------------- */ -void FixWallGran::setup() +void FixWallGran::setup(int vflag) { - post_force(1); + post_force(vflag); } /* ---------------------------------------------------------------------- */ diff -Naur lammps-11Jan08/src/GRANULAR/fix_wall_gran.h lammps-12Jan08/src/GRANULAR/fix_wall_gran.h --- lammps-11Jan08/src/GRANULAR/fix_wall_gran.h 2007-10-10 16:22:16.000000000 -0600 +++ lammps-12Jan08/src/GRANULAR/fix_wall_gran.h 2008-01-09 14:56:57.000000000 -0700 @@ -24,7 +24,7 @@ ~FixWallGran(); int setmask(); void init(); - void setup(); + void setup(int); void post_force(int); double memory_usage(); diff -Naur lammps-11Jan08/src/compute_stress_atom.cpp lammps-12Jan08/src/compute_stress_atom.cpp --- lammps-11Jan08/src/compute_stress_atom.cpp 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/compute_stress_atom.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -22,6 +22,8 @@ #include "angle.h" #include "dihedral.h" #include "improper.h" +#include "modify.h" +#include "fix.h" #include "memory.h" #include "error.h" @@ -46,10 +48,12 @@ keflag = 1; pairflag = 1; bondflag = angleflag = dihedralflag = improperflag = 1; + fixflag = 1; } else { keflag = 0; pairflag = 0; bondflag = angleflag = dihedralflag = improperflag = 0; + fixflag = 0; int iarg = 3; while (iarg < narg) { if (strcmp(arg[iarg],"ke") == 0) keflag = 1; @@ -58,6 +62,7 @@ else if (strcmp(arg[iarg],"angle") == 0) angleflag = 1; else if (strcmp(arg[iarg],"dihedral") == 0) dihedralflag = 1; else if (strcmp(arg[iarg],"improper") == 0) improperflag = 1; + else if (strcmp(arg[iarg],"fix") == 0) fixflag = 1; else error->all("Illegal compute stress/atom command"); iarg++; } @@ -148,7 +153,19 @@ stress[i][j] += vatom[i][j]; } - // communicate ghost energy between neighbor procs + // add in per-atom contributions from relevant fixes + + if (fixflag) { + for (int i = 0; i < modify->nfix; i++) + if (modify->fix[i]->virial_flag) { + double **vatom = modify->fix[i]->vatom; + for (i = 0; i < nlocal; i++) + for (j = 0; j < 6; j++) + stress[i][j] += vatom[i][j]; + } + } + + // communicate ghost atom virials between neighbor procs if (force->newton) comm->reverse_comm_compute(this); diff -Naur lammps-11Jan08/src/compute_stress_atom.h lammps-12Jan08/src/compute_stress_atom.h --- lammps-11Jan08/src/compute_stress_atom.h 2007-11-30 14:54:30.000000000 -0700 +++ lammps-12Jan08/src/compute_stress_atom.h 2008-01-09 14:56:57.000000000 -0700 @@ -29,7 +29,7 @@ double memory_usage(); private: - int keflag,pairflag,bondflag,angleflag,dihedralflag,improperflag; + int keflag,pairflag,bondflag,angleflag,dihedralflag,improperflag,fixflag; int nmax; double **stress; }; diff -Naur lammps-11Jan08/src/fix.cpp lammps-12Jan08/src/fix.cpp --- lammps-11Jan08/src/fix.cpp 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -14,7 +14,9 @@ #include "string.h" #include "ctype.h" #include "fix.h" +#include "atom.h" #include "group.h" +#include "memory.h" #include "error.h" using namespace LAMMPS_NS; @@ -55,6 +57,9 @@ comm_forward = comm_reverse = 0; + maxvatom = 0; + vatom = NULL; + // mask settings - same as in modify.cpp INITIAL_INTEGRATE = 1; @@ -77,6 +82,7 @@ { delete [] id; delete [] style; + memory->destroy_2d_double_array(vatom); } /* ---------------------------------------------------------------------- @@ -103,3 +109,78 @@ } } } + +/* ---------------------------------------------------------------------- + setup for virial computation + see integrate::ev_set() for values of vflag (0-6) +------------------------------------------------------------------------- */ + +void Fix::v_setup(int vflag) +{ + int i,n; + + evflag = 1; + + vflag_global = vflag % 4; + vflag_atom = vflag / 4; + + // reallocate per-atom array if necessary + + if (vflag_atom && atom->nlocal > maxvatom) { + maxvatom = atom->nmax; + memory->destroy_2d_double_array(vatom); + vatom = memory->create_2d_double_array(maxvatom,6,"bond:vatom"); + } + + // zero accumulators + + if (vflag_global) for (i = 0; i < 6; i++) virial[i] = 0.0; + if (vflag_atom) { + n = atom->nlocal; + for (i = 0; i < n; i++) { + vatom[i][0] = 0.0; + vatom[i][1] = 0.0; + vatom[i][2] = 0.0; + vatom[i][3] = 0.0; + vatom[i][4] = 0.0; + vatom[i][5] = 0.0; + } + } +} + +/* ---------------------------------------------------------------------- + tally virial into global and per-atom accumulators + v = total virial for the interaction involving total atoms + n = # of local atoms involved, with local indices in list + increment global virial by n/total fraction + increment per-atom virial of each atom in list by 1/total fraction + assumes other procs will tally left-over fractions +------------------------------------------------------------------------- */ + +void Fix::v_tally(int n, int *list, double total, double *v) +{ + int m; + + if (vflag_global) { + double fraction = n/total; + virial[0] += fraction*v[0]; + virial[1] += fraction*v[1]; + virial[2] += fraction*v[2]; + virial[3] += fraction*v[3]; + virial[4] += fraction*v[4]; + virial[5] += fraction*v[5]; + } + + if (vflag_atom) { + double fraction = 1.0/total; + for (int i = 0; i < n; i++) { + m = list[i]; + vatom[m][0] += fraction*v[0]; + vatom[m][1] += fraction*v[1]; + vatom[m][2] += fraction*v[2]; + vatom[m][3] += fraction*v[3]; + vatom[m][4] += fraction*v[4]; + vatom[m][5] += fraction*v[5]; + } + } +} diff -Naur lammps-11Jan08/src/fix.h lammps-12Jan08/src/fix.h --- lammps-11Jan08/src/fix.h 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix.h 2008-01-09 14:56:57.000000000 -0700 @@ -51,7 +51,8 @@ int comm_forward; // size of forward communication (0 if none) int comm_reverse; // size of reverse communication (0 if none) - double virial[6]; // fix contribution to pressure virial + double virial[6]; // accumlated virial + double **vatom; // accumulated per-atom virial int INITIAL_INTEGRATE,PRE_EXCHANGE,PRE_NEIGHBOR; // mask settings int POST_FORCE,FINAL_INTEGRATE,END_OF_STEP,THERMO_ENERGY; @@ -66,9 +67,9 @@ virtual void init() {} virtual void init_list(int, class NeighList *) {} - virtual void setup() {} - virtual void min_setup() {} - virtual void initial_integrate() {} + virtual void setup(int) {} + virtual void min_setup(int) {} + virtual void initial_integrate(int) {} virtual void pre_exchange() {} virtual void pre_neighbor() {} virtual void post_force(int) {} @@ -86,7 +87,7 @@ virtual int size_restart(int) {return 0;} virtual int maxsize_restart() {return 0;} - virtual void initial_integrate_respa(int, int) {} + virtual void initial_integrate_respa(int, int, int) {} virtual void post_force_respa(int, int, int) {} virtual void final_integrate_respa(int) {} @@ -110,6 +111,14 @@ virtual int modify_param(int, char **) {return 0;} virtual double memory_usage() {return 0.0;} + + protected: + int evflag; + int vflag_global,vflag_atom; + int maxvatom; + + void v_setup(int); + void v_tally(int, int *, double, double *); }; } diff -Naur lammps-11Jan08/src/fix_add_force.cpp lammps-12Jan08/src/fix_add_force.cpp --- lammps-11Jan08/src/fix_add_force.cpp 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/fix_add_force.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -53,22 +53,22 @@ /* ---------------------------------------------------------------------- */ -void FixAddForce::setup() +void FixAddForce::setup(int vflag) { if (strcmp(update->integrate_style,"verlet") == 0) - post_force(1); + post_force(vflag); else { ((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1); - post_force_respa(1,nlevels_respa-1,0); + post_force_respa(vflag,nlevels_respa-1,0); ((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1); } } /* ---------------------------------------------------------------------- */ -void FixAddForce::min_setup() +void FixAddForce::min_setup(int vflag) { - post_force(1); + post_force(vflag); } /* ---------------------------------------------------------------------- */ diff -Naur lammps-11Jan08/src/fix_add_force.h lammps-12Jan08/src/fix_add_force.h --- lammps-11Jan08/src/fix_add_force.h 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/fix_add_force.h 2008-01-09 14:56:57.000000000 -0700 @@ -23,8 +23,8 @@ FixAddForce(class LAMMPS *, int, char **); int setmask(); void init(); - void setup(); - void min_setup(); + void setup(int); + void min_setup(int); void post_force(int); void post_force_respa(int, int, int); void min_post_force(int); diff -Naur lammps-11Jan08/src/fix_ave_atom.cpp lammps-12Jan08/src/fix_ave_atom.cpp --- lammps-11Jan08/src/fix_ave_atom.cpp 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix_ave_atom.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -255,7 +255,7 @@ only does something if nvalid = current timestep ------------------------------------------------------------------------- */ -void FixAveAtom::setup() +void FixAveAtom::setup(int vflag) { end_of_step(); } diff -Naur lammps-11Jan08/src/fix_ave_atom.h lammps-12Jan08/src/fix_ave_atom.h --- lammps-11Jan08/src/fix_ave_atom.h 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix_ave_atom.h 2008-01-09 14:56:57.000000000 -0700 @@ -25,7 +25,7 @@ ~FixAveAtom(); int setmask(); void init(); - void setup(); + void setup(int); void end_of_step(); double memory_usage(); diff -Naur lammps-11Jan08/src/fix_ave_force.cpp lammps-12Jan08/src/fix_ave_force.cpp --- lammps-11Jan08/src/fix_ave_force.cpp 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/fix_ave_force.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -69,23 +69,23 @@ /* ---------------------------------------------------------------------- */ -void FixAveForce::setup() +void FixAveForce::setup(int vflag) { if (strcmp(update->integrate_style,"verlet") == 0) - post_force(1); + post_force(vflag); else for (int ilevel = 0; ilevel < nlevels_respa; ilevel++) { ((Respa *) update->integrate)->copy_flevel_f(ilevel); - post_force_respa(1,ilevel,0); + post_force_respa(vflag,ilevel,0); ((Respa *) update->integrate)->copy_f_flevel(ilevel); } } /* ---------------------------------------------------------------------- */ -void FixAveForce::min_setup() +void FixAveForce::min_setup(int vflag) { - post_force(1); + post_force(vflag); } /* ---------------------------------------------------------------------- */ diff -Naur lammps-11Jan08/src/fix_ave_force.h lammps-12Jan08/src/fix_ave_force.h --- lammps-11Jan08/src/fix_ave_force.h 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/fix_ave_force.h 2008-01-09 14:56:57.000000000 -0700 @@ -23,8 +23,8 @@ FixAveForce(class LAMMPS *, int, char **); int setmask(); void init(); - void setup(); - void min_setup(); + void setup(int); + void min_setup(int); void post_force(int); void post_force_respa(int, int, int); void min_post_force(int); diff -Naur lammps-11Jan08/src/fix_ave_spatial.cpp lammps-12Jan08/src/fix_ave_spatial.cpp --- lammps-11Jan08/src/fix_ave_spatial.cpp 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix_ave_spatial.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -403,7 +403,7 @@ only does something if nvalid = current timestep ------------------------------------------------------------------------- */ -void FixAveSpatial::setup() +void FixAveSpatial::setup(int vflag) { end_of_step(); } diff -Naur lammps-11Jan08/src/fix_ave_spatial.h lammps-12Jan08/src/fix_ave_spatial.h --- lammps-11Jan08/src/fix_ave_spatial.h 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix_ave_spatial.h 2008-01-09 14:56:57.000000000 -0700 @@ -25,7 +25,7 @@ ~FixAveSpatial(); int setmask(); void init(); - void setup(); + void setup(int); void end_of_step(); double compute_vector(int); double memory_usage(); diff -Naur lammps-11Jan08/src/fix_ave_time.cpp lammps-12Jan08/src/fix_ave_time.cpp --- lammps-11Jan08/src/fix_ave_time.cpp 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix_ave_time.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -314,7 +314,7 @@ only does something if nvalid = current timestep ------------------------------------------------------------------------- */ -void FixAveTime::setup() +void FixAveTime::setup(int vflag) { end_of_step(); } diff -Naur lammps-11Jan08/src/fix_ave_time.h lammps-12Jan08/src/fix_ave_time.h --- lammps-11Jan08/src/fix_ave_time.h 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix_ave_time.h 2008-01-09 14:56:57.000000000 -0700 @@ -25,7 +25,7 @@ ~FixAveTime(); int setmask(); void init(); - void setup(); + void setup(int); void end_of_step(); double compute_scalar(); double compute_vector(int); diff -Naur lammps-11Jan08/src/fix_com.cpp lammps-12Jan08/src/fix_com.cpp --- lammps-11Jan08/src/fix_com.cpp 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/fix_com.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -72,7 +72,7 @@ /* ---------------------------------------------------------------------- */ -void FixCOM::setup() +void FixCOM::setup(int vflag) { if (first) end_of_step(); first = 0; diff -Naur lammps-11Jan08/src/fix_com.h lammps-12Jan08/src/fix_com.h --- lammps-11Jan08/src/fix_com.h 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/fix_com.h 2008-01-09 14:56:57.000000000 -0700 @@ -25,7 +25,7 @@ ~FixCOM(); int setmask(); void init(); - void setup(); + void setup(int); void end_of_step(); private: diff -Naur lammps-11Jan08/src/fix_drag.cpp lammps-12Jan08/src/fix_drag.cpp --- lammps-11Jan08/src/fix_drag.cpp 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix_drag.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -71,13 +71,13 @@ /* ---------------------------------------------------------------------- */ -void FixDrag::setup() +void FixDrag::setup(int vflag) { if (strcmp(update->integrate_style,"verlet") == 0) - post_force(1); + post_force(vflag); else { ((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1); - post_force_respa(1,nlevels_respa-1,0); + post_force_respa(vflag,nlevels_respa-1,0); ((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1); } } diff -Naur lammps-11Jan08/src/fix_drag.h lammps-12Jan08/src/fix_drag.h --- lammps-11Jan08/src/fix_drag.h 2007-11-13 16:10:22.000000000 -0700 +++ lammps-12Jan08/src/fix_drag.h 2008-01-09 14:56:57.000000000 -0700 @@ -23,7 +23,7 @@ FixDrag(class LAMMPS *, int, char **); int setmask(); void init(); - void setup(); + void setup(int); void post_force(int); void post_force_respa(int, int, int); double compute_vector(int); diff -Naur lammps-11Jan08/src/fix_dt_reset.cpp lammps-12Jan08/src/fix_dt_reset.cpp --- lammps-11Jan08/src/fix_dt_reset.cpp 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix_dt_reset.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -120,7 +120,7 @@ /* ---------------------------------------------------------------------- */ -void FixDtReset::setup() +void FixDtReset::setup(int vflag) { end_of_step(); } diff -Naur lammps-11Jan08/src/fix_dt_reset.h lammps-12Jan08/src/fix_dt_reset.h --- lammps-11Jan08/src/fix_dt_reset.h 2007-10-12 15:28:06.000000000 -0600 +++ lammps-12Jan08/src/fix_dt_reset.h 2008-01-09 14:56:57.000000000 -0700 @@ -24,7 +24,7 @@ ~FixDtReset() {} int setmask(); void init(); - void setup(); + void setup(int); void end_of_step(); double compute_scalar(); double compute_vector(int); diff -Naur lammps-11Jan08/src/fix_efield.cpp lammps-12Jan08/src/fix_efield.cpp --- lammps-11Jan08/src/fix_efield.cpp 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/fix_efield.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -65,13 +65,13 @@ /* ---------------------------------------------------------------------- */ -void FixEfield::setup() +void FixEfield::setup(int vflag) { if (strcmp(update->integrate_style,"verlet") == 0) - post_force(1); + post_force(vflag); else { ((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1); - post_force_respa(1,nlevels_respa-1,0); + post_force_respa(vflag,nlevels_respa-1,0); ((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1); } } diff -Naur lammps-11Jan08/src/fix_efield.h lammps-12Jan08/src/fix_efield.h --- lammps-11Jan08/src/fix_efield.h 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/fix_efield.h 2008-01-09 14:56:57.000000000 -0700 @@ -23,7 +23,7 @@ FixEfield(class LAMMPS *, int, char **); int setmask(); void init(); - void setup(); + void setup(int); void post_force(int); void post_force_respa(int, int, int); diff -Naur lammps-11Jan08/src/fix_enforce2d.cpp lammps-12Jan08/src/fix_enforce2d.cpp --- lammps-11Jan08/src/fix_enforce2d.cpp 2007-06-22 10:59:17.000000000 -0600 +++ lammps-12Jan08/src/fix_enforce2d.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -41,15 +41,15 @@ /* ---------------------------------------------------------------------- */ -void FixEnforce2D::setup() +void FixEnforce2D::setup(int vflag) { if (strcmp(update->integrate_style,"verlet") == 0) - post_force(1); + post_force(vflag); else { int nlevels_respa = ((Respa *) update->integrate)->nlevels; for (int ilevel = 0; ilevel < nlevels_respa; ilevel++) { ((Respa *) update->integrate)->copy_flevel_f(ilevel); - post_force_respa(1,ilevel,0); + post_force_respa(vflag,ilevel,0); ((Respa *) update->integrate)->copy_f_flevel(ilevel); } } @@ -57,9 +57,9 @@ /* ---------------------------------------------------------------------- */ -void FixEnforce2D::min_setup() +void FixEnforce2D::min_setup(int vflag) { - post_force(1); + post_force(vflag); } /* ---------------------------------------------------------------------- */ diff -Naur lammps-11Jan08/src/fix_enforce2d.h lammps-12Jan08/src/fix_enforce2d.h --- lammps-11Jan08/src/fix_enforce2d.h 2007-04-13 09:23:45.000000000 -0600 +++ lammps-12Jan08/src/fix_enforce2d.h 2008-01-09 14:56:57.000000000 -0700 @@ -22,8 +22,8 @@ public: FixEnforce2D(class LAMMPS *, int, char **); int setmask(); - void setup(); - void min_setup(); + void setup(int); + void min_setup(int); void post_force(int); void post_force_respa(int, int, int); void min_post_force(int); diff -Naur lammps-11Jan08/src/fix_gravity.cpp lammps-12Jan08/src/fix_gravity.cpp --- lammps-11Jan08/src/fix_gravity.cpp 2007-07-09 09:17:37.000000000 -0600 +++ lammps-12Jan08/src/fix_gravity.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -111,9 +111,9 @@ /* ---------------------------------------------------------------------- */ -void FixGravity::setup() +void FixGravity::setup(int vflag) { - post_force(1); + post_force(vflag); } /* ---------------------------------------------------------------------- */ diff -Naur lammps-11Jan08/src/fix_gravity.h lammps-12Jan08/src/fix_gravity.h --- lammps-11Jan08/src/fix_gravity.h 2007-07-09 09:17:37.000000000 -0600 +++ lammps-12Jan08/src/fix_gravity.h 2008-01-09 14:56:57.000000000 -0700 @@ -25,7 +25,7 @@ FixGravity(class LAMMPS *, int, char **); int setmask(); void init(); - void setup(); + void setup(int); void post_force(int); private: diff -Naur lammps-11Jan08/src/fix_gyration.cpp lammps-12Jan08/src/fix_gyration.cpp --- lammps-11Jan08/src/fix_gyration.cpp 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/fix_gyration.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -72,7 +72,7 @@ /* ---------------------------------------------------------------------- */ -void FixGyration::setup() +void FixGyration::setup(int vflag) { if (first) end_of_step(); first = 0; diff -Naur lammps-11Jan08/src/fix_gyration.h lammps-12Jan08/src/fix_gyration.h --- lammps-11Jan08/src/fix_gyration.h 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/fix_gyration.h 2008-01-09 14:56:57.000000000 -0700 @@ -25,7 +25,7 @@ ~FixGyration(); int setmask(); void init(); - void setup(); + void setup(int); void end_of_step(); private: diff -Naur lammps-11Jan08/src/fix_indent.cpp lammps-12Jan08/src/fix_indent.cpp --- lammps-11Jan08/src/fix_indent.cpp 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix_indent.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -131,22 +131,22 @@ /* ---------------------------------------------------------------------- */ -void FixIndent::setup() +void FixIndent::setup(int vflag) { if (strcmp(update->integrate_style,"verlet") == 0) - post_force(1); + post_force(vflag); else { ((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1); - post_force_respa(1,nlevels_respa-1,0); + post_force_respa(vflag,nlevels_respa-1,0); ((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1); } } /* ---------------------------------------------------------------------- */ -void FixIndent::min_setup() +void FixIndent::min_setup(int vflag) { - post_force(1); + post_force(vflag); } /* ---------------------------------------------------------------------- */ diff -Naur lammps-11Jan08/src/fix_indent.h lammps-12Jan08/src/fix_indent.h --- lammps-11Jan08/src/fix_indent.h 2007-10-09 17:40:36.000000000 -0600 +++ lammps-12Jan08/src/fix_indent.h 2008-01-09 14:56:57.000000000 -0700 @@ -23,8 +23,8 @@ FixIndent(class LAMMPS *, int, char **); int setmask(); void init(); - void setup(); - void min_setup(); + void setup(int); + void min_setup(int); virtual void post_force(int); void post_force_respa(int, int, int); void min_post_force(int); diff -Naur lammps-11Jan08/src/fix_langevin.cpp lammps-12Jan08/src/fix_langevin.cpp --- lammps-11Jan08/src/fix_langevin.cpp 2007-12-18 09:42:57.000000000 -0700 +++ lammps-12Jan08/src/fix_langevin.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -126,13 +126,13 @@ /* ---------------------------------------------------------------------- */ -void FixLangevin::setup() +void FixLangevin::setup(int vflag) { if (strcmp(update->integrate_style,"verlet") == 0) - post_force(1); + post_force(vflag); else { ((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1); - post_force_respa(1,nlevels_respa-1,0); + post_force_respa(vflag,nlevels_respa-1,0); ((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1); } } diff -Naur lammps-11Jan08/src/fix_langevin.h lammps-12Jan08/src/fix_langevin.h --- lammps-11Jan08/src/fix_langevin.h 2007-12-18 09:42:57.000000000 -0700 +++ lammps-12Jan08/src/fix_langevin.h 2008-01-09 14:56:57.000000000 -0700 @@ -24,7 +24,7 @@ ~FixLangevin(); int setmask(); void init(); - void setup(); + void setup(int); void post_force(int); void post_force_respa(int, int, int); void reset_target(double); diff -Naur lammps-11Jan08/src/fix_line_force.cpp lammps-12Jan08/src/fix_line_force.cpp --- lammps-11Jan08/src/fix_line_force.cpp 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/fix_line_force.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -45,15 +45,15 @@ /* ---------------------------------------------------------------------- */ -void FixLineForce::setup() +void FixLineForce::setup(int vflag) { if (strcmp(update->integrate_style,"verlet") == 0) - post_force(1); + post_force(vflag); else { int nlevels_respa = ((Respa *) update->integrate)->nlevels; for (int ilevel = 0; ilevel < nlevels_respa; ilevel++) { ((Respa *) update->integrate)->copy_flevel_f(ilevel); - post_force_respa(1,ilevel,0); + post_force_respa(vflag,ilevel,0); ((Respa *) update->integrate)->copy_f_flevel(ilevel); } } @@ -61,9 +61,9 @@ /* ---------------------------------------------------------------------- */ -void FixLineForce::min_setup() +void FixLineForce::min_setup(int vflag) { - post_force(1); + post_force(vflag); } /* ---------------------------------------------------------------------- */ diff -Naur lammps-11Jan08/src/fix_line_force.h lammps-12Jan08/src/fix_line_force.h --- lammps-11Jan08/src/fix_line_force.h 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/fix_line_force.h 2008-01-09 14:56:57.000000000 -0700 @@ -22,8 +22,8 @@ public: FixLineForce(class LAMMPS *, int, char **); int setmask(); - void setup(); - void min_setup(); + void setup(int); + void min_setup(int); void post_force(int); void post_force_respa(int, int, int); void min_post_force(int); diff -Naur lammps-11Jan08/src/fix_msd.cpp lammps-12Jan08/src/fix_msd.cpp --- lammps-11Jan08/src/fix_msd.cpp 2007-12-06 17:11:14.000000000 -0700 +++ lammps-12Jan08/src/fix_msd.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -123,7 +123,7 @@ /* ---------------------------------------------------------------------- */ -void FixMSD::setup() +void FixMSD::setup(int vflag) { if (first) end_of_step(); first = 0; diff -Naur lammps-11Jan08/src/fix_msd.h lammps-12Jan08/src/fix_msd.h --- lammps-11Jan08/src/fix_msd.h 2007-10-04 11:57:04.000000000 -0600 +++ lammps-12Jan08/src/fix_msd.h 2008-01-09 14:56:57.000000000 -0700 @@ -25,7 +25,7 @@ ~FixMSD(); int setmask(); void init(); - void setup(); + void setup(int); void end_of_step(); double memory_usage(); diff -Naur lammps-11Jan08/src/fix_nph.cpp lammps-12Jan08/src/fix_nph.cpp --- lammps-11Jan08/src/fix_nph.cpp 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix_nph.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -306,7 +306,7 @@ compute T,P before integrator starts ------------------------------------------------------------------------- */ -void FixNPH::setup() +void FixNPH::setup(int vflag) { p_target[0] = p_start[0]; // used by compute_scalar() p_target[1] = p_start[1]; @@ -330,7 +330,7 @@ 1st half of Verlet update ------------------------------------------------------------------------- */ -void FixNPH::initial_integrate() +void FixNPH::initial_integrate(int vflag) { int i; @@ -455,7 +455,7 @@ /* ---------------------------------------------------------------------- */ -void FixNPH::initial_integrate_respa(int ilevel, int flag) +void FixNPH::initial_integrate_respa(int vflag, int ilevel, int flag) { // if flag = 1, then is 2nd call at outermost level from rRESPA // perform 2nd half of box remap on own + ghost atoms and return diff -Naur lammps-11Jan08/src/fix_nph.h lammps-12Jan08/src/fix_nph.h --- lammps-11Jan08/src/fix_nph.h 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix_nph.h 2008-01-09 14:56:57.000000000 -0700 @@ -24,10 +24,10 @@ ~FixNPH(); int setmask(); void init(); - void setup(); - void initial_integrate(); + void setup(int); + void initial_integrate(int); void final_integrate(); - void initial_integrate_respa(int,int); + void initial_integrate_respa(int, int, int); void final_integrate_respa(int); double compute_scalar(); void write_restart(FILE *); diff -Naur lammps-11Jan08/src/fix_npt.cpp lammps-12Jan08/src/fix_npt.cpp --- lammps-11Jan08/src/fix_npt.cpp 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix_npt.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -307,7 +307,7 @@ compute T,P before integrator starts ------------------------------------------------------------------------- */ -void FixNPT::setup() +void FixNPT::setup(int vflag) { t_target = t_start; // used by compute_scalar() p_target[0] = p_start[0]; @@ -332,7 +332,7 @@ 1st half of Verlet update ------------------------------------------------------------------------- */ -void FixNPT::initial_integrate() +void FixNPT::initial_integrate(int vflag) { int i; @@ -471,7 +471,7 @@ /* ---------------------------------------------------------------------- */ -void FixNPT::initial_integrate_respa(int ilevel, int flag) +void FixNPT::initial_integrate_respa(int vflag, int ilevel, int flag) { // if flag = 1, then is 2nd call at outermost level from rRESPA // perform 2nd half of box remap on own + ghost atoms and return diff -Naur lammps-11Jan08/src/fix_npt.h lammps-12Jan08/src/fix_npt.h --- lammps-11Jan08/src/fix_npt.h 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix_npt.h 2008-01-09 14:56:57.000000000 -0700 @@ -24,10 +24,10 @@ virtual ~FixNPT(); int setmask(); void init(); - void setup(); - virtual void initial_integrate(); + void setup(int); + void initial_integrate(int); virtual void final_integrate(); - void initial_integrate_respa(int, int); + void initial_integrate_respa(int, int, int); void final_integrate_respa(int); double compute_scalar(); void write_restart(FILE *); diff -Naur lammps-11Jan08/src/fix_nve.cpp lammps-12Jan08/src/fix_nve.cpp --- lammps-11Jan08/src/fix_nve.cpp 2007-10-10 16:22:16.000000000 -0600 +++ lammps-12Jan08/src/fix_nve.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -58,7 +58,7 @@ allow for both per-type and per-atom mass ------------------------------------------------------------------------- */ -void FixNVE::initial_integrate() +void FixNVE::initial_integrate(int vflag) { double dtfm; @@ -137,14 +137,14 @@ /* ---------------------------------------------------------------------- */ -void FixNVE::initial_integrate_respa(int ilevel, int flag) +void FixNVE::initial_integrate_respa(int vflag, int ilevel, int flag) { if (flag) return; // only used by NPT,NPH dtv = step_respa[ilevel]; dtf = 0.5 * step_respa[ilevel] * force->ftm2v; - if (ilevel == 0) initial_integrate(); + if (ilevel == 0) initial_integrate(vflag); else final_integrate(); } diff -Naur lammps-11Jan08/src/fix_nve.h lammps-12Jan08/src/fix_nve.h --- lammps-11Jan08/src/fix_nve.h 2007-10-10 16:22:16.000000000 -0600 +++ lammps-12Jan08/src/fix_nve.h 2008-01-09 14:56:57.000000000 -0700 @@ -23,9 +23,9 @@ FixNVE(class LAMMPS *, int, char **); int setmask(); virtual void init(); - virtual void initial_integrate(); + virtual void initial_integrate(int); virtual void final_integrate(); - void initial_integrate_respa(int, int); + void initial_integrate_respa(int, int, int); void final_integrate_respa(int); void reset_dt(); diff -Naur lammps-11Jan08/src/fix_nve_limit.cpp lammps-12Jan08/src/fix_nve_limit.cpp --- lammps-11Jan08/src/fix_nve_limit.cpp 2008-01-02 17:30:07.000000000 -0700 +++ lammps-12Jan08/src/fix_nve_limit.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -67,7 +67,7 @@ allow for both per-type and per-atom mass ------------------------------------------------------------------------- */ -void FixNVELimit::initial_integrate() +void FixNVELimit::initial_integrate(int vflag) { double dtfm,vsq,scale; @@ -184,14 +184,14 @@ /* ---------------------------------------------------------------------- */ -void FixNVELimit::initial_integrate_respa(int ilevel, int flag) +void FixNVELimit::initial_integrate_respa(int vflag, int ilevel, int flag) { if (flag) return; // only used by NPT,NPH dtv = step_respa[ilevel]; dtf = 0.5 * step_respa[ilevel] * force->ftm2v; - if (ilevel == 0) initial_integrate(); + if (ilevel == 0) initial_integrate(vflag); else final_integrate(); } diff -Naur lammps-11Jan08/src/fix_nve_limit.h lammps-12Jan08/src/fix_nve_limit.h --- lammps-11Jan08/src/fix_nve_limit.h 2008-01-02 17:30:07.000000000 -0700 +++ lammps-12Jan08/src/fix_nve_limit.h 2008-01-09 14:56:57.000000000 -0700 @@ -23,9 +23,9 @@ FixNVELimit(class LAMMPS *, int, char **); int setmask(); void init(); - void initial_integrate(); + void initial_integrate(int); void final_integrate(); - void initial_integrate_respa(int, int); + void initial_integrate_respa(int, int, int); void final_integrate_respa(int); void reset_dt(); double compute_scalar(); diff -Naur lammps-11Jan08/src/fix_nve_noforce.cpp lammps-12Jan08/src/fix_nve_noforce.cpp --- lammps-11Jan08/src/fix_nve_noforce.cpp 2007-10-10 16:22:16.000000000 -0600 +++ lammps-12Jan08/src/fix_nve_noforce.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -51,7 +51,7 @@ /* ---------------------------------------------------------------------- */ -void FixNVENoforce::initial_integrate() +void FixNVENoforce::initial_integrate(int vflag) { double **x = atom->x; double **v = atom->v; @@ -69,13 +69,13 @@ /* ---------------------------------------------------------------------- */ -void FixNVENoforce::initial_integrate_respa(int ilevel, int flag) +void FixNVENoforce::initial_integrate_respa(int vflag, int ilevel, int flag) { if (flag) return; // only used by NPT,NPH dtv = step_respa[ilevel]; - if (ilevel == 0) initial_integrate(); + if (ilevel == 0) initial_integrate(vflag); } /* ---------------------------------------------------------------------- */ diff -Naur lammps-11Jan08/src/fix_nve_noforce.h lammps-12Jan08/src/fix_nve_noforce.h --- lammps-11Jan08/src/fix_nve_noforce.h 2007-10-10 16:22:16.000000000 -0600 +++ lammps-12Jan08/src/fix_nve_noforce.h 2008-01-09 14:56:57.000000000 -0700 @@ -23,8 +23,8 @@ FixNVENoforce(class LAMMPS *, int, char **); int setmask(); void init(); - void initial_integrate(); - void initial_integrate_respa(int, int); + void initial_integrate(int); + void initial_integrate_respa(int, int, int); void reset_dt(); private: diff -Naur lammps-11Jan08/src/fix_nvt.cpp lammps-12Jan08/src/fix_nvt.cpp --- lammps-11Jan08/src/fix_nvt.cpp 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix_nvt.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -134,7 +134,7 @@ /* ---------------------------------------------------------------------- */ -void FixNVT::setup() +void FixNVT::setup(int vflag) { t_target = t_start; // used by compute_scalar() t_current = temperature->compute_scalar(); @@ -142,7 +142,7 @@ /* ---------------------------------------------------------------------- */ -void FixNVT::initial_integrate() +void FixNVT::initial_integrate(int vflag) { double dtfm; @@ -218,7 +218,7 @@ /* ---------------------------------------------------------------------- */ -void FixNVT::initial_integrate_respa(int ilevel, int flag) +void FixNVT::initial_integrate_respa(int vflag, int ilevel, int flag) { if (flag) return; // only used by NPT,NPH diff -Naur lammps-11Jan08/src/fix_nvt.h lammps-12Jan08/src/fix_nvt.h --- lammps-11Jan08/src/fix_nvt.h 2007-10-10 16:22:16.000000000 -0600 +++ lammps-12Jan08/src/fix_nvt.h 2008-01-09 14:56:57.000000000 -0700 @@ -24,10 +24,10 @@ virtual ~FixNVT(); int setmask(); void init(); - void setup(); - virtual void initial_integrate(); + void setup(int); + virtual void initial_integrate(int); virtual void final_integrate(); - virtual void initial_integrate_respa(int,int); + virtual void initial_integrate_respa(int, int, int); void final_integrate_respa(int); double compute_scalar(); void write_restart(FILE *); diff -Naur lammps-11Jan08/src/fix_nvt_sllod.cpp lammps-12Jan08/src/fix_nvt_sllod.cpp --- lammps-11Jan08/src/fix_nvt_sllod.cpp 2007-06-22 17:41:35.000000000 -0600 +++ lammps-12Jan08/src/fix_nvt_sllod.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -62,7 +62,7 @@ /* ---------------------------------------------------------------------- */ -void FixNVTSlodd::initial_integrate() +void FixNVTSlodd::initial_integrate(int vflag) { double dtfm; @@ -191,7 +191,7 @@ /* ---------------------------------------------------------------------- */ -void FixNVTSlodd::initial_integrate_respa(int ilevel, int flag) +void FixNVTSlodd::initial_integrate_respa(int vflag, int ilevel, int flag) { if (flag) return; // only used by NPT,NPH diff -Naur lammps-11Jan08/src/fix_nvt_sllod.h lammps-12Jan08/src/fix_nvt_sllod.h --- lammps-11Jan08/src/fix_nvt_sllod.h 2007-06-20 07:32:19.000000000 -0600 +++ lammps-12Jan08/src/fix_nvt_sllod.h 2008-01-09 14:56:57.000000000 -0700 @@ -23,9 +23,9 @@ FixNVTSlodd(class LAMMPS *, int, char **); ~FixNVTSlodd() {} void init(); - void initial_integrate(); + void initial_integrate(int); void final_integrate(); - void initial_integrate_respa(int,int); + void initial_integrate_respa(int, int, int); }; } diff -Naur lammps-11Jan08/src/fix_orient_fcc.cpp lammps-12Jan08/src/fix_orient_fcc.cpp --- lammps-11Jan08/src/fix_orient_fcc.cpp 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix_orient_fcc.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -198,13 +198,13 @@ /* ---------------------------------------------------------------------- */ -void FixOrientFCC::setup() +void FixOrientFCC::setup(int vflag) { if (strcmp(update->integrate_style,"verlet") == 0) - post_force(1); + post_force(vflag); else { ((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1); - post_force_respa(1,nlevels_respa-1,0); + post_force_respa(vflag,nlevels_respa-1,0); ((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1); } } diff -Naur lammps-11Jan08/src/fix_orient_fcc.h lammps-12Jan08/src/fix_orient_fcc.h --- lammps-11Jan08/src/fix_orient_fcc.h 2007-10-09 11:20:33.000000000 -0600 +++ lammps-12Jan08/src/fix_orient_fcc.h 2008-01-09 14:56:57.000000000 -0700 @@ -42,7 +42,7 @@ int setmask(); void init(); void init_list(int, class NeighList *); - void setup(); + void setup(int); void post_force(int); void post_force_respa(int, int, int); double compute_scalar(); diff -Naur lammps-11Jan08/src/fix_plane_force.cpp lammps-12Jan08/src/fix_plane_force.cpp --- lammps-11Jan08/src/fix_plane_force.cpp 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/fix_plane_force.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -45,15 +45,15 @@ /* ---------------------------------------------------------------------- */ -void FixPlaneForce::setup() +void FixPlaneForce::setup(int vflag) { if (strcmp(update->integrate_style,"verlet") == 0) - post_force(1); + post_force(vflag); else { int nlevels_respa = ((Respa *) update->integrate)->nlevels; for (int ilevel = 0; ilevel < nlevels_respa; ilevel++) { ((Respa *) update->integrate)->copy_flevel_f(ilevel); - post_force_respa(1,ilevel,0); + post_force_respa(vflag,ilevel,0); ((Respa *) update->integrate)->copy_f_flevel(ilevel); } } @@ -61,9 +61,9 @@ /* ---------------------------------------------------------------------- */ -void FixPlaneForce::min_setup() +void FixPlaneForce::min_setup(int vflag) { - post_force(1); + post_force(vflag); } /* ---------------------------------------------------------------------- */ diff -Naur lammps-11Jan08/src/fix_plane_force.h lammps-12Jan08/src/fix_plane_force.h --- lammps-11Jan08/src/fix_plane_force.h 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/fix_plane_force.h 2008-01-09 14:56:57.000000000 -0700 @@ -22,8 +22,8 @@ public: FixPlaneForce(class LAMMPS *, int, char **); int setmask(); - void setup(); - void min_setup(); + void setup(int); + void min_setup(int); void post_force(int); void post_force_respa(int, int, int); void min_post_force(int); diff -Naur lammps-11Jan08/src/fix_rdf.cpp lammps-12Jan08/src/fix_rdf.cpp --- lammps-11Jan08/src/fix_rdf.cpp 2007-12-05 12:10:29.000000000 -0700 +++ lammps-12Jan08/src/fix_rdf.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -161,7 +161,7 @@ /* ---------------------------------------------------------------------- */ -void FixRDF::setup() +void FixRDF::setup(int vflag) { if (first) end_of_step(); first = 0; diff -Naur lammps-11Jan08/src/fix_rdf.h lammps-12Jan08/src/fix_rdf.h --- lammps-11Jan08/src/fix_rdf.h 2007-10-03 10:22:30.000000000 -0600 +++ lammps-12Jan08/src/fix_rdf.h 2008-01-09 14:56:57.000000000 -0700 @@ -26,7 +26,7 @@ int setmask(); void init(); void init_list(int, class NeighList *); - void setup(); + void setup(int); void end_of_step(); private: diff -Naur lammps-11Jan08/src/fix_recenter.cpp lammps-12Jan08/src/fix_recenter.cpp --- lammps-11Jan08/src/fix_recenter.cpp 2007-10-11 08:17:13.000000000 -0600 +++ lammps-12Jan08/src/fix_recenter.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -132,7 +132,7 @@ /* ---------------------------------------------------------------------- */ -void FixRecenter::initial_integrate() +void FixRecenter::initial_integrate(int vflag) { // target COM // bounding box around domain works for both orthogonal and triclinic diff -Naur lammps-11Jan08/src/fix_recenter.h lammps-12Jan08/src/fix_recenter.h --- lammps-11Jan08/src/fix_recenter.h 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/fix_recenter.h 2008-01-09 14:56:57.000000000 -0700 @@ -23,7 +23,7 @@ FixRecenter(class LAMMPS *, int, char **); int setmask(); void init(); - void initial_integrate(); + void initial_integrate(int); private: int group2bit,scaleflag; diff -Naur lammps-11Jan08/src/fix_rigid.cpp lammps-12Jan08/src/fix_rigid.cpp --- lammps-11Jan08/src/fix_rigid.cpp 2007-11-05 13:49:27.000000000 -0700 +++ lammps-12Jan08/src/fix_rigid.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -219,10 +219,6 @@ if (screen) fprintf(screen,"%d rigid bodies with %d atoms\n",nbody,nsum); if (logfile) fprintf(logfile,"%d rigid bodies with %d atoms\n",nbody,nsum); } - - // zero fix_rigid virial in case pressure uses it before 1st fix_rigid call - - for (int n = 0; n < 6; n++) virial[n] = 0.0; } /* ---------------------------------------------------------------------- */ @@ -560,9 +556,9 @@ /* ---------------------------------------------------------------------- */ -void FixRigid::setup() +void FixRigid::setup(int vflag) { - int i,ibody; + int i,n,ibody; // vcm = velocity of center-of-mass of each rigid body // fcm = force on center-of-mass of each rigid body @@ -660,21 +656,32 @@ torque[ibody][2] = all[ibody][5]; } + // virial setup before call to set_v + + if (vflag) v_setup(vflag); + else evflag = 0; + // set velocities from angmom & omega - // guestimate virial as 2x the set_v contribution for (ibody = 0; ibody < nbody; ibody++) omega_from_mq(angmom[ibody],ex_space[ibody],ey_space[ibody], ez_space[ibody],inertia[ibody],omega[ibody]); + set_v(); + + // guestimate virial as 2x the set_v contribution - for (int n = 0; n < 6; n++) virial[n] = 0.0; - set_v(1); - for (int n = 0; n < 6; n++) virial[n] *= 2.0; + if (vflag_global) + for (n = 0; n < 6; n++) virial[n] *= 2.0; + if (vflag_atom) { + for (i = 0; i < nlocal; i++) + for (n = 0; n < 6; n++) + vatom[i][n] *= 2.0; + } } /* ---------------------------------------------------------------------- */ -void FixRigid::initial_integrate() +void FixRigid::initial_integrate(int vflag) { double dtfm; @@ -708,12 +715,15 @@ ex_space[ibody],ey_space[ibody],ez_space[ibody]); } + // virial setup before call to set_xv + + if (vflag) v_setup(vflag); + else evflag = 0; + // set coords and velocities if atoms in rigid bodies // from quarternion and omega - int vflag = 0; - if (pressure_flag || output->next_thermo == update->ntimestep) vflag = 1; - set_xv(vflag); + set_xv(); } /* ---------------------------------------------------------------------- */ @@ -862,19 +872,18 @@ } // set velocities from angmom & omega - + // virial is already setup from initial_integrate + for (ibody = 0; ibody < nbody; ibody++) omega_from_mq(angmom[ibody],ex_space[ibody],ey_space[ibody], ez_space[ibody],inertia[ibody],omega[ibody]); - int vflag = 0; - if (pressure_flag || output->next_thermo == update->ntimestep) vflag = 1; - set_v(vflag); + set_v(); } /* ---------------------------------------------------------------------- */ -void FixRigid::initial_integrate_respa(int ilevel, int flag) +void FixRigid::initial_integrate_respa(int vflag, int ilevel, int flag) { if (flag) return; // only used by NPT,NPH @@ -882,7 +891,7 @@ dtf = 0.5 * step_respa[ilevel] * force->ftm2v; dtq = 0.5 * step_respa[ilevel]; - if (ilevel == 0) initial_integrate(); + if (ilevel == 0) initial_integrate(vflag); else final_integrate(); } @@ -1220,12 +1229,13 @@ v = Vcm + (W cross (x - Xcm)) ------------------------------------------------------------------------- */ -void FixRigid::set_xv(int vflag) +void FixRigid::set_xv() { int ibody; int xbox,ybox,zbox; - double vold0,vold1,vold2,fc0,fc1,fc2,massone,x0,x1,x2; + double x0,x1,x2,v0,v1,v2,fc0,fc1,fc2,massone; double xy,xz,yz; + double vr[6]; int *image = atom->image; double **x = atom->x; @@ -1246,10 +1256,6 @@ double **f = atom->f; int *type = atom->type; - // zero out fix_rigid virial - - if (vflag) for (int n = 0; n < 6; n++) virial[n] = 0.0; - for (int i = 0; i < nlocal; i++) { if (body[i] < 0) continue; ibody = body[i]; @@ -1258,16 +1264,21 @@ ybox = (image[i] >> 10 & 1023) - 512; zbox = (image[i] >> 20) - 512; - // save old positions and velocities for virial contribution + // save old positions and velocities for virial - if (vflag) { - x0 = x[i][0] + xbox*xprd; - x1 = x[i][1] + ybox*yprd; - x2 = x[i][2] + zbox*zprd; - - vold0 = v[i][0]; - vold1 = v[i][1]; - vold2 = v[i][2]; + if (evflag) { + if (triclinic == 0) { + x0 = x[i][0] + xbox*xprd; + x1 = x[i][1] + ybox*yprd; + x2 = x[i][2] + zbox*zprd; + } else { + x0 = x[i][0] + xbox*xprd + ybox*xy + zbox*xz; + x1 = x[i][1] + ybox*yprd + zbox*yz; + x2 = x[i][2] + zbox*zprd; + } + v0 = v[i][0]; + v1 = v[i][1]; + v2 = v[i][2]; } // x = displacement from center-of-mass, based on body orientation @@ -1304,20 +1315,26 @@ x[i][2] += xcm[ibody][2] - zbox*zprd; } - // compute body constraint forces for virial + // virial = unwrapped coords dotted into body constraint force + // body constraint force = implied force due to v change minus f external + // assume f does not include forces internal to body + // 1/2 factor b/c final_integrate contributes other half + // assume per-atom contribution is due to constraint force on that atom - if (vflag) { + if (evflag) { massone = mass[type[i]]; - fc0 = massone*(v[i][0] - vold0)/dtf - f[i][0]; - fc1 = massone*(v[i][1] - vold1)/dtf - f[i][1]; - fc2 = massone*(v[i][2] - vold2)/dtf - f[i][2]; - - virial[0] += 0.5*fc0*x0; - virial[1] += 0.5*fc1*x1; - virial[2] += 0.5*fc2*x2; - virial[3] += 0.5*fc1*x0; - virial[4] += 0.5*fc2*x0; - virial[5] += 0.5*fc2*x1; + fc0 = massone*(v[i][0] - v0)/dtf - f[i][0]; + fc1 = massone*(v[i][1] - v1)/dtf - f[i][1]; + fc2 = massone*(v[i][2] - v2)/dtf - f[i][2]; + + vr[0] = 0.5*x0*fc0; + vr[1] = 0.5*x1*fc1; + vr[2] = 0.5*x2*fc2; + vr[3] = 0.5*x0*fc1; + vr[4] = 0.5*x0*fc2; + vr[5] = 0.5*x1*fc2; + + v_tally(1,&i,1.0,vr); } } } @@ -1327,22 +1344,22 @@ v = Vcm + (W cross (x - Xcm)) ------------------------------------------------------------------------- */ -void FixRigid::set_v(int vflag) +void FixRigid::set_v() { - double **v = atom->v; - int nlocal = atom->nlocal; - int ibody; + int xbox,ybox,zbox; double xunwrap,yunwrap,zunwrap,dx,dy,dz; - double vold0,vold1,vold2,fc0,fc1,fc2,massone; + double x0,x1,x2,v0,v1,v2,fc0,fc1,fc2,massone; double xy,xz,yz; + double vr[6]; double *mass = atom->mass; double **f = atom->f; + double **v = atom->v; double **x = atom->x; int *type = atom->type; int *image = atom->image; - int xbox,ybox,zbox; + int nlocal = atom->nlocal; double xprd = domain->xprd; double yprd = domain->yprd; @@ -1369,45 +1386,50 @@ // save old velocities for virial - if (vflag) { - vold0 = v[i][0]; - vold1 = v[i][1]; - vold2 = v[i][2]; + if (evflag) { + v0 = v[i][0]; + v1 = v[i][1]; + v2 = v[i][2]; } v[i][0] = omega[ibody][1]*dz - omega[ibody][2]*dy + vcm[ibody][0]; v[i][1] = omega[ibody][2]*dx - omega[ibody][0]*dz + vcm[ibody][1]; v[i][2] = omega[ibody][0]*dy - omega[ibody][1]*dx + vcm[ibody][2]; - // compute body constraint forces for virial - // use unwrapped atom positions + // virial = unwrapped coords dotted into body constraint force + // body constraint force = implied force due to v change minus f external + // assume f does not include forces internal to body + // 1/2 factor b/c initial_integrate contributes other half + // assume per-atom contribution is due to constraint force on that atom - if (vflag) { + if (evflag) { massone = mass[type[i]]; - fc0 = massone*(v[i][0] - vold0)/dtf - f[i][0]; - fc1 = massone*(v[i][1] - vold1)/dtf - f[i][1]; - fc2 = massone*(v[i][2] - vold2)/dtf - f[i][2]; + fc0 = massone*(v[i][0] - v0)/dtf - f[i][0]; + fc1 = massone*(v[i][1] - v1)/dtf - f[i][1]; + fc2 = massone*(v[i][2] - v2)/dtf - f[i][2]; xbox = (image[i] & 1023) - 512; ybox = (image[i] >> 10 & 1023) - 512; zbox = (image[i] >> 20) - 512; if (triclinic == 0) { - xunwrap = x[i][0] + xbox*xprd; - yunwrap = x[i][1] + ybox*yprd; - zunwrap = x[i][2] + zbox*zprd; + x0 = x[i][0] + xbox*xprd; + x1 = x[i][1] + ybox*yprd; + x2 = x[i][2] + zbox*zprd; } else { - xunwrap = x[i][0] + xbox*xprd + ybox*xy + zbox*xz; - yunwrap = x[i][1] + ybox*yprd + zbox*yz; - zunwrap = x[i][2] + zbox*zprd; + x0 = x[i][0] + xbox*xprd + ybox*xy + zbox*xz; + x1 = x[i][1] + ybox*yprd + zbox*yz; + x2 = x[i][2] + zbox*zprd; } - virial[0] += 0.5*fc0*xunwrap; - virial[1] += 0.5*fc1*yunwrap; - virial[2] += 0.5*fc2*zunwrap; - virial[3] += 0.5*fc1*xunwrap; - virial[4] += 0.5*fc2*xunwrap; - virial[5] += 0.5*fc2*yunwrap; + vr[0] = 0.5*x0*fc0; + vr[1] = 0.5*x1*fc1; + vr[2] = 0.5*x2*fc2; + vr[3] = 0.5*x0*fc1; + vr[4] = 0.5*x0*fc2; + vr[5] = 0.5*x1*fc2; + + v_tally(1,&i,1.0,vr); } } } @@ -1421,6 +1443,7 @@ int nmax = atom->nmax; double bytes = nmax * sizeof(int); bytes += nmax*3 * sizeof(double); + bytes += maxvatom*6 * sizeof(double); return bytes; } diff -Naur lammps-11Jan08/src/fix_rigid.h lammps-12Jan08/src/fix_rigid.h --- lammps-11Jan08/src/fix_rigid.h 2007-10-10 16:22:16.000000000 -0600 +++ lammps-12Jan08/src/fix_rigid.h 2008-01-09 14:56:57.000000000 -0700 @@ -24,10 +24,10 @@ ~FixRigid(); int setmask(); void init(); - void setup(); - void initial_integrate(); + void setup(int); + void initial_integrate(int); void final_integrate(); - void initial_integrate_respa(int, int); + void initial_integrate_respa(int, int, int); void final_integrate_respa(int); double memory_usage(); @@ -77,8 +77,8 @@ void omega_from_mq(double *, double *, double *, double *, double *, double *); void exyz_from_q(double *, double *, double *, double *); - void set_xv(int); - void set_v(int); + void set_xv(); + void set_v(); }; } diff -Naur lammps-11Jan08/src/fix_set_force.cpp lammps-12Jan08/src/fix_set_force.cpp --- lammps-11Jan08/src/fix_set_force.cpp 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix_set_force.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -66,23 +66,23 @@ /* ---------------------------------------------------------------------- */ -void FixSetForce::setup() +void FixSetForce::setup(int vflag) { if (strcmp(update->integrate_style,"verlet") == 0) - post_force(1); + post_force(vflag); else for (int ilevel = 0; ilevel < nlevels_respa; ilevel++) { ((Respa *) update->integrate)->copy_flevel_f(ilevel); - post_force_respa(1,ilevel,0); + post_force_respa(vflag,ilevel,0); ((Respa *) update->integrate)->copy_f_flevel(ilevel); } } /* ---------------------------------------------------------------------- */ -void FixSetForce::min_setup() +void FixSetForce::min_setup(int vflag) { - post_force(1); + post_force(vflag); } /* ---------------------------------------------------------------------- */ diff -Naur lammps-11Jan08/src/fix_set_force.h lammps-12Jan08/src/fix_set_force.h --- lammps-11Jan08/src/fix_set_force.h 2007-10-09 11:20:33.000000000 -0600 +++ lammps-12Jan08/src/fix_set_force.h 2008-01-09 14:56:57.000000000 -0700 @@ -23,8 +23,8 @@ FixSetForce(class LAMMPS *, int, char **); int setmask(); void init(); - void setup(); - void min_setup(); + void setup(int); + void min_setup(int); void post_force(int); void post_force_respa(int, int, int); void min_post_force(int); diff -Naur lammps-11Jan08/src/fix_shake.cpp lammps-12Jan08/src/fix_shake.cpp --- lammps-11Jan08/src/fix_shake.cpp 2007-11-30 14:54:30.000000000 -0700 +++ lammps-12Jan08/src/fix_shake.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -379,7 +379,7 @@ SHAKE as pre-integrator constraint ------------------------------------------------------------------------- */ -void FixShake::setup() +void FixShake::setup(int vflag) { pre_neighbor(); @@ -398,14 +398,14 @@ if (strcmp(update->integrate_style,"verlet") == 0) { dtv = update->dt; dtfsq = 0.5 * update->dt * update->dt * force->ftm2v; - post_force(1); + post_force(vflag); dtfsq = update->dt * update->dt * force->ftm2v; } else { dtv = step_respa[0]; dtf_innerhalf = 0.5 * step_respa[0] * force->ftm2v; dtf_inner = dtf_innerhalf; ((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1); - post_force_respa(1,nlevels_respa-1,0); + post_force_respa(vflag,nlevels_respa-1,0); ((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1); dtf_inner = step_respa[0] * force->ftm2v; } @@ -490,7 +490,7 @@ compute the force adjustment for SHAKE constraint ------------------------------------------------------------------------- */ -void FixShake::post_force(int vflag_in) +void FixShake::post_force(int vflag) { if (update->ntimestep == next_output) stats(); @@ -502,10 +502,10 @@ if (nprocs > 1) comm->comm_fix(this); - // zero out SHAKE contribution to virial + // virial setup - vflag = vflag_in; - if (vflag) for (int n = 0; n < 6; n++) virial[n] = 0.0; + if (vflag) v_setup(vflag); + else evflag = 0; // loop over clusters @@ -1148,6 +1148,9 @@ void FixShake::shake2(int m) { + int nlist,list[2]; + double v[6]; + // local atom IDs and constraint distances int i0 = atom->map(shake_atom[m][0]); @@ -1218,18 +1221,19 @@ f[i1][2] -= lamda*r01[2]; } - if (vflag) { - int factor = 0; - if (i0 < nlocal) factor++; - if (i1 < nlocal) factor++; - double rfactor = 0.5 * factor; - - virial[0] += rfactor*lamda*r01[0]*r01[0]; - virial[1] += rfactor*lamda*r01[1]*r01[1]; - virial[2] += rfactor*lamda*r01[2]*r01[2]; - virial[3] += rfactor*lamda*r01[0]*r01[1]; - virial[4] += rfactor*lamda*r01[0]*r01[2]; - virial[5] += rfactor*lamda*r01[1]*r01[2]; + if (evflag) { + nlist = 0; + if (i0 < nlocal) list[nlist++] = i0; + if (i1 < nlocal) list[nlist++] = i1; + + v[0] = lamda*r01[0]*r01[0]; + v[1] = lamda*r01[1]*r01[1]; + v[2] = lamda*r01[2]*r01[2]; + v[3] = lamda*r01[0]*r01[1]; + v[4] = lamda*r01[0]*r01[2]; + v[5] = lamda*r01[1]*r01[2]; + + v_tally(nlist,list,2.0,v); } } @@ -1237,6 +1241,9 @@ void FixShake::shake3(int m) { + int nlist,list[3]; + double v[6]; + // local atom IDs and constraint distances int i0 = atom->map(shake_atom[m][0]); @@ -1371,26 +1378,20 @@ f[i2][2] -= lamda02*r02[2]; } - if (vflag) { - int factor = 0; - if (i0 < nlocal) factor++; - if (i1 < nlocal) factor++; - if (i2 < nlocal) factor++; - double rfactor = factor/3.0; - - virial[0] += rfactor*lamda01*r01[0]*r01[0]; - virial[1] += rfactor*lamda01*r01[1]*r01[1]; - virial[2] += rfactor*lamda01*r01[2]*r01[2]; - virial[3] += rfactor*lamda01*r01[0]*r01[1]; - virial[4] += rfactor*lamda01*r01[0]*r01[2]; - virial[5] += rfactor*lamda01*r01[1]*r01[2]; - - virial[0] += rfactor*lamda02*r02[0]*r02[0]; - virial[1] += rfactor*lamda02*r02[1]*r02[1]; - virial[2] += rfactor*lamda02*r02[2]*r02[2]; - virial[3] += rfactor*lamda02*r02[0]*r02[1]; - virial[4] += rfactor*lamda02*r02[0]*r02[2]; - virial[5] += rfactor*lamda02*r02[1]*r02[2]; + if (evflag) { + nlist = 0; + if (i0 < nlocal) list[nlist++] = i0; + if (i1 < nlocal) list[nlist++] = i1; + if (i2 < nlocal) list[nlist++] = i2; + + v[0] = lamda01*r01[0]*r01[0] + lamda02*r02[0]*r02[0]; + v[1] = lamda01*r01[1]*r01[1] + lamda02*r02[1]*r02[1]; + v[2] = lamda01*r01[2]*r01[2] + lamda02*r02[2]*r02[2]; + v[3] = lamda01*r01[0]*r01[1] + lamda02*r02[0]*r02[1]; + v[4] = lamda01*r01[0]*r01[2] + lamda02*r02[0]*r02[2]; + v[5] = lamda01*r01[1]*r01[2] + lamda02*r02[1]*r02[2]; + + v_tally(nlist,list,3.0,v); } } @@ -1398,6 +1399,9 @@ void FixShake::shake4(int m) { + int nlist,list[4]; + double v[6]; + // local atom IDs and constraint distances int i0 = atom->map(shake_atom[m][0]); @@ -1608,34 +1612,21 @@ f[i3][2] -= lamda03*r03[2]; } - if (vflag) { - int factor = 0; - if (i0 < nlocal) factor++; - if (i1 < nlocal) factor++; - if (i2 < nlocal) factor++; - if (i3 < nlocal) factor++; - double rfactor = 0.25*factor; - - virial[0] += rfactor*lamda01*r01[0]*r01[0]; - virial[1] += rfactor*lamda01*r01[1]*r01[1]; - virial[2] += rfactor*lamda01*r01[2]*r01[2]; - virial[3] += rfactor*lamda01*r01[0]*r01[1]; - virial[4] += rfactor*lamda01*r01[0]*r01[2]; - virial[5] += rfactor*lamda01*r01[1]*r01[2]; - - virial[0] += rfactor*lamda02*r02[0]*r02[0]; - virial[1] += rfactor*lamda02*r02[1]*r02[1]; - virial[2] += rfactor*lamda02*r02[2]*r02[2]; - virial[3] += rfactor*lamda02*r02[0]*r02[1]; - virial[4] += rfactor*lamda02*r02[0]*r02[2]; - virial[5] += rfactor*lamda02*r02[1]*r02[2]; - - virial[0] += rfactor*lamda03*r03[0]*r03[0]; - virial[1] += rfactor*lamda03*r03[1]*r03[1]; - virial[2] += rfactor*lamda03*r03[2]*r03[2]; - virial[3] += rfactor*lamda03*r03[0]*r03[1]; - virial[4] += rfactor*lamda03*r03[0]*r03[2]; - virial[5] += rfactor*lamda03*r03[1]*r03[2]; + if (evflag) { + nlist = 0; + if (i0 < nlocal) list[nlist++] = i0; + if (i1 < nlocal) list[nlist++] = i1; + if (i2 < nlocal) list[nlist++] = i2; + if (i3 < nlocal) list[nlist++] = i3; + + v[0] = lamda01*r01[0]*r01[0]+lamda02*r02[0]*r02[0]+lamda03*r03[0]*r03[0]; + v[1] = lamda01*r01[1]*r01[1]+lamda02*r02[1]*r02[1]+lamda03*r03[1]*r03[1]; + v[2] = lamda01*r01[2]*r01[2]+lamda02*r02[2]*r02[2]+lamda03*r03[2]*r03[2]; + v[3] = lamda01*r01[0]*r01[1]+lamda02*r02[0]*r02[1]+lamda03*r03[0]*r03[1]; + v[4] = lamda01*r01[0]*r01[2]+lamda02*r02[0]*r02[2]+lamda03*r03[0]*r03[2]; + v[5] = lamda01*r01[1]*r01[2]+lamda02*r02[1]*r02[2]+lamda03*r03[1]*r03[2]; + + v_tally(nlist,list,4.0,v); } } @@ -1643,6 +1634,9 @@ void FixShake::shake3angle(int m) { + int nlist,list[3]; + double v[6]; + // local atom IDs and constraint distances int i0 = atom->map(shake_atom[m][0]); @@ -1845,33 +1839,20 @@ f[i2][2] -= lamda02*r02[2] + lamda12*r12[2]; } - if (vflag) { - int factor = 0; - if (i0 < nlocal) factor++; - if (i1 < nlocal) factor++; - if (i2 < nlocal) factor++; - double rfactor = factor/3.0; - - virial[0] += rfactor*lamda01*r01[0]*r01[0]; - virial[1] += rfactor*lamda01*r01[1]*r01[1]; - virial[2] += rfactor*lamda01*r01[2]*r01[2]; - virial[3] += rfactor*lamda01*r01[0]*r01[1]; - virial[4] += rfactor*lamda01*r01[0]*r01[2]; - virial[5] += rfactor*lamda01*r01[1]*r01[2]; - - virial[0] += rfactor*lamda02*r02[0]*r02[0]; - virial[1] += rfactor*lamda02*r02[1]*r02[1]; - virial[2] += rfactor*lamda02*r02[2]*r02[2]; - virial[3] += rfactor*lamda02*r02[0]*r02[1]; - virial[4] += rfactor*lamda02*r02[0]*r02[2]; - virial[5] += rfactor*lamda02*r02[1]*r02[2]; - - virial[0] += rfactor*lamda12*r12[0]*r12[0]; - virial[1] += rfactor*lamda12*r12[1]*r12[1]; - virial[2] += rfactor*lamda12*r12[2]*r12[2]; - virial[3] += rfactor*lamda12*r12[0]*r12[1]; - virial[4] += rfactor*lamda12*r12[0]*r12[2]; - virial[5] += rfactor*lamda12*r12[1]*r12[2]; + if (evflag) { + nlist = 0; + if (i0 < nlocal) list[nlist++] = i0; + if (i1 < nlocal) list[nlist++] = i1; + if (i2 < nlocal) list[nlist++] = i2; + + v[0] = lamda01*r01[0]*r01[0]+lamda02*r02[0]*r02[0]+lamda12*r12[0]*r12[0]; + v[1] = lamda01*r01[1]*r01[1]+lamda02*r02[1]*r02[1]+lamda12*r12[1]*r12[1]; + v[2] = lamda01*r01[2]*r01[2]+lamda02*r02[2]*r02[2]+lamda12*r12[2]*r12[2]; + v[3] = lamda01*r01[0]*r01[1]+lamda02*r02[0]*r02[1]+lamda12*r12[0]*r12[1]; + v[4] = lamda01*r01[0]*r01[2]+lamda02*r02[0]*r02[2]+lamda12*r12[0]*r12[2]; + v[5] = lamda01*r01[1]*r01[2]+lamda02*r02[1]*r02[2]+lamda12*r12[1]*r12[2]; + + v_tally(nlist,list,3.0,v); } } @@ -2064,6 +2045,7 @@ bytes += nmax*4 * sizeof(int); bytes += nmax*3 * sizeof(int); bytes += nmax*3 * sizeof(double); + bytes += maxvatom*6 * sizeof(double); return bytes; } @@ -2199,7 +2181,7 @@ rRESPA updating of atom coords is done with full v, but only portions of f ------------------------------------------------------------------------- */ -void FixShake::post_force_respa(int vflag_in, int ilevel, int iloop) +void FixShake::post_force_respa(int vflag, int ilevel, int iloop) { // call stats only on outermost level @@ -2242,10 +2224,10 @@ if (nprocs > 1) comm->comm_fix(this); - // zero out SHAKE contribution to virial + // virial setup - vflag = vflag_in; - if (vflag) for (int n = 0; n < 6; n++) virial[n] = 0.0; + if (vflag) v_setup(vflag); + else evflag = 0; // loop over clusters diff -Naur lammps-11Jan08/src/fix_shake.h lammps-12Jan08/src/fix_shake.h --- lammps-11Jan08/src/fix_shake.h 2007-10-10 16:22:16.000000000 -0600 +++ lammps-12Jan08/src/fix_shake.h 2008-01-09 14:56:57.000000000 -0700 @@ -24,7 +24,7 @@ ~FixShake(); int setmask(); void init(); - void setup(); + void setup(int); void pre_neighbor(); void post_force(int); void post_force_respa(int, int, int); diff -Naur lammps-11Jan08/src/fix_spring.cpp lammps-12Jan08/src/fix_spring.cpp --- lammps-11Jan08/src/fix_spring.cpp 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix_spring.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -106,13 +106,13 @@ /* ---------------------------------------------------------------------- */ -void FixSpring::setup() +void FixSpring::setup(int vflag) { if (strcmp(update->integrate_style,"verlet") == 0) - post_force(1); + post_force(vflag); else { ((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1); - post_force_respa(1,nlevels_respa-1,0); + post_force_respa(vflag,nlevels_respa-1,0); ((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1); } } diff -Naur lammps-11Jan08/src/fix_spring.h lammps-12Jan08/src/fix_spring.h --- lammps-11Jan08/src/fix_spring.h 2007-11-13 16:03:16.000000000 -0700 +++ lammps-12Jan08/src/fix_spring.h 2008-01-09 14:56:57.000000000 -0700 @@ -23,7 +23,7 @@ FixSpring(class LAMMPS *, int, char **); int setmask(); void init(); - void setup(); + void setup(int); void post_force(int); void post_force_respa(int, int, int); double compute_vector(int); diff -Naur lammps-11Jan08/src/fix_spring_rg.cpp lammps-12Jan08/src/fix_spring_rg.cpp --- lammps-11Jan08/src/fix_spring_rg.cpp 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/fix_spring_rg.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -74,13 +74,13 @@ /* ---------------------------------------------------------------------- */ -void FixSpringRG::setup() +void FixSpringRG::setup(int vflag) { if (strcmp(update->integrate_style,"verlet") == 0) - post_force(1); + post_force(vflag); else { ((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1); - post_force_respa(1,nlevels_respa-1,0); + post_force_respa(vflag,nlevels_respa-1,0); ((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1); } } diff -Naur lammps-11Jan08/src/fix_spring_rg.h lammps-12Jan08/src/fix_spring_rg.h --- lammps-11Jan08/src/fix_spring_rg.h 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/fix_spring_rg.h 2008-01-09 14:56:57.000000000 -0700 @@ -23,7 +23,7 @@ FixSpringRG(class LAMMPS *, int, char **); int setmask(); void init(); - void setup(); + void setup(int); void post_force(int); void post_force_respa(int, int, int); diff -Naur lammps-11Jan08/src/fix_spring_self.cpp lammps-12Jan08/src/fix_spring_self.cpp --- lammps-11Jan08/src/fix_spring_self.cpp 2007-10-04 11:57:04.000000000 -0600 +++ lammps-12Jan08/src/fix_spring_self.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -105,13 +105,13 @@ /* ---------------------------------------------------------------------- */ -void FixSpringSelf::setup() +void FixSpringSelf::setup(int vflag) { if (strcmp(update->integrate_style,"verlet") == 0) - post_force(1); + post_force(vflag); else { ((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1); - post_force_respa(1,nlevels_respa-1,0); + post_force_respa(vflag,nlevels_respa-1,0); ((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1); } } diff -Naur lammps-11Jan08/src/fix_spring_self.h lammps-12Jan08/src/fix_spring_self.h --- lammps-11Jan08/src/fix_spring_self.h 2007-10-04 11:57:04.000000000 -0600 +++ lammps-12Jan08/src/fix_spring_self.h 2008-01-09 14:56:57.000000000 -0700 @@ -24,7 +24,7 @@ ~FixSpringSelf(); int setmask(); void init(); - void setup(); + void setup(int); void post_force(int); void post_force_respa(int, int, int); diff -Naur lammps-11Jan08/src/fix_tmd.cpp lammps-12Jan08/src/fix_tmd.cpp --- lammps-11Jan08/src/fix_tmd.cpp 2007-11-06 10:23:52.000000000 -0700 +++ lammps-12Jan08/src/fix_tmd.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -180,7 +180,7 @@ /* ---------------------------------------------------------------------- */ -void FixTMD::initial_integrate() +void FixTMD::initial_integrate(int vflag) { double a,b,c,d,e; double dx,dy,dz,dxkt,dykt,dzkt; @@ -321,14 +321,14 @@ /* ---------------------------------------------------------------------- */ -void FixTMD::initial_integrate_respa(int ilevel, int flag) +void FixTMD::initial_integrate_respa(int vflag, int ilevel, int flag) { if (flag) return; // only used by NPT,NPH dtv = step_respa[ilevel]; dtf = step_respa[ilevel] * force->ftm2v; - if (ilevel == 0) initial_integrate(); + if (ilevel == 0) initial_integrate(vflag); } /* ---------------------------------------------------------------------- diff -Naur lammps-11Jan08/src/fix_tmd.h lammps-12Jan08/src/fix_tmd.h --- lammps-11Jan08/src/fix_tmd.h 2007-10-10 16:22:16.000000000 -0600 +++ lammps-12Jan08/src/fix_tmd.h 2008-01-09 14:56:57.000000000 -0700 @@ -25,8 +25,8 @@ ~FixTMD(); int setmask(); void init(); - void initial_integrate(); - void initial_integrate_respa(int,int); + void initial_integrate(int); + void initial_integrate_respa(int, int, int); double memory_usage(); void grow_arrays(int); diff -Naur lammps-11Jan08/src/fix_viscous.cpp lammps-12Jan08/src/fix_viscous.cpp --- lammps-11Jan08/src/fix_viscous.cpp 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/fix_viscous.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -76,13 +76,13 @@ /* ---------------------------------------------------------------------- */ -void FixViscous::setup() +void FixViscous::setup(int vflag) { if (strcmp(update->integrate_style,"verlet") == 0) - post_force(1); + post_force(vflag); else { ((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1); - post_force_respa(1,nlevels_respa-1,0); + post_force_respa(vflag,nlevels_respa-1,0); ((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1); } } diff -Naur lammps-11Jan08/src/fix_viscous.h lammps-12Jan08/src/fix_viscous.h --- lammps-11Jan08/src/fix_viscous.h 2007-01-29 17:22:05.000000000 -0700 +++ lammps-12Jan08/src/fix_viscous.h 2008-01-09 14:56:57.000000000 -0700 @@ -24,7 +24,7 @@ ~FixViscous(); int setmask(); void init(); - void setup(); + void setup(int); void post_force(int); void post_force_respa(int, int, int); diff -Naur lammps-11Jan08/src/fix_wall_lj126.cpp lammps-12Jan08/src/fix_wall_lj126.cpp --- lammps-11Jan08/src/fix_wall_lj126.cpp 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix_wall_lj126.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -109,22 +109,22 @@ /* ---------------------------------------------------------------------- */ -void FixWallLJ126::setup() +void FixWallLJ126::setup(int vflag) { if (strcmp(update->integrate_style,"verlet") == 0) - post_force(1); + post_force(vflag); else { ((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1); - post_force_respa(1,nlevels_respa-1,0); + post_force_respa(vflag,nlevels_respa-1,0); ((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1); } } /* ---------------------------------------------------------------------- */ -void FixWallLJ126::min_setup() +void FixWallLJ126::min_setup(int vflag) { - post_force(1); + post_force(vflag); } /* ---------------------------------------------------------------------- */ diff -Naur lammps-11Jan08/src/fix_wall_lj126.h lammps-12Jan08/src/fix_wall_lj126.h --- lammps-11Jan08/src/fix_wall_lj126.h 2007-10-09 11:20:33.000000000 -0600 +++ lammps-12Jan08/src/fix_wall_lj126.h 2008-01-09 14:56:57.000000000 -0700 @@ -23,8 +23,8 @@ FixWallLJ126(class LAMMPS *, int, char **); int setmask(); void init(); - void setup(); - void min_setup(); + void setup(int); + void min_setup(int); void post_force(int); void post_force_respa(int, int, int); void min_post_force(int); diff -Naur lammps-11Jan08/src/fix_wall_lj93.cpp lammps-12Jan08/src/fix_wall_lj93.cpp --- lammps-11Jan08/src/fix_wall_lj93.cpp 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/fix_wall_lj93.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -106,22 +106,22 @@ /* ---------------------------------------------------------------------- */ -void FixWallLJ93::setup() +void FixWallLJ93::setup(int vflag) { if (strcmp(update->integrate_style,"verlet") == 0) - post_force(1); + post_force(vflag); else { ((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1); - post_force_respa(1,nlevels_respa-1,0); + post_force_respa(vflag,nlevels_respa-1,0); ((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1); } } /* ---------------------------------------------------------------------- */ -void FixWallLJ93::min_setup() +void FixWallLJ93::min_setup(int vflag) { - post_force(1); + post_force(vflag); } /* ---------------------------------------------------------------------- */ diff -Naur lammps-11Jan08/src/fix_wall_lj93.h lammps-12Jan08/src/fix_wall_lj93.h --- lammps-11Jan08/src/fix_wall_lj93.h 2007-10-09 11:20:33.000000000 -0600 +++ lammps-12Jan08/src/fix_wall_lj93.h 2008-01-09 14:56:57.000000000 -0700 @@ -24,8 +24,8 @@ ~FixWallLJ93() {} int setmask(); void init(); - void setup(); - void min_setup(); + void setup(int); + void min_setup(int); void post_force(int); void post_force_respa(int, int, int); void min_post_force(int); diff -Naur lammps-11Jan08/src/fix_wall_reflect.cpp lammps-12Jan08/src/fix_wall_reflect.cpp --- lammps-11Jan08/src/fix_wall_reflect.cpp 2007-03-15 17:38:38.000000000 -0600 +++ lammps-12Jan08/src/fix_wall_reflect.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -74,7 +74,7 @@ /* ---------------------------------------------------------------------- */ -void FixWallReflect::initial_integrate() +void FixWallReflect::initial_integrate(int vflag) { double xlo = domain->boxlo[0]; double xhi = domain->boxhi[0]; diff -Naur lammps-11Jan08/src/fix_wall_reflect.h lammps-12Jan08/src/fix_wall_reflect.h --- lammps-11Jan08/src/fix_wall_reflect.h 2007-02-19 11:02:36.000000000 -0700 +++ lammps-12Jan08/src/fix_wall_reflect.h 2008-01-09 14:56:57.000000000 -0700 @@ -23,7 +23,7 @@ FixWallReflect(class LAMMPS *, int, char **); int setmask(); void init(); - void initial_integrate(); + void initial_integrate(int); private: int xloflag,xhiflag,yloflag,yhiflag,zloflag,zhiflag; diff -Naur lammps-11Jan08/src/min_cg.cpp lammps-12Jan08/src/min_cg.cpp --- lammps-11Jan08/src/min_cg.cpp 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/min_cg.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -259,7 +259,7 @@ if (force->newton) comm->reverse_communicate(); - modify->setup(); + modify->setup(vflag); output->setup(1); } diff -Naur lammps-11Jan08/src/modify.cpp lammps-12Jan08/src/modify.cpp --- lammps-11Jan08/src/modify.cpp 2008-01-03 11:57:32.000000000 -0700 +++ lammps-12Jan08/src/modify.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -171,22 +171,22 @@ setup for run, calls setup() of all fixes ------------------------------------------------------------------------- */ -void Modify::setup() +void Modify::setup(int vflag) { if (update->whichflag == 0) - for (int i = 0; i < nfix; i++) fix[i]->setup(); + for (int i = 0; i < nfix; i++) fix[i]->setup(vflag); else - for (int i = 0; i < nfix; i++) fix[i]->min_setup(); + for (int i = 0; i < nfix; i++) fix[i]->min_setup(vflag); } /* ---------------------------------------------------------------------- 1st half of integrate call only for relevant fixes ------------------------------------------------------------------------- */ -void Modify::initial_integrate() +void Modify::initial_integrate(int vflag) { for (int i = 0; i < n_initial_integrate; i++) - fix[list_initial_integrate[i]]->initial_integrate(); + fix[list_initial_integrate[i]]->initial_integrate(vflag); } /* ---------------------------------------------------------------------- @@ -259,10 +259,11 @@ 1st half of rRESPA integrate call only for relevant fixes ------------------------------------------------------------------------- */ -void Modify::initial_integrate_respa(int ilevel, int flag) +void Modify::initial_integrate_respa(int vflag, int ilevel, int flag) { for (int i = 0; i < n_initial_integrate_respa; i++) - fix[list_initial_integrate_respa[i]]->initial_integrate_respa(ilevel,flag); + fix[list_initial_integrate_respa[i]]-> + initial_integrate_respa(vflag,ilevel,flag); } /* ---------------------------------------------------------------------- diff -Naur lammps-11Jan08/src/modify.h lammps-12Jan08/src/modify.h --- lammps-11Jan08/src/modify.h 2008-01-02 12:24:46.000000000 -0700 +++ lammps-12Jan08/src/modify.h 2008-01-09 14:56:57.000000000 -0700 @@ -37,8 +37,8 @@ Modify(class LAMMPS *); ~Modify(); void init(); - void setup(); - void initial_integrate(); + void setup(int); + void initial_integrate(int); void pre_decide(); void pre_exchange(); void pre_neighbor(); @@ -47,7 +47,7 @@ void end_of_step(); double thermo_energy(); - void initial_integrate_respa(int,int); + void initial_integrate_respa(int,int,int); void post_force_respa(int,int,int); void final_integrate_respa(int); diff -Naur lammps-11Jan08/src/respa.cpp lammps-12Jan08/src/respa.cpp --- lammps-11Jan08/src/respa.cpp 2007-11-30 14:54:30.000000000 -0700 +++ lammps-12Jan08/src/respa.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -357,7 +357,7 @@ copy_f_flevel(ilevel); } - modify->setup(); + modify->setup(vflag); sum_flevel_f(); output->setup(1); } @@ -373,7 +373,6 @@ for (int i = 0; i < n; i++) { ntimestep = ++update->ntimestep; - ev_set(ntimestep); recurse(nlevels-1); @@ -415,7 +414,7 @@ for (int iloop = 0; iloop < loop[ilevel]; iloop++) { - modify->initial_integrate_respa(ilevel,0); + modify->initial_integrate_respa(vflag,ilevel,0); if (ilevel) recurse(ilevel-1); @@ -427,7 +426,7 @@ // at middle levels, do nothing if (ilevel == nlevels-1) { - modify->initial_integrate_respa(ilevel,1); + modify->initial_integrate_respa(vflag,ilevel,1); int nflag = neighbor->decide(); if (nflag) { if (modify->n_pre_exchange) modify->pre_exchange(); diff -Naur lammps-11Jan08/src/verlet.cpp lammps-12Jan08/src/verlet.cpp --- lammps-11Jan08/src/verlet.cpp 2007-11-30 14:54:30.000000000 -0700 +++ lammps-12Jan08/src/verlet.cpp 2008-01-09 14:56:57.000000000 -0700 @@ -117,7 +117,7 @@ if (force->newton) comm->reverse_communicate(); - modify->setup(); + modify->setup(vflag); output->setup(1); } @@ -132,10 +132,11 @@ for (int i = 0; i < n; i++) { ntimestep = ++update->ntimestep; + ev_set(ntimestep); // initial time integration - modify->initial_integrate(); + modify->initial_integrate(vflag); // regular communication vs neighbor list rebuild @@ -166,7 +167,6 @@ // force computations - ev_set(ntimestep); force_clear(); timer->stamp();