@@ -20,8 +20,7 @@ def __init__(self, preciceConfigFile, participantName, config, MESH, MODEL, MAT,
2020 self .LOADS = []
2121 self .isNonLinear = isNonLinear
2222 self .participantName = participantName
23- self .preciceDt = - 1
24- self .precice = precice .Interface (participantName , preciceConfigFile , 0 , 1 )
23+ self .precice = precice .Participant (participantName , preciceConfigFile , 0 , 1 )
2524 self .configure (config )
2625
2726 def configure (self , config ):
@@ -40,48 +39,44 @@ def configure(self, config):
4039 self .interfaces .append (interface )
4140
4241 def initialize (self , INIT_T ):
43-
44- self .preciceDt = self .precice .initialize ()
45- if self .precice .is_action_required (precice .action_write_initial_data ()):
42+ if self .precice .requires_initial_data ():
4643 self .writeCouplingData (INIT_T )
47- self .precice .fulfilled_action (precice .action_write_initial_data ())
48-
49- self .precice .initialize_data ()
50- return self .preciceDt
44+ self .precice .initialize ()
5145
5246 def isCouplingOngoing (self ):
5347 return self .precice .is_coupling_ongoing ()
5448
5549 def writeCouplingData (self , TEMP ):
56- if self .precice .is_write_data_required (self .preciceDt ):
57- for interface in self .interfaces :
58- interface .writeBCs (TEMP )
50+ for interface in self .interfaces :
51+ interface .writeBCs (TEMP )
5952
6053 def readCouplingData (self ):
61- if self .precice .is_read_data_available ():
62- for interface in self .interfaces :
63- interface .readAndUpdateBCs ()
54+ for interface in self .interfaces :
55+ interface .readAndUpdateBCs ()
6456
6557 def writeCheckpoint (self ):
66- if self .precice .is_action_required ( precice . action_write_iteration_checkpoint () ):
58+ if self .precice .requires_writing_checkpoint ( ):
6759 # Do nothing
68- self . precice . fulfilled_action ( precice . action_write_iteration_checkpoint ())
60+ pass
6961
7062 def readCheckpoint (self ):
71- if self .precice .is_action_required ( precice . action_read_iteration_checkpoint () ):
63+ if self .precice .requires_reading_checkpoint ( ):
7264 # Do nothing
73- self . precice . fulfilled_action ( precice . action_read_iteration_checkpoint ())
65+ pass
7466
7567 def isCouplingTimestepComplete (self ):
7668 return self .precice .is_time_window_complete ()
7769
7870 def advance (self ):
79- self . preciceDt = self .precice .advance ( self . preciceDt )
80- return self .preciceDt
71+ dt = self .precice .get_max_time_step_size ( )
72+ self .precice . advance ( dt )
8173
8274 def finalize (self ):
8375 self .precice .finalize ()
8476
77+ def getMaxTimeStepSize (self ):
78+ return self .precice .get_max_time_step_size ()
79+
8580
8681class Interface :
8782 def __init__ (self , precice , participantName , names , MESH , SHMESH , MODEL , MAT , isNonLinear = False ):
@@ -108,16 +103,9 @@ def __init__(self, precice, participantName, names, MESH, SHMESH, MODEL, MAT, is
108103 self .preciceNodeIndices = []
109104 self .preciceFaceCenterIndices = []
110105
111- self .preciceFaceCentersMeshID = 0
112- self .preciceNodesMeshID = 0
106+ self .readData = dict ()
113107
114- self .readHCoeffDataID = 0
115- self .readTempDataID = 0
116- self .writeHCoeffDataID = 0
117- self .writeTempDataID = 0
118-
119- self .writeTemp = []
120- self .writeHCoeff = []
108+ self .writeDataNames = []
121109
122110 self .MESH = MESH
123111 # Shifted mesh (contains only the interface, and is shifted by delta in the direction opposite to the normal)
@@ -142,7 +130,14 @@ def configure(self, names):
142130
143131 self .computeNormals ()
144132
145- dims = self .precice .get_dimensions ()
133+ nodes_mesh_dims = self .precice .get_mesh_dimensions (self .nodesMeshName )
134+ face_centers_mesh_dims = self .precice .get_mesh_dimensions (self .faceCentersMeshName )
135+
136+ if nodes_mesh_dims != face_centers_mesh_dims :
137+ raise ValueError ("Dimensions of the read mesh and the write mesh do not match" )
138+ else :
139+ # Set dimensions to nodes mesh dimensions
140+ dims = nodes_mesh_dims
146141
147142 self .nodeCoordinates = np .array ([p for p in self .SHMESH .sdj .COORDO .VALE .get ()])
148143 self .nodeCoordinates = np .resize (self .nodeCoordinates , (int (len (self .nodeCoordinates )/ dims ), dims ))
@@ -153,7 +148,7 @@ def configure(self, names):
153148 self .faceCenterCoordinates = np .array ([np .array ([self .mesh .cn [node ] for node in elem ]).mean (0 ) for elem in self .connectivity ])
154149 self .setVertices ()
155150
156- self .setDataIDs (names )
151+ self .setDataNames (names )
157152
158153 def computeNormals (self ):
159154 # Get normals at the nodes
@@ -173,43 +168,35 @@ def computeNormals(self):
173168 )
174169 self .normals = N .EXTR_COMP ().valeurs
175170
176- dims = self .precice .get_dimensions ( )
171+ dims = self .precice .get_mesh_dimensions ( self . nodesMeshName )
177172
178173 self .normals = np .resize (np .array (self .normals ), (int (len (self .normals )/ dims ), dims ))
179174 DETRUIRE (CONCEPT = ({"NOM" : N }, {"NOM" : DUMMY }))
180175
181176 def setVertices (self ):
182177 # Nodes
183- self .preciceNodesMeshID = self .precice .get_mesh_id (self .nodesMeshName )
184- self .preciceNodeIndices = self .precice .set_mesh_vertices (self .preciceNodesMeshID , self .nodeCoordinates )
178+ self .preciceNodeIndices = self .precice .set_mesh_vertices (self .nodesMeshName , self .nodeCoordinates )
185179 # Face centers
186- self .preciceFaceCentersMeshID = self .precice .get_mesh_id (self .faceCentersMeshName )
187- self .preciceFaceCenterIndices = self .precice .set_mesh_vertices (self .preciceFaceCentersMeshID , self .faceCenterCoordinates )
180+ self .preciceFaceCenterIndices = self .precice .set_mesh_vertices (self .faceCentersMeshName , self .faceCenterCoordinates )
188181
189- def setDataIDs (self , names ):
182+ def setDataNames (self , names ):
190183 for writeDataName in names ["write-data" ]:
191- if writeDataName .find ("Heat-Transfer-Coefficient-" ) >= 0 :
192- self .writeHCoeffDataID = self . precice . get_data_id (writeDataName , self . preciceNodesMeshID )
193- elif writeDataName .find ("Sink-Temperature-" ) >= 0 :
194- self .writeTempDataID = self . precice . get_data_id (writeDataName , self . preciceNodesMeshID )
184+ if writeDataName .find ("Heat-Transfer-Coefficient-Solid " ) >= 0 :
185+ self .writeDataNames . append (writeDataName )
186+ elif writeDataName .find ("Sink-Temperature-Solid " ) >= 0 :
187+ self .writeDataNames . append (writeDataName )
195188 for readDataName in names ["read-data" ]:
196- if readDataName .find ("Heat-Transfer-Coefficient-" ) >= 0 :
197- self .readHCoeffDataID = self . precice . get_data_id ( readDataName , self . preciceFaceCentersMeshID )
198- elif readDataName .find ("Sink-Temperature-" ) >= 0 :
199- self .readTempDataID = self . precice . get_data_id ( readDataName , self . preciceFaceCentersMeshID )
189+ if readDataName .find ("Heat-Transfer-Coefficient-Fluid " ) >= 0 :
190+ self .readData [ readDataName ] = None
191+ elif readDataName .find ("Sink-Temperature-Fluid " ) >= 0 :
192+ self .readData [ readDataName ] = None
200193
201194 def getPreciceNodeIndices (self ):
202195 return self .preciceNodeIndices
203196
204197 def getPreciceFaceCenterIndices (self ):
205198 return self .preciceFaceCenterIndices
206199
207- def getPreciceNodesMeshID (self ):
208- return self .preciceNodesMeshID
209-
210- def getPreciceFaceCentersMeshID (self ):
211- return self .preciceFaceCentersMeshID
212-
213200 def getNodeCoordinates (self ):
214201 return self .nodeCoordinates
215202
@@ -245,14 +232,17 @@ def updateBCs(self, temp, hCoeff):
245232 1 )
246233
247234 def readAndUpdateBCs (self ):
248- readHCoeff = self .precice .read_block_scalar_data (self .readHCoeffDataID , self .preciceFaceCenterIndices )
249- readTemp = self .precice .read_block_scalar_data (self .readTempDataID , self .preciceFaceCenterIndices )
250- self .updateBCs (readTemp , readHCoeff )
235+ dt = self .precice .get_max_time_step_size ()
236+ for name in self .readData .keys ():
237+ self .readData [name ] = self .precice .read_data (self .faceCentersMeshName , name , self .preciceFaceCenterIndices , dt )
238+
239+ self .updateBCs (self .readData ["Sink-Temperature-Fluid" ], self .readData ["Heat-Transfer-Coefficient-Fluid" ])
251240
252241 def writeBCs (self , TEMP ):
253242 writeTemp , writeHCoeff = self .getBoundaryValues (TEMP )
254- self .precice .write_block_scalar_data (self .writeHCoeffDataID , self .preciceNodeIndices , writeHCoeff )
255- self .precice .write_block_scalar_data (self .writeTempDataID , self .preciceNodeIndices , writeTemp )
243+
244+ self .precice .write_data (self .nodesMeshName , self .writeDataNames [0 ], self .preciceNodeIndices , writeHCoeff )
245+ self .precice .write_data (self .nodesMeshName , self .writeDataNames [1 ], self .preciceNodeIndices , writeTemp )
256246
257247 def getBoundaryValues (self , T ):
258248
@@ -271,7 +261,7 @@ def setLoad(self, LOAD):
271261 self .LOAD = LOAD
272262
273263 def shiftMesh (self ):
274- dims = self .precice .get_dimensions ( )
264+ dims = self .precice .get_mesh_dimensions ( self . nodesMeshName )
275265 coords = [p for p in self .SHMESH .sdj .COORDO .VALE .get ()]
276266 for i in range (len (self .normals )):
277267 for c in range (dims ):
0 commit comments