gt3f10
C GT3F10 SOURCE GOUNAND 21/06/02 21:16:19 11022 $ IMPR,IRET) IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER (I-N) C*********************************************************************** C NOM : GT3F10 C PROJET : Noyau linéaire NLIN C DESCRIPTION : Rajoute des points à une méthode d'intégration type C Gauss (PGCOUR). C Domaine de type [ Simplex ] de dimension 3 C i.e. tétrahèdre. C Générateur de type [ Fully symmetric ]. C Rule structure of index 10 i.e. C XCOR=(a,a,b,c) C XCOR=xi sont les coordonnées barycentriques... C C le nombre de points générés est 12 (car le nombre de C permutations distinctes de (a,a,b,c) est 4!/2! : C (a,a,b,c) ; (a,b,a,c) ; (a,b,c,a) C (b,a,c,a) ; (b,c,a,a) ; (b,a,a,c) C (a,a,c,b) ; (a,c,a,b) ; (a,c,b,a) C (c,a,b,a) ; (c,b,a,a) ; (c,a,a,b) C C LANGAGE : ESOPE C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF) C mél : gounand@semt2.smts.cea.fr C*********************************************************************** C APPELES : - C APPELE PAR : INGATE C*********************************************************************** C ENTREES : DIMSRF, XCOR, POIDS C ENTREES/SORTIES : PGCOUR (actif en *MOD), NOPG C SORTIES : MYPGS C CODE RETOUR (IRET) : = 0 si tout s'est bien passé C*********************************************************************** C VERSION : v1, 29/05/00, version initiale C HISTORIQUE : v1, 29/05/00, création C HISTORIQUE : C HISTORIQUE : C*********************************************************************** C Prière de PRENDRE LE TEMPS de compléter les commentaires C en cas de modification de ce sous-programme afin de faciliter C la maintenance ! C*********************************************************************** -INC PPARAM -INC CCOPTIO -INC TNLIN *-INC SPOGAU POINTEUR PGCOUR.POGAU * INTEGER NOPG,DIMSRF REAL*8 XCOR(DIMSRF+1) REAL*8 POIDS INTEGER IMPR,IRET * REAL*8 XA,XB,XC * * Executable statements * IF (IMPR.GT.6) WRITE(IOIMP,*) 'Entrée dans gt3f10' IF (DIMSRF.NE.3) THEN WRITE(IOIMP,*) 'DIMSRF doit etre égal à 3...' GOTO 9999 ENDIF XA=XCOR(1) XB=XCOR(3) XC=XCOR(4) * (a,a,b,c) ; (a,b,a,c) ; (a,b,c,a) NOPG=NOPG+1 PGCOUR.XCOPG(1,NOPG)= XA PGCOUR.XCOPG(2,NOPG)= XA PGCOUR.XCOPG(3,NOPG)= XB PGCOUR.XPOPG(NOPG)=POIDS NOPG=NOPG+1 PGCOUR.XCOPG(1,NOPG)= XA PGCOUR.XCOPG(2,NOPG)= XB PGCOUR.XCOPG(3,NOPG)= XA PGCOUR.XPOPG(NOPG)=POIDS NOPG=NOPG+1 PGCOUR.XCOPG(1,NOPG)= XA PGCOUR.XCOPG(2,NOPG)= XB PGCOUR.XCOPG(3,NOPG)= XC PGCOUR.XPOPG(NOPG)=POIDS * (b,a,c,a) ; (b,c,a,a) ; (b,a,a,c) NOPG=NOPG+1 PGCOUR.XCOPG(1,NOPG)= XB PGCOUR.XCOPG(2,NOPG)= XA PGCOUR.XCOPG(3,NOPG)= XC PGCOUR.XPOPG(NOPG)=POIDS NOPG=NOPG+1 PGCOUR.XCOPG(1,NOPG)= XB PGCOUR.XCOPG(2,NOPG)= XC PGCOUR.XCOPG(3,NOPG)= XA PGCOUR.XPOPG(NOPG)=POIDS NOPG=NOPG+1 PGCOUR.XCOPG(1,NOPG)= XB PGCOUR.XCOPG(2,NOPG)= XA PGCOUR.XCOPG(3,NOPG)= XA PGCOUR.XPOPG(NOPG)=POIDS C (a,a,c,b) ; (a,c,a,b) ; (a,c,b,a) NOPG=NOPG+1 PGCOUR.XCOPG(1,NOPG)= XA PGCOUR.XCOPG(2,NOPG)= XA PGCOUR.XCOPG(3,NOPG)= XC PGCOUR.XPOPG(NOPG)=POIDS NOPG=NOPG+1 PGCOUR.XCOPG(1,NOPG)= XA PGCOUR.XCOPG(2,NOPG)= XC PGCOUR.XCOPG(3,NOPG)= XA PGCOUR.XPOPG(NOPG)=POIDS NOPG=NOPG+1 PGCOUR.XCOPG(1,NOPG)= XA PGCOUR.XCOPG(2,NOPG)= XC PGCOUR.XCOPG(3,NOPG)= XB PGCOUR.XPOPG(NOPG)=POIDS C (c,a,b,a) ; (c,b,a,a) ; (c,a,a,b) NOPG=NOPG+1 PGCOUR.XCOPG(1,NOPG)= XC PGCOUR.XCOPG(2,NOPG)= XA PGCOUR.XCOPG(3,NOPG)= XB PGCOUR.XPOPG(NOPG)=POIDS NOPG=NOPG+1 PGCOUR.XCOPG(1,NOPG)= XC PGCOUR.XCOPG(2,NOPG)= XB PGCOUR.XCOPG(3,NOPG)= XA PGCOUR.XPOPG(NOPG)=POIDS NOPG=NOPG+1 PGCOUR.XCOPG(1,NOPG)= XC PGCOUR.XCOPG(2,NOPG)= XA PGCOUR.XCOPG(3,NOPG)= XA PGCOUR.XPOPG(NOPG)=POIDS * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine gt3f10' RETURN * * End of subroutine GT3F10 * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales