Télécharger ingaqu.eso

Retour à la liste

Numérotation des lignes :

ingaqu
  1. C INGAQU SOURCE GOUNAND 21/06/02 21:16:40 11022
  2. SUBROUTINE INGAQU(MYPGS,IMPR,IRET)
  3. IMPLICIT REAL*8 (A-H,O-Z)
  4. IMPLICIT INTEGER (I-N)
  5. C***********************************************************************
  6. C NOM : INGAQU
  7. C PROJET : Noyau linéaire NLIN
  8. C DESCRIPTION : Remplit le segment des méthodes d'intégration
  9. C avec des méthodes d'intégration numérique de cubature
  10. C type Gauss pour le carré (ordre 1 à 7).
  11. C
  12. C REFERENCES : Le site de Cools (avec 32 chiffres sign.)
  13. C (essentiellement Stroud et al.) dont on reprend la
  14. C nomenclature...
  15. C LANGAGE : ESOPE
  16. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  17. C mél : gounand@semt2.smts.cea.fr
  18. C***********************************************************************
  19. C APPELES : INIPG, GCSINO, GCPASY, GCROIN, GCCESY, GCRESY
  20. C APPELE PAR : INPGS
  21. C***********************************************************************
  22. C ENTREES : -
  23. C ENTREES/SORTIES : MYPGS (actif en *MOD)
  24. C SORTIES : -
  25. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  26. C***********************************************************************
  27. C VERSION : v1, 20/10/99, version initiale
  28. C HISTORIQUE : v1, 20/10/99, création
  29. C HISTORIQUE :
  30. C HISTORIQUE :
  31. C***********************************************************************
  32. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  33. C en cas de modification de ce sous-programme afin de faciliter
  34. C la maintenance !
  35. C***********************************************************************
  36.  
  37. -INC PPARAM
  38. -INC CCOPTIO
  39. -INC TNLIN
  40. *-INC SPOGAU
  41. POINTEUR MYPGS.POGAUS
  42. POINTEUR PGCOUR.POGAU
  43. *
  44. integer PGPRO1
  45. INTEGER IMPR,IRET
  46. *
  47. INTEGER DIMSRF
  48. PARAMETER(DIMSRF=2)
  49. REAL*8 XCOR(DIMSRF)
  50. *
  51. * Générateurs pour la cubature de degré 1 à 1 point : GAC2-1-1 :
  52. * - [ Origin ]
  53. REAL*8 X0D1,Y0D1,P0D1
  54. PARAMETER (X0D1= 0.D0)
  55. PARAMETER (Y0D1= 0.D0)
  56. PARAMETER (P0D1= 4.D0)
  57. *
  58. * Générateurs pour la cubature de degré 2 à 3 points : GAC2-2-3 :
  59. * - [ Partial symmetry ] (\sqrt{2./3.} ; 0.) ; (4./3.)
  60. REAL*8 X1D2,Y1D2,P1D2
  61. PARAMETER (X1D2= 0.81649658092772603273242802490196D0)
  62. PARAMETER (Y1D2= 0.D0)
  63. PARAMETER (P1D2= 4.D0/3.D0)
  64. * - [ Partial symmetry ] (-\sqrt{1./6.} ; \sqrt{1./2.}) ; (4./3.)
  65. REAL*8 X2D2,Y2D2,P2D2
  66. PARAMETER (X2D2=-0.40824829046386301636621401245098D0)
  67. PARAMETER (Y2D2= 0.70710678118654752440084436210485D0)
  68. PARAMETER (P2D2= 4.D0/3.D0)
  69. *
  70. * Générateurs pour la cubature de degré 3 à 4 points : GAC2-3-4A :
  71. * - [ Fully symmetric ] (\sqrt{2./3.} ; 0.) ; (1.)
  72. REAL*8 X1D3,Y1D3,P1D3
  73. PARAMETER (X1D3= 0.816496580927726032732428024901963D0)
  74. PARAMETER (Y1D3= 0.D0)
  75. PARAMETER (P1D3= 1.D0)
  76. *
  77. * Générateurs pour la cubature de degré 4 à 6 points : GAC2-4-6C :
  78. * - [ Origin ]
  79. REAL*8 X0D4,Y0D4,P0D4
  80. PARAMETER (X0D4= 0.D0)
  81. PARAMETER (Y0D4= 0.D0)
  82. PARAMETER (P0D4= 1.14285714285714285714285714285714D0)
  83. * - [ Partial symmetry ]
  84. REAL*8 X1D4,Y1D4,P1D4
  85. PARAMETER (X1D4= 0.966091783079295904914577610477984D0)
  86. PARAMETER (Y1D4= 0.D0)
  87. PARAMETER (P1D4= 0.439560439560439560439560439560439D0)
  88. * - [ Partial symmetry ]
  89. REAL*8 X2D4,Y2D4,P2D4
  90. PARAMETER (X2D4= 0.455603727836192842249584745989760D0)
  91. PARAMETER (Y2D4= 0.851914653304600491301835640366669D0)
  92. PARAMETER (P2D4= 0.566072207007532105264050459451812D0)
  93. * - [ Partial symmetry ]
  94. REAL*8 X3D4,Y3D4,P3D4
  95. PARAMETER (X3D4=-0.731629951573134529368035491840613D0)
  96. PARAMETER (Y3D4= 0.630912788976754026243413202993658D0)
  97. PARAMETER (P3D4= 0.642719001783676685944740749339395D0)
  98. *
  99. * Générateurs pour la cubature de degré 5 à 7 points : GAC2-5-7A :
  100. * - [ Origin ]
  101. REAL*8 X0D5,Y0D5,P0D5
  102. PARAMETER (X0D5= 0.D0)
  103. PARAMETER (Y0D5= 0.D0)
  104. PARAMETER (P0D5= 1.14285714285714285714285714285714D0)
  105. * - [ Central symmetry ]
  106. REAL*8 X1D5,Y1D5,P1D5
  107. PARAMETER (X1D5= 0.966091783079295904914577610477984D0)
  108. PARAMETER (Y1D5= 0.D0)
  109. PARAMETER (P1D5= 0.317460317460317460317460317460317D0)
  110. * - [ Rectangular symmetry ]
  111. REAL*8 X2D5,Y2D5,P2D5
  112. PARAMETER (X2D5= 0.577350269189625764509148780501957D0)
  113. PARAMETER (Y2D5= 0.774596669241483377035853079956479D0)
  114. PARAMETER (P2D5= 0.555555555555555555555555555555555D0)
  115. *
  116. * Générateurs pour la cubature de degré 6 à 10 points : GAC2-6-10C :
  117. * - [ Partial symmetry ]
  118. REAL*8 X1D6,Y1D6,P1D6
  119. PARAMETER (X1D6= 0.836405633697625604537901440708439D0)
  120. PARAMETER (Y1D6= 0.D0)
  121. PARAMETER (P1D6= 0.455343245714173438553541721312115D0)
  122. * - [ Partial symmetry ]
  123. REAL*8 X2D6,Y2D6,P2D6
  124. PARAMETER (X2D6=-0.357460165391307184886174384445965D0)
  125. PARAMETER (Y2D6= 0.D0)
  126. PARAMETER (P2D6= 0.827395973202965492356696938299033D0)
  127. * - [ Partial symmetry ]
  128. REAL*8 X3D6,Y3D6,P3D6
  129. PARAMETER (X3D6= 0.872101531193130590032875340374412D0)
  130. PARAMETER (Y3D6= 0.888764014654764533853170471609380D0)
  131. PARAMETER (P3D6= 0.144000884599645384928603086560623D0)
  132. * - [ Partial symmetry ]
  133. REAL*8 X4D6,Y4D6,P4D6
  134. PARAMETER (X4D6= 0.305985162155426661489382735682569D0)
  135. PARAMETER (Y4D6= 0.604857639464685027698532295335587D0)
  136. PARAMETER (P4D6= 0.668259104262665149929832544411851D0)
  137. * - [ Partial symmetry ]
  138. REAL*8 X5D6,Y5D6,P5D6
  139. PARAMETER (X5D6=-0.410270899466657838725680144555973D0)
  140. PARAMETER (Y5D6= 0.955447506641063747757528360774788D0)
  141. PARAMETER (P5D6= 0.225474004890679357411055647855252D0)
  142. * - [ Partial symmetry ]
  143. REAL*8 X6D6,Y6D6,P6D6
  144. PARAMETER (X6D6=-0.872869311156879339251259208496329D0)
  145. PARAMETER (Y6D6= 0.565459993438754045894375389139462D0)
  146. PARAMETER (P6D6= 0.320896396788440642275389391366698D0)
  147. *
  148. * Générateurs pour la cubature de degré 7 à 12 points : GAC2-7-12A :
  149. * - [ Fully symmetric ]
  150. REAL*8 X1D7,Y1D7,P1D7
  151. PARAMETER (X1D7= 0.925820099772551461566566776583999D0)
  152. PARAMETER (Y1D7= 0.D0)
  153. PARAMETER (P1D7= 0.241975308641975308641975308641975D0)
  154. * - [ Fully symmetric ]
  155. REAL*8 X2D7,Y2D7,P2D7
  156. PARAMETER (X2D7= 0.380554433208315656379106359086394D0)
  157. PARAMETER (Y2D7= 0.380554433208315656379106359086394D0)
  158. PARAMETER (P2D7= 0.520592916667394457139919432046731D0)
  159. * - [ Fully symmetric ]
  160. REAL*8 X3D7,Y3D7,P3D7
  161. PARAMETER (X3D7= 0.805979782918598743707856181350744D0)
  162. PARAMETER (Y3D7= 0.805979782918598743707856181350744D0)
  163. PARAMETER (P3D7= 0.237431774690630234218105259311293D0)
  164. *
  165. INTEGER NOPG
  166. *
  167. * Executable statements
  168. *
  169. IF (IMPR.GT.6) WRITE(IOIMP,*) 'Entrée dans ingaqu'
  170. *
  171. * Méthode de nom : NCC2-1-4
  172. * Sur un carré : cubature d'ordre 1 à 4 points
  173. * espace de référence de dimension 2
  174. *
  175. * In INIPG : SEGINI PGCOUR
  176. CALL INIPG('NCC2-1-4','NEWTON-COTES','CARRE',
  177. $ 1,4,2,
  178. $ PGCOUR,
  179. $ IMPR,IRET)
  180. IF (IRET.NE.0) GOTO 9999
  181. NOPG=0
  182. XCOR(1)=1.D0
  183. XCOR(2)=1.D0
  184. CALL GCROIN(PGCOUR,NOPG,DIMSRF,XCOR,P1D3,IMPR,IRET)
  185. IF (IRET.NE.0) GOTO 9999
  186. SEGDES PGCOUR
  187. MYPGS.LISPG(**)=PGCOUR
  188. *
  189. * Méthode de nom : NCC2-3-9
  190. * Sur un carré : cubature d'ordre 3 à 9 points
  191. * espace de référence de dimension 2
  192. *
  193. * In INIPG : SEGINI PGCOUR
  194. CALL INIPG('NCC2-3-9','NEWTON-COTES','CARRE',
  195. $ 3,9,2,
  196. $ PGCOUR,
  197. $ IMPR,IRET)
  198. IF (IRET.NE.0) GOTO 9999
  199. CALL FIPG('NCC1-3-3',MYPGS,PGPRO1,IMPR,IRET)
  200. IF (IRET.NE.0) GOTO 9999
  201. CALL PROPG(PGPRO1,PGPRO1,PGCOUR,IMPR,IRET)
  202. IF (IRET.NE.0) GOTO 9999
  203. SEGDES PGCOUR
  204. MYPGS.LISPG(**)=PGCOUR
  205. *
  206. * Méthode de nom : GAC2-1-1
  207. * Sur un carré : cubature d'ordre 1 à 1 point
  208. * espace de référence de dimension 2
  209. *
  210. * In INIPG : SEGINI PGCOUR
  211. CALL INIPG('GAC2-1-1','GAUSS','CARRE',
  212. $ 1,1,2,
  213. $ PGCOUR,
  214. $ IMPR,IRET)
  215. IF (IRET.NE.0) GOTO 9999
  216. NOPG=0
  217. XCOR(1)=X0D1
  218. XCOR(2)=Y0D1
  219. CALL GCSINO(PGCOUR,NOPG,DIMSRF,XCOR,P0D1,IMPR,IRET)
  220. IF (IRET.NE.0) GOTO 9999
  221. SEGDES PGCOUR
  222. MYPGS.LISPG(**)=PGCOUR
  223. *
  224. * Méthode de nom : GAC2-2-3
  225. * Sur un carré : cubature d'ordre 2 à 3 points
  226. * espace de référence de dimension 2
  227. *
  228. * In INIPG : SEGINI PGCOUR
  229. CALL INIPG('GAC2-2-3','GAUSS','CARRE',
  230. $ 2,3,2,
  231. $ PGCOUR,
  232. $ IMPR,IRET)
  233. IF (IRET.NE.0) GOTO 9999
  234. NOPG=0
  235. XCOR(1)=X1D2
  236. XCOR(2)=Y1D2
  237. CALL GCSINO(PGCOUR,NOPG,DIMSRF,XCOR,P1D2,IMPR,IRET)
  238. IF (IRET.NE.0) GOTO 9999
  239. XCOR(1)=X2D2
  240. XCOR(2)=Y2D2
  241. CALL GCPASY(PGCOUR,NOPG,DIMSRF,XCOR,P2D2,IMPR,IRET)
  242. IF (IRET.NE.0) GOTO 9999
  243. SEGDES PGCOUR
  244. MYPGS.LISPG(**)=PGCOUR
  245. *
  246. * Méthode de nom : GAC2-3-4A
  247. * Sur un carré : cubature d'ordre 3 à 4 points
  248. * espace de référence de dimension 2
  249. *
  250. * In INIPG : SEGINI PGCOUR
  251. CALL INIPG('GAC2-3-4A','GAUSS','CARRE',
  252. $ 3,4,2,
  253. $ PGCOUR,
  254. $ IMPR,IRET)
  255. IF (IRET.NE.0) GOTO 9999
  256. NOPG=0
  257. XCOR(1)=X1D3
  258. XCOR(2)=Y1D3
  259. CALL GCROIN(PGCOUR,NOPG,DIMSRF,XCOR,P1D3,IMPR,IRET)
  260. IF (IRET.NE.0) GOTO 9999
  261. SEGDES PGCOUR
  262. MYPGS.LISPG(**)=PGCOUR
  263. *
  264. * Méthode de nom : GPC2-3-4
  265. * Sur un carré : méthode gauss-produit d'ordre 3 à 4 points
  266. * espace de référence de dimension 2
  267. *
  268. * In INIPG : SEGINI PGCOUR
  269. CALL INIPG('GPC2-3-4','GAUSS-PRODUIT','CARRE',
  270. $ 3,4,2,
  271. $ PGCOUR,
  272. $ IMPR,IRET)
  273. IF (IRET.NE.0) GOTO 9999
  274. CALL FIPG('GAC1-3-2',MYPGS,PGPRO1,IMPR,IRET)
  275. IF (IRET.NE.0) GOTO 9999
  276. CALL PROPG(PGPRO1,PGPRO1,PGCOUR,IMPR,IRET)
  277. IF (IRET.NE.0) GOTO 9999
  278. SEGDES PGCOUR
  279. MYPGS.LISPG(**)=PGCOUR
  280. *
  281. * Méthode de nom : GAC2-4-6C
  282. * Sur un carré : cubature d'ordre 4 à 6 points
  283. * espace de référence de dimension 2
  284. *
  285. * In INIPG : SEGINI PGCOUR
  286. CALL INIPG('GAC2-4-6C','GAUSS','CARRE',
  287. $ 4,6,2,
  288. $ PGCOUR,
  289. $ IMPR,IRET)
  290. IF (IRET.NE.0) GOTO 9999
  291. NOPG=0
  292. XCOR(1)=X0D4
  293. XCOR(2)=Y0D4
  294. CALL GCSINO(PGCOUR,NOPG,DIMSRF,XCOR,P0D4,IMPR,IRET)
  295. IF (IRET.NE.0) GOTO 9999
  296. XCOR(1)=X1D4
  297. XCOR(2)=Y1D4
  298. CALL GCSINO(PGCOUR,NOPG,DIMSRF,XCOR,P1D4,IMPR,IRET)
  299. IF (IRET.NE.0) GOTO 9999
  300. XCOR(1)=X2D4
  301. XCOR(2)=Y2D4
  302. CALL GCPASY(PGCOUR,NOPG,DIMSRF,XCOR,P2D4,IMPR,IRET)
  303. IF (IRET.NE.0) GOTO 9999
  304. XCOR(1)=X3D4
  305. XCOR(2)=Y3D4
  306. CALL GCPASY(PGCOUR,NOPG,DIMSRF,XCOR,P3D4,IMPR,IRET)
  307. IF (IRET.NE.0) GOTO 9999
  308. SEGDES PGCOUR
  309. MYPGS.LISPG(**)=PGCOUR
  310. *
  311. * Méthode de nom : GAC2-5-7A
  312. * Sur un carré : cubature d'ordre 5 à 7 points
  313. * espace de référence de dimension 2
  314. *
  315. * In INIPG : SEGINI PGCOUR
  316. CALL INIPG('GAC2-5-7A','GAUSS','CARRE',
  317. $ 5,7,2,
  318. $ PGCOUR,
  319. $ IMPR,IRET)
  320. IF (IRET.NE.0) GOTO 9999
  321. NOPG=0
  322. XCOR(1)=X0D5
  323. XCOR(2)=Y0D5
  324. CALL GCSINO(PGCOUR,NOPG,DIMSRF,XCOR,P0D5,IMPR,IRET)
  325. IF (IRET.NE.0) GOTO 9999
  326. XCOR(1)=X1D5
  327. XCOR(2)=Y1D5
  328. CALL GCCESY(PGCOUR,NOPG,DIMSRF,XCOR,P1D5,IMPR,IRET)
  329. IF (IRET.NE.0) GOTO 9999
  330. XCOR(1)=X2D5
  331. XCOR(2)=Y2D5
  332. CALL GCRESY(PGCOUR,NOPG,DIMSRF,XCOR,P2D5,IMPR,IRET)
  333. IF (IRET.NE.0) GOTO 9999
  334. SEGDES PGCOUR
  335. MYPGS.LISPG(**)=PGCOUR
  336. *
  337. * Méthode de nom : GPC2-5-9
  338. * Sur un carré : méthode gauss-produit d'ordre 5 à 9 points
  339. * espace de référence de dimension 2
  340. *
  341. * In INIPG : SEGINI PGCOUR
  342. CALL INIPG('GPC2-5-9','GAUSS-PRODUIT','CARRE',
  343. $ 5,9,2,
  344. $ PGCOUR,
  345. $ IMPR,IRET)
  346. IF (IRET.NE.0) GOTO 9999
  347. CALL FIPG('GAC1-5-3',MYPGS,PGPRO1,IMPR,IRET)
  348. IF (IRET.NE.0) GOTO 9999
  349. CALL PROPG(PGPRO1,PGPRO1,PGCOUR,IMPR,IRET)
  350. IF (IRET.NE.0) GOTO 9999
  351. SEGDES PGCOUR
  352. MYPGS.LISPG(**)=PGCOUR
  353. *
  354. * Méthode de nom : GAC2-6-10C
  355. * Sur un carré : cubature d'ordre 6 à 10 points
  356. * espace de référence de dimension 2
  357. *
  358. * In INIPG : SEGINI PGCOUR
  359. CALL INIPG('GAC2-6-10C','GAUSS','CARRE',
  360. $ 6,10,2,
  361. $ PGCOUR,
  362. $ IMPR,IRET)
  363. IF (IRET.NE.0) GOTO 9999
  364. NOPG=0
  365. XCOR(1)=X1D6
  366. XCOR(2)=Y1D6
  367. CALL GCSINO(PGCOUR,NOPG,DIMSRF,XCOR,P1D6,IMPR,IRET)
  368. IF (IRET.NE.0) GOTO 9999
  369. XCOR(1)=X2D6
  370. XCOR(2)=Y2D6
  371. CALL GCSINO(PGCOUR,NOPG,DIMSRF,XCOR,P2D6,IMPR,IRET)
  372. IF (IRET.NE.0) GOTO 9999
  373. XCOR(1)=X3D6
  374. XCOR(2)=Y3D6
  375. CALL GCPASY(PGCOUR,NOPG,DIMSRF,XCOR,P3D6,IMPR,IRET)
  376. IF (IRET.NE.0) GOTO 9999
  377. XCOR(1)=X4D6
  378. XCOR(2)=Y4D6
  379. CALL GCPASY(PGCOUR,NOPG,DIMSRF,XCOR,P4D6,IMPR,IRET)
  380. IF (IRET.NE.0) GOTO 9999
  381. XCOR(1)=X5D6
  382. XCOR(2)=Y5D6
  383. CALL GCPASY(PGCOUR,NOPG,DIMSRF,XCOR,P5D6,IMPR,IRET)
  384. IF (IRET.NE.0) GOTO 9999
  385. XCOR(1)=X6D6
  386. XCOR(2)=Y6D6
  387. CALL GCPASY(PGCOUR,NOPG,DIMSRF,XCOR,P6D6,IMPR,IRET)
  388. IF (IRET.NE.0) GOTO 9999
  389. SEGDES PGCOUR
  390. MYPGS.LISPG(**)=PGCOUR
  391. *
  392. * Méthode de nom : GAC2-7-12A
  393. * Sur un carré : cubature d'ordre 7 à 12 points
  394. * espace de référence de dimension 2
  395. *
  396. * In INIPG : SEGINI PGCOUR
  397. CALL INIPG('GAC2-7-12A','GAUSS','CARRE',
  398. $ 7,12,2,
  399. $ PGCOUR,
  400. $ IMPR,IRET)
  401. IF (IRET.NE.0) GOTO 9999
  402. NOPG=0
  403. XCOR(1)=X1D7
  404. XCOR(2)=Y1D7
  405. CALL GCROIN(PGCOUR,NOPG,DIMSRF,XCOR,P1D7,IMPR,IRET)
  406. IF (IRET.NE.0) GOTO 9999
  407. XCOR(1)=X2D7
  408. XCOR(2)=Y2D7
  409. CALL GCRESY(PGCOUR,NOPG,DIMSRF,XCOR,P2D7,IMPR,IRET)
  410. IF (IRET.NE.0) GOTO 9999
  411. XCOR(1)=X3D7
  412. XCOR(2)=Y3D7
  413. CALL GCRESY(PGCOUR,NOPG,DIMSRF,XCOR,P3D7,IMPR,IRET)
  414. IF (IRET.NE.0) GOTO 9999
  415. SEGDES PGCOUR
  416. MYPGS.LISPG(**)=PGCOUR
  417. *
  418. * Méthode de nom : GPC2-7-16
  419. * Sur un carré : méthode gauss-produit d'ordre 7 à 16 points
  420. * espace de référence de dimension 2
  421. *
  422. * In INIPG : SEGINI PGCOUR
  423. CALL INIPG('GPC2-7-16','GAUSS-PRODUIT','CARRE',
  424. $ 7,16,2,
  425. $ PGCOUR,
  426. $ IMPR,IRET)
  427. IF (IRET.NE.0) GOTO 9999
  428. CALL FIPG('GAC1-7-4',MYPGS,PGPRO1,IMPR,IRET)
  429. IF (IRET.NE.0) GOTO 9999
  430. CALL PROPG(PGPRO1,PGPRO1,PGCOUR,IMPR,IRET)
  431. IF (IRET.NE.0) GOTO 9999
  432. SEGDES PGCOUR
  433. MYPGS.LISPG(**)=PGCOUR
  434. *
  435. * Normal termination
  436. *
  437. IRET=0
  438. RETURN
  439. *
  440. * Format handling
  441. *
  442. *
  443. * Error handling
  444. *
  445. 9999 CONTINUE
  446. IRET=1
  447. WRITE(IOIMP,*) 'An error was detected in subroutine ingaqu'
  448. RETURN
  449. *
  450. * End of subroutine INGAQU
  451. *
  452. END
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales