ingaqu
C INGAQU SOURCE GOUNAND 21/06/02 21:16:40 11022 IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER (I-N) C*********************************************************************** C NOM : INGAQU C PROJET : Noyau linéaire NLIN C DESCRIPTION : Remplit le segment des méthodes d'intégration C avec des méthodes d'intégration numérique de cubature C type Gauss pour le carré (ordre 1 à 7). C C REFERENCES : Le site de Cools (avec 32 chiffres sign.) C (essentiellement Stroud et al.) dont on reprend la C nomenclature... C LANGAGE : ESOPE C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF) C mél : gounand@semt2.smts.cea.fr C*********************************************************************** C APPELES : INIPG, GCSINO, GCPASY, GCROIN, GCCESY, GCRESY C APPELE PAR : INPGS C*********************************************************************** C ENTREES : - C ENTREES/SORTIES : MYPGS (actif en *MOD) C SORTIES : - C CODE RETOUR (IRET) : = 0 si tout s'est bien passé C*********************************************************************** C VERSION : v1, 20/10/99, version initiale C HISTORIQUE : v1, 20/10/99, 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 MYPGS.POGAUS POINTEUR PGCOUR.POGAU * integer PGPRO1 INTEGER IMPR,IRET * INTEGER DIMSRF PARAMETER(DIMSRF=2) REAL*8 XCOR(DIMSRF) * * Générateurs pour la cubature de degré 1 à 1 point : GAC2-1-1 : * - [ Origin ] REAL*8 X0D1,Y0D1,P0D1 PARAMETER (X0D1= 0.D0) PARAMETER (Y0D1= 0.D0) PARAMETER (P0D1= 4.D0) * * Générateurs pour la cubature de degré 2 à 3 points : GAC2-2-3 : * - [ Partial symmetry ] (\sqrt{2./3.} ; 0.) ; (4./3.) REAL*8 X1D2,Y1D2,P1D2 PARAMETER (X1D2= 0.81649658092772603273242802490196D0) PARAMETER (Y1D2= 0.D0) PARAMETER (P1D2= 4.D0/3.D0) * - [ Partial symmetry ] (-\sqrt{1./6.} ; \sqrt{1./2.}) ; (4./3.) REAL*8 X2D2,Y2D2,P2D2 PARAMETER (X2D2=-0.40824829046386301636621401245098D0) PARAMETER (Y2D2= 0.70710678118654752440084436210485D0) PARAMETER (P2D2= 4.D0/3.D0) * * Générateurs pour la cubature de degré 3 à 4 points : GAC2-3-4A : * - [ Fully symmetric ] (\sqrt{2./3.} ; 0.) ; (1.) REAL*8 X1D3,Y1D3,P1D3 PARAMETER (X1D3= 0.816496580927726032732428024901963D0) PARAMETER (Y1D3= 0.D0) PARAMETER (P1D3= 1.D0) * * Générateurs pour la cubature de degré 4 à 6 points : GAC2-4-6C : * - [ Origin ] REAL*8 X0D4,Y0D4,P0D4 PARAMETER (X0D4= 0.D0) PARAMETER (Y0D4= 0.D0) PARAMETER (P0D4= 1.14285714285714285714285714285714D0) * - [ Partial symmetry ] REAL*8 X1D4,Y1D4,P1D4 PARAMETER (X1D4= 0.966091783079295904914577610477984D0) PARAMETER (Y1D4= 0.D0) PARAMETER (P1D4= 0.439560439560439560439560439560439D0) * - [ Partial symmetry ] REAL*8 X2D4,Y2D4,P2D4 PARAMETER (X2D4= 0.455603727836192842249584745989760D0) PARAMETER (Y2D4= 0.851914653304600491301835640366669D0) PARAMETER (P2D4= 0.566072207007532105264050459451812D0) * - [ Partial symmetry ] REAL*8 X3D4,Y3D4,P3D4 PARAMETER (X3D4=-0.731629951573134529368035491840613D0) PARAMETER (Y3D4= 0.630912788976754026243413202993658D0) PARAMETER (P3D4= 0.642719001783676685944740749339395D0) * * Générateurs pour la cubature de degré 5 à 7 points : GAC2-5-7A : * - [ Origin ] REAL*8 X0D5,Y0D5,P0D5 PARAMETER (X0D5= 0.D0) PARAMETER (Y0D5= 0.D0) PARAMETER (P0D5= 1.14285714285714285714285714285714D0) * - [ Central symmetry ] REAL*8 X1D5,Y1D5,P1D5 PARAMETER (X1D5= 0.966091783079295904914577610477984D0) PARAMETER (Y1D5= 0.D0) PARAMETER (P1D5= 0.317460317460317460317460317460317D0) * - [ Rectangular symmetry ] REAL*8 X2D5,Y2D5,P2D5 PARAMETER (X2D5= 0.577350269189625764509148780501957D0) PARAMETER (Y2D5= 0.774596669241483377035853079956479D0) PARAMETER (P2D5= 0.555555555555555555555555555555555D0) * * Générateurs pour la cubature de degré 6 à 10 points : GAC2-6-10C : * - [ Partial symmetry ] REAL*8 X1D6,Y1D6,P1D6 PARAMETER (X1D6= 0.836405633697625604537901440708439D0) PARAMETER (Y1D6= 0.D0) PARAMETER (P1D6= 0.455343245714173438553541721312115D0) * - [ Partial symmetry ] REAL*8 X2D6,Y2D6,P2D6 PARAMETER (X2D6=-0.357460165391307184886174384445965D0) PARAMETER (Y2D6= 0.D0) PARAMETER (P2D6= 0.827395973202965492356696938299033D0) * - [ Partial symmetry ] REAL*8 X3D6,Y3D6,P3D6 PARAMETER (X3D6= 0.872101531193130590032875340374412D0) PARAMETER (Y3D6= 0.888764014654764533853170471609380D0) PARAMETER (P3D6= 0.144000884599645384928603086560623D0) * - [ Partial symmetry ] REAL*8 X4D6,Y4D6,P4D6 PARAMETER (X4D6= 0.305985162155426661489382735682569D0) PARAMETER (Y4D6= 0.604857639464685027698532295335587D0) PARAMETER (P4D6= 0.668259104262665149929832544411851D0) * - [ Partial symmetry ] REAL*8 X5D6,Y5D6,P5D6 PARAMETER (X5D6=-0.410270899466657838725680144555973D0) PARAMETER (Y5D6= 0.955447506641063747757528360774788D0) PARAMETER (P5D6= 0.225474004890679357411055647855252D0) * - [ Partial symmetry ] REAL*8 X6D6,Y6D6,P6D6 PARAMETER (X6D6=-0.872869311156879339251259208496329D0) PARAMETER (Y6D6= 0.565459993438754045894375389139462D0) PARAMETER (P6D6= 0.320896396788440642275389391366698D0) * * Générateurs pour la cubature de degré 7 à 12 points : GAC2-7-12A : * - [ Fully symmetric ] REAL*8 X1D7,Y1D7,P1D7 PARAMETER (X1D7= 0.925820099772551461566566776583999D0) PARAMETER (Y1D7= 0.D0) PARAMETER (P1D7= 0.241975308641975308641975308641975D0) * - [ Fully symmetric ] REAL*8 X2D7,Y2D7,P2D7 PARAMETER (X2D7= 0.380554433208315656379106359086394D0) PARAMETER (Y2D7= 0.380554433208315656379106359086394D0) PARAMETER (P2D7= 0.520592916667394457139919432046731D0) * - [ Fully symmetric ] REAL*8 X3D7,Y3D7,P3D7 PARAMETER (X3D7= 0.805979782918598743707856181350744D0) PARAMETER (Y3D7= 0.805979782918598743707856181350744D0) PARAMETER (P3D7= 0.237431774690630234218105259311293D0) * INTEGER NOPG * * Executable statements * IF (IMPR.GT.6) WRITE(IOIMP,*) 'Entrée dans ingaqu' * * Méthode de nom : NCC2-1-4 * Sur un carré : cubature d'ordre 1 à 4 points * espace de référence de dimension 2 * * In INIPG : SEGINI PGCOUR $ 1,4,2, $ PGCOUR, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 NOPG=0 XCOR(1)=1.D0 XCOR(2)=1.D0 IF (IRET.NE.0) GOTO 9999 SEGDES PGCOUR MYPGS.LISPG(**)=PGCOUR * * Méthode de nom : NCC2-3-9 * Sur un carré : cubature d'ordre 3 à 9 points * espace de référence de dimension 2 * * In INIPG : SEGINI PGCOUR $ 3,9,2, $ PGCOUR, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 IF (IRET.NE.0) GOTO 9999 IF (IRET.NE.0) GOTO 9999 SEGDES PGCOUR MYPGS.LISPG(**)=PGCOUR * * Méthode de nom : GAC2-1-1 * Sur un carré : cubature d'ordre 1 à 1 point * espace de référence de dimension 2 * * In INIPG : SEGINI PGCOUR $ 1,1,2, $ PGCOUR, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 NOPG=0 XCOR(1)=X0D1 XCOR(2)=Y0D1 IF (IRET.NE.0) GOTO 9999 SEGDES PGCOUR MYPGS.LISPG(**)=PGCOUR * * Méthode de nom : GAC2-2-3 * Sur un carré : cubature d'ordre 2 à 3 points * espace de référence de dimension 2 * * In INIPG : SEGINI PGCOUR $ 2,3,2, $ PGCOUR, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 NOPG=0 XCOR(1)=X1D2 XCOR(2)=Y1D2 IF (IRET.NE.0) GOTO 9999 XCOR(1)=X2D2 XCOR(2)=Y2D2 IF (IRET.NE.0) GOTO 9999 SEGDES PGCOUR MYPGS.LISPG(**)=PGCOUR * * Méthode de nom : GAC2-3-4A * Sur un carré : cubature d'ordre 3 à 4 points * espace de référence de dimension 2 * * In INIPG : SEGINI PGCOUR $ 3,4,2, $ PGCOUR, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 NOPG=0 XCOR(1)=X1D3 XCOR(2)=Y1D3 IF (IRET.NE.0) GOTO 9999 SEGDES PGCOUR MYPGS.LISPG(**)=PGCOUR * * Méthode de nom : GPC2-3-4 * Sur un carré : méthode gauss-produit d'ordre 3 à 4 points * espace de référence de dimension 2 * * In INIPG : SEGINI PGCOUR $ 3,4,2, $ PGCOUR, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 IF (IRET.NE.0) GOTO 9999 IF (IRET.NE.0) GOTO 9999 SEGDES PGCOUR MYPGS.LISPG(**)=PGCOUR * * Méthode de nom : GAC2-4-6C * Sur un carré : cubature d'ordre 4 à 6 points * espace de référence de dimension 2 * * In INIPG : SEGINI PGCOUR $ 4,6,2, $ PGCOUR, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 NOPG=0 XCOR(1)=X0D4 XCOR(2)=Y0D4 IF (IRET.NE.0) GOTO 9999 XCOR(1)=X1D4 XCOR(2)=Y1D4 IF (IRET.NE.0) GOTO 9999 XCOR(1)=X2D4 XCOR(2)=Y2D4 IF (IRET.NE.0) GOTO 9999 XCOR(1)=X3D4 XCOR(2)=Y3D4 IF (IRET.NE.0) GOTO 9999 SEGDES PGCOUR MYPGS.LISPG(**)=PGCOUR * * Méthode de nom : GAC2-5-7A * Sur un carré : cubature d'ordre 5 à 7 points * espace de référence de dimension 2 * * In INIPG : SEGINI PGCOUR $ 5,7,2, $ PGCOUR, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 NOPG=0 XCOR(1)=X0D5 XCOR(2)=Y0D5 IF (IRET.NE.0) GOTO 9999 XCOR(1)=X1D5 XCOR(2)=Y1D5 IF (IRET.NE.0) GOTO 9999 XCOR(1)=X2D5 XCOR(2)=Y2D5 IF (IRET.NE.0) GOTO 9999 SEGDES PGCOUR MYPGS.LISPG(**)=PGCOUR * * Méthode de nom : GPC2-5-9 * Sur un carré : méthode gauss-produit d'ordre 5 à 9 points * espace de référence de dimension 2 * * In INIPG : SEGINI PGCOUR $ 5,9,2, $ PGCOUR, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 IF (IRET.NE.0) GOTO 9999 IF (IRET.NE.0) GOTO 9999 SEGDES PGCOUR MYPGS.LISPG(**)=PGCOUR * * Méthode de nom : GAC2-6-10C * Sur un carré : cubature d'ordre 6 à 10 points * espace de référence de dimension 2 * * In INIPG : SEGINI PGCOUR $ 6,10,2, $ PGCOUR, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 NOPG=0 XCOR(1)=X1D6 XCOR(2)=Y1D6 IF (IRET.NE.0) GOTO 9999 XCOR(1)=X2D6 XCOR(2)=Y2D6 IF (IRET.NE.0) GOTO 9999 XCOR(1)=X3D6 XCOR(2)=Y3D6 IF (IRET.NE.0) GOTO 9999 XCOR(1)=X4D6 XCOR(2)=Y4D6 IF (IRET.NE.0) GOTO 9999 XCOR(1)=X5D6 XCOR(2)=Y5D6 IF (IRET.NE.0) GOTO 9999 XCOR(1)=X6D6 XCOR(2)=Y6D6 IF (IRET.NE.0) GOTO 9999 SEGDES PGCOUR MYPGS.LISPG(**)=PGCOUR * * Méthode de nom : GAC2-7-12A * Sur un carré : cubature d'ordre 7 à 12 points * espace de référence de dimension 2 * * In INIPG : SEGINI PGCOUR $ 7,12,2, $ PGCOUR, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 NOPG=0 XCOR(1)=X1D7 XCOR(2)=Y1D7 IF (IRET.NE.0) GOTO 9999 XCOR(1)=X2D7 XCOR(2)=Y2D7 IF (IRET.NE.0) GOTO 9999 XCOR(1)=X3D7 XCOR(2)=Y3D7 IF (IRET.NE.0) GOTO 9999 SEGDES PGCOUR MYPGS.LISPG(**)=PGCOUR * * Méthode de nom : GPC2-7-16 * Sur un carré : méthode gauss-produit d'ordre 7 à 16 points * espace de référence de dimension 2 * * In INIPG : SEGINI PGCOUR $ 7,16,2, $ PGCOUR, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 IF (IRET.NE.0) GOTO 9999 IF (IRET.NE.0) GOTO 9999 SEGDES PGCOUR MYPGS.LISPG(**)=PGCOUR * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine ingaqu' RETURN * * End of subroutine INGAQU * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales