1 : C DCOGAU SOURCE GOUNAND 07/07/05 21:15:19 5784 2 : SUBROUTINE DCOGAU(JCOEFF,JDFFPG, 3 : $ JDCOFG, 4 : $ IMPR,IRET) 5 : IMPLICIT REAL*8 (A-H,O-Z) 6 : IMPLICIT INTEGER (I-N) 7 : C*********************************************************************** 8 : C NOM : DCOGAU 9 : C PROJET : Noyau linéaire NLIN 10 : C DESCRIPTION : Calcul du coefficient aux points de Gauss d'un élément 11 : C de référence pour chaque élément réel. 12 : C Le coefficient peut être scalaire, vectoriel ou 13 : C tensoriel. Les fonctions d'interpolation seront les 14 : C mêmes pour chaque composante du vecteur ou chaque 15 : C coefficient des matrices. 16 : C Les valeurs nodales devront être exprimées par rapport 17 : C aux coordonnées de l'espace de référence (par exemple, 18 : C s'il y a des dérivées, elles devront être exprimées par 19 : C rapport à ksi, eta...) 20 : C Si les valeurs sont des variables généralisées, il n'y 21 : C a peut-être rien à faire. (?) 22 : C 23 : C 24 : C LANGAGE : ESOPE 25 : C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF) 26 : C mél : gounand@semt2.smts.cea.fr 27 : C*********************************************************************** 28 : C APPELES : PRCHVA (impression d'un segment de type MCHEVA) 29 : C DCOGA1 (calcul de JDCOFG (fortran 77)) 30 : C APPELE PAR : NLIN 31 : C*********************************************************************** 32 : C ENTREES : 33 : C ENTREES/SORTIES : - 34 : C SORTIES : 35 : C CODE RETOUR (IRET) : = 0 si tout s'est bien passé 36 : C*********************************************************************** 37 : C VERSION : v3.1, 30/07/04, possiblité de travailler 38 : C dans l'espace de référence 39 : C VERSION : v1, 26/08/03, version initiale 40 : C HISTORIQUE : v1, 26/08/03, création 41 : C HISTORIQUE : 42 : C HISTORIQUE : 43 : C*********************************************************************** 44 : C Prière de PRENDRE LE TEMPS de compléter les commentaires 45 : C en cas de modification de ce sous-programme afin de faciliter 46 : C la maintenance ! 47 : C*********************************************************************** 48 : -INC CCOPTIO 49 : CBEGININCLUDE SMCHAEL 50 : SEGMENT MCHAEL 51 : POINTEUR IMACHE(N1).MELEME 52 : POINTEUR ICHEVA(N1).MCHEVA 53 : ENDSEGMENT 54 : SEGMENT MCHEVA 55 : REAL*8 VELCHE(NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM) 56 : ENDSEGMENT 57 : SEGMENT LCHEVA 58 : POINTEUR LISCHE(NBCHE).MCHEVA 59 : ENDSEGMENT 60 : CENDINCLUDE SMCHAEL 61 : INTEGER NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM 62 : POINTEUR JCOEFF.MCHEVA 63 : POINTEUR JDCOFG.MCHEVA 64 : * Valeurs des fns d'interpolation du coeff. aux points de Gauss 65 : POINTEUR JDFFPG.MCHEVA 66 : * 67 : INTEGER IMPR,IRET 68 : * 69 : INTEGER NDLIG,NDCOL,N2DLIG,N2DCOL,NDNOEU,NLDF,NLCO 70 : INTEGER NDDL,IESREL,NBPOGO,NBELEM 71 : * 72 : * Executable statements 73 : * 74 : IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans dcogau' 75 : * IESREL=IDIM 76 : SEGACT JDFFPG 77 : NDLIG=JDFFPG.VELCHE(/1) 78 : NDCOL=JDFFPG.VELCHE(/2) 79 : N2DLIG=JDFFPG.VELCHE(/3) 80 : IESP=JDFFPG.VELCHE(/4) 81 : NDNOEU=JDFFPG.VELCHE(/5) 82 : NLDF =JDFFPG.VELCHE(/6) 83 : * Correction pour l'option 'EREF', les gradients sont alors 84 : * dans l'espace de référence 85 : * IF (NDLIG.NE.1.OR.N2DLIG.NE.1.OR.N2DCOL.NE.IESREL) THEN 86 : IF (NDLIG.NE.1.OR.N2DLIG.NE.1) THEN 87 : WRITE(IOIMP,*) 'Erreur dims JDFFPG' 88 : GOTO 9999 89 : ENDIF 90 : NDDL=NDCOL 91 : NBPOGO=NDNOEU 92 : * NBELEM=NDELM 93 : SEGACT JCOEFF 94 : NDLIG=JCOEFF.VELCHE(/1) 95 : NDCOL=JCOEFF.VELCHE(/2) 96 : N2DLIG=JCOEFF.VELCHE(/3) 97 : N2DCOL=JCOEFF.VELCHE(/4) 98 : NDNOEU=JCOEFF.VELCHE(/5) 99 : NLCO =JCOEFF.VELCHE(/6) 100 : IF (NDLIG.NE.1.OR.N2DLIG.NE.1.OR.N2DCOL.NE.1.OR.NDNOEU.NE.1) THEN 101 : * $ .OR.NDELM.NE.NBELEM) THEN 102 : WRITE(IOIMP,*) 'Erreur dims JCOEFF' 103 : GOTO 9999 104 : ENDIF 105 : NBELEM=MAX(NLDF,NLCO) 106 : IF (NLDF.NE.1.AND.NLDF.NE.NBELEM) THEN 107 : WRITE(IOIMP,*) 'Erreur nb. elem. JDFFPG' 108 : GOTO 9999 109 : ENDIF 110 : IF (NLCO.NE.1.AND.NLCO.NE.NBELEM) THEN 111 : WRITE(IOIMP,*) 'Erreur nb. elem. JCOEFF' 112 : GOTO 9999 113 : ENDIF 114 : * 115 : * Initialisations... 116 : * 117 : NBLIG=1 118 : NBCOL=1 119 : N2LIG=1 120 : N2COL=IESP 121 : NBPOI=NBPOGO 122 : NBELM=NBELEM 123 : SEGINI JDCOFG 124 : * 125 : * On effectue le calcul du coefficient aux points de Gauss 126 : * 126 : CALL DCOGA1(NDDL,IESP,NBPOGO,NLDF,NLCO,NBELEM, 127 : $ JCOEFF.VELCHE,JDFFPG.VELCHE, 128 : $ JDCOFG.VELCHE, 129 : $ IMPR,IRET) 130 : IF (IRET.NE.0) GOTO 9999 131 : SEGDES JDCOFG 132 : SEGDES JCOEFF 133 : SEGDES JDFFPG 134 : IF (IMPR.GT.3) THEN 135 : WRITE(IOIMP,*) 'On a créé', 136 : $ ' JDCOFG(élément , poi.gauss ,', 137 : $ ' dim.esp.rel ,1,1,1)' 137 : CALL PRCHVA(JDCOFG,IMPR,IRET) 138 : IF (IRET.NE.0) GOTO 9999 139 : ENDIF 140 : * 141 : * Normal termination 142 : * 143 : IRET=0 144 : RETURN 145 : * 146 : * Format handling 147 : * 148 : * 149 : * Error handling 150 : * 151 : 9999 CONTINUE 152 : IRET=1 153 : WRITE(IOIMP,*) 'An error was detected in subroutine dcogau' 154 : RETURN 155 : * 156 : * End of subroutine DCOGAU 157 : * 158 : END 159 : 160 : 161 :
© Cast3M 2003 - All rights reserved.
Disclaimer