def test_sub_mesh_proxy(self):
        mesh_identifier = salome_utilities.GetSalomeID(self.sub_mesh_tetra_e_1)

        sal_mesh = create_kratos_input_tui.SalomeMesh(self.sub_mesh_tetra_e_1,
                                                      {})

        self.assertEqual(sal_mesh.mesh_interface.mesh_identifier,
                         mesh_identifier)
        self.assertEqual(sal_mesh.mesh_description, {})
        self.assertEqual(sal_mesh.model_part_name, "")
    def test_multiple_meshes(self):
        mesh_description_3D = {
            "elements": {
                "Hexa": {
                    "MyFancyElement": 1
                }
            },
            "conditions": {
                "Hexa": {
                    "VolumeLoadCondition": 0
                }
            }
        }
        mesh_description_2D = {"conditions": {"Quadrangle": {"SideForce": 23}}}
        mesh_description_1D = {
            "conditions": {
                "Edge": {
                    "LineSupportDisp": 63,
                    "LineSupportRot": 7
                }
            }
        }
        mesh_description_0D = {"elements": {"Ball": {"PointMassBall": 4}}}

        meshes = [
            create_kratos_input_tui.SalomeMesh(self.mesh_hexa,
                                               mesh_description_3D, "domain"),
            create_kratos_input_tui.SalomeMesh(self.sub_mesh_hexa_f_1,
                                               mesh_description_2D,
                                               "side_faces"),
            create_kratos_input_tui.SalomeMesh(self.group_hexa_edges,
                                               mesh_description_1D,
                                               "supports"),
            create_kratos_input_tui.SalomeMesh(self.group_hexa_ball_elements,
                                               mesh_description_0D,
                                               "domain.point_masses")
        ]

        mdpa_file_name = "create_mdpa_multiple_meshes"
        create_kratos_input_tui.CreateMdpaFile(meshes, mdpa_file_name)

        CompareMdpaWithReferenceFile(mdpa_file_name, self)
    def test_mesh(self):
        mesh_identifier = salome_utilities.GetSalomeID(
            self.mesh_hexa.GetMesh())

        sal_mesh = create_kratos_input_tui.SalomeMesh(self.mesh_hexa, {},
                                                      "some_mp")

        self.assertEqual(sal_mesh.mesh_interface.mesh_identifier,
                         mesh_identifier)
        self.assertEqual(sal_mesh.mesh_description, {})
        self.assertEqual(sal_mesh.model_part_name, "some_mp")
    def test_mesh_group(self):
        mesh_identifier = salome_utilities.GetSalomeID(
            self.group_tetra_0D_elements)

        sal_mesh = create_kratos_input_tui.SalomeMesh(
            self.group_tetra_0D_elements, {}, "htars.abc")

        self.assertEqual(sal_mesh.mesh_interface.mesh_identifier,
                         mesh_identifier)
        self.assertEqual(sal_mesh.mesh_description, {})
        self.assertEqual(sal_mesh.model_part_name, "htars.abc")
    def test_one_mesh(self):
        mesh_description_3D = {"elements": {"Hexa": {"MyFancyElement": 0}}}

        meshes = [
            create_kratos_input_tui.SalomeMesh(self.mesh_hexa,
                                               mesh_description_3D, "domain")
        ]

        mdpa_file_name = "create_mdpa_one_mesh"
        create_kratos_input_tui.CreateMdpaFile(meshes, mdpa_file_name)

        CompareMdpaWithReferenceFile(mdpa_file_name, self)
    def test_mesh_identifier(self):
        mesh_identifier = salome_utilities.GetSalomeID(
            self.mesh_hexa.GetMesh())

        # this is not the real format, only a dummy for testing
        mesh_description = {"elements": "abc", "conditions": ["ddd"]}

        sal_mesh = create_kratos_input_tui.SalomeMesh(mesh_identifier,
                                                      mesh_description,
                                                      "my_model_part_name")

        self.assertEqual(sal_mesh.mesh_interface.mesh_identifier,
                         mesh_identifier)
        self.assertDictEqual(sal_mesh.mesh_description, mesh_description)
        self.assertEqual(sal_mesh.model_part_name, "my_model_part_name")
    def test_one_mesh(self):
        mesh_description_3D = {"elements": {"Hexa": {"MyFancyElement": 0}}}

        meshes = [
            create_kratos_input_tui.SalomeMesh(self.mesh_hexa,
                                               mesh_description_3D, "domain")
        ]

        model_part = create_kratos_input_tui.CreateModelPart(meshes)

        self.assertEqual(model_part.NumberOfSubModelParts(), 1)
        self.assertEqual(model_part.NumberOfNodes(), 729)
        self.assertEqual(model_part.NumberOfElements(), 512)
        self.assertEqual(model_part.NumberOfConditions(), 0)
        self.assertEqual(model_part.NumberOfProperties(), 1)

        smp = model_part.GetSubModelPart("domain")
        self.assertEqual(smp.NumberOfSubModelParts(), 0)
        self.assertEqual(smp.NumberOfNodes(), 729)
        self.assertEqual(smp.NumberOfElements(), 512)
        self.assertEqual(smp.NumberOfConditions(), 0)
        self.assertEqual(smp.NumberOfProperties(), 1)
Esempio n. 8
0
# saving the study such that it can be loaded in Salome
salome.myStudy.SaveAs("Cantilever_Hexa.hdf", False,
                      False)  # args: use_multifile, use_acsii

if salome.sg.hasDesktop():
    salome.sg.updateObjBrowser()

# from here on using the plugin to create mdpa file
sys.path.append("../../")  # adding root folder of plugin to path
import create_kratos_input_tui

mesh_description_3D = {
    "elements": {
        "Hexa": {
            "SmallDisplacementElement3D8N": 0
        }
    }
}
mesh_description_0D = {"conditions": {"0D": {"PointLoadCondition3D1N": 0}}}

meshes = [
    create_kratos_input_tui.SalomeMesh(domain_1, mesh_description_3D,
                                       "domain"),
    create_kratos_input_tui.SalomeMesh(
        dirichlet_1, {}, "dirichlet"),  # no elements / conditions needed
    create_kratos_input_tui.SalomeMesh(group_0D_entities, mesh_description_0D,
                                       "neumann")
]

create_kratos_input_tui.CreateMdpaFile(meshes, "cantilever")
Esempio n. 9
0
smesh.SetName(structure_mesh.GetMesh(), 'structure_mesh')
for name, sub_mesh in structure_sub_meshes.items():
    smesh.SetName(sub_mesh, name)


# from here on using the plugin to create mdpa file
sys.path.append("../../") # adding root folder of plugin to path
import create_kratos_input_tui
from kratos_salome_plugin.write_mdpa import WriteMdpa

# fluid mesh
fluid_mesh_description_domain = { "elements"   : {"Triangle" : {"Element2D3N"       : 1} } }
fluid_mesh_description_wall   = { "conditions" : {"Edge"     : {"WallCondition2D2N" : 0} } }

meshes_fl = [
    create_kratos_input_tui.SalomeMesh(fluid_mesh, fluid_mesh_description_domain, "Parts_Fluid")
]

for name, sub_mesh in fluid_sub_meshes.items():
    meshes_fl.append(create_kratos_input_tui.SalomeMesh(sub_mesh, fluid_mesh_description_wall, name))

model_part_fluid = create_kratos_input_tui.CreateModelPart(meshes_fl)
props = model_part_fluid.GetProperties(1)
props.SetValue("DENSITY", 956.0)
props.SetValue("DYNAMIC_VISCOSITY", 0.145)

mdpa_info_fluid = "mdpa for fluid model FSI Mok"
WriteMdpa(model_part_fluid, "Mok_CFD", mdpa_info_fluid)

# structure mesh
structure_mesh_description_domain = { "elements" : {"Quadrangle" : {"TotalLagrangianElement2D4N" : 0} } }
 def test_unpermitted_object(self):
     with self.assertRaisesRegex(
             Exception, 'Type of argument "salome_mesh" not permitted: '):
         create_kratos_input_tui.SalomeMesh(self.box, {})
    def test_multiple_meshes(self):
        mesh_description_3D = {
            "elements": {
                "Hexa": {
                    "MyFancyElement": 1
                }
            },
            "conditions": {
                "Hexa": {
                    "VolumeLoadCondition": 0
                }
            }
        }
        mesh_description_1D = {
            "conditions": {
                "Edge": {
                    "LineSupportDisp": 63,
                    "LineSupportRot": 7
                }
            }
        }
        mesh_description_0D = {"elements": {"Ball": {"PointMassBall": 4}}}

        meshes = [
            create_kratos_input_tui.SalomeMesh(self.mesh_hexa,
                                               mesh_description_3D, "domain"),
            create_kratos_input_tui.SalomeMesh(self.group_hexa_edges,
                                               mesh_description_1D,
                                               "supports"),
            create_kratos_input_tui.SalomeMesh(self.group_hexa_ball_elements,
                                               mesh_description_0D,
                                               "domain.point_masses")
        ]

        model_part = create_kratos_input_tui.CreateModelPart(meshes)

        self.assertEqual(model_part.NumberOfSubModelParts(), 2)
        self.assertEqual(model_part.NumberOfNodes(), 729)
        self.assertEqual(model_part.NumberOfElements(), 518)
        self.assertEqual(model_part.NumberOfConditions(), 704)
        self.assertEqual(model_part.NumberOfProperties(), 5)

        smp_domain = model_part.GetSubModelPart("domain")
        self.assertEqual(smp_domain.NumberOfNodes(), 729)
        self.assertEqual(smp_domain.NumberOfElements(), 518)
        self.assertEqual(smp_domain.NumberOfConditions(), 512)
        self.assertEqual(smp_domain.NumberOfSubModelParts(), 1)
        self.assertEqual(smp_domain.NumberOfProperties(), 3)

        smp_point_mass = smp_domain.GetSubModelPart("point_masses")
        self.assertEqual(smp_point_mass.NumberOfSubModelParts(), 0)
        self.assertEqual(smp_point_mass.NumberOfNodes(), 6)
        self.assertEqual(smp_point_mass.NumberOfElements(), 6)
        self.assertEqual(smp_point_mass.NumberOfConditions(), 0)
        self.assertEqual(smp_point_mass.NumberOfProperties(), 1)

        smp_supports = model_part.GetSubModelPart("supports")
        self.assertEqual(smp_supports.NumberOfSubModelParts(), 0)
        self.assertEqual(smp_supports.NumberOfNodes(), 92)
        self.assertEqual(smp_supports.NumberOfElements(), 0)
        self.assertEqual(smp_supports.NumberOfConditions(), 192)
        self.assertEqual(smp_supports.NumberOfProperties(), 2)
    smesh.SetName(domain_1.GetMesh(), 'domain')
    smesh.SetName(Local_Length_outter_boundary, 'Local Length_outter_boundary')
    smesh.SetName(Max_Size_domain_inner, 'Max Size_domain_inner')
    smesh.SetName(Max_Size_domain, 'Max Size_domain')
    smesh.SetName(Local_Length_cyl, 'Local Length_cyl')
    smesh.SetName(mesh_outlet, 'mesh_outlet')
    smesh.SetName(mesh_cyl_boundary, 'mesh_cyl_boundary')
    smesh.SetName(mesh_inlet, 'mesh_inlet')

    # https://docs.salome-platform.org/latest/tui/KERNEL/kernel_salome.html
    # saving the study such that it can be loaded in Salome
    salome.myStudy.SaveAs("flow_cylinder_{}.hdf".format(mesh_factor), False,
                          False)  # args: use_multifile, use_acsii

    meshes = [
        create_kratos_input_tui.SalomeMesh(domain_1, mesh_description_domain,
                                           "domain"),
        create_kratos_input_tui.SalomeMesh(mesh_inlet, mesh_description_wall,
                                           "inlet"),
        create_kratos_input_tui.SalomeMesh(mesh_outlet, mesh_description_wall,
                                           "outlet"),
        create_kratos_input_tui.SalomeMesh(mesh_walls, mesh_description_wall,
                                           "walls"),
        create_kratos_input_tui.SalomeMesh(mesh_cyl_boundary,
                                           mesh_description_wall,
                                           "cyl_boundary"),
    ]

    create_kratos_input_tui.CreateMdpaFile(
        meshes, "flow_cylinder_{}".format(mesh_factor))

if salome.sg.hasDesktop():