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