mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-04-10 18:47:28 +05:00
163 lines
7.1 KiB
Python
163 lines
7.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Copyright (C) 2014-2021 EDF R&D
|
|
#
|
|
# This library is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU Lesser General Public
|
|
# License as published by the Free Software Foundation; either
|
|
# version 2.1 of the License, or (at your option) any later version.
|
|
#
|
|
# This library is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
# Lesser General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Lesser General Public
|
|
# License along with this library; if not, write to the Free Software
|
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
#
|
|
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
|
#
|
|
"""procédure complète de construction d'une fissure longue"""
|
|
|
|
import os
|
|
|
|
import logging
|
|
|
|
import salome
|
|
|
|
from .geomsmesh import geomPublish
|
|
|
|
from . import initLog
|
|
|
|
from .insereFissureLongue_a import insereFissureLongue_a
|
|
from .insereFissureLongue_b import insereFissureLongue_b
|
|
from .insereFissureLongue_c import insereFissureLongue_c
|
|
from .insereFissureLongue_d import insereFissureLongue_d
|
|
from .insereFissureLongue_e import insereFissureLongue_e
|
|
from .insereFissureLongue_f import insereFissureLongue_f
|
|
from .insereFissureLongue_g import insereFissureLongue_g
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
def insereFissureLongue(geometriesSaines, \
|
|
shapesFissure, shapeFissureParams, \
|
|
maillageFissureParams, elementsDefaut, \
|
|
step=-1, mailleur="MeshGems", nro_cas=None):
|
|
"""procedure complete fissure longue"""
|
|
logging.info('start')
|
|
logging.info("Usage du mailleur %s pour le cas n°%s", mailleur, nro_cas)
|
|
|
|
#geometrieSaine = geometriesSaines[0]
|
|
shapeDefaut = shapesFissure[0] # face de fissure, debordant
|
|
#tailleDefaut = shapesFissure[2]
|
|
wiretube = shapesFissure[4] # wire fond de fissure, debordant
|
|
planfiss = shapesFissure[7] # plan de fissure
|
|
pipefiss = shapesFissure[8] # pipe, debordant
|
|
|
|
profondeur = shapeFissureParams['profondeur']
|
|
rayonPipe = profondeur/4.0
|
|
|
|
nomRep = maillageFissureParams['nomRep']
|
|
nomFicSain = maillageFissureParams['nomFicSain']
|
|
nomFicFissure = maillageFissureParams['nomFicFissure']
|
|
|
|
#nbsegExt = maillageFissureParams['nbsegExt'] # 5
|
|
#nbsegGen = maillageFissureParams['nbsegGen'] # 25
|
|
#nbsegRad = maillageFissureParams['nbsegRad'] # 5
|
|
#scaleRad = maillageFissureParams['scaleRad'] # 4
|
|
#nbsegCercle = maillageFissureParams['nbsegCercle'] # 6
|
|
#nbsegFis = maillageFissureParams['nbsegFis'] # 20
|
|
#lensegEllipsoide = maillageFissureParams['lensegEllipso'] # 1.0
|
|
|
|
#fichierMaillageSain = os.path.join(nomRep, '{}.med'.format(nomFicSain))
|
|
fichierMaillageFissure = os.path.join(nomRep, '{}.med'.format(nomFicFissure))
|
|
|
|
facesDefaut = elementsDefaut[0]
|
|
#centreDefaut = elementsDefaut[1]
|
|
#normalDefaut = elementsDefaut[2]
|
|
#extrusionDefaut = elementsDefaut[3]
|
|
#dmoyen = elementsDefaut[4]
|
|
#bordsPartages = elementsDefaut[5]
|
|
#fillconts = elementsDefaut[6]
|
|
#idFilToCont = elementsDefaut[7]
|
|
maillageSain = elementsDefaut[8]
|
|
internalBoundary = elementsDefaut[9]
|
|
zoneDefaut = elementsDefaut[10]
|
|
zoneDefaut_skin = elementsDefaut[11]
|
|
zoneDefaut_internalFaces = elementsDefaut[12]
|
|
zoneDefaut_internalEdges = elementsDefaut[13]
|
|
|
|
facePorteFissure = shapeDefaut
|
|
WirePorteFondFissure = wiretube
|
|
fillingFaceExterne = facesDefaut[0]
|
|
logging.debug("fillingFaceExterne %s", fillingFaceExterne)
|
|
geomPublish(initLog.debug, fillingFaceExterne, "fillingFaceExterne")
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# --- peau et face de fissure
|
|
edgesInside, centreFondFiss, tangentFondFiss, \
|
|
planBord1, planBord2 , \
|
|
facePeau, faceFiss, verticesOutCercles, verticesEdgePeauFiss, \
|
|
edgePeauFiss, demiCerclesPeau, \
|
|
groupEdgesBordPeau, groupsDemiCerclesPeau, groupEdgesFaceFissPipe = \
|
|
insereFissureLongue_a (facePorteFissure, WirePorteFondFissure, \
|
|
fillingFaceExterne, \
|
|
pipefiss, rayonPipe, \
|
|
mailleur, nro_cas )
|
|
# -----------------------------------------------------------------------------
|
|
# --- pipe de fond de fissure
|
|
pipeFondFiss, disques, rayons, \
|
|
demiCercles, generatrices, \
|
|
VerticesEndPipeFiss, bordsLibres, \
|
|
groupFaceFissInPipe, groupEdgeFondFiss, groupsDemiCerclesPipe, groupGenerFiss = \
|
|
insereFissureLongue_b (edgesInside, centreFondFiss, tangentFondFiss, \
|
|
planfiss, planBord1, planBord2, \
|
|
facePeau, verticesOutCercles, verticesEdgePeauFiss, \
|
|
fillingFaceExterne, rayonPipe, \
|
|
internalBoundary, \
|
|
nro_cas)
|
|
|
|
# --- maillage pipe fond fissure
|
|
|
|
meshFondFiss, groups_demiCercles, group_generFiss, nbSegGenLong, nbSegGenBout = \
|
|
insereFissureLongue_c (pipeFondFiss, disques, rayons, demiCercles, demiCerclesPeau, generatrices, \
|
|
VerticesEndPipeFiss, verticesEdgePeauFiss, \
|
|
groupFaceFissInPipe, groupEdgeFondFiss, groupsDemiCerclesPipe, groupGenerFiss, \
|
|
profondeur, rayonPipe, \
|
|
nro_cas)
|
|
|
|
# --- maillage face de peau
|
|
|
|
meshFacePeau, groupEdgesPeauFiss = \
|
|
insereFissureLongue_d ( facePeau, edgePeauFiss, groupEdgesBordPeau, bordsLibres, \
|
|
groupsDemiCerclesPeau, groups_demiCercles, verticesOutCercles, \
|
|
nbSegGenLong, nbSegGenBout, profondeur, \
|
|
mailleur, nro_cas )
|
|
|
|
# --- maillage face de fissure
|
|
|
|
meshFaceFiss = \
|
|
insereFissureLongue_e ( faceFiss, edgePeauFiss, groupEdgesPeauFiss, group_generFiss, groupEdgesFaceFissPipe, \
|
|
profondeur, rayonPipe, \
|
|
mailleur, nro_cas )
|
|
|
|
# --- maillage meshBoiteDefaut
|
|
|
|
meshBoiteDefaut, group_faceFissInPipe, group_faceFissOutPipe = \
|
|
insereFissureLongue_f ( internalBoundary, meshFondFiss, meshFacePeau, meshFaceFiss, \
|
|
mailleur, nro_cas )
|
|
|
|
|
|
# --- maillage complet
|
|
maillageComplet = \
|
|
insereFissureLongue_g (nomFicFissure, fichierMaillageFissure, nomFicSain, maillageSain, \
|
|
meshBoiteDefaut, facePorteFissure, \
|
|
group_faceFissInPipe, group_faceFissOutPipe, \
|
|
zoneDefaut, zoneDefaut_skin, zoneDefaut_internalEdges, zoneDefaut_internalFaces, \
|
|
nro_cas)
|
|
|
|
if salome.sg.hasDesktop():
|
|
salome.sg.updateObjBrowser()
|
|
|
|
return maillageComplet
|