From d83d84c5311e6b58c1660acf914a2ae028211e02 Mon Sep 17 00:00:00 2001
From: Martin Bauer <martin.bauer@fau.de>
Date: Sun, 2 Sep 2018 21:14:57 +0200
Subject: [PATCH] Simpler pressure tensor computation

- simplified pressure tensor formulas
- added test that checks if force is mathematically equal if computed from pressure tensor or directly
---
 phasefield/analytical.py | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/phasefield/analytical.py b/phasefield/analytical.py
index 5966bb6c..2a6ef6e4 100644
--- a/phasefield/analytical.py
+++ b/phasefield/analytical.py
@@ -301,6 +301,21 @@ def pressure_tensor_interface_component(free_energy, order_parameters, dim, a, b
     return result
 
 
+def pressure_tensor_interface_component_new(free_energy, order_parameters, dim, a, b):
+    gamma = extract_gamma(free_energy, order_parameters)
+    d = Diff
+    result = 0
+    for i, c_i in enumerate(order_parameters):
+        for j, c_j in enumerate(order_parameters):
+            t = 2 * d(c_i, a) * d(c_j, b)
+            if a == b:
+                t -= sum(d(c_i, g) * d(c_j, g) for g in range(dim))
+                t -= 2 * sum(c_i * d(d(c_j, g), g) for g in range(dim))
+            gamma_ij = gamma[(i, j)] if i < j else gamma[(j, i)]
+            result += t * gamma_ij / 2
+    return result
+
+
 def pressure_tensor_from_free_energy(free_energy, order_parameters, dim, transformation_matrix=None,
                                      include_bulk=True, include_interface=True):
 
-- 
GitLab