1 # -*- coding: utf-8 -*-
2 #@ MODIF macro_cara_poutre_ops Macro DATE 25/06/2002 AUTEUR JMBHH01 J.M.PROIX
3 # CONFIGURATION MANAGEMENT OF EDF VERSION
4 # ======================================================================
5 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
6 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
7 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
8 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
9 # (AT YOUR OPTION) ANY LATER VERSION.
11 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
12 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
13 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
14 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
16 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
17 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
18 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
19 # ======================================================================
20 # RESPONSABLE JMBHH01 J.M.PROIX
21 def macro_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
22 GROUP_MA,ORIG_INER,NOEUD,GROUP_MA_INTE,
23 LONGUEUR,MATERIAU,LIAISON,
26 Ecriture de la macro MACRO_CARA_POUTRE
31 # On importe les definitions des commandes a utiliser dans la macro
32 # Le nom de la variable doit etre obligatoirement le nom de la commande
33 LIRE_MAILLAGE =self.get_cmd('LIRE_MAILLAGE')
34 DEFI_GROUP =self.get_cmd('DEFI_GROUP')
35 CREA_MAILLAGE =self.get_cmd('CREA_MAILLAGE')
36 AFFE_MODELE =self.get_cmd('AFFE_MODELE')
37 DEFI_MATERIAU =self.get_cmd('DEFI_MATERIAU')
38 AFFE_MATERIAU =self.get_cmd('AFFE_MATERIAU')
39 DEFI_FONCTION =self.get_cmd('DEFI_FONCTION')
40 DEFI_CONSTANTE =self.get_cmd('DEFI_CONSTANTE')
41 AFFE_CHAR_THER =self.get_cmd('AFFE_CHAR_THER')
42 AFFE_CHAR_THER_F=self.get_cmd('AFFE_CHAR_THER_F')
43 THER_LINEAIRE =self.get_cmd('THER_LINEAIRE')
44 CALC_VECT_ELEM =self.get_cmd('CALC_VECT_ELEM')
45 CALC_MATR_ELEM =self.get_cmd('CALC_MATR_ELEM')
46 NUME_DDL =self.get_cmd('NUME_DDL')
47 ASSE_VECTEUR =self.get_cmd('ASSE_VECTEUR')
48 POST_ELEM =self.get_cmd('POST_ELEM')
49 # La macro compte pour 1 dans la numerotation des commandes
52 # Le concept sortant (de type tabl_cara_geom) est nommé 'nomres' dans
53 # le contexte de la macro
55 self.DeclareOut('nomres',self.sd)
57 if GROUP_MA_BORD and GROUP_MA:
60 self.cr.fatal("Avec GROUP_MA, il faut obligatoirement preciser LIAISON, LONGUEUR ET MATERIAU")
63 __nomlma=LIRE_MAILLAGE(UNITE=UNITE_MAILLAGE,)
65 __nomamo=AFFE_MODELE(MAILLAGE=__nomlma,
67 PHENOMENE='MECANIQUE',
68 MODELISATION='D_PLAN',), )
70 __nomdma=DEFI_MATERIAU(ELAS=_F(E=1.0,NU=0.,RHO=1.0),)
73 __nomama=AFFE_MATERIAU(MAILLAGE=__nomlma,
77 # --- CALCUL DES CARACTERISTIQUES GEOMETRIQUES DE LA SECTION :
78 # ------------------------------------------------------
81 if GROUP_MA : motsimps['GROUP_MA'] = GROUP_MA
82 if SYME_X : motsimps['SYME_X'] = SYME_X
83 if SYME_Y : motsimps['SYME_Y'] = SYME_Y
84 motsimps['ORIG_INER'] = ORIG_INER
85 mfact=_F(TOUT='OUI',**motsimps)
86 nomres=POST_ELEM(MODELE=__nomamo,
90 # nb : si GROUP_MA n existe pas : le mot clé est ignoré
93 # ==================================================================
94 # --- = CALCUL DE LA CONSTANTE DE TORSION SUR TOUT LE MAILLAGE =
95 # --- = OU DU CENTRE DE TORSION/CISAILLEMENT =
96 # --- = DES COEFFICIENTS DE CISAILLEMENT =
97 # --- = ET DE L INERTIE DE GAUCHISSEMENT =
98 # --- = ON CREE UN MODELE PLAN 2D THERMIQUE REPRESENTANT LA SECTION =
99 # --- = DE LA POUTRE CAR ON A A RESOUDRE DES E.D.P. AVEC DES LAPLACIENS=
100 # ==================================================================
102 if GROUP_MA_BORD and not GROUP_MA:
104 # --- TRANSFORMATION DES GROUP_MA EN GROUP_NO SUR-LESQUELS
105 # --- ON POURRA APPLIQUER DES CONDITIONS DE TEMPERATURE IMPOSEE :
106 # ---------------------------------------------------------
108 if type(GROUP_MA_BORD)==types.StringType:
109 motscles['CREA_GROUP_NO']=_F(GROUP_MA=GROUP_MA_BORD,)
111 motscles['CREA_GROUP_NO']=[]
112 for grma in GROUP_MA_BORD:
113 motscles['CREA_GROUP_NO'].append(_F(GROUP_MA=grma,))
114 __nomlma=DEFI_GROUP(reuse=__nomlma,
119 # --- CREATION D UN MAILLAGE IDENTIQUE AU PREMIER A CECI PRES
120 # --- QUE LES COORDONNEES SONT EXPRIMEES DANS LE REPERE PRINCIPAL
121 # --- D INERTIE DONT L ORIGINE EST LE CENTRE DE GRAVITE DE LA SECTION :
122 # ---------------------------------------------------------------
124 __nomapi=CREA_MAILLAGE(MAILLAGE=__nomlma,
125 REPERE=_F(TABLE=nomres,
128 # --- AFFECTATION DU PHENOMENE 'THERMIQUE' AU MODELE EN VUE DE
129 # --- LA CONSTRUCTION D UN OPERATEUR LAPLACIEN SUR CE MODELE :
130 # ------------------------------------------------------
132 __nomoth=AFFE_MODELE(MAILLAGE=__nomapi,
134 PHENOMENE='THERMIQUE',
135 MODELISATION='PLAN',), )
137 # --- POUR LA CONSTRUCTION DU LAPLACIEN, ON DEFINIT UN
138 # --- PSEUDO-MATERIAU DONT LES CARACTERISTIQUES THERMIQUES SONT :
139 # --- LAMBDA = 1, RHO*CP = 0 :
140 # ----------------------
142 __nomath=DEFI_MATERIAU(THER=_F(LAMBDA=1.0,RHO_CP=0.,),)
144 # --- DEFINITION D UN CHAM_MATER A PARTIR DU MATERIAU PRECEDENT :
145 # ---------------------------------------------------------
147 __chmath=AFFE_MATERIAU(MAILLAGE=__nomapi,
152 # ------------------------------------------------------------
153 # --- - CALCUL DE LA CONSTANTE DE TORSION PAR RESOLUTION -
154 # --- - D UN LAPLACIEN AVEC UN TERME SOURCE EGAL A -2 -
155 # --- - L INCONNUE ETANT NULLE SUR LE CONTOUR DE LA SECTION : -
156 # --- - LAPLACIEN(PHI) = -2 DANS LA SECTION -
157 # --- - PHI = 0 SUR LE CONTOUR : -
158 # ------------------------------------------------------------
160 # --- ON IMPOSE LA VALEUR 0 A L INCONNUE SCALAIRE SUR LE CONTOUR
162 # --- ET ON A UN TERME SOURCE EGAL A -2 DANS TOUTE LA SECTION :
163 # -------------------------------------------------------
167 motscles['LIAISON_UNIF']=_F(GROUP_MA=GROUP_MA_INTE,DDL='TEMP'),
168 __chart1=AFFE_CHAR_THER(MODELE=__nomoth,
169 TEMP_IMPO =_F(GROUP_NO=GROUP_MA_BORD,
171 SOURCE =_F(TOUT='OUI',
175 # --- POUR CHAQUE TROU DE LA SECTION :
176 # --- .ON A IMPOSE QUE PHI EST CONSTANT SUR LE CONTOUR INTERIEUR
177 # --- EN FAISANT LE LIAISON_UNIF DANS LE AFFE_CHAR_THER PRECEDENT
178 # --- .ON IMPOSE EN PLUS D(PHI)/DN = 2*AIRE(TROU)/L(TROU)
179 # --- OU D/DN DESIGNE LA DERIVEE PAR RAPPORT A LA
180 # --- NORMALE ET L DESIGNE LA LONGUEUR DU BORD DU TROU :
181 # -------------------------------------------------------
184 __tbaire=POST_ELEM(MODELE=__nomoth,
185 AIRE_INTERNE=_F(GROUP_MA_BORD=GROUP_MA_INTE,), )
188 motscles['FLUX_REP']=[]
189 if type(GROUP_MA_INTE)==types.StringType:
190 motscles['FLUX_REP']=_F(GROUP_MA=GROUP_MA_INTE,CARA_TORSION=__tbaire)
192 motscles['FLUX_REP']=[]
193 for grma in GROUP_MA_INTE:
194 motscles['FLUX_REP'].append(_F(GROUP_MA=grma,CARA_TORSION=__tbaire),)
195 __chart2=AFFE_CHAR_THER(MODELE=__nomoth,**motscles)
197 # --- RESOLUTION DE LAPLACIEN(PHI) = -2
198 # --- AVEC PHI = 0 SUR LE CONTOUR :
199 # ----------------------------------------
202 motscles['EXCIT']=[_F(CHARGE=__chart1,),]
204 motscles['EXCIT'].append(_F(CHARGE=__chart2,))
205 __tempe1=THER_LINEAIRE(MODELE=__nomoth,
207 SOLVEUR=_F(STOP_SINGULIER='NON',),
211 # ----------------------------------------------
212 # --- - CALCUL DU CENTRE DE TORSION/CISAILLEMENT -
213 # --- - ET DES COEFFICIENTS DE CISAILLEMENT : -
214 # ----------------------------------------------
216 # --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR
217 # --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE
218 # --- PAR UNE FONCTION EGALE A Y :
219 # --------------------------
221 __fnsec1=DEFI_FONCTION(NOM_PARA='X',
222 VALE=(0.,0.,10.,10.),
223 PROL_DROITE='LINEAIRE',
224 PROL_GAUCHE='LINEAIRE',
227 __fnsec0=DEFI_CONSTANTE(VALE=0.,)
229 # --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION
230 # --- DE LAPLACE EST PRIS EGAL A Y DANS TOUTE LA SECTION :
231 # --------------------------------------------------
236 motscles['TEMP_IMPO']=(_F(NOEUD=NOEUD,TEMP=__fnsec0))
237 __chart2=AFFE_CHAR_THER_F(MODELE=__nomoth,
238 SOURCE=_F(TOUT='OUI',
242 # --- RESOLUTION DE LAPLACIEN(PHI) = -Y
243 # --- AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR :
244 # ------------------------------------------------
246 __tempe2=THER_LINEAIRE(MODELE=__nomoth,
248 EXCIT=_F(CHARGE=__chart2,),
249 SOLVEUR=_F(STOP_SINGULIER='NON',),
252 # --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR
253 # --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE
254 # --- PAR UNE FONCTION EGALE A Z :
255 # --------------------------
257 __fnsec2=DEFI_FONCTION(NOM_PARA='Y',
258 VALE=(0.,0.,10.,10.),
259 PROL_DROITE='LINEAIRE',
260 PROL_GAUCHE='LINEAIRE',
263 # --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION
264 # --- DE LAPLACE EST PRIS EGAL A Z DANS TOUTE LA SECTION :
265 # --------------------------------------------------
269 motscles['TEMP_IMPO']=_F(NOEUD=NOEUD,TEMP=__fnsec0)
270 __chart3=AFFE_CHAR_THER_F(MODELE=__nomoth,
271 SOURCE=_F(TOUT='OUI',
275 # --- RESOLUTION DE LAPLACIEN(PHI) = -Z
276 # --- AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR :
277 # ------------------------------------------------
279 __tempe3=THER_LINEAIRE(MODELE=__nomoth,
281 EXCIT=_F(CHARGE=__chart3,),
282 SOLVEUR=_F(STOP_SINGULIER='NON',),
285 # --- CALCUL DE LA CONSTANTE DE TORSION :
286 # ---------------------------------
290 motscles['CARA_POUTRE']=_F(CARA_GEOM=nomres,
293 OPTION='CARA_TORSION',
294 GROUP_MA_INTE=GROUP_MA_INTE,)
296 motscles['CARA_POUTRE']=_F(CARA_GEOM=nomres,
299 OPTION='CARA_TORSION', )
300 nomres=POST_ELEM(reuse=nomres,
305 # --- CALCUL DES COEFFICIENTS DE CISAILLEMENT ET DES COORDONNEES DU
306 # --- CENTRE DE CISAILLEMENT/TORSION :
307 # ------------------------------
309 nomres=POST_ELEM(reuse=nomres,
312 CARA_POUTRE=_F(CARA_GEOM=nomres,
316 OPTION='CARA_CISAILLEMENT',), )
319 # ------------------------------------------------------------
320 # --- - CALCUL DE L INERTIE DE GAUCHISSEMENT PAR RESOLUTION DE -
321 # --- - LAPLACIEN(OMEGA) = 0 DANS LA SECTION -
322 # --- - AVEC D(OMEGA)/D(N) = Z*NY-Y*NZ SUR LE -
323 # --- - CONTOUR DE LA SECTION -
324 # --- - NY ET NZ SONT LES COMPOSANTES DU VECTEUR N NORMAL -
325 # --- - A CE CONTOUR -
326 # --- - ET SOMME_S(OMEGA.DS) = 0 -
327 # --- - OMEGA EST LA FONCTION DE GAUCHISSEMENT -
328 # --- - L INERTIE DE GAUCHISSEMENT EST SOMME_S(OMEGA**2.DS) -
329 # ------------------------------------------------------------
331 # --- CREATION D UN MAILLAGE DONT LES COORDONNEES SONT EXPRIMEES
332 # --- DANS LE REPERE PRINCIPAL D INERTIE MAIS AVEC COMME ORIGINE
333 # --- LE CENTRE DE TORSION DE LA SECTION, ON VA DONC UTILISER
334 # --- LE MAILLAGE DE NOM NOMAPI DONT LES COORDONNEES SONT
335 # --- EXPRIMEES DANS LE REPERE PRINCIPAL D'INERTIE, L'ORIGINE
336 # --- ETANT LE CENTRE DE GRAVITE DE LA SECTION (QUI EST DONC
340 __nomapt=CREA_MAILLAGE(MAILLAGE=__nomapi,
341 REPERE=_F(TABLE=nomres,
342 NOM_ORIG='TORSION',) )
344 # --- AFFECTATION DU PHENOMENE 'THERMIQUE' AU MODELE EN VUE DE
345 # --- LA CONSTRUCTION D UN OPERATEUR LAPLACIEN SUR CE MODELE :
346 # ------------------------------------------------------
348 __nomot2=AFFE_MODELE(MAILLAGE=__nomapt,
350 PHENOMENE='THERMIQUE',
351 MODELISATION='PLAN', ) )
353 # --- DEFINITION D UN CHAM_MATER A PARTIR DU MATERIAU PRECEDENT :
354 # ---------------------------------------------------------
356 __chmat2=AFFE_MATERIAU(MAILLAGE=__nomapt,
360 # --- POUR LE CALCUL DE L INERTIE DE GAUCHISSEMENT, ON VA DEFINIR
361 # --- LA COMPOSANTE SELON Y DU FLUX A IMPOSER SUR LE CONTOUR
362 # --- PAR UNE FONCTION EGALE A -X :
363 # ---------------------------
365 __fnsec3=DEFI_FONCTION(NOM_PARA='X',
366 VALE=(0.,0.,10.,-10.),
367 PROL_DROITE='LINEAIRE',
368 PROL_GAUCHE='LINEAIRE',
371 # --- POUR LE CALCUL DE L INERTIE DE GAUCHISSEMENT, ON VA DEFINIR
372 # --- LA COMPOSANTE SELON X DU FLUX A IMPOSER SUR LE CONTOUR
373 # --- PAR UNE FONCTION EGALE A Y :
374 # --------------------------
376 __fnsec4=DEFI_FONCTION(NOM_PARA='Y',
377 VALE=(0.,0.,10.,10.),
378 PROL_DROITE='LINEAIRE',
379 PROL_GAUCHE='LINEAIRE',
382 # --- DANS LE BUT D IMPOSER LA RELATION LINEAIRE ENTRE DDLS
383 # --- SOMME_SECTION(OMEGA.DS) = 0 ( CETTE CONDITION
384 # --- VENANT DE L EQUATION D EQUILIBRE SELON L AXE DE LA POUTRE
385 # --- N = 0, N ETANT L EFFORT NORMAL)
386 # --- ON CALCULE LE VECTEUR DE CHARGEMENT DU A UN TERME SOURCE EGAL
387 # --- A 1., LES TERMES DE CE VECTEUR SONT EGAUX A
388 # --- SOMME_SECTION(NI.DS) ET SONT DONC LES COEFFICIENTS DE
389 # --- LA RELATION LINEAIRE A IMPOSER.
390 # --- ON DEFINIT DONC UN CHARGEMENT DU A UN TERME SOURCE EGAL A 1 :
391 # -----------------------------------------------------------
393 __chart4=AFFE_CHAR_THER(MODELE=__nomot2,
394 SOURCE=_F(TOUT='OUI',
397 # --- ON CALCULE LE VECT_ELEM DU AU CHARGEMENT PRECEDENT
398 # --- IL S AGIT DES VECTEURS ELEMENTAIRES DONT LE TERME
399 # --- AU NOEUD COURANT I EST EGAL A SOMME_SECTION(NI.DS) :
400 # --------------------------------------------------
402 __vecel=CALC_VECT_ELEM(CHARGE=__chart4,
406 # --- ON CALCULE LE MATR_ELEM DES MATRICES ELEMENTAIRES
407 # --- DE CONDUCTIVITE UNIQUEMENT POUR GENERER LE NUME_DDL
408 # --- SUR-LEQUEL S APPUIERA LE CHAMNO UTILISE POUR ECRIRE LA
409 # --- RELATION LINEAIRE ENTRE DDLS :
410 # ----------------------------
412 __matel=CALC_MATR_ELEM(MODELE=__nomot2,
417 # --- ON DEFINIT LE NUME_DDL ASSOCIE AU MATR_ELEM DEFINI
418 # --- PRECEDEMMENT POUR CONSTRUIRE LE CHAMNO UTILISE POUR ECRIRE LA
419 # --- RELATION LINEAIRE ENTRE DDLS :
420 # ----------------------------
422 __numddl=NUME_DDL(MATR_RIGI=__matel,
425 # --- ON CONSTRUIT LE CHAMNO QUI VA ETRE UTILISE POUR ECRIRE LA
426 # --- RELATION LINEAIRE ENTRE DDLS :
427 # ----------------------------
429 __chamno=ASSE_VECTEUR(VECT_ELEM=__vecel,
432 # --- ON IMPOSE LA RELATION LINEAIRE ENTRE DDLS
433 # --- SOMME_SECTION(OMEGA.DS) = 0 ( CETTE CONDITION
434 # --- VENANT DE L EQUATION D EQUILIBRE SELON L AXE DE LA POUTRE
435 # --- N = 0, N ETANT L EFFORT NORMAL)
436 # --- POUR IMPOSER CETTE RELATION ON PASSE PAR LIAISON_CHAMNO,
437 # --- LES TERMES DU CHAMNO (I.E. SOMME_SECTION(NI.DS))
438 # --- SONT LES COEFFICIENTS DE LA RELATION LINEAIRE :
439 # ---------------------------------------------
441 __chart5=AFFE_CHAR_THER(MODELE=__nomot2,
442 LIAISON_CHAMNO=_F(CHAM_NO=__chamno,
445 # --- LE CHARGEMENT EST UN FLUX REPARTI NORMAL AU CONTOUR
446 # --- DONT LES COMPOSANTES SONT +Z (I.E. +Y) ET -Y (I.E. -X)
447 # --- SELON LA DIRECTION NORMALE AU CONTOUR :
448 # -------------------------------------
450 __chart6=AFFE_CHAR_THER_F(MODELE=__nomot2,
451 FLUX_REP=_F(GROUP_MA=GROUP_MA_BORD,
453 FLUX_Y =__fnsec3,), )
455 # --- RESOLUTION DE LAPLACIEN(OMEGA) = 0
456 # --- AVEC D(OMEGA)/D(N) = Z*NY-Y*NZ SUR LE CONTOUR DE LA SECTION
457 # --- ET SOMME_SECTION(OMEGA.DS) = 0 ( CETTE CONDITION
458 # --- VENANT DE L EQUATION D EQUILIBRE SELON L AXE DE LA POUTRE
459 # --- N = 0, N ETANT L EFFORT NORMAL) :
460 # -------------------------------
462 __tempe4=THER_LINEAIRE(MODELE=__nomot2,
464 EXCIT=(_F(CHARGE=__chart5,),
465 _F(CHARGE=__chart6,),),
466 SOLVEUR=_F(METHODE='LDLT',
468 STOP_SINGULIER='NON',), )
470 # --- CALCUL DE L INERTIE DE GAUCHISSEMENT :
471 # -------------------------------------
473 nomres=POST_ELEM(reuse=nomres,
476 CARA_POUTRE=_F(CARA_GEOM=nomres,
479 OPTION='CARA_GAUCHI'), )
482 # ==================================================================
483 # --- = CALCUL DE LA CONSTANTE DE TORSION SUR CHAQUE GROUPE =
484 # --- = ET DU CENTRE DE TORSION/CISAILLEMENT =
485 # --- = DES COEFFICIENTS DE CISAILLEMENT =
486 # ==================================================================
490 if GROUP_MA_BORD and GROUP_MA:
492 if type(GROUP_MA_BORD)==types.StringType :
493 l_group_ma_bord=[GROUP_MA_BORD,]
495 l_group_ma_bord= GROUP_MA_BORD
496 if type(GROUP_MA)==types.StringType :
497 l_group_ma=[GROUP_MA,]
502 if type(NOEUD)==types.StringType :
507 if len(l_group_ma)!=len(l_group_ma_bord):
509 self.cr.fatal("GROUP_MA et GROUP_MA_BORD incoherents")
511 if NOEUD and (len(l_group_ma)!=len(l_noeud)):
513 self.cr.fatal("GROUP_MA et NOEUD incoherents")
516 for i in range(0,len(l_group_ma_bord)):
518 # --- TRANSFORMATION DES GROUP_MA EN GROUP_NO SUR-LESQUELS
519 # --- ON POURRA APPLIQUER DES CONDITIONS DE TEMPERATURE IMPOSEE :
520 # ---------------------------------------------------------
522 __nomlma=DEFI_GROUP(reuse=__nomlma,
524 CREA_GROUP_NO=_F(GROUP_MA=l_group_ma_bord[i],) )
527 # --- CREATION D UN MAILLAGE IDENTIQUE AU PREMIER A CECI PRES
528 # --- QUE LES COORDONNEES SONT EXPRIMEES DANS LE REPERE PRINCIPAL
529 # --- D INERTIE DONT L ORIGINE EST LE CENTRE DE GRAVITE DE LA SECTION :
530 # ---------------------------------------------------------------
532 __nomapi=CREA_MAILLAGE(MAILLAGE=__nomlma,
533 REPERE=_F(TABLE=nomres,
535 GROUP_MA=l_group_ma[i], ), )
537 # --- AFFECTATION DU PHENOMENE 'THERMIQUE' AU MODELE EN VUE DE
538 # --- LA CONSTRUCTION D UN OPERATEUR LAPLACIEN SUR CE MODELE :
539 # ------------------------------------------------------
541 __nomoth=AFFE_MODELE(MAILLAGE=__nomapi,
542 AFFE=_F(GROUP_MA=l_group_ma[i],
543 PHENOMENE='THERMIQUE',
544 MODELISATION='PLAN', ) )
546 # --- POUR LA CONSTRUCTION DU LAPLACIEN, ON DEFINIT UN
547 # --- PSEUDO-MATERIAU DONT LES CARACTERISTIQUES THERMIQUES SONT :
548 # --- LAMBDA = 1, RHO*CP = 0 :
549 # ----------------------
551 __nomath=DEFI_MATERIAU(THER=_F(LAMBDA=1.0,
554 # --- DEFINITION D UN CHAM_MATER A PARTIR DU MATERIAU PRECEDENT :
555 # ---------------------------------------------------------
557 __chmath=AFFE_MATERIAU(MAILLAGE=__nomapi,
562 # ------------------------------------------------------------
563 # --- - CALCUL DE LA CONSTANTE DE TORSION PAR RESOLUTION -
564 # --- - D UN LAPLACIEN AVEC UN TERME SOURCE EGAL A -2 -
565 # --- - L INCONNUE ETANT NULLE SUR LE CONTOUR DE LA SECTION : -
566 # --- - LAPLACIEN(PHI) = -2 DANS LA SECTION -
567 # --- - PHI = 0 SUR LE CONTOUR : -
568 # ------------------------------------------------------------
570 # --- ON IMPOSE LA VALEUR 0 A L INCONNUE SCALAIRE SUR LE CONTOUR
572 # --- ET ON A UN TERME SOURCE EGAL A -2 DANS TOUTE LA SECTION :
573 # -------------------------------------------------------
575 __chart1=AFFE_CHAR_THER(MODELE=__nomoth,
576 TEMP_IMPO=_F(GROUP_NO=l_group_ma_bord[i],
578 SOURCE=_F(TOUT='OUI',
581 # --- RESOLUTION DE LAPLACIEN(PHI) = -2
582 # --- AVEC PHI = 0 SUR LE CONTOUR :
583 # ----------------------------------------
585 __tempe1=THER_LINEAIRE(MODELE=__nomoth,
587 EXCIT=_F(CHARGE=__chart1, ),
588 SOLVEUR=_F(STOP_SINGULIER='NON',) )
591 # ----------------------------------------------
592 # --- - CALCUL DU CENTRE DE TORSION/CISAILLEMENT -
593 # --- - ET DES COEFFICIENTS DE CISAILLEMENT : -
594 # ----------------------------------------------
596 # --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR
597 # --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE
598 # --- PAR UNE FONCTION EGALE A Y :
599 # --------------------------
601 __fnsec1=DEFI_FONCTION(NOM_PARA='X',
602 VALE=(0.,0.,10.,10.),
603 PROL_DROITE='LINEAIRE',
604 PROL_GAUCHE='LINEAIRE', )
606 __fnsec0=DEFI_CONSTANTE(VALE=0.,)
608 # --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION
609 # --- DE LAPLACE EST PRIS EGAL A Y DANS TOUTE LA SECTION :
610 # --------------------------------------------------
612 __chart2=AFFE_CHAR_THER_F(MODELE=__nomoth,
613 TEMP_IMPO=_F(NOEUD=l_noeud[i],
615 SOURCE=_F(TOUT='OUI',
618 # --- RESOLUTION DE LAPLACIEN(PHI) = -Y
619 # --- AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR :
620 # ------------------------------------------------
622 __tempe2=THER_LINEAIRE(MODELE=__nomoth,
624 EXCIT=_F(CHARGE=__chart2, ),
625 SOLVEUR=_F(STOP_SINGULIER='NON',) )
627 # --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR
628 # --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE
629 # --- PAR UNE FONCTION EGALE A Z :
630 # --------------------------
632 __fnsec2=DEFI_FONCTION(NOM_PARA='Y',
633 VALE=(0.,0.,10.,10.),
634 PROL_DROITE='LINEAIRE',
635 PROL_GAUCHE='LINEAIRE', )
637 # --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION
638 # --- DE LAPLACE EST PRIS EGAL A Z DANS TOUTE LA SECTION :
639 # --------------------------------------------------
641 __chart3=AFFE_CHAR_THER_F(MODELE=__nomoth,
642 TEMP_IMPO=_F(NOEUD=l_noeud[i],
644 SOURCE=_F(TOUT='OUI',
647 # --- RESOLUTION DE LAPLACIEN(PHI) = -Z
648 # --- AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR :
649 # ------------------------------------------------
651 __tempe3=THER_LINEAIRE(MODELE=__nomoth,
653 EXCIT=_F(CHARGE=__chart3, ),
654 SOLVEUR=_F(STOP_SINGULIER='NON',) )
656 # --- CALCUL DE LA CONSTANTE DE TORSION :
657 # ---------------------------------
659 nomres=POST_ELEM(reuse=nomres,
662 CARA_POUTRE=_F(CARA_GEOM=nomres,
664 GROUP_MA=l_group_ma[i],
665 OPTION='CARA_TORSION' ), )
667 # --- CALCUL DES COEFFICIENTS DE CISAILLEMENT ET DES COORDONNEES DU
668 # --- CENTRE DE CISAILLEMENT/TORSION :
669 # ------------------------------
671 nomres=POST_ELEM(reuse=nomres,
674 CARA_POUTRE=_F(CARA_GEOM=nomres,
677 GROUP_MA=l_group_ma[i],
681 OPTION='CARA_CISAILLEMENT' ), )