コード例 #1
0
def RetrieveFamGrpsMapInternal(fn, mn):
    famsPy = {}
    grpsPy = {}
    fid = med.MEDfileOpen(fn, med.MED_ACC_RDONLY)
    med.MEDnFamily(fid, mn)
    s = set()
    for elt in range(med.MEDnFamily(fid, mn)):
        nbGrps = med.MEDnFamilyGroup(fid, mn, elt + 1)
        gro = med.MEDCHAR(med.MED_LNAME_SIZE * nbGrps + 1)
        famName, famId, grps = med.MEDfamilyInfo(fid, mn, elt + 1, gro)
        if famName in s:
            famName = "{}@".format(famName)
        famsPy[famName] = famId
        grps2 = [
            "".join(gro[i * med.MED_LNAME_SIZE:(i + 1) *
                        med.MED_LNAME_SIZE]).rstrip() for i in range(nbGrps)
        ]
        grpsPy[famName] = grps2
        s.add(famName)
        pass
    med.MEDfileClose(fid)
    return famsPy, grpsPy
コード例 #2
0
try:
    med.MEDmeshNodeCoordinateWr(fid, meshname, med.MED_NO_DT, med.MED_NO_IT,
                                med.MED_UNDEF_DT, med.MED_FULL_INTERLACE,
                                nnodes, coordinates)
except RuntimeError as ex:
    print("ERROR : nodes coordinates ...\n%s" % ex)
    doCleanup(fid, -1)

#  cells connectiviy is defined in nodal mode
#  2 polygons
try:
    med.MEDmeshPolygonWr(fid, meshname, med.MED_NO_DT, med.MED_NO_IT,
                         med.MED_UNDEF_DT, med.MED_CELL, med.MED_NODAL,
                         indexsize, index, connectivity)
except RuntimeError as ex:
    print("ERROR : polygon connectivity ...\n%s" % ex)
    doCleanup(fid, -1)

#  create family 0 : by default, all mesh entities family number is 0
#TODO : Etudier la pertinence de définir MED_NO_GROUP comme un MEDCHAR('')
#TODO : A confronter aux types des paramètres axisname, axisunit
try:
    med.MEDfamilyCr(fid, meshname, med.MED_NO_NAME, 0, 0,
                    med.MEDCHAR(med.MED_NO_GROUP))
except RuntimeError as ex:
    print("ERROR : family 0 creation ...\n%s" % ex)
    doCleanup(fid, -1)

#  close MED file
doCleanup(fid, 0)
コード例 #3
0
#  max size of meshname : med.MED_NAME_SIZE+1
meshname = "2D structured mesh"
spacedim = 2
meshdim = 2
#  max size of axisname and unitname : 2*med.MED_SNAME_SIZE+1
#           12345678901234561234567890123456
axisname = "x               y               "
unitname = "cm              cm              "
cooXaxis = med.MEDFLOAT([1., 2., 3., 4., 5.])
cooYaxis = med.MEDFLOAT([1., 2., 3.])
nquad4 = 8
#  max size of cellsname : 8*med.MED_SNAME_SIZE+1
#                         12345678901234561234567890123456123456789012345612345678901234561234567890123456123456789012345612345678901234561234567890123456
cellsnames = med.MEDCHAR(
    "CELL_1          CELL_2          CELL_3          CELL_4          CELL_5          CELL_6          CELL_7          CELL_8          "
)
#  max size of familyname : med.MED_NAME_SIZE+1
familyname = "CART_GRID_QUAD_FAMILY"
#  max size of groupname : med.MED_LNAME_SIZE+1
groupname = med.MEDCHAR("CART_GRID_GROUP")
familynumbers = med.MEDINT([-1, -1, -1, -1, -1, -1, -1, -1])

#  MED file creation
try:
    fid = med.MEDfileOpen("UsesCase_MEDmesh_4.med", med.MED_ACC_CREAT)
except RuntimeError as ex:
    print("ERROR : file creation ...\n%s" % ex)
    sys.exit(-1)

#  create the structured mesh in the MED file
コード例 #4
0
try:
    size2, chgt2, trsf2 = med.MEDmeshnEntity(fid, meshname, med.MED_NO_DT,
                                             med.MED_NO_IT, med.MED_NODE,
                                             med.MED_NONE,
                                             med.MED_COORDINATE_AXIS2,
                                             med.MED_NO_CMODE)
except RuntimeError as ex:
    print("ERROR : number of coordinates on Y axis ...\n%s" % ex)
    doCleanup(fid, -1)
ncell = ncell * (size2 - 1)
cooYaxis = med.MEDFLOAT([0.] * size2)

try:
    med.MEDmeshGridIndexCoordinateRd(fid, meshname, med.MED_NO_DT,
                                     med.MED_NO_IT, axis, cooYaxis)
except RuntimeError as ex:
    print("ERROR : read axis Y coordinates ...\n%s" % ex)
    doCleanup(fid, -1)

#  read cells name

cellsname = med.MEDCHAR(["\0"] * (ncell * med.MED_SNAME_SIZE + 1))
try:
    med.MEDmeshEntityNameRd(fid, meshname, med.MED_NO_DT, med.MED_NO_IT,
                            med.MED_CELL, med.MED_QUAD4, cellsname)
except RuntimeError as ex:
    print("ERROR : read cells name ...\n%s" % ex)
    doCleanup(fid, -1)

#  close MED file
doCleanup(fid, 0)
コード例 #5
0
#  nodes coordinates in a cartesian axis in full interlace mode
#  (X1,Y1, X2,Y2, X3,Y3, ...) with no iteration and computation step
try:
    med.MEDmeshNodeCoordinateWr(fid, meshname, med.MED_NO_DT, med.MED_NO_IT,
                                med.MED_UNDEF_DT, med.MED_FULL_INTERLACE,
                                nnodes, coordinates)
except RuntimeError as ex:
    print("ERROR : nodes coordinates ...\n%s" % ex)
    doCleanup(fid, -1)

#  cells connectiviy is defined in nodal mode with no iteration and computation step
try:
    med.MEDmeshPolyhedronWr(fid, meshname, med.MED_NO_DT, med.MED_NO_IT,
                            med.MED_UNDEF_DT, med.MED_CELL, med.MED_NODAL,
                            faceindexSize, faceindex, nodeindexSize, nodeindex,
                            connectivity)
except RuntimeError as ex:
    print("ERROR : polyhedron connectivity ...\n%s" % ex)
    doCleanup(fid, -1)

#  create family 0 : by default, all mesh entities family number is 0
#TODO : Etudier la pertinence de définir MED_NO_GROUP comme un MEDCHAR('')
#TODO : A confronter aux types des paramètres axisname, axisunit
try:
    med.MEDfamilyCr(fid, meshname, "", 0, 0, med.MEDCHAR(""))
except RuntimeError as ex:
    print("ERROR : family 0 creation ...\n%s" % ex)
    doCleanup(fid, -1)

#  close MED file
doCleanup(fid, 0)
コード例 #6
0
try:
    nfamily = med.MEDnFamily(fid, meshname)
except RuntimeError as ex:
    print("ERROR : read number of family ...\n%s" % ex)
    doCleanup(fid, -1)

for i in range(0, nfamily):

    try:
        ngroup = med.MEDnFamilyGroup(fid, meshname, i + 1)
    except RuntimeError as ex:
        print("ERROR : read number of group in a family ...\n%s" % ex)
        doCleanup(fid, -1)

    if ngroup > 0:
        groupname = med.MEDCHAR("\0" * (med.MED_LNAME_SIZE * ngroup + 1))
        try:
            familyname, familynumber, groupname = med.MEDfamilyInfo(
                fid, meshname, i + 1, groupname)
        except RuntimeError as ex:
            print("ERROR : family info ...\n%s" % ex)
            doCleanup(fid, -1)

#  check family numbers for node
#  By convention, if there is no numbers in the file, it means that 0 is the family
#  number of all nodes
familynumbers = med.MEDINT([0] * nnodes)
try:
    nfamilynumbers, chgt, trsf = med.MEDmeshnEntity(
        fid, meshname, med.MED_NO_DT, med.MED_NO_IT, med.MED_NODE,
        med.MED_NONE, med.MED_FAMILY_NUMBER, med.MED_NO_CMODE)
コード例 #7
0
    2., 1., 7., 1., 12., 1., 17., 1., 22., 1., 2., 6., 7., 6., 12., 6., 17.,
    6., 22., 6., 2., 11., 7., 11., 12., 11., 17., 11., 22., 11.
])
nnodes = 15
triaconnectivity = med.MEDINT([
    1, 7, 6, 2, 7, 1, 3, 7, 2, 8, 7, 3, 13, 7, 8, 12, 7, 13, 11, 7, 12, 6, 7,
    11
])
ntria3 = 8
quadconnectivity = med.MEDINT(
    [3, 4, 9, 8, 4, 5, 10, 9, 15, 14, 9, 10, 13, 8, 9, 14])
nquad4 = 4
#  max size of familyname : med.MED_NAME_SIZE+1
familyname = "BOUNDARY_VERTICES"
#  max size of groupename : med.MED_LNAME_SIZE+1
groupname = med.MEDCHAR("MESH_BOUNDARY_VERTICES")
familynumbers = med.MEDINT([1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1])

#  MED file creation
try:
    fid = med.MEDfileOpen("UsesCase_MEDmesh_10.med", med.MED_ACC_CREAT)
except RuntimeError as ex:
    print("ERROR : file creation ...\n%s" % ex)
    sys.exit(-1)

#  write a comment in the file
try:
    med.MEDfileCommentWr(fid, "A 2D unstructured mesh : 15 nodes, 12 cells")
except RuntimeError as ex:
    print("ERROR : write file description ...\n%s" % ex)
    doCleanup(fid, -1)