def __ExportImportDataOnModelPart(self, model_part, var_export, var_import, data_location): p = self.__RunPythonInSubProcess("import_export_data") connection_settings = CoSimIO.Info() connection_settings.SetString("my_name", "ExpImp") connection_settings.SetString("connect_to", "impExp") connection_settings.SetInt("echo_level", 0) info = CoSimIO.Connect(connection_settings) connection_name = info.GetString("connection_name") self.assertEqual(info.GetInt("connection_status"), CoSimIO.ConnectionStatus.Connected) export_info = CoSimIO.Info() export_info.SetString("connection_name", connection_name) export_info.SetString("identifier", "data_exchange_1") CoSimIO.ExportData(export_info, model_part, var_export, data_location) import_info = CoSimIO.Info() import_info.SetString("connection_name", connection_name) import_info.SetString("identifier", "data_exchange_2") CoSimIO.ImportData(import_info, model_part, var_import, data_location) disconnect_settings = CoSimIO.Info() disconnect_settings.SetString("connection_name", connection_name) info = CoSimIO.Disconnect(disconnect_settings) self.assertEqual(info.GetInt("connection_status"), CoSimIO.ConnectionStatus.Disconnected) self.__CheckSubProcess(p)
def test_Export_Import_Data_raw_values(self): connection_settings = CoSimIO.Info() connection_settings.SetString("connection_name", "im_exp_data") connection_settings.SetInt("echo_level", 0) info = CoSimIO.Connect(connection_settings) self.assertEqual(info.GetInt("connection_status"), CoSimIO.ConnectionStatus.Connected) values = [1.0, 2.5, 3.3, -9.4] export_info = CoSimIO.Info() export_info.SetString("connection_name", "im_exp_data") export_info.SetString("identifier", "data_exchange_1") CoSimIO.ExportData(export_info, values) RunPythonInSubProcess("import_export_data") import_info = CoSimIO.Info() import_info.SetString("connection_name", "im_exp_data") import_info.SetString("identifier", "data_exchange_2") imported_values = CoSimIO.ImportData(import_info) disconnect_settings = CoSimIO.Info() disconnect_settings.SetString("connection_name", "im_exp_data") info = CoSimIO.Disconnect(disconnect_settings) self.assertEqual(info.GetInt("connection_status"), CoSimIO.ConnectionStatus.Disconnected) # checking the values after disconnecting to avoid deadlock self.assertVectorAlmostEqual(KM.Vector(values), KM.Vector(imported_values))
def test_Export_Import_Mesh(self): model = KM.Model() model_part = model.CreateModelPart("for_test") model_part_returned = model.CreateModelPart("for_test_2") for i in range(15): model_part.CreateNewNode(i + 1, i * 1.1, 1.1**i, 0.0) props = model_part.CreateNewProperties(0) for i in range(9): # this leaves some hanging nodes model_part.CreateNewElement("Element2D2N", i + 1, [i + 1, i + 2], props) connection_settings = CoSimIO.Info() connection_settings.SetString("connection_name", "im_exp_mesh") connection_settings.SetInt("echo_level", 0) info = CoSimIO.Connect(connection_settings) self.assertEqual(info.GetInt("connection_status"), CoSimIO.ConnectionStatus.Connected) export_info = CoSimIO.Info() export_info.SetString("connection_name", "im_exp_mesh") export_info.SetString("identifier", "mesh_exchange_1") CoSimIO.ExportMesh(export_info, model_part) RunPythonInSubProcess("import_export_mesh") import_info = CoSimIO.Info() import_info.SetString("connection_name", "im_exp_mesh") import_info.SetString("identifier", "mesh_exchange_2") CoSimIO.ImportMesh(import_info, model_part_returned) disconnect_settings = CoSimIO.Info() disconnect_settings.SetString("connection_name", "im_exp_mesh") info = CoSimIO.Disconnect(disconnect_settings) self.assertEqual(info.GetInt("connection_status"), CoSimIO.ConnectionStatus.Disconnected) # checking the values after disconnecting to avoid deadlock self.assertEqual(model_part.NumberOfNodes(), model_part_returned.NumberOfNodes()) self.assertEqual(model_part.NumberOfElements(), model_part_returned.NumberOfElements()) for node_orig, node_exchanged in zip(model_part.Nodes, model_part_returned.Nodes): self.assertAlmostEqual(node_orig.X0, node_exchanged.X0) self.assertAlmostEqual(node_orig.Y0, node_exchanged.Y0) self.assertAlmostEqual(node_orig.Z0, node_exchanged.Z0) for elem_orig, elem_exchanged in zip(model_part.Elements, model_part_returned.Elements): self.assertEqual(len(elem_orig.GetNodes()), len(elem_exchanged.GetNodes())) for node_orig, node_exchanged in zip(elem_orig.GetNodes(), elem_exchanged.GetNodes()): self.assertAlmostEqual(node_orig.X0, node_exchanged.X0) self.assertAlmostEqual(node_orig.Y0, node_exchanged.Y0) self.assertAlmostEqual(node_orig.Z0, node_exchanged.Z0)
def Finalize(self): disconnect_settings = CoSimIO.Info() disconnect_settings.SetString("connection_name", self.connection_name) info = CoSimIO.Disconnect(disconnect_settings) if info.GetInt( "connection_status") != CoSimIO.ConnectionStatus.Disconnected: raise Exception("Disconnecting failed!")
def Finalize(self): super(StructuralMechanicsAnalysisWithCoSimIO, self).Finalize() disconnect_settings = CoSimIO.Info() disconnect_settings.SetString("connection_name", self.connection_name) info = CoSimIO.Disconnect(disconnect_settings) if info.GetInt( "connection_status") != CoSimIO.ConnectionStatus.Disconnected: raise Exception("Disconnecting failed!")
def test_Connect_Disconnect(self): connection_settings = CoSimIO.Info() connection_settings.SetString("connection_name", "c_d_test") connection_settings.SetInt("echo_level", 0) info = CoSimIO.Connect(connection_settings) self.assertEqual(info.GetInt("connection_status"), CoSimIO.ConnectionStatus.Connected) RunPythonInSubProcess("connect_disconnect") disconnect_settings = CoSimIO.Info() disconnect_settings.SetString("connection_name", "c_d_test") info = CoSimIO.Disconnect(disconnect_settings) self.assertEqual(info.GetInt("connection_status"), CoSimIO.ConnectionStatus.Disconnected)
def test_Connect_Disconnect(self): p = self.__RunPythonInSubProcess("connect_disconnect") connection_settings = CoSimIO.Info() connection_settings.SetString("my_name", "partner_a") connection_settings.SetString("connect_to", "partner_b") connection_settings.SetInt("echo_level", 0) info = CoSimIO.Connect(connection_settings) connection_name = info.GetString("connection_name") self.assertEqual(info.GetInt("connection_status"), CoSimIO.ConnectionStatus.Connected) disconnect_settings = CoSimIO.Info() disconnect_settings.SetString("connection_name", connection_name) info = CoSimIO.Disconnect(disconnect_settings) self.assertEqual(info.GetInt("connection_status"), CoSimIO.ConnectionStatus.Disconnected) self.__CheckSubProcess(p)
def test_Export_Import_Data_raw_values(self): p = self.__RunPythonInSubProcess("import_export_data") connection_settings = CoSimIO.Info() connection_settings.SetString("my_name", "ExpImp") connection_settings.SetString("connect_to", "impExp") connection_settings.SetInt("echo_level", 0) info = CoSimIO.Connect(connection_settings) connection_name = info.GetString("connection_name") self.assertEqual(info.GetInt("connection_status"), CoSimIO.ConnectionStatus.Connected) values = CoSimIO.DoubleVector([1.0, 2.5, 3.3, -9.4]) export_info = CoSimIO.Info() export_info.SetString("connection_name", connection_name) export_info.SetString("identifier", "data_exchange_1") CoSimIO.ExportData(export_info, values) import_info = CoSimIO.Info() import_info.SetString("connection_name", connection_name) import_info.SetString("identifier", "data_exchange_2") imported_values = CoSimIO.DoubleVector() CoSimIO.ImportData(import_info, imported_values) disconnect_settings = CoSimIO.Info() disconnect_settings.SetString("connection_name", connection_name) info = CoSimIO.Disconnect(disconnect_settings) self.assertEqual(info.GetInt("connection_status"), CoSimIO.ConnectionStatus.Disconnected) # checking the values after disconnecting to avoid deadlock self.assertVectorAlmostEqual(values, imported_values) self.__CheckSubProcess(p)
from KratosMultiphysics.CoSimulationApplication import CoSimIO connection_settings = CoSimIO.Info() connection_settings.SetString("my_name", "impExp") connection_settings.SetString("connect_to", "ExpImp") connection_settings.SetInt("echo_level", 0) info = CoSimIO.Connect(connection_settings) connection_name = info.GetString("connection_name") if info.GetInt("connection_status") != CoSimIO.ConnectionStatus.Connected: raise Exception("Connecting failed") import_info = CoSimIO.Info() import_info.SetString("connection_name", connection_name) import_info.SetString("identifier", "data_exchange_1") imported_values = CoSimIO.DoubleVector() CoSimIO.ImportData(import_info, imported_values) # print(imported_values) export_info = CoSimIO.Info() export_info.SetString("connection_name", connection_name) export_info.SetString("identifier", "data_exchange_2") CoSimIO.ExportData(export_info, imported_values) disconnect_settings = CoSimIO.Info() disconnect_settings.SetString("connection_name", connection_name) info = CoSimIO.Disconnect(disconnect_settings) if info.GetInt("connection_status") != CoSimIO.ConnectionStatus.Disconnected: raise Exception("Disconnecting failed")