1 : C GRADGE SOURCE CHAT 05/01/13 00:20:32 5004 2 : SUBROUTINE GRADGE(ICEN,IELTFA,IFAC,IFACEL,INORM,ICHCL,ICHAM) 3 : C------------------------------------------------------------------ 4 : C PROJET : CASTEM 2000 5 : C 6 : C NOM : GRADGE 7 : C 8 : C DESCRIPTION : Cette subroutine est appellee par 9 : C PENT15 et calcule les coefficients a appliquer 10 : C sur la fonction dont on veut calculer le gradient 11 : C pour chacune des coordonnees. Ces coefficients 12 : C sont stockes dans ICHAM 13 : C 14 : C LANGAGE : FORTRAN 77 + ESOPE 2000 15 : C 16 : C AUTEUR : A. BECCANTINI, SFME/LTMF 17 : C 18 : C----------------------------------------------------------------- 19 : C 20 : C APPELES (E/S) : 21 : C 22 : C APPELES (Calcul): CONSDU, RSETXI, ELKONF 23 : C 24 : C----------------------------------------------------------------- 25 : C 26 : C INPUT : ICEN : 'CENTRE' points 27 : C 28 : C IELTFA : Element-faces 29 : C 30 : C IFAC : 'FACE' points 31 : C 32 : C IFACEL : Left center - face center -right center 33 : C Same order as IFAC 34 : C 35 : C INORM : Face normals CHAMPOINT 36 : C 37 : C ICHCL : BC CHAMPOINT 38 : C 39 : C 40 : C OUTPUT : ICHAM : MCHEML which contains the coefficients to 41 : C compute gradients. 42 : C 43 : C----------------------------------------------------------------- 44 : C 45 : C HISTORIQUE (Anomalies et modifications eventuelles) 46 : C 47 : C HISTORIQUE : 14.10.98, Creation 48 : C 49 : C----------------------------------------------------------------- 50 : C 51 : C 52 : C 53 : C**** Variables de COOPTIO 54 : C 55 : IMPLICIT INTEGER(I-N) 56 : INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR 57 : & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ 58 : & ,IOPER, IOSGB, IOGRA, IOSAU, IORES 59 : & ,IECHO, IIMPI, IOSPI 60 : & ,IDIM 61 : & ,MCOORD 62 : & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE 63 : & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU 64 : & ,NORINC,NORVAL,NORIND,NORVAD 65 : & ,NUCROU, IPSAUV, IFICLE, IPREFI 66 : & ,IREFOR, ISAFOR 67 : C 68 : INTEGER ICEN, IELTFA, IFACEL, INORM, ICHCL, ICHAM, IFAC 69 : & ,MLECOE 70 : C 71 : -INC CCOPTIO 72 : -INC SMLENTI 73 : -INC SMELEME 74 : C 75 : C**** The FACE and CENTRE neighbors of each 'CENTRE' points 76 : C Two cases: 77 : C - If the 'FACE' point belongs to just one element, it belongs to 78 : C the neighbors of the element 'CENTRE' 79 : C - If the 'FACE' point belongs to two elements, the elements CENTREs 80 : C are neighbors 81 : C 81 : CALL RLENCE(ICEN,IELTFA,IFAC,IFACEL,MELEME) 82 : IF(IERR.NE.0) GOTO 9999 83 : C 84 : C RLENCE creates MELEME, 85 : C the mesh which contains the neighbors of the CENTRE and 86 : C the CENTRE itself 87 : CC 88 : CC**** Test RLENCE 89 : CC 90 : C SEGACT MELEME 91 : C NBSOUS=MELEME.LISOUS(/1) 92 : C JG=MAX(NBSOUS,1) 93 : C SEGINI MLENTI 94 : C IF (JG.EQ.1)THEN 95 : C MLENTI.LECT(1)=MELEME 96 : C ELSE 97 : C DO ISOUS=1,JG,1 98 : C MLENTI.LECT(ISOUS)=MELEME.LISOUS(ISOUS) 99 : C ENDDO 100 : C ENDIF 101 : C 102 : C DO ISOUS=1,JG,1 103 : C WRITE(IOIMP,*) 'SGP :', ISOUS, MLENTI.LECT(ISOUS) 104 : C IPT1=MLENTI.LECT(ISOUS) 105 : C SEGACT IPT1 106 : C NBNN=IPT1.NUM(/1) 107 : C NBELEM=IPT1.NUM(/2) 108 : C DO IELEM=1,NBELEM,1 109 : C WRITE(IOIMP,*) 'Center =', IPT1.NUM(NBNN,IELEM) 110 : C WRITE(IOIMP,*) 'Neighbors =', 111 : C & (IPT1.NUM(IVOI,IELEM),IVOI=1,(NBNN-1)) 112 : C ENDDO 113 : C ENDDO 114 : CC 115 : CC**** Fin test RLENCE 116 : CC 117 : C 117 : CALL RLEXCE(MELEME,ICEN,IFAC,INORM,ICHCL,MLECOE) 118 : IF(IERR.NE.0) GOTO 9999 119 : C 120 : C MLECOE : list of integers. 121 : C MLECOE.LECT(I) is the pointer of the matrix of real 122 : C which contains the coefficient of the i-th centre 123 : C to compute its gradient as function of the values on 124 : C its neighbors. 125 : C 125 : CALL RLXCE1(MELEME,MLECOE,ICHAM) 126 : IF(IERR.NE.0) GOTO 9999 127 : C 128 : 9999 RETURN 129 : END 130 : 131 : 132 : 133 : 134 : 135 : 136 : 137 : 138 :
© Cast3M 2003 - All rights reserved.
Disclaimer