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