From 1b37099b0d197349326396fe8b7b2a1f4fc5a137 Mon Sep 17 00:00:00 2001
From: Paul Dechamps <paul.dechamps@uliege.be>
Date: Tue, 27 Feb 2024 18:17:30 +0100
Subject: [PATCH] (feat) Compute elements positions in dart API

---
 blast/interfaces/DDataStructure.py     | 2 +-
 blast/interfaces/dart/DartInterface.py | 8 ++++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/blast/interfaces/DDataStructure.py b/blast/interfaces/DDataStructure.py
index c1eec30..161822e 100644
--- a/blast/interfaces/DDataStructure.py
+++ b/blast/interfaces/DDataStructure.py
@@ -9,7 +9,7 @@ class Group:
         self.nPoints = nPoints
         self.nElems = nPoints - 1
         self.nodesCoord = np.zeros((self.nPoints,4))
-        self.elemsCoord = np.zeros((self.nPoints,4))
+        self.elemsCoord = np.zeros((self.nPoints-1,4))
         
         self.V = np.zeros((self.nPoints,3))
         self.M = np.zeros(self.nPoints)
diff --git a/blast/interfaces/dart/DartInterface.py b/blast/interfaces/dart/DartInterface.py
index a52b126..b6fecc9 100644
--- a/blast/interfaces/dart/DartInterface.py
+++ b/blast/interfaces/dart/DartInterface.py
@@ -267,9 +267,17 @@ class DartInterface(SolversInterface):
         data[:,2] = data[connectListNodes,2]
         data[:,3] = data[connectListNodes,3]
         data[:,4] = data[connectListNodes,4]
+
         self.iBnd[0].nodesCoord = np.column_stack((data[:,1], data[:,2],\
                                                    data[:,3], data[:,4]))
         self.iBnd[0].setConnectList(connectListNodes, connectListElems)
+        elemCoord = np.zeros((len(self.iBnd[0].nodesCoord)-1, 4))
+        for i in range(len(elemCoord[:,0])):
+            elemCoord[i,0] = 0.5 * (self.iBnd[0].nodesCoord[i,0] + self.iBnd[0].nodesCoord[i+1,0])
+            elemCoord[i,1] = 0.5 * (self.iBnd[0].nodesCoord[i,1] + self.iBnd[0].nodesCoord[i+1,1])
+            elemCoord[i,2] = 0.5 * (self.iBnd[0].nodesCoord[i,2] + self.iBnd[0].nodesCoord[i+1,2])
+            elemCoord[i,3] = i
+        self.iBnd[0].elemsCoord = elemCoord
 
         # Wake
         self.iBnd[1].initStructures(self.blw[1].nodes.size())
-- 
GitLab