From 06f00e0393a75968ec56c3e95dc1beb1fbe68c11 Mon Sep 17 00:00:00 2001 From: Giovanni Bussi <giovanni.bussi@gmail.com> Date: Mon, 6 Feb 2012 11:01:19 +0100 Subject: [PATCH] Added FMT to DUMPDERIVATIVES I had a problem with regtest rt6, probably due to numerical errors on numerical derivatives. I added the possibility of specifying the format in DUMPDERIVATIVES so that we can print just a few digits in the regtests. As a default, I leave the "accurate" choice %15.10f. --- regtest/rt6/DERIVATIVES.reference | 210 +++++++++++++++--------------- regtest/rt6/plumed.dat | 1 + src/GenericDumpDerivatives.cpp | 7 +- 3 files changed, 112 insertions(+), 106 deletions(-) diff --git a/regtest/rt6/DERIVATIVES.reference b/regtest/rt6/DERIVATIVES.reference index fd74a2a89..378470c3c 100644 --- a/regtest/rt6/DERIVATIVES.reference +++ b/regtest/rt6/DERIVATIVES.reference @@ -1,106 +1,106 @@ #! FIELDS time parameter ang1 ang1n - 0.000000 0 0.0704981645 0.0704980753 - 0.000000 1 -0.6024278520 -0.6024267897 - 0.000000 2 0.0227624896 0.0227624588 - 0.000000 3 -0.0704981645 -0.0704979897 - 0.000000 4 0.6024278520 0.6024269052 - 0.000000 5 -0.0227624896 -0.0227625258 - 0.000000 6 0.0464809710 0.0464811660 - 0.000000 7 -0.3656386969 -0.3656380624 - 0.000000 8 -0.1212810755 -0.1212808602 - 0.000000 9 -0.0464809710 -0.0464808457 - 0.000000 10 0.3656386969 0.3656381220 - 0.000000 11 0.1212810755 0.1212815233 - 0.000000 12 -0.0049637630 -0.0049639327 - 0.000000 13 0.0415172332 0.0415190896 - 0.000000 14 0.0022827520 0.0022818019 - 0.000000 15 0.0415172332 0.0415172500 - 0.000000 16 -0.3292789557 -0.3292791969 - 0.000000 17 -0.0967236219 -0.0967258182 - 0.000000 18 0.0022827520 0.0022830971 - 0.000000 19 -0.0967236219 -0.0967285212 - 0.000000 20 0.3342427186 0.3342424914 - 0.050000 0 0.1134333365 0.1134331338 - 0.050000 1 -0.5946919406 -0.5946909711 - 0.050000 2 0.0406227937 0.0406229123 - 0.050000 3 -0.1134333365 -0.1134337224 - 0.050000 4 0.5946919406 0.5946909562 - 0.050000 5 -0.0406227937 -0.0406227298 - 0.050000 6 0.0783209377 0.0783207901 - 0.050000 7 -0.3688001068 -0.3687995002 - 0.050000 8 -0.1205709648 -0.1205707453 - 0.050000 9 -0.0783209377 -0.0783211738 - 0.050000 10 0.3688001068 0.3688012362 - 0.050000 11 0.1205709648 0.1205707639 - 0.050000 12 -0.0138143848 -0.0138141930 - 0.050000 13 0.0715684776 0.0715657802 - 0.050000 14 -0.0019058856 -0.0019070766 - 0.050000 15 0.0715684776 0.0715721998 - 0.050000 16 -0.3425522887 -0.3425522598 - 0.050000 17 -0.0904532610 -0.0904526087 - 0.050000 18 -0.0019058856 -0.0019020647 - 0.050000 19 -0.0904532610 -0.0904487419 - 0.050000 20 0.3563666734 0.3563666780 - 0.100000 0 0.1587798362 0.1587803774 - 0.100000 1 -0.5854346352 -0.5854364820 - 0.100000 2 0.0556431713 0.0556433871 - 0.100000 3 -0.1587798362 -0.1587795541 - 0.100000 4 0.5854346352 0.5854336843 - 0.100000 5 -0.0556431713 -0.0556430630 - 0.100000 6 0.1113158904 0.1113157272 - 0.100000 7 -0.3644705197 -0.3644698970 - 0.100000 8 -0.1129775544 -0.1129773334 - 0.100000 9 -0.1113158904 -0.1113161854 - 0.100000 10 0.3644705197 0.3644698970 - 0.100000 11 0.1129775544 0.1129774190 - 0.100000 12 -0.0272132776 -0.0272132843 - 0.100000 13 0.1001222092 0.1001312141 - 0.100000 14 -0.0088242481 -0.0088238495 - 0.100000 15 0.1001222092 0.1001240436 - 0.100000 16 -0.3349839467 -0.3349840958 - 0.100000 17 -0.0779268069 -0.0779262560 - 0.100000 18 -0.0088242481 -0.0088245628 - 0.100000 19 -0.0779268069 -0.0779259556 - 0.100000 20 0.3621972244 0.3621970422 - 0.150000 0 0.1979503576 0.1979510188 - 0.150000 1 -0.5748858667 -0.5748848990 - 0.150000 2 0.0692392407 0.0692394525 - 0.150000 3 -0.1979503576 -0.1979500353 - 0.150000 4 0.5748858667 0.5748849027 - 0.150000 5 -0.0692392407 -0.0692391247 - 0.150000 6 0.1379329494 0.1379327327 - 0.150000 7 -0.3547090407 -0.3547084481 - 0.150000 8 -0.0998337781 -0.0998336114 - 0.150000 9 -0.1379329494 -0.1379333921 - 0.150000 10 0.3547090407 0.3547101654 - 0.150000 11 0.0998337781 0.0998340808 - 0.150000 12 -0.0407942582 -0.0407942665 - 0.150000 13 0.1194723076 0.1194648862 - 0.150000 14 -0.0174903373 -0.0174930073 - 0.150000 15 0.1194723076 0.1194753229 - 0.150000 16 -0.3150241241 -0.3150240545 - 0.150000 17 -0.0613313856 -0.0613346318 - 0.150000 18 -0.0174903373 -0.0174916557 - 0.150000 19 -0.0613313856 -0.0613277053 - 0.150000 20 0.3558183824 0.3558185463 - 0.200000 0 0.1941465028 0.1941471100 - 0.200000 1 -0.5695377309 -0.5695395283 - 0.200000 2 0.0833716702 0.0833715051 - 0.200000 3 -0.1941465028 -0.1941461936 - 0.200000 4 0.5695377309 0.5695367940 - 0.200000 5 -0.0833716702 -0.0833715685 - 0.200000 6 0.1368796946 0.1368801259 - 0.200000 7 -0.3543986865 -0.3543981276 - 0.200000 8 -0.0901263456 -0.0901262276 - 0.200000 9 -0.1368796946 -0.1368794739 - 0.200000 10 0.3543986865 0.3543997779 - 0.200000 11 0.0901263456 0.0901261643 - 0.200000 12 -0.0397989898 -0.0397989534 - 0.200000 13 0.1190371686 0.1190422385 - 0.200000 14 -0.0243079527 -0.0243094493 - 0.200000 15 0.1190371686 0.1190330595 - 0.200000 16 -0.3186200210 -0.3186200136 - 0.200000 17 -0.0454731155 -0.0454743818 - 0.200000 18 -0.0243079527 -0.0243117205 - 0.200000 19 -0.0454731155 -0.0454620117 - 0.200000 20 0.3584190108 0.3584191735 + 0.000000 0 0.07050 0.07050 + 0.000000 1 -0.60243 -0.60243 + 0.000000 2 0.02276 0.02276 + 0.000000 3 -0.07050 -0.07050 + 0.000000 4 0.60243 0.60243 + 0.000000 5 -0.02276 -0.02276 + 0.000000 6 0.04648 0.04648 + 0.000000 7 -0.36564 -0.36564 + 0.000000 8 -0.12128 -0.12128 + 0.000000 9 -0.04648 -0.04648 + 0.000000 10 0.36564 0.36564 + 0.000000 11 0.12128 0.12128 + 0.000000 12 -0.00496 -0.00496 + 0.000000 13 0.04152 0.04152 + 0.000000 14 0.00228 0.00228 + 0.000000 15 0.04152 0.04152 + 0.000000 16 -0.32928 -0.32928 + 0.000000 17 -0.09672 -0.09673 + 0.000000 18 0.00228 0.00228 + 0.000000 19 -0.09672 -0.09673 + 0.000000 20 0.33424 0.33424 + 0.050000 0 0.11343 0.11343 + 0.050000 1 -0.59469 -0.59469 + 0.050000 2 0.04062 0.04062 + 0.050000 3 -0.11343 -0.11343 + 0.050000 4 0.59469 0.59469 + 0.050000 5 -0.04062 -0.04062 + 0.050000 6 0.07832 0.07832 + 0.050000 7 -0.36880 -0.36880 + 0.050000 8 -0.12057 -0.12057 + 0.050000 9 -0.07832 -0.07832 + 0.050000 10 0.36880 0.36880 + 0.050000 11 0.12057 0.12057 + 0.050000 12 -0.01381 -0.01381 + 0.050000 13 0.07157 0.07157 + 0.050000 14 -0.00191 -0.00191 + 0.050000 15 0.07157 0.07157 + 0.050000 16 -0.34255 -0.34255 + 0.050000 17 -0.09045 -0.09045 + 0.050000 18 -0.00191 -0.00190 + 0.050000 19 -0.09045 -0.09045 + 0.050000 20 0.35637 0.35637 + 0.100000 0 0.15878 0.15878 + 0.100000 1 -0.58543 -0.58544 + 0.100000 2 0.05564 0.05564 + 0.100000 3 -0.15878 -0.15878 + 0.100000 4 0.58543 0.58543 + 0.100000 5 -0.05564 -0.05564 + 0.100000 6 0.11132 0.11132 + 0.100000 7 -0.36447 -0.36447 + 0.100000 8 -0.11298 -0.11298 + 0.100000 9 -0.11132 -0.11132 + 0.100000 10 0.36447 0.36447 + 0.100000 11 0.11298 0.11298 + 0.100000 12 -0.02721 -0.02721 + 0.100000 13 0.10012 0.10013 + 0.100000 14 -0.00882 -0.00882 + 0.100000 15 0.10012 0.10012 + 0.100000 16 -0.33498 -0.33498 + 0.100000 17 -0.07793 -0.07793 + 0.100000 18 -0.00882 -0.00882 + 0.100000 19 -0.07793 -0.07793 + 0.100000 20 0.36220 0.36220 + 0.150000 0 0.19795 0.19795 + 0.150000 1 -0.57489 -0.57488 + 0.150000 2 0.06924 0.06924 + 0.150000 3 -0.19795 -0.19795 + 0.150000 4 0.57489 0.57488 + 0.150000 5 -0.06924 -0.06924 + 0.150000 6 0.13793 0.13793 + 0.150000 7 -0.35471 -0.35471 + 0.150000 8 -0.09983 -0.09983 + 0.150000 9 -0.13793 -0.13793 + 0.150000 10 0.35471 0.35471 + 0.150000 11 0.09983 0.09983 + 0.150000 12 -0.04079 -0.04079 + 0.150000 13 0.11947 0.11946 + 0.150000 14 -0.01749 -0.01749 + 0.150000 15 0.11947 0.11948 + 0.150000 16 -0.31502 -0.31502 + 0.150000 17 -0.06133 -0.06133 + 0.150000 18 -0.01749 -0.01749 + 0.150000 19 -0.06133 -0.06133 + 0.150000 20 0.35582 0.35582 + 0.200000 0 0.19415 0.19415 + 0.200000 1 -0.56954 -0.56954 + 0.200000 2 0.08337 0.08337 + 0.200000 3 -0.19415 -0.19415 + 0.200000 4 0.56954 0.56954 + 0.200000 5 -0.08337 -0.08337 + 0.200000 6 0.13688 0.13688 + 0.200000 7 -0.35440 -0.35440 + 0.200000 8 -0.09013 -0.09013 + 0.200000 9 -0.13688 -0.13688 + 0.200000 10 0.35440 0.35440 + 0.200000 11 0.09013 0.09013 + 0.200000 12 -0.03980 -0.03980 + 0.200000 13 0.11904 0.11904 + 0.200000 14 -0.02431 -0.02431 + 0.200000 15 0.11904 0.11903 + 0.200000 16 -0.31862 -0.31862 + 0.200000 17 -0.04547 -0.04547 + 0.200000 18 -0.02431 -0.02431 + 0.200000 19 -0.04547 -0.04546 + 0.200000 20 0.35842 0.35842 diff --git a/regtest/rt6/plumed.dat b/regtest/rt6/plumed.dat index a62138d0e..3047d9ff4 100644 --- a/regtest/rt6/plumed.dat +++ b/regtest/rt6/plumed.dat @@ -5,6 +5,7 @@ DUMPDERIVATIVES ... STRIDE=10 ARG=ang1,ang1n FILE=DERIVATIVES + FMT=%8.5f ... DUMPDERIVATIVES ENDPLUMED diff --git a/src/GenericDumpDerivatives.cpp b/src/GenericDumpDerivatives.cpp index 334047e3e..39b6d1445 100644 --- a/src/GenericDumpDerivatives.cpp +++ b/src/GenericDumpDerivatives.cpp @@ -44,6 +44,7 @@ public ActionPilot, public ActionWithArguments { string file; + string fmt; FILE* fp; public: void calculate(){}; @@ -59,13 +60,17 @@ GenericDumpDerivatives::GenericDumpDerivatives(const ActionOptions&ao): Action(ao), ActionPilot(ao), ActionWithArguments(ao), +fmt("%15.10f"), fp(NULL) { parse("FILE",file); assert(file.length()>0); + parse("FMT",fmt); + fmt=" "+fmt; if(comm.Get_rank()==0){ fp=fopen(file.c_str(),"wa"); log.printf(" on file %s\n",file.c_str()); + log.printf(" with format %s\n",fmt.c_str()); fprintf(fp,"%s","#! FIELDS time parameter"); const std::vector<Value*>& arguments(getArguments()); assert(arguments.size()>0); @@ -91,7 +96,7 @@ void GenericDumpDerivatives::update(){ fprintf(fp," %f",getTime()); fprintf(fp," %u",ipar); for(unsigned i=0;i<getNumberOfArguments();i++){ - fprintf(fp," %15.10f",arguments[i]->getDerivatives()[ipar]); + fprintf(fp,fmt.c_str(),arguments[i]->getDerivatives()[ipar]); }; fprintf(fp,"\n"); } -- GitLab