1 : C GT3F10 SOURCE GOUNAND 05/12/21 21:28:52 5281 2 : SUBROUTINE GT3F10(PGCOUR,NOPG,DIMSRF,XCOR,POIDS, 3 : $ IMPR,IRET) 4 : IMPLICIT REAL*8 (A-H,O-Z) 5 : IMPLICIT INTEGER (I-N) 6 : C*********************************************************************** 7 : C NOM : GT3F10 8 : C PROJET : Noyau linéaire NLIN 9 : C DESCRIPTION : Rajoute des points à une méthode d'intégration type 10 : C Gauss (PGCOUR). 11 : C Domaine de type [ Simplex ] de dimension 3 12 : C i.e. tétrahèdre. 13 : C Générateur de type [ Fully symmetric ]. 14 : C Rule structure of index 10 i.e. 15 : C XCOR=(a,a,b,c) 16 : C XCOR=xi sont les coordonnées barycentriques... 17 : C 18 : C le nombre de points générés est 12 (car le nombre de 19 : C permutations distinctes de (a,a,b,c) est 4!/2! : 20 : C (a,a,b,c) ; (a,b,a,c) ; (a,b,c,a) 21 : C (b,a,c,a) ; (b,c,a,a) ; (b,a,a,c) 22 : C (a,a,c,b) ; (a,c,a,b) ; (a,c,b,a) 23 : C (c,a,b,a) ; (c,b,a,a) ; (c,a,a,b) 24 : C 25 : C LANGAGE : ESOPE 26 : C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF) 27 : C mél : gounand@semt2.smts.cea.fr 28 : C*********************************************************************** 29 : C APPELES : - 30 : C APPELE PAR : INGATE 31 : C*********************************************************************** 32 : C ENTREES : DIMSRF, XCOR, POIDS 33 : C ENTREES/SORTIES : PGCOUR (actif en *MOD), NOPG 34 : C SORTIES : MYPGS 35 : C CODE RETOUR (IRET) : = 0 si tout s'est bien passé 36 : C*********************************************************************** 37 : C VERSION : v1, 29/05/00, version initiale 38 : C HISTORIQUE : v1, 29/05/00, création 39 : C HISTORIQUE : 40 : C HISTORIQUE : 41 : C*********************************************************************** 42 : C Prière de PRENDRE LE TEMPS de compléter les commentaires 43 : C en cas de modification de ce sous-programme afin de faciliter 44 : C la maintenance ! 45 : C*********************************************************************** 46 : -INC CCOPTIO 47 : CBEGININCLUDE SPOGAU 48 : SEGMENT POGAU 49 : CHARACTER*(LNNPG) NOMPG 50 : CHARACTER*(LNTPG) TYPMPG 51 : CHARACTER*(LNFPG) FORLPG 52 : INTEGER NORDPG 53 : REAL*8 XCOPG(NDLPG,NBPG) 54 : REAL*8 XPOPG(NBPG) 55 : ENDSEGMENT 56 : SEGMENT POGAUS 57 : POINTEUR LISPG(0).POGAU 58 : ENDSEGMENT 59 : CENDINCLUDE SPOGAU 60 : POINTEUR PGCOUR.POGAU 61 : * 62 : INTEGER NOPG,DIMSRF 63 : REAL*8 XCOR(DIMSRF+1) 64 : REAL*8 POIDS 65 : INTEGER IMPR,IRET 66 : * 67 : REAL*8 XA,XB,XC 68 : * 69 : * Executable statements 70 : * 71 : IF (IMPR.GT.6) WRITE(IOIMP,*) 'Entrée dans gt3f10' 72 : IF (DIMSRF.NE.3) THEN 73 : WRITE(IOIMP,*) 'DIMSRF doit etre égal à 3...' 74 : GOTO 9999 75 : ENDIF 76 : XA=XCOR(1) 77 : XB=XCOR(3) 78 : XC=XCOR(4) 79 : * (a,a,b,c) ; (a,b,a,c) ; (a,b,c,a) 80 : NOPG=NOPG+1 81 : PGCOUR.XCOPG(1,NOPG)= XA 82 : PGCOUR.XCOPG(2,NOPG)= XA 83 : PGCOUR.XCOPG(3,NOPG)= XB 84 : PGCOUR.XPOPG(NOPG)=POIDS 85 : NOPG=NOPG+1 86 : PGCOUR.XCOPG(1,NOPG)= XA 87 : PGCOUR.XCOPG(2,NOPG)= XB 88 : PGCOUR.XCOPG(3,NOPG)= XA 89 : PGCOUR.XPOPG(NOPG)=POIDS 90 : NOPG=NOPG+1 91 : PGCOUR.XCOPG(1,NOPG)= XA 92 : PGCOUR.XCOPG(2,NOPG)= XB 93 : PGCOUR.XCOPG(3,NOPG)= XC 94 : PGCOUR.XPOPG(NOPG)=POIDS 95 : * (b,a,c,a) ; (b,c,a,a) ; (b,a,a,c) 96 : NOPG=NOPG+1 97 : PGCOUR.XCOPG(1,NOPG)= XB 98 : PGCOUR.XCOPG(2,NOPG)= XA 99 : PGCOUR.XCOPG(3,NOPG)= XC 100 : PGCOUR.XPOPG(NOPG)=POIDS 101 : NOPG=NOPG+1 102 : PGCOUR.XCOPG(1,NOPG)= XB 103 : PGCOUR.XCOPG(2,NOPG)= XC 104 : PGCOUR.XCOPG(3,NOPG)= XA 105 : PGCOUR.XPOPG(NOPG)=POIDS 106 : NOPG=NOPG+1 107 : PGCOUR.XCOPG(1,NOPG)= XB 108 : PGCOUR.XCOPG(2,NOPG)= XA 109 : PGCOUR.XCOPG(3,NOPG)= XA 110 : PGCOUR.XPOPG(NOPG)=POIDS 111 : C (a,a,c,b) ; (a,c,a,b) ; (a,c,b,a) 112 : NOPG=NOPG+1 113 : PGCOUR.XCOPG(1,NOPG)= XA 114 : PGCOUR.XCOPG(2,NOPG)= XA 115 : PGCOUR.XCOPG(3,NOPG)= XC 116 : PGCOUR.XPOPG(NOPG)=POIDS 117 : NOPG=NOPG+1 118 : PGCOUR.XCOPG(1,NOPG)= XA 119 : PGCOUR.XCOPG(2,NOPG)= XC 120 : PGCOUR.XCOPG(3,NOPG)= XA 121 : PGCOUR.XPOPG(NOPG)=POIDS 122 : NOPG=NOPG+1 123 : PGCOUR.XCOPG(1,NOPG)= XA 124 : PGCOUR.XCOPG(2,NOPG)= XC 125 : PGCOUR.XCOPG(3,NOPG)= XB 126 : PGCOUR.XPOPG(NOPG)=POIDS 127 : C (c,a,b,a) ; (c,b,a,a) ; (c,a,a,b) 128 : NOPG=NOPG+1 129 : PGCOUR.XCOPG(1,NOPG)= XC 130 : PGCOUR.XCOPG(2,NOPG)= XA 131 : PGCOUR.XCOPG(3,NOPG)= XB 132 : PGCOUR.XPOPG(NOPG)=POIDS 133 : NOPG=NOPG+1 134 : PGCOUR.XCOPG(1,NOPG)= XC 135 : PGCOUR.XCOPG(2,NOPG)= XB 136 : PGCOUR.XCOPG(3,NOPG)= XA 137 : PGCOUR.XPOPG(NOPG)=POIDS 138 : NOPG=NOPG+1 139 : PGCOUR.XCOPG(1,NOPG)= XC 140 : PGCOUR.XCOPG(2,NOPG)= XA 141 : PGCOUR.XCOPG(3,NOPG)= XA 142 : PGCOUR.XPOPG(NOPG)=POIDS 143 : * 144 : * Normal termination 145 : * 146 : IRET=0 147 : RETURN 148 : * 149 : * Format handling 150 : * 151 : * 152 : * Error handling 153 : * 154 : 9999 CONTINUE 155 : IRET=1 156 : WRITE(IOIMP,*) 'An error was detected in subroutine gt3f10' 157 : RETURN 158 : * 159 : * End of subroutine GT3F10 160 : * 161 : END 162 : 163 : 164 :
© Cast3M 2003 - All rights reserved.
Disclaimer