AMBER Archive (2008)Subject: RE: AMBER: process_mdout modify
From: Ross Walker (ross_at_rosswalker.co.uk)
Date: Tue Nov 04 2008 - 09:41:33 CST
Hi Naser,
You might find it more useful to adjust the code to print you the time to
more decimal places. Line 584 of dynlib.f in amber 10:
9018 format(/1x, 'NSTEP =',i9,3x,'TIME(PS) =',f12.3,2x, &
'TEMP(K) =',f9.2,2x,'PRESS =',f8.1)
Change this to (f13.4 for Time and 2x to 1x)
9018 format(/1x, 'NSTEP =',i9,3x,'TIME(PS) =',f13.4,1x, &
'TEMP(K) =',f9.2,2x,'PRESS =',f8.1)
And then recompile and you' get the time printed to 1/10 of a fs. I am
intrigued why you would want to be printing on every step and processing it
when you have a 0.2fs time step. I'm not sure you will learn a lot here but
the above should work to do what you want.
All the best
Ross
From: owner-amber_at_scripps.edu [mailto:owner-amber_at_scripps.edu] On Behalf Of
Naser Alijabbari
Sent: Monday, November 03, 2008 10:20 PM
To: amber_at_scripps.edu
Subject: AMBER: process_mdout modify
I needed a quick modification of the process_mdout.perl code to print
everything vs NSTEP instead of time. Once you go below 1fs time step with
ntpr=1 the output time intervals are truncated to 1fs. For example, multple
steps would have the same time:
NSTEP = 3 TIME(PS) = 116.001 TEMP(K) = 300.04 PRESS =
0.0
Etot = -27701.6678 EKtot = 7491.6008 EPtot =
-35193.2686
BOND = 312.5384 ANGLE = 876.3279 DIHED =
1136.3668
1-4 NB = 392.6529 1-4 EEL = 5940.3176 VDWAALS =
4059.5920
EELEC = -47911.0642 EHBOND = 0.0000 RESTRAINT =
0.0000
Ewald error estimate: 0.2806E-04
----------------------------------------------------------------------------
--
NSTEP = 4 TIME(PS) = 116.001 TEMP(K) = 298.48 PRESS =
0.0
Etot = -27701.6341 EKtot = 7452.6978 EPtot =
-35154.3319
BOND = 317.3204 ANGLE = 891.9842 DIHED =
1137.7979
1-4 NB = 393.1169 1-4 EEL = 5941.1097 VDWAALS =
4061.7963
EELEC = -47897.4572 EHBOND = 0.0000 RESTRAINT =
0.0000
Ewald error estimate: 0.2840E-04
----------------------------------------------------------------------------
--
NSTEP = 5 TIME(PS) = 116.001 TEMP(K) = 296.98 PRESS =
0.0
Etot = -27701.6027 EKtot = 7415.3336 EPtot =
-35116.9363
BOND = 321.6989 ANGLE = 906.8489 DIHED =
1139.1966
1-4 NB = 393.5432 1-4 EEL = 5941.9198 VDWAALS =
4063.9960
EELEC = -47884.1397 EHBOND = 0.0000 RESTRAINT =
0.0000
Ewald error estimate: 0.2879E-04
----------------------------------------------------------------------------
--
NSTEP = 6 TIME(PS) = 116.001 TEMP(K) = 295.56 PRESS =
0.0
Etot = -27701.5814 EKtot = 7379.9188 EPtot =
-35081.5003
BOND = 325.5899 ANGLE = 920.6791 DIHED =
1140.5501
1-4 NB = 393.9271 1-4 EEL = 5942.7437 VDWAALS =
4066.1768
EELEC = -47871.1671 EHBOND = 0.0000 RESTRAINT =
0.0000
Ewald error estimate: 0.2892E-04
----------------------------------------------------------------------------
--
NSTEP = 7 TIME(PS) = 116.002 TEMP(K) = 294.24 PRESS =
0.0
Etot = -27701.5630 EKtot = 7346.8308 EPtot =
-35048.3937
BOND = 328.9197 ANGLE = 933.2512 DIHED =
1141.8464
1-4 NB = 394.2643 1-4 EEL = 5943.5774 VDWAALS =
4068.3392
EELEC = -47858.5921 EHBOND = 0.0000 RESTRAINT =
0.0000
Ewald error estimate: 0.2894E-04
I have just started trying to understand perl so things are a bit condusing.
I tried simpilistically:
@sortedkeys = sort by_number keys(%NSTEP);
@sortedavgkeys = sort by_number keys(%AVG_TIME);
foreach $i ( TEMP, TSOLUTE, TSOLVENT, PRES, EKCMT, ETOT, EKTOT, EPTOT,
DENSITY, VOLUME ) {
print "Outputing summary.$i\n";
open(OUTPUT, "> $i.txt");
%outarray = eval "\%$i";
foreach $j ( @sortedkeys ) {
print OUTPUT "$j ", $outarray{$j}, "\n";
}
close (OUTPUT);
And added
# update arrays
$NSTEP =$nstep;
$TIME{$time} = $time;
$TEMP{$time} = $temp;
$PRES{$time} = $pres;
$ETOT{$time} = $etot;
This just prints the last energy value. Isn't there a NSTEP hash?
-----------------------------------------------------------------------
The AMBER Mail Reflector
To post, send mail to amber_at_scripps.edu
To unsubscribe, send "unsubscribe amber" (in the *body* of the email)
to majordomo_at_scripps.edu
|