Skip to content
Snippets Groups Projects
Commit e568a340 authored by Giovanni Bussi's avatar Giovanni Bussi
Browse files

Fixed bug in work calculation

There was a problem when starting with step>STEP0.
I changed a regtest to verify this
parent 6325222b
No related branches found
No related tags found
No related merge requests found
#! FIELDS time d1 d2 d3 mr.bias mr.force2
0.000000 1.163 2.690 2.130 4.805 28.828
0.050000 1.131 2.726 2.151 4.840 29.042
0.100000 1.098 2.779 2.164 4.961 29.765
0.150000 1.080 2.800 2.157 4.917 29.500
0.200000 1.087 2.788 2.133 4.688 28.125
#! FIELDS time d1 d2 d3 mr.bias mr.force2 mr.d2_work
0.000000 1.163 2.690 2.130 4.805 28.828 0.000
0.050000 1.131 2.726 2.151 4.840 29.042 -0.161
0.100000 1.098 2.779 2.164 4.961 29.765 -0.324
0.150000 1.080 2.800 2.157 4.917 29.500 -0.487
0.200000 1.087 2.788 2.133 4.688 28.125 -0.648
......@@ -18,11 +18,18 @@ d1: DISTANCE ATOMS=1,10
d2: DISTANCE ATOMS=c1,50
d3: DISTANCE ATOMS=50,c2
MOVINGRESTRAINT ARG=d2 VERSE=B STEP0=0 AT0=0.9 KAPPA0=3.0 STEP1=200 AT1=1.5 STEP2=400 KAPPA2=1.0 LABEL=mr
MOVINGRESTRAINT ...
ARG=d2 VERSE=B
STEP0=-100 AT0=0.0 KAPPA0=0.0
STEP1=0 AT1=0.9 KAPPA1=3.0
STEP2=200 AT2=1.5
STEP3=400 KAPPA3=1.0
LABEL=mr
...
PRINT ...
STRIDE=1
ARG=d1,d2,d3,mr.bias,mr.force2
ARG=d1,d2,d3,mr.bias,mr.force2,mr.d2_work
FILE=COLVAR FMT=%6.3f
... PRINT
......
......@@ -201,16 +201,14 @@ void BiasMovingRestraint::calculate(){
if(verse[i]=="U" && cv<0) continue;
if(verse[i]=="L" && cv>0) continue;
assert(verse[i]=="U" || verse[i]=="L" || verse[i]=="B");
work[i]+=0.5*(oldf[i]+f[i])*(aa[i]-oldaa[i]);
if(oldaa.size()==aa.size() && oldf.size()==f.size()) work[i]+=0.5*(oldf[i]+f[i])*(aa[i]-oldaa[i]);
getPntrToComponent(getPntrToArgument(i)->getName()+"_work")->set(work[i]);
ene+=0.5*k*cv*cv;
setOutputForce(i,f[i]);
totf2+=f[i]*f[i];
};
for(unsigned i=0;i<narg;++i){
oldf[i]=f[i];
oldaa[i]=aa[i];
}
oldf=f;
oldaa=aa;
getPntrToComponent("bias")->set(ene);
getPntrToComponent("force2")->set(totf2);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment