diff --git a/dpdata/pwmat/movement.py b/dpdata/pwmat/movement.py index 34c9d8e02..ef79906a7 100644 --- a/dpdata/pwmat/movement.py +++ b/dpdata/pwmat/movement.py @@ -107,7 +107,7 @@ def analyze_block(lines, ntot, nelm) : sc_index = int(ii.split('SCF =')[1]) if sc_index >= nelm: is_converge = False - energy = float(ii.split('Etot,Ep,Ek (eV)')[1].split()[1]) + energy = float(ii.split('Etot,Ep,Ek (eV)')[1].split()[2]) # use Ep, not Etot=Ep+Ek elif '----------' in ii: assert((force is not None) and len(coord) > 0 and len(cell) > 0) # all_coords.append(coord) @@ -170,7 +170,7 @@ def analyze_block(lines, ntot, nelm) : min = jj lines[min], lines[kk] = lines[kk],lines[min] for gg in range(idx+1,idx+1+ntot): - info = [float(ss) for ss in lines[gg].split()] + info = [-float(ss) for ss in lines[gg].split()] # forces in MOVEMENT file are dE/dR, lacking a minus sign force.append(info[1:4]) # elif 'Atomic-Energy' in ii: # for jj in range(idx+1, idx+1+ntot) : diff --git a/tests/pwmat/ref_force b/tests/pwmat/ref_force index 0aafae564..9217ca2fd 100644 --- a/tests/pwmat/ref_force +++ b/tests/pwmat/ref_force @@ -1,5 +1,5 @@ - 0.046108800185045 -0.541030624050995 -0.582488361151274 - -0.557355742114270 -0.117761039586375 -0.114745145937041 - 0.336673769321572 0.649100915564952 0.057748752039102 - -0.123335960183960 0.122383035499940 -0.332495374793973 - 0.301171890086218 -0.108713996525315 0.974385263713461 + -0.046108800185045 0.541030624050995 0.582488361151274 + 0.557355742114270 0.117761039586375 0.114745145937041 + -0.336673769321572 -0.649100915564952 -0.057748752039102 + 0.123335960183960 -0.122383035499940 0.332495374793973 + -0.301171890086218 0.108713996525315 -0.974385263713461 diff --git a/tests/test_pwmat_movement.py b/tests/test_pwmat_movement.py index dab0bdb79..6cf2163cc 100644 --- a/tests/test_pwmat_movement.py +++ b/tests/test_pwmat_movement.py @@ -48,7 +48,7 @@ def test_force(self) : fp.close() def test_energy(self) : - ref_energy = -0.2193369388E+03 + ref_energy = -0.2196929065E+03 self.assertEqual(self.system.data['energies'][0], ref_energy)