From: eficas <> Date: Fri, 10 Dec 2004 13:05:24 +0000 (+0000) Subject: PN vielles macros X-Git-Tag: CC_param_poursuite~175 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=232f78c669c65244099e4cd4f14ec997b6588f48;p=modules%2Feficas.git PN vielles macros --- diff --git a/Aster/Cata/cataSTA6/cata.py b/Aster/Cata/cataSTA6/cata.py index 89c335e6..1b0e3ba8 100755 --- a/Aster/Cata/cataSTA6/cata.py +++ b/Aster/Cata/cataSTA6/cata.py @@ -30,7 +30,7 @@ except: # __version__="$Name: $" -__Id__="$Id: cata.py,v 1.1 2004/11/19 09:06:20 eficas Exp $" +__Id__="$Id: cata.py,v 1.2 2004/12/10 12:49:00 eficas Exp $" # JdC = JDC_CATA(code='ASTER', execmodul=None, @@ -12614,7 +12614,7 @@ MACR_RECAL = MACRO(nom="MACR_RECAL",op=macr_recal_ops,docu="U4.73.02", # ====================================================================== # RESPONSABLE JMBHH01 J.M.PROIX -from Macro.macr_cara_poutre_ops import macro_cara_poutre_ops +from cataSTA6.macro_cara_poutre_ops import macro_cara_poutre_ops MACRO_CARA_POUTRE=MACRO(nom="MACRO_CARA_POUTRE",op=macro_cara_poutre_ops,sd_prod=tabl_cara_geom, docu="U4.42.02-d1",reentrant='n', diff --git a/Aster/Cata/cataSTA6/macro_cara_poutre_ops.py b/Aster/Cata/cataSTA6/macro_cara_poutre_ops.py new file mode 100644 index 00000000..a98d3d6f --- /dev/null +++ b/Aster/Cata/cataSTA6/macro_cara_poutre_ops.py @@ -0,0 +1,684 @@ +# -*- coding: utf-8 -*- +#@ MODIF macro_cara_poutre_ops Macro DATE 25/06/2002 AUTEUR JMBHH01 J.M.PROIX +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM 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 +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# ====================================================================== +# RESPONSABLE JMBHH01 J.M.PROIX +def macro_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, + GROUP_MA,ORIG_INER,NOEUD,GROUP_MA_INTE, + LONGUEUR,MATERIAU,LIAISON, + **args): + """ + Ecriture de la macro MACRO_CARA_POUTRE + """ + import types + from Accas import _F + ier=0 + # On importe les definitions des commandes a utiliser dans la macro + # Le nom de la variable doit etre obligatoirement le nom de la commande + LIRE_MAILLAGE =self.get_cmd('LIRE_MAILLAGE') + DEFI_GROUP =self.get_cmd('DEFI_GROUP') + CREA_MAILLAGE =self.get_cmd('CREA_MAILLAGE') + AFFE_MODELE =self.get_cmd('AFFE_MODELE') + DEFI_MATERIAU =self.get_cmd('DEFI_MATERIAU') + AFFE_MATERIAU =self.get_cmd('AFFE_MATERIAU') + DEFI_FONCTION =self.get_cmd('DEFI_FONCTION') + DEFI_CONSTANTE =self.get_cmd('DEFI_CONSTANTE') + AFFE_CHAR_THER =self.get_cmd('AFFE_CHAR_THER') + AFFE_CHAR_THER_F=self.get_cmd('AFFE_CHAR_THER_F') + THER_LINEAIRE =self.get_cmd('THER_LINEAIRE') + CALC_VECT_ELEM =self.get_cmd('CALC_VECT_ELEM') + CALC_MATR_ELEM =self.get_cmd('CALC_MATR_ELEM') + NUME_DDL =self.get_cmd('NUME_DDL') + ASSE_VECTEUR =self.get_cmd('ASSE_VECTEUR') + POST_ELEM =self.get_cmd('POST_ELEM') + # La macro compte pour 1 dans la numerotation des commandes + self.icmd=1 + + # Le concept sortant (de type tabl_cara_geom) est nommé 'nomres' dans + # le contexte de la macro + + self.DeclareOut('nomres',self.sd) + + if GROUP_MA_BORD and GROUP_MA: + if not LIAISON: + ier=ier+1 + self.cr.fatal("Avec GROUP_MA, il faut obligatoirement preciser LIAISON, LONGUEUR ET MATERIAU") + return ier + + __nomlma=LIRE_MAILLAGE(UNITE=UNITE_MAILLAGE,) + + __nomamo=AFFE_MODELE(MAILLAGE=__nomlma, + AFFE=_F(TOUT='OUI', + PHENOMENE='MECANIQUE', + MODELISATION='D_PLAN',), ) + + __nomdma=DEFI_MATERIAU(ELAS=_F(E=1.0,NU=0.,RHO=1.0),) + + + __nomama=AFFE_MATERIAU(MAILLAGE=__nomlma, + AFFE=_F(TOUT='OUI', + MATER=__nomdma,), ) + +# --- CALCUL DES CARACTERISTIQUES GEOMETRIQUES DE LA SECTION : +# ------------------------------------------------------ + + motsimps={} + if GROUP_MA : motsimps['GROUP_MA'] = GROUP_MA + if SYME_X : motsimps['SYME_X'] = SYME_X + if SYME_Y : motsimps['SYME_Y'] = SYME_Y + motsimps['ORIG_INER'] = ORIG_INER + mfact=_F(TOUT='OUI',**motsimps) + nomres=POST_ELEM(MODELE=__nomamo, + CHAM_MATER=__nomama, + CARA_GEOM=mfact ) + +# nb : si GROUP_MA n existe pas : le mot clé est ignoré + +# +# ================================================================== +# --- = CALCUL DE LA CONSTANTE DE TORSION SUR TOUT LE MAILLAGE = +# --- = OU DU CENTRE DE TORSION/CISAILLEMENT = +# --- = DES COEFFICIENTS DE CISAILLEMENT = +# --- = ET DE L INERTIE DE GAUCHISSEMENT = +# --- = ON CREE UN MODELE PLAN 2D THERMIQUE REPRESENTANT LA SECTION = +# --- = DE LA POUTRE CAR ON A A RESOUDRE DES E.D.P. AVEC DES LAPLACIENS= +# ================================================================== + + if GROUP_MA_BORD and not GROUP_MA: + +# --- TRANSFORMATION DES GROUP_MA EN GROUP_NO SUR-LESQUELS +# --- ON POURRA APPLIQUER DES CONDITIONS DE TEMPERATURE IMPOSEE : +# --------------------------------------------------------- + motscles={} + if type(GROUP_MA_BORD)==types.StringType: + motscles['CREA_GROUP_NO']=_F(GROUP_MA=GROUP_MA_BORD,) + else: + motscles['CREA_GROUP_NO']=[] + for grma in GROUP_MA_BORD: + motscles['CREA_GROUP_NO'].append(_F(GROUP_MA=grma,)) + __nomlma=DEFI_GROUP(reuse=__nomlma, + MAILLAGE=__nomlma, + **motscles) + + +# --- CREATION D UN MAILLAGE IDENTIQUE AU PREMIER A CECI PRES +# --- QUE LES COORDONNEES SONT EXPRIMEES DANS LE REPERE PRINCIPAL +# --- D INERTIE DONT L ORIGINE EST LE CENTRE DE GRAVITE DE LA SECTION : +# --------------------------------------------------------------- + + __nomapi=CREA_MAILLAGE(MAILLAGE=__nomlma, + REPERE=_F(TABLE=nomres, + NOM_ORIG='CDG', ), ) + +# --- AFFECTATION DU PHENOMENE 'THERMIQUE' AU MODELE EN VUE DE +# --- LA CONSTRUCTION D UN OPERATEUR LAPLACIEN SUR CE MODELE : +# ------------------------------------------------------ + + __nomoth=AFFE_MODELE(MAILLAGE=__nomapi, + AFFE=_F(TOUT='OUI', + PHENOMENE='THERMIQUE', + MODELISATION='PLAN',), ) + +# --- POUR LA CONSTRUCTION DU LAPLACIEN, ON DEFINIT UN +# --- PSEUDO-MATERIAU DONT LES CARACTERISTIQUES THERMIQUES SONT : +# --- LAMBDA = 1, RHO*CP = 0 : +# ---------------------- + + __nomath=DEFI_MATERIAU(THER=_F(LAMBDA=1.0,RHO_CP=0.,),) + +# --- DEFINITION D UN CHAM_MATER A PARTIR DU MATERIAU PRECEDENT : +# --------------------------------------------------------- + + __chmath=AFFE_MATERIAU(MAILLAGE=__nomapi, + AFFE=_F(TOUT='OUI', + MATER=__nomath,), ) + +# +# ------------------------------------------------------------ +# --- - CALCUL DE LA CONSTANTE DE TORSION PAR RESOLUTION - +# --- - D UN LAPLACIEN AVEC UN TERME SOURCE EGAL A -2 - +# --- - L INCONNUE ETANT NULLE SUR LE CONTOUR DE LA SECTION : - +# --- - LAPLACIEN(PHI) = -2 DANS LA SECTION - +# --- - PHI = 0 SUR LE CONTOUR : - +# ------------------------------------------------------------ +# +# --- ON IMPOSE LA VALEUR 0 A L INCONNUE SCALAIRE SUR LE CONTOUR +# --- DE LA SECTION +# --- ET ON A UN TERME SOURCE EGAL A -2 DANS TOUTE LA SECTION : +# ------------------------------------------------------- + + motscles={} + if GROUP_MA_INTE: + motscles['LIAISON_UNIF']=_F(GROUP_MA=GROUP_MA_INTE,DDL='TEMP'), + __chart1=AFFE_CHAR_THER(MODELE=__nomoth, + TEMP_IMPO =_F(GROUP_NO=GROUP_MA_BORD, + TEMP=0. ), + SOURCE =_F(TOUT='OUI', + SOUR=2.0), + **motscles ) + +# --- POUR CHAQUE TROU DE LA SECTION : +# --- .ON A IMPOSE QUE PHI EST CONSTANT SUR LE CONTOUR INTERIEUR +# --- EN FAISANT LE LIAISON_UNIF DANS LE AFFE_CHAR_THER PRECEDENT +# --- .ON IMPOSE EN PLUS D(PHI)/DN = 2*AIRE(TROU)/L(TROU) +# --- OU D/DN DESIGNE LA DERIVEE PAR RAPPORT A LA +# --- NORMALE ET L DESIGNE LA LONGUEUR DU BORD DU TROU : +# ------------------------------------------------------- + + if GROUP_MA_INTE: + __tbaire=POST_ELEM(MODELE=__nomoth, + AIRE_INTERNE=_F(GROUP_MA_BORD=GROUP_MA_INTE,), ) + + motscles={} + motscles['FLUX_REP']=[] + if type(GROUP_MA_INTE)==types.StringType: + motscles['FLUX_REP']=_F(GROUP_MA=GROUP_MA_INTE,CARA_TORSION=__tbaire) + else: + motscles['FLUX_REP']=[] + for grma in GROUP_MA_INTE: + motscles['FLUX_REP'].append(_F(GROUP_MA=grma,CARA_TORSION=__tbaire),) + __chart2=AFFE_CHAR_THER(MODELE=__nomoth,**motscles) + +# --- RESOLUTION DE LAPLACIEN(PHI) = -2 +# --- AVEC PHI = 0 SUR LE CONTOUR : +# ---------------------------------------- + + motscles={} + motscles['EXCIT']=[_F(CHARGE=__chart1,),] + if GROUP_MA_INTE: + motscles['EXCIT'].append(_F(CHARGE=__chart2,)) + __tempe1=THER_LINEAIRE(MODELE=__nomoth, + CHAM_MATER=__chmath, + SOLVEUR=_F(STOP_SINGULIER='NON',), + **motscles ) + +# +# ---------------------------------------------- +# --- - CALCUL DU CENTRE DE TORSION/CISAILLEMENT - +# --- - ET DES COEFFICIENTS DE CISAILLEMENT : - +# ---------------------------------------------- +# +# --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR +# --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE +# --- PAR UNE FONCTION EGALE A Y : +# -------------------------- + + __fnsec1=DEFI_FONCTION(NOM_PARA='X', + VALE=(0.,0.,10.,10.), + PROL_DROITE='LINEAIRE', + PROL_GAUCHE='LINEAIRE', + ) + + __fnsec0=DEFI_CONSTANTE(VALE=0.,) + +# --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION +# --- DE LAPLACE EST PRIS EGAL A Y DANS TOUTE LA SECTION : +# -------------------------------------------------- + + + motscles={} + if NOEUD: + motscles['TEMP_IMPO']=(_F(NOEUD=NOEUD,TEMP=__fnsec0)) + __chart2=AFFE_CHAR_THER_F(MODELE=__nomoth, + SOURCE=_F(TOUT='OUI', + SOUR=__fnsec1,), + **motscles ) + +# --- RESOLUTION DE LAPLACIEN(PHI) = -Y +# --- AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR : +# ------------------------------------------------ + + __tempe2=THER_LINEAIRE(MODELE=__nomoth, + CHAM_MATER=__chmath, + EXCIT=_F(CHARGE=__chart2,), + SOLVEUR=_F(STOP_SINGULIER='NON',), + ) + +# --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR +# --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE +# --- PAR UNE FONCTION EGALE A Z : +# -------------------------- + + __fnsec2=DEFI_FONCTION(NOM_PARA='Y', + VALE=(0.,0.,10.,10.), + PROL_DROITE='LINEAIRE', + PROL_GAUCHE='LINEAIRE', + ) + +# --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION +# --- DE LAPLACE EST PRIS EGAL A Z DANS TOUTE LA SECTION : +# -------------------------------------------------- + + motscles={} + if NOEUD: + motscles['TEMP_IMPO']=_F(NOEUD=NOEUD,TEMP=__fnsec0) + __chart3=AFFE_CHAR_THER_F(MODELE=__nomoth, + SOURCE=_F(TOUT='OUI', + SOUR=__fnsec2,), + **motscles) + +# --- RESOLUTION DE LAPLACIEN(PHI) = -Z +# --- AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR : +# ------------------------------------------------ + + __tempe3=THER_LINEAIRE(MODELE=__nomoth, + CHAM_MATER=__chmath, + EXCIT=_F(CHARGE=__chart3,), + SOLVEUR=_F(STOP_SINGULIER='NON',), + ) + +# --- CALCUL DE LA CONSTANTE DE TORSION : +# --------------------------------- + + motscles={} + if GROUP_MA_INTE: + motscles['CARA_POUTRE']=_F(CARA_GEOM=nomres, + LAPL_PHI=__tempe1, + TOUT='OUI', + OPTION='CARA_TORSION', + GROUP_MA_INTE=GROUP_MA_INTE,) + else: + motscles['CARA_POUTRE']=_F(CARA_GEOM=nomres, + LAPL_PHI=__tempe1, + TOUT='OUI', + OPTION='CARA_TORSION', ) + nomres=POST_ELEM(reuse=nomres, + MODELE=__nomoth, + CHAM_MATER=__chmath, + **motscles ) + +# --- CALCUL DES COEFFICIENTS DE CISAILLEMENT ET DES COORDONNEES DU +# --- CENTRE DE CISAILLEMENT/TORSION : +# ------------------------------ + + nomres=POST_ELEM(reuse=nomres, + MODELE=__nomoth, + CHAM_MATER=__chmath, + CARA_POUTRE=_F(CARA_GEOM=nomres, + LAPL_PHI_Y=__tempe2, + LAPL_PHI_Z=__tempe3, + TOUT='OUI', + OPTION='CARA_CISAILLEMENT',), ) + +# +# ------------------------------------------------------------ +# --- - CALCUL DE L INERTIE DE GAUCHISSEMENT PAR RESOLUTION DE - +# --- - LAPLACIEN(OMEGA) = 0 DANS LA SECTION - +# --- - AVEC D(OMEGA)/D(N) = Z*NY-Y*NZ SUR LE - +# --- - CONTOUR DE LA SECTION - +# --- - NY ET NZ SONT LES COMPOSANTES DU VECTEUR N NORMAL - +# --- - A CE CONTOUR - +# --- - ET SOMME_S(OMEGA.DS) = 0 - +# --- - OMEGA EST LA FONCTION DE GAUCHISSEMENT - +# --- - L INERTIE DE GAUCHISSEMENT EST SOMME_S(OMEGA**2.DS) - +# ------------------------------------------------------------ +# +# --- CREATION D UN MAILLAGE DONT LES COORDONNEES SONT EXPRIMEES +# --- DANS LE REPERE PRINCIPAL D INERTIE MAIS AVEC COMME ORIGINE +# --- LE CENTRE DE TORSION DE LA SECTION, ON VA DONC UTILISER +# --- LE MAILLAGE DE NOM NOMAPI DONT LES COORDONNEES SONT +# --- EXPRIMEES DANS LE REPERE PRINCIPAL D'INERTIE, L'ORIGINE +# --- ETANT LE CENTRE DE GRAVITE DE LA SECTION (QUI EST DONC +# --- A CHANGER) : +# ---------- + + __nomapt=CREA_MAILLAGE(MAILLAGE=__nomapi, + REPERE=_F(TABLE=nomres, + NOM_ORIG='TORSION',) ) + +# --- AFFECTATION DU PHENOMENE 'THERMIQUE' AU MODELE EN VUE DE +# --- LA CONSTRUCTION D UN OPERATEUR LAPLACIEN SUR CE MODELE : +# ------------------------------------------------------ + + __nomot2=AFFE_MODELE(MAILLAGE=__nomapt, + AFFE=_F(TOUT='OUI', + PHENOMENE='THERMIQUE', + MODELISATION='PLAN', ) ) + +# --- DEFINITION D UN CHAM_MATER A PARTIR DU MATERIAU PRECEDENT : +# --------------------------------------------------------- + + __chmat2=AFFE_MATERIAU(MAILLAGE=__nomapt, + AFFE=_F(TOUT='OUI', + MATER=__nomath, ), ) + +# --- POUR LE CALCUL DE L INERTIE DE GAUCHISSEMENT, ON VA DEFINIR +# --- LA COMPOSANTE SELON Y DU FLUX A IMPOSER SUR LE CONTOUR +# --- PAR UNE FONCTION EGALE A -X : +# --------------------------- + + __fnsec3=DEFI_FONCTION(NOM_PARA='X', + VALE=(0.,0.,10.,-10.), + PROL_DROITE='LINEAIRE', + PROL_GAUCHE='LINEAIRE', + ) + +# --- POUR LE CALCUL DE L INERTIE DE GAUCHISSEMENT, ON VA DEFINIR +# --- LA COMPOSANTE SELON X DU FLUX A IMPOSER SUR LE CONTOUR +# --- PAR UNE FONCTION EGALE A Y : +# -------------------------- + + __fnsec4=DEFI_FONCTION(NOM_PARA='Y', + VALE=(0.,0.,10.,10.), + PROL_DROITE='LINEAIRE', + PROL_GAUCHE='LINEAIRE', + ) + +# --- DANS LE BUT D IMPOSER LA RELATION LINEAIRE ENTRE DDLS +# --- SOMME_SECTION(OMEGA.DS) = 0 ( CETTE CONDITION +# --- VENANT DE L EQUATION D EQUILIBRE SELON L AXE DE LA POUTRE +# --- N = 0, N ETANT L EFFORT NORMAL) +# --- ON CALCULE LE VECTEUR DE CHARGEMENT DU A UN TERME SOURCE EGAL +# --- A 1., LES TERMES DE CE VECTEUR SONT EGAUX A +# --- SOMME_SECTION(NI.DS) ET SONT DONC LES COEFFICIENTS DE +# --- LA RELATION LINEAIRE A IMPOSER. +# --- ON DEFINIT DONC UN CHARGEMENT DU A UN TERME SOURCE EGAL A 1 : +# ----------------------------------------------------------- + + __chart4=AFFE_CHAR_THER(MODELE=__nomot2, + SOURCE=_F(TOUT='OUI', + SOUR=1.0), ) + +# --- ON CALCULE LE VECT_ELEM DU AU CHARGEMENT PRECEDENT +# --- IL S AGIT DES VECTEURS ELEMENTAIRES DONT LE TERME +# --- AU NOEUD COURANT I EST EGAL A SOMME_SECTION(NI.DS) : +# -------------------------------------------------- + + __vecel=CALC_VECT_ELEM(CHARGE=__chart4, + OPTION='CHAR_THER' + ) + +# --- ON CALCULE LE MATR_ELEM DES MATRICES ELEMENTAIRES +# --- DE CONDUCTIVITE UNIQUEMENT POUR GENERER LE NUME_DDL +# --- SUR-LEQUEL S APPUIERA LE CHAMNO UTILISE POUR ECRIRE LA +# --- RELATION LINEAIRE ENTRE DDLS : +# ---------------------------- + + __matel=CALC_MATR_ELEM(MODELE=__nomot2, + CHAM_MATER=__chmat2, + CHARGE=__chart4, + OPTION='RIGI_THER',) + +# --- ON DEFINIT LE NUME_DDL ASSOCIE AU MATR_ELEM DEFINI +# --- PRECEDEMMENT POUR CONSTRUIRE LE CHAMNO UTILISE POUR ECRIRE LA +# --- RELATION LINEAIRE ENTRE DDLS : +# ---------------------------- + + __numddl=NUME_DDL(MATR_RIGI=__matel, + METHODE='LDLT', ) + +# --- ON CONSTRUIT LE CHAMNO QUI VA ETRE UTILISE POUR ECRIRE LA +# --- RELATION LINEAIRE ENTRE DDLS : +# ---------------------------- + + __chamno=ASSE_VECTEUR(VECT_ELEM=__vecel, + NUME_DDL=__numddl, ) + +# --- ON IMPOSE LA RELATION LINEAIRE ENTRE DDLS +# --- SOMME_SECTION(OMEGA.DS) = 0 ( CETTE CONDITION +# --- VENANT DE L EQUATION D EQUILIBRE SELON L AXE DE LA POUTRE +# --- N = 0, N ETANT L EFFORT NORMAL) +# --- POUR IMPOSER CETTE RELATION ON PASSE PAR LIAISON_CHAMNO, +# --- LES TERMES DU CHAMNO (I.E. SOMME_SECTION(NI.DS)) +# --- SONT LES COEFFICIENTS DE LA RELATION LINEAIRE : +# --------------------------------------------- + + __chart5=AFFE_CHAR_THER(MODELE=__nomot2, + LIAISON_CHAMNO=_F(CHAM_NO=__chamno, + COEF_IMPO=0.), ) + +# --- LE CHARGEMENT EST UN FLUX REPARTI NORMAL AU CONTOUR +# --- DONT LES COMPOSANTES SONT +Z (I.E. +Y) ET -Y (I.E. -X) +# --- SELON LA DIRECTION NORMALE AU CONTOUR : +# ------------------------------------- + + __chart6=AFFE_CHAR_THER_F(MODELE=__nomot2, + FLUX_REP=_F(GROUP_MA=GROUP_MA_BORD, + FLUX_X =__fnsec4, + FLUX_Y =__fnsec3,), ) + +# --- RESOLUTION DE LAPLACIEN(OMEGA) = 0 +# --- AVEC D(OMEGA)/D(N) = Z*NY-Y*NZ SUR LE CONTOUR DE LA SECTION +# --- ET SOMME_SECTION(OMEGA.DS) = 0 ( CETTE CONDITION +# --- VENANT DE L EQUATION D EQUILIBRE SELON L AXE DE LA POUTRE +# --- N = 0, N ETANT L EFFORT NORMAL) : +# ------------------------------- + + __tempe4=THER_LINEAIRE(MODELE=__nomot2, + CHAM_MATER=__chmat2, + EXCIT=(_F(CHARGE=__chart5,), + _F(CHARGE=__chart6,),), + SOLVEUR=_F(METHODE='LDLT', + RENUM='SANS', + STOP_SINGULIER='NON',), ) + +# --- CALCUL DE L INERTIE DE GAUCHISSEMENT : +# ------------------------------------- + + nomres=POST_ELEM(reuse=nomres, + MODELE=__nomot2, + CHAM_MATER=__chmat2, + CARA_POUTRE=_F(CARA_GEOM=nomres, + LAPL_PHI=__tempe4, + TOUT='OUI', + OPTION='CARA_GAUCHI'), ) + +# +# ================================================================== +# --- = CALCUL DE LA CONSTANTE DE TORSION SUR CHAQUE GROUPE = +# --- = ET DU CENTRE DE TORSION/CISAILLEMENT = +# --- = DES COEFFICIENTS DE CISAILLEMENT = +# ================================================================== +# + + + if GROUP_MA_BORD and GROUP_MA: + + if type(GROUP_MA_BORD)==types.StringType : + l_group_ma_bord=[GROUP_MA_BORD,] + else: + l_group_ma_bord= GROUP_MA_BORD + if type(GROUP_MA)==types.StringType : + l_group_ma=[GROUP_MA,] + else: + l_group_ma= GROUP_MA + + if NOEUD: + if type(NOEUD)==types.StringType : + l_noeud=[NOEUD,] + else: + l_noeud= NOEUD + + if len(l_group_ma)!=len(l_group_ma_bord): + ier=ier+1 + self.cr.fatal("GROUP_MA et GROUP_MA_BORD incoherents") + return ier + if NOEUD and (len(l_group_ma)!=len(l_noeud)): + ier=ier+1 + self.cr.fatal("GROUP_MA et NOEUD incoherents") + return ier + + for i in range(0,len(l_group_ma_bord)): + +# --- TRANSFORMATION DES GROUP_MA EN GROUP_NO SUR-LESQUELS +# --- ON POURRA APPLIQUER DES CONDITIONS DE TEMPERATURE IMPOSEE : +# --------------------------------------------------------- + + __nomlma=DEFI_GROUP(reuse=__nomlma, + MAILLAGE=__nomlma, + CREA_GROUP_NO=_F(GROUP_MA=l_group_ma_bord[i],) ) + + +# --- CREATION D UN MAILLAGE IDENTIQUE AU PREMIER A CECI PRES +# --- QUE LES COORDONNEES SONT EXPRIMEES DANS LE REPERE PRINCIPAL +# --- D INERTIE DONT L ORIGINE EST LE CENTRE DE GRAVITE DE LA SECTION : +# --------------------------------------------------------------- + + __nomapi=CREA_MAILLAGE(MAILLAGE=__nomlma, + REPERE=_F(TABLE=nomres, + NOM_ORIG='CDG', + GROUP_MA=l_group_ma[i], ), ) + +# --- AFFECTATION DU PHENOMENE 'THERMIQUE' AU MODELE EN VUE DE +# --- LA CONSTRUCTION D UN OPERATEUR LAPLACIEN SUR CE MODELE : +# ------------------------------------------------------ + + __nomoth=AFFE_MODELE(MAILLAGE=__nomapi, + AFFE=_F(GROUP_MA=l_group_ma[i], + PHENOMENE='THERMIQUE', + MODELISATION='PLAN', ) ) + +# --- POUR LA CONSTRUCTION DU LAPLACIEN, ON DEFINIT UN +# --- PSEUDO-MATERIAU DONT LES CARACTERISTIQUES THERMIQUES SONT : +# --- LAMBDA = 1, RHO*CP = 0 : +# ---------------------- + + __nomath=DEFI_MATERIAU(THER=_F(LAMBDA=1.0, + RHO_CP=0.0, ), ) + +# --- DEFINITION D UN CHAM_MATER A PARTIR DU MATERIAU PRECEDENT : +# --------------------------------------------------------- + + __chmath=AFFE_MATERIAU(MAILLAGE=__nomapi, + AFFE=_F(TOUT='OUI', + MATER=__nomath ), ) + +# +# ------------------------------------------------------------ +# --- - CALCUL DE LA CONSTANTE DE TORSION PAR RESOLUTION - +# --- - D UN LAPLACIEN AVEC UN TERME SOURCE EGAL A -2 - +# --- - L INCONNUE ETANT NULLE SUR LE CONTOUR DE LA SECTION : - +# --- - LAPLACIEN(PHI) = -2 DANS LA SECTION - +# --- - PHI = 0 SUR LE CONTOUR : - +# ------------------------------------------------------------ +# +# --- ON IMPOSE LA VALEUR 0 A L INCONNUE SCALAIRE SUR LE CONTOUR +# --- DE LA SECTION +# --- ET ON A UN TERME SOURCE EGAL A -2 DANS TOUTE LA SECTION : +# ------------------------------------------------------- + + __chart1=AFFE_CHAR_THER(MODELE=__nomoth, + TEMP_IMPO=_F(GROUP_NO=l_group_ma_bord[i], + TEMP=0.0 ), + SOURCE=_F(TOUT='OUI', + SOUR=2.0 ) ) + +# --- RESOLUTION DE LAPLACIEN(PHI) = -2 +# --- AVEC PHI = 0 SUR LE CONTOUR : +# ---------------------------------------- + + __tempe1=THER_LINEAIRE(MODELE=__nomoth, + CHAM_MATER=__chmath, + EXCIT=_F(CHARGE=__chart1, ), + SOLVEUR=_F(STOP_SINGULIER='NON',) ) + +# +# ---------------------------------------------- +# --- - CALCUL DU CENTRE DE TORSION/CISAILLEMENT - +# --- - ET DES COEFFICIENTS DE CISAILLEMENT : - +# ---------------------------------------------- +# +# --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR +# --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE +# --- PAR UNE FONCTION EGALE A Y : +# -------------------------- + + __fnsec1=DEFI_FONCTION(NOM_PARA='X', + VALE=(0.,0.,10.,10.), + PROL_DROITE='LINEAIRE', + PROL_GAUCHE='LINEAIRE', ) + + __fnsec0=DEFI_CONSTANTE(VALE=0.,) + +# --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION +# --- DE LAPLACE EST PRIS EGAL A Y DANS TOUTE LA SECTION : +# -------------------------------------------------- + + __chart2=AFFE_CHAR_THER_F(MODELE=__nomoth, + TEMP_IMPO=_F(NOEUD=l_noeud[i], + TEMP=__fnsec0), + SOURCE=_F(TOUT='OUI', + SOUR=__fnsec1) ) + +# --- RESOLUTION DE LAPLACIEN(PHI) = -Y +# --- AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR : +# ------------------------------------------------ + + __tempe2=THER_LINEAIRE(MODELE=__nomoth, + CHAM_MATER=__chmath, + EXCIT=_F(CHARGE=__chart2, ), + SOLVEUR=_F(STOP_SINGULIER='NON',) ) + +# --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR +# --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE +# --- PAR UNE FONCTION EGALE A Z : +# -------------------------- + + __fnsec2=DEFI_FONCTION(NOM_PARA='Y', + VALE=(0.,0.,10.,10.), + PROL_DROITE='LINEAIRE', + PROL_GAUCHE='LINEAIRE', ) + +# --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION +# --- DE LAPLACE EST PRIS EGAL A Z DANS TOUTE LA SECTION : +# -------------------------------------------------- + + __chart3=AFFE_CHAR_THER_F(MODELE=__nomoth, + TEMP_IMPO=_F(NOEUD=l_noeud[i], + TEMP=__fnsec0), + SOURCE=_F(TOUT='OUI', + SOUR=__fnsec2) ) + +# --- RESOLUTION DE LAPLACIEN(PHI) = -Z +# --- AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR : +# ------------------------------------------------ + + __tempe3=THER_LINEAIRE(MODELE=__nomoth, + CHAM_MATER=__chmath, + EXCIT=_F(CHARGE=__chart3, ), + SOLVEUR=_F(STOP_SINGULIER='NON',) ) + +# --- CALCUL DE LA CONSTANTE DE TORSION : +# --------------------------------- + + nomres=POST_ELEM(reuse=nomres, + MODELE=__nomoth, + CHAM_MATER=__chmath, + CARA_POUTRE=_F(CARA_GEOM=nomres, + LAPL_PHI=__tempe1, + GROUP_MA=l_group_ma[i], + OPTION='CARA_TORSION' ), ) + +# --- CALCUL DES COEFFICIENTS DE CISAILLEMENT ET DES COORDONNEES DU +# --- CENTRE DE CISAILLEMENT/TORSION : +# ------------------------------ + + nomres=POST_ELEM(reuse=nomres, + MODELE=__nomoth, + CHAM_MATER=__chmath, + CARA_POUTRE=_F(CARA_GEOM=nomres, + LAPL_PHI_Y=__tempe2, + LAPL_PHI_Z=__tempe3, + GROUP_MA=l_group_ma[i], + LONGUEUR=LONGUEUR, + MATERIAU=MATERIAU, + LIAISON =LIAISON, + OPTION='CARA_CISAILLEMENT' ), ) + + return ier +