2021-06-23 10:59:19 +05:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
import sys
|
|
|
|
import salome
|
|
|
|
|
|
|
|
import unittest
|
|
|
|
|
|
|
|
class SMESHExportOfFieldsInMemory(unittest.TestCase):
|
|
|
|
|
|
|
|
def testMEDCouplingFieldOnCells(self):
|
|
|
|
"""
|
|
|
|
Test focuses on ExportMEDCoupling method in the context of MED_CELL field output.
|
|
|
|
"""
|
|
|
|
salome.standalone()
|
|
|
|
salome.salome_init()
|
|
|
|
###
|
|
|
|
### SHAPER component
|
|
|
|
###
|
|
|
|
|
|
|
|
from salome.shaper import model
|
|
|
|
|
|
|
|
model.begin()
|
|
|
|
partSet = model.moduleDocument()
|
|
|
|
|
|
|
|
### Create Part
|
|
|
|
Part_1 = model.addPart(partSet)
|
|
|
|
Part_1_doc = Part_1.document()
|
|
|
|
|
|
|
|
### Create Box
|
|
|
|
Box_1 = model.addBox(Part_1_doc, 10, 10, 10)
|
|
|
|
|
|
|
|
### Create Plane
|
|
|
|
Plane_4 = model.addPlane(Part_1_doc, model.selection("FACE", "PartSet/XOY"), 5, False)
|
|
|
|
|
|
|
|
### Create Plane
|
|
|
|
Plane_5 = model.addPlane(Part_1_doc, model.selection("FACE", "PartSet/YOZ"), 5, False)
|
|
|
|
|
|
|
|
### Create Partition
|
|
|
|
Partition_1_objects = [model.selection("FACE", "Plane_1"),
|
|
|
|
model.selection("FACE", "Plane_2"),
|
|
|
|
model.selection("SOLID", "Box_1_1")]
|
|
|
|
Partition_1 = model.addPartition(Part_1_doc, Partition_1_objects, keepSubResults = True)
|
|
|
|
|
|
|
|
### Create Field
|
|
|
|
Field_1_objects = [model.selection("SOLID", "Partition_1_1_2"),
|
|
|
|
model.selection("SOLID", "Partition_1_1_4"),
|
|
|
|
model.selection("SOLID", "Partition_1_1_1"),
|
|
|
|
model.selection("SOLID", "Partition_1_1_3")]
|
|
|
|
Field_1 = model.addField(Part_1_doc, 1, "DOUBLE", 1, ["Comp 1"], Field_1_objects)
|
|
|
|
Field_1.addStep(0, 0, [[0], [1], [2], [3], [4]])
|
|
|
|
|
|
|
|
|
|
|
|
model.end()
|
|
|
|
|
|
|
|
###
|
|
|
|
### SHAPERSTUDY component
|
|
|
|
###
|
|
|
|
|
|
|
|
model.publishToShaperStudy()
|
|
|
|
import SHAPERSTUDY
|
|
|
|
Partition_1_1, Field_1_1 = SHAPERSTUDY.shape(model.featureStringId(Partition_1))
|
|
|
|
###
|
|
|
|
### SMESH component
|
|
|
|
###
|
|
|
|
|
|
|
|
import SMESH, SALOMEDS
|
|
|
|
from salome.smesh import smeshBuilder
|
|
|
|
|
|
|
|
smesh = smeshBuilder.New()
|
|
|
|
#smesh.SetEnablePublish( False ) # Set to False to avoid publish in study if not needed or in some particular situations:
|
|
|
|
# multiples meshes built in parallel, complex and numerous mesh edition (performance)
|
|
|
|
|
|
|
|
Mesh_1 = smesh.Mesh(Partition_1_1)
|
|
|
|
Regular_1D = Mesh_1.Segment()
|
|
|
|
Local_Length_1 = Regular_1D.LocalLength(5,None,1e-07)
|
|
|
|
Quadrangle_2D = Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
|
|
|
|
Hexa_3D = Mesh_1.Hexahedron(algo=smeshBuilder.Hexa)
|
|
|
|
isDone = Mesh_1.Compute()
|
2023-02-21 18:59:44 +05:00
|
|
|
if not isDone:
|
|
|
|
raise Exception("Error when computing Mesh")
|
2021-06-23 10:59:19 +05:00
|
|
|
smesh.SetName(Mesh_1, 'Mesh_1')
|
|
|
|
|
|
|
|
#### Mesh_1.ExportMED( r'Mesh_with_one_field_on_cells.med', 0, 41, 1, Mesh_1.GetMesh(), 1, [ Field_1_1 ], '',-1 )
|
|
|
|
mfd = Mesh_1.ExportMEDCoupling(0, Mesh_1.GetMesh(), 1, [ Field_1_1 ], '',-1 )#### <- important line of test is here !
|
|
|
|
|
|
|
|
self.assertEqual(len(mfd.getMeshes()),1)
|
|
|
|
self.assertEqual(len(mfd.getFields()),1)
|
|
|
|
f = mfd.getFields()[0][0].field(mfd.getMeshes()[0])
|
|
|
|
f.checkConsistencyLight()
|
|
|
|
import medcoupling
|
|
|
|
self.assertEqual(f.getDiscretization().getEnum(),medcoupling.ON_CELLS)
|
|
|
|
self.assertTrue(f.getMesh().getNumberOfCells()>1)
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
def testMEDCouplingFieldOnNodes(self):
|
|
|
|
"""
|
|
|
|
Test focuses on ExportMEDCoupling method in the context of MED_NODES field output.
|
|
|
|
"""
|
|
|
|
salome.standalone()
|
|
|
|
salome.salome_init()
|
|
|
|
|
|
|
|
###
|
|
|
|
### SHAPER component
|
|
|
|
###
|
|
|
|
|
|
|
|
from salome.shaper import model
|
|
|
|
|
|
|
|
model.begin()
|
|
|
|
partSet = model.moduleDocument()
|
|
|
|
|
|
|
|
### Create Part
|
|
|
|
Part_1 = model.addPart(partSet)
|
|
|
|
Part_1_doc = Part_1.document()
|
|
|
|
|
|
|
|
### Create Box
|
|
|
|
Box_1 = model.addBox(Part_1_doc, 10, 10, 10)
|
|
|
|
|
|
|
|
### Create Plane
|
|
|
|
Plane_4 = model.addPlane(Part_1_doc, model.selection("FACE", "PartSet/XOY"), 5, False)
|
|
|
|
|
|
|
|
### Create Plane
|
|
|
|
Plane_5 = model.addPlane(Part_1_doc, model.selection("FACE", "PartSet/YOZ"), 5, False)
|
|
|
|
|
|
|
|
### Create Partition
|
|
|
|
Partition_1_objects = [model.selection("FACE", "Plane_1"),
|
|
|
|
model.selection("FACE", "Plane_2"),
|
|
|
|
model.selection("SOLID", "Box_1_1")]
|
|
|
|
Partition_1 = model.addPartition(Part_1_doc, Partition_1_objects, keepSubResults = True)
|
|
|
|
|
|
|
|
### Create Field
|
|
|
|
Field_2_objects = [model.selection("VERTEX", "[Partition_1_1_2/Modified_Face&Box_1_1/Back][Partition_1_1_2/Modified_Face&Box_1_1/Left][Partition_1_1_2/Modified_Face&Box_1_1/Top]"),
|
|
|
|
model.selection("VERTEX", "Partition_1_1_2/Generated_Vertex&Plane_2/Plane_2&new_weak_name_1"),
|
|
|
|
model.selection("VERTEX", "[Partition_1_1_4/Modified_Face&Box_1_1/Front][Partition_1_1_4/Modified_Face&Box_1_1/Left][Partition_1_1_4/Modified_Face&Box_1_1/Top]"),
|
|
|
|
model.selection("VERTEX", "Partition_1_1_1/Generated_Vertex&Plane_1/Plane_1&new_weak_name_1"),
|
|
|
|
model.selection("VERTEX", "[Partition_1_1_1/Modified_Face&Box_1_1/Left][Partition_1_1_1/Modified_Face&Plane_1/Plane_1][Partition_1_1_1/Modified_Face&Plane_2/Plane_2]"),
|
|
|
|
model.selection("VERTEX", "Partition_1_1_3/Generated_Vertex&Plane_1/Plane_1&new_weak_name_1"),
|
|
|
|
model.selection("VERTEX", "[Partition_1_1_1/Modified_Face&Box_1_1/Back][Partition_1_1_1/Modified_Face&Box_1_1/Left][Partition_1_1_1/Modified_Face&Box_1_1/Bottom]"),
|
|
|
|
model.selection("VERTEX", "Partition_1_1_1/Generated_Vertex&Plane_2/Plane_2&new_weak_name_1"),
|
|
|
|
model.selection("VERTEX", "[Partition_1_1_3/Modified_Face&Box_1_1/Left][Partition_1_1_3/Modified_Face&Box_1_1/Bottom][Partition_1_1_3/Modified_Face&Box_1_1/Front]")]
|
|
|
|
Field_2 = model.addField(Part_1_doc, 1, "DOUBLE", 1, ["Comp 1"], Field_2_objects)
|
|
|
|
Field_2.addStep(0, 0, [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]])
|
|
|
|
|
|
|
|
model.end()
|
|
|
|
|
|
|
|
###
|
|
|
|
### SHAPERSTUDY component
|
|
|
|
###
|
|
|
|
|
|
|
|
model.publishToShaperStudy()
|
|
|
|
import SHAPERSTUDY
|
|
|
|
Partition_1_1, Field_2_1 = SHAPERSTUDY.shape(model.featureStringId(Partition_1))
|
|
|
|
###
|
|
|
|
### SMESH component
|
|
|
|
###
|
|
|
|
|
|
|
|
import SMESH, SALOMEDS
|
|
|
|
from salome.smesh import smeshBuilder
|
|
|
|
|
|
|
|
smesh = smeshBuilder.New()
|
|
|
|
#smesh.SetEnablePublish( False ) # Set to False to avoid publish in study if not needed or in some particular situations:
|
|
|
|
# multiples meshes built in parallel, complex and numerous mesh edition (performance)
|
|
|
|
|
|
|
|
Mesh_1 = smesh.Mesh(Partition_1_1)
|
|
|
|
Regular_1D = Mesh_1.Segment()
|
|
|
|
Local_Length_1 = Regular_1D.LocalLength(5,None,1e-07)
|
|
|
|
Quadrangle_2D = Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
|
|
|
|
Hexa_3D = Mesh_1.Hexahedron(algo=smeshBuilder.Hexa)
|
|
|
|
isDone = Mesh_1.Compute()
|
2023-02-21 18:59:44 +05:00
|
|
|
if not isDone:
|
|
|
|
raise Exception("Error when computing Mesh")
|
2021-06-23 10:59:19 +05:00
|
|
|
smesh.SetName(Mesh_1, 'Mesh_1')
|
|
|
|
|
|
|
|
# 23th of june 2021 : Bug both in ExportMED and in ExportMEDCoupling
|
|
|
|
#Mesh_1.ExportMED( r'/tmp/Mesh_with_one_field_on_nodes.med', 0, 41, 1, Mesh_1.GetMesh(), 1, [ Field_2_1 ], '',-1 )
|
|
|
|
#mfd = Mesh_1.ExportMEDCoupling(0,Mesh_1.GetMesh(), 1, [ Field_2_1 ], '',-1)
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
unittest.main()
|