From 33f2ede3f1a3b516acb57e91826d7da4745e3260 Mon Sep 17 00:00:00 2001
From: mkirsz <s1351949@sms.ed.ac.uk>
Date: Wed, 20 Nov 2024 13:58:39 +0000
Subject: [PATCH] added missing conversion for stress

---
 include/tadah/mlip/dataset_readers/vasp_outcar_reader.h  | 1 +
 include/tadah/mlip/dataset_readers/vasp_vasprun_reader.h | 1 +
 src/vasp_outcar_reader.cpp                               | 1 +
 src/vasp_vasprun_reader.cpp                              | 1 +
 4 files changed, 4 insertions(+)

diff --git a/include/tadah/mlip/dataset_readers/vasp_outcar_reader.h b/include/tadah/mlip/dataset_readers/vasp_outcar_reader.h
index 81b4e6f..d17f2a4 100644
--- a/include/tadah/mlip/dataset_readers/vasp_outcar_reader.h
+++ b/include/tadah/mlip/dataset_readers/vasp_outcar_reader.h
@@ -72,6 +72,7 @@ public:
 
 private:
   std::string raw_data_;  // Stores raw file data
+  double s_conv = 6.241509074e-4; // kbar -> eV/A^3
 };
 
 #endif // VASP_OUTCAR_READER_H
diff --git a/include/tadah/mlip/dataset_readers/vasp_vasprun_reader.h b/include/tadah/mlip/dataset_readers/vasp_vasprun_reader.h
index 589d8d3..77d8bfa 100644
--- a/include/tadah/mlip/dataset_readers/vasp_vasprun_reader.h
+++ b/include/tadah/mlip/dataset_readers/vasp_vasprun_reader.h
@@ -159,6 +159,7 @@ protected:
 private:
   Structure _s; ///< Internal structure representation.
   bool stress_tensor_bool = false; ///< Flag indicating stress tensor presence.
+  double s_conv = 6.241509074e-4; // kbar -> eV/A^3
 };
 
 #endif // VASP_VASPRUN_READER_H
diff --git a/src/vasp_outcar_reader.cpp b/src/vasp_outcar_reader.cpp
index 2f3f53a..a9c4339 100644
--- a/src/vasp_outcar_reader.cpp
+++ b/src/vasp_outcar_reader.cpp
@@ -110,6 +110,7 @@ void VaspOutcarReader::parse_data() {
         s.stress(0,1) = s.stress(1,0) = row[3]; // xy
         s.stress(1,2) = s.stress(2,1) = row[4]; // yz
         s.stress(0,2) = s.stress(2,0) = row[5]; // zx
+        s.stress *= s_conv;
       }
     }
 
diff --git a/src/vasp_vasprun_reader.cpp b/src/vasp_vasprun_reader.cpp
index cf72d1d..16ab534 100644
--- a/src/vasp_vasprun_reader.cpp
+++ b/src/vasp_vasprun_reader.cpp
@@ -141,6 +141,7 @@ void VaspVasprunReader::extract_stress_tensor(rx::xml_node<> *calculation_node)
           _s.stress(r, 0) = x;
           _s.stress(r, 1) = y;
           _s.stress(r, 2) = z;
+          _s.stress *= s_conv;
         } else {
           std::cerr << "Error parsing stress tensor components." << std::endl;
         }
-- 
GitLab