Download inelpy.eso

Back to the list

   1 : C INELPY    SOURCE    GOUNAND   05/12/21    21:31:07     5281           
   2 :       SUBROUTINE INELPY(MYLRFS,IMPR,IRET)
   3 :       IMPLICIT REAL*8 (A-H,O-Z)
   4 :       IMPLICIT INTEGER (I-N)
   5 : C***********************************************************************
   6 : C NOM         : INELPY
   7 : C PROJET      : Noyau linéaire NLIN
   8 : C DESCRIPTION : Remplit le segment des éléments de référence
   9 : C               avec les éléments de référence de dimension 3, 
  10 : C               de forme pyramidale.
  11 : C               C'est la pyramide de Castem
  12 : C
  13 : 
  14 : 
  15 : C REFERENCES  :
  16 : C LANGAGE     : ESOPE
  17 : C AUTEUR      : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  18 : C               mél : gounand@semt2.smts.cea.fr
  19 : C***********************************************************************
  20 : C APPELES          : INILRF, INILAG, GBAPCO, GPOBUL, GPOFBU
  21 : C APPELE PAR       : INLRFS
  22 : C***********************************************************************
  23 : C ENTREES            : -
  24 : C ENTREES/SORTIES    : MYLRFS
  25 : C SORTIES            : -
  26 : C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  27 : C***********************************************************************
  28 : C VERSION    : v1, 23/03/00, version initiale
  29 : C HISTORIQUE : v1, 23/03/00, création
  30 : C HISTORIQUE : v2, 10/05/00, modif. du segment ELREF
  31 : C HISTORIQUE :
  32 : C HISTORIQUE :
  33 : C***********************************************************************
  34 : C Prière de PRENDRE LE TEMPS de compléter les commentaires
  35 : C en cas de modification de ce sous-programme afin de faciliter
  36 : C la maintenance !
  37 : C***********************************************************************
  38 : -INC CCOPTIO
  39 : CBEGININCLUDE SELREF
  40 :       SEGMENT ELREF
  41 :       CHARACTER*(LNNOM)  NOMLRF
  42 :       CHARACTER*(LNFORM) FORME 
  43 :       CHARACTER*(LNTYPL) TYPEL 
  44 :       CHARACTER*(LNESP)  ESPACE
  45 :       INTEGER DEGRE
  46 :       REAL*8 XCONOD(NDIMEL,NBNOD)
  47 :       INTEGER NPQUAF(NBDDL)
  48 :       INTEGER NUMCMP(NBDDL)
  49 :       INTEGER QUENOD(NBDDL)
  50 :       INTEGER ORDDER(NDIMEL,NBDDL)
  51 :       POINTEUR MBPOLY.POLYNS
  52 :       ENDSEGMENT
  53 :       SEGMENT ELREFS
  54 :       POINTEUR LISEL(0).ELREF
  55 :       ENDSEGMENT
  56 : CENDINCLUDE SELREF
  57 :       POINTEUR MYLRFS.ELREFS
  58 :       POINTEUR ELCOUR.ELREF
  59 : CBEGININCLUDE SPOLYNO
  60 :       SEGMENT POLYNO
  61 :       REAL*8  COEMON(NBMON)
  62 :       INTEGER EXPMON(NDIML,NBMON)
  63 :       ENDSEGMENT 
  64 :       SEGMENT POLYNS
  65 :       POINTEUR LIPOLY(NBPOLY).POLYNO
  66 :       ENDSEGMENT
  67 : CENDINCLUDE SPOLYNO
  68 :       POINTEUR MYBPOL.POLYNS
  69 : *
  70 :       INTEGER IMPR,IRET
  71 : * Elément de nom : L2D0PY1
  72 :       REAL*8 UNS4
  73 :       PARAMETER (UNS4=0.25D0)
  74 : * Elément de nom : H1D1PY5
  75 :       REAL*8 ZERO,UN
  76 :       PARAMETER (ZERO=0.D0,UN=1.D0)
  77 : * Elément de nom : H1D2PY13
  78 :       REAL*8 UNS2,UNS3
  79 :       PARAMETER (UNS2=1.D0/2.D0,UNS3=1.D0/3.D0)
  80 : *
  81 :       INTEGER INDDL
  82 : *     
  83 : * Executable statements
  84 : *
  85 :       IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans inelpy'
  86 : *
  87 : * Elément de nom : L2D0PY1
  88 : * Sur une pyramide : élément de Lagrange, fonction L2, approximation
  89 : *   nodale, espace de référence de dimension 3, 1 noeud, 1 degré de
  90 : *   liberté, degré de l'approximation : 0
  91 : *       
  92 : * In INILRF : SEGINI ELCOUR
  92 :       CALL INILRF('L2D0PY1','PYRAMIDE','LAGRANGE','L2',
  93 :      $     3,1,1,0,
  94 :      $     ELCOUR,
  95 :      $     IMPR,IRET)
  96 :       IF (IRET.NE.0) GOTO 9999
  97 : C Inutile
  98 : C      ELCOUR.XCONOD(1,1)=UNS4
  99 : C      ELCOUR.XCONOD(2,1)=ZERO
 100 : C      ELCOUR.XCONOD(3,1)=ZERO
 101 :       ELCOUR.NPQUAF(1)=19
 102 :       ELCOUR.NUMCMP(1)=1
 103 : * Initialise la correspondance ddl-noeud+ord.der
 103 :       CALL INILAG(ELCOUR,IMPR,IRET)
 104 :       IF (IRET.NE.0) GOTO 9999
 105 : * Pas de base polynomiale
 106 :       ELCOUR.MBPOLY=0
 107 :       SEGDES ELCOUR
 108 :       MYLRFS.LISEL(**)=ELCOUR
 109 : * 
 110 : * Elément de nom : H1D1PY5
 111 : * Sur une pyramide : élément de Lagrange, fonction H1, approximation
 112 : *   nodale, espace de référence de dimension 3, 5 noeuds, 5 degrés de
 113 : *   liberté, degré de l'approximation : 1 (environ)
 114 : *       
 115 : * In INILRF : SEGINI ELCOUR
 115 :       CALL INILRF('H1D1PY5','PYRAMIDE','LAGRANGE','H1',
 116 :      $     3,5,5,1,
 117 :      $     ELCOUR,
 118 :      $     IMPR,IRET)
 119 :       IF (IRET.NE.0) GOTO 9999
 120 : C Inutile
 121 : C      ELCOUR.XCONOD(1,1)=ZERO
 122 : C      ELCOUR.XCONOD(2,1)=ZERO
 123 : C      ELCOUR.XCONOD(3,1)=ZERO
 124 : * Les d.d.l. sont aux noeuds 1,3,5,7,13
 125 :       ELCOUR.NPQUAF(1)=1
 126 :       ELCOUR.NPQUAF(2)=3
 127 :       ELCOUR.NPQUAF(3)=5
 128 :       ELCOUR.NPQUAF(4)=7
 129 :       ELCOUR.NPQUAF(5)=13
 130 :       DO 213 INDDL=1,5
 131 :          ELCOUR.NUMCMP(INDDL)=1
 132 :  213  CONTINUE
 133 : * Initialise la correspondance ddl-noeud+ord.der
 133 :       CALL INILAG(ELCOUR,IMPR,IRET)
 134 :       IF (IRET.NE.0) GOTO 9999
 135 : *Pas de base polynômiale
 136 :       ELCOUR.MBPOLY=0
 137 :       SEGDES ELCOUR
 138 :       MYLRFS.LISEL(**)=ELCOUR
 139 : * 
 140 : * Elément de nom : H1D2PY13
 141 : * Sur une pyramide : élément de Lagrange, fonction H1, approximation
 142 : *   nodale, espace de référence de dimension 3, 13 noeuds, 13 degrés de
 143 : *   liberté, degré de l'approximation : 2 (environ)
 144 : *       
 145 : * In INILRF : SEGINI ELCOUR
 145 :       CALL INILRF('H1D2PY13','PYRAMIDE','LAGRANGE','H1',
 146 :      $     3,13,13,2,
 147 :      $     ELCOUR,
 148 :      $     IMPR,IRET)
 149 :       IF (IRET.NE.0) GOTO 9999
 150 : C Inutile
 151 : C      ELCOUR.XCONOD(1,1)=ZERO
 152 : C      ELCOUR.XCONOD(2,1)=ZERO
 153 : C      ELCOUR.XCONOD(3,1)=ZERO
 154 : * Les d.d.l. sont aux noeuds 1,...,13
 155 :       DO 217 INDDL=1,13
 156 :          ELCOUR.NPQUAF(INDDL)=INDDL
 157 :          ELCOUR.NUMCMP(INDDL)=1
 158 :  217  CONTINUE
 159 : * Initialise la correspondance ddl-noeud+ord.der
 159 :       CALL INILAG(ELCOUR,IMPR,IRET)
 160 :       IF (IRET.NE.0) GOTO 9999
 161 : * Pas de base polynômiale (on recopie l'élément de castem)
 162 :       ELCOUR.MBPOLY=0
 163 :       SEGDES ELCOUR
 164 :       MYLRFS.LISEL(**)=ELCOUR
 165 : *
 166 : * Normal termination
 167 : *
 168 :       IRET=0
 169 :       RETURN
 170 : *
 171 : * Format handling
 172 : *
 173 : *
 174 : * Error handling
 175 : *
 176 :  9999 CONTINUE
 177 :       IRET=1
 178 :       WRITE(IOIMP,*) 'An error was detected in subroutine inelpy'
 179 :       RETURN
 180 : *
 181 : * End of subroutine INELPY
 182 : *
 183 :       END
 184 : 
 185 :  
 186 :  

© Cast3M 2003 - All rights reserved.
Disclaimer