Télécharger norv1.eso

Retour à la liste

Numérotation des lignes :

norv1
  1. C NORV1 SOURCE FANDEUR 22/01/03 21:15:33 11136
  2.  
  3. SUBROUTINE NORV1(IOP1,ICEN,ISOMM,IFAC,IFACEL,IFACEP,IELTFA,
  4. & IMAIL,INORM,ISURF,ICHPO,ICHTE,ICHCL,ICHNE,ICHMI,
  5. & ICHCO,IOP,ICHGRA,MPOGRA,ICOEFF,LOGBOR,LOGCOE,LOGCCL)
  6. C
  7. C************************************************************************
  8. C
  9. C PROJET : CASTEM 2000
  10. C
  11. C NOM : NORV1
  12. C
  13. C DESCRIPTION : Appelle par NORV
  14. C
  15. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  16. C
  17. C AUTEUR : C. LE POTIER, DM2S/SFME/MTMS
  18. C
  19. C************************************************************************
  20. C
  21. IMPLICIT INTEGER(I-N)
  22. IMPLICIT real*8 (a-h,o-z)
  23. -INC SMLENTI
  24. -INC SMELEME
  25. -INC SMCHPOI
  26.  
  27. -INC PPARAM
  28. -INC CCOPTIO
  29. -INC SMCOORD
  30. -INC SMLREEL
  31. POINTEUR MELEFL.MELEME, MELEFP.MELEME, MELEFA.MELEME,
  32. & MELTFA.MELEME
  33. POINTEUR MPOSUR.MPOVAL, MPONOR.MPOVAL,
  34. & MPOCHP.MPOVAL, MPOVCL.MPOVAL, MPGSOM.MPOVAL, MPVOSO.MPOVAL,
  35. & MPOGRA.MPOVAL,MPOTEN.MPOVAL,MPOVNE.MPOVAL,MPOVMI.MPOVAL,
  36. & MPOVCO.MPOVAL
  37. POINTEUR MLENCL.MLENTI, MLECEN.MLENTI, MLESOM.MLENTI,
  38. & MLEFA.MLENTI,MLENNE.MLENTI,MLENMI.MLENTI,
  39. & MLEFA2.MLENTI,MLENCO.MLENTI
  40. -INC SMCHAML
  41. INTEGER NBNN,NBREF,NBMAX
  42.  
  43. C**** Variables de COOPTIO
  44. C
  45. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  46. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  47. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  48. C & ,IECHO, IIMPI, IOSPI
  49. C & ,IDIM
  50. C & ,MCOORD
  51. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  52. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  53. C & ,NORINC,NORVAL,NORIND,NORVAD
  54. C & ,NUCROU, IPSAUV
  55.  
  56. C**** Variable de SMLENTI, SMCHPOI
  57. C
  58. INTEGER JG, N, NC, NSOUPO, NAT, NBSOUS, NBNO,NBELEM
  59. C
  60. C**** Les includes
  61. C
  62. INTEGER I1,ICOMP,ICOMGR,IGEOM
  63. & ,IOP1,ICEN,ISOMM,IFAC,IFACEL,IFACEP,INORM
  64. & ,ISURF,IMAIL,ICHPO,ICHCL,ICHNE,ICHGRA,ICOEFF
  65. & ,NTOT,NSOMM,NCOMP,NFAC,NCEN
  66. & ,NLCF,NGCF,NGCF1,NGCF2,NGCG,NGCD,NLCG,NLCD,NGS1,NGS2
  67. & ,NLS1,NLS2,NLFCL
  68. & ,ISOUS,IELEM,INOEUD,ICELL
  69. INTEGER ICEN2
  70. REAL*8 SCNX,SCNY,SCNZ,SURF,VOL,VAL,VALX,VALY,XG,XD,XF,XS1,XS2
  71. & ,YG,YD,YF,YS1,YS2,PSCA,XNORM,VECX,VECY,PSCAGX,PSCAGY,
  72. & PSCADX,PSCADY,K11G,K22G,K21G,K11D,K22D,K21D,VXG1,VXG2,
  73. & VXAU,VYAU,VXD1,VXD2,VYG1,VYG2,TRG1,TRG2,
  74. & TRD1,TRD2,TRG,TRD
  75. REAL*8 XLONG,AG1,AG2,AD1,AD2,PSCAG1,PSCAG2,PSCAD1,PSCAD2,
  76. & COEF1,COEF2,COEF3,COEF4,SCN1X,SCN1Y,SCN1Z,VX,VY,COEF1X,COEF2X,
  77. & COEF1Y,COEF2Y,CX,CY,ANCX,ANCY,DIFFX,DIFFY,XLONGG,XLONGD
  78. & VALD,VALG,COEF,GX,GY,XMINK11,XMAXK11,XMINK22,XMAXK22
  79. & QIMPX,QIMPY,QIMPZ
  80.  
  81. REAL*8 VECXG1(2),VECYG1(2)
  82. REAL*8 VECXG2(2),VECYG2(2)
  83. REAL*8 VECXD1(2),VECYD1(2)
  84. REAL*8 VECXD2(2),VECYD2(2)
  85. REAL*8 EPS
  86. INTEGER ICRIT
  87. CHARACTER*(4) NOMCOM(18),NOMCOM3(9)
  88. CHARACTER*8 TYPE
  89. INTEGER LOGBOR,LOGCOE,LOGCCL
  90. C
  91. DATA NOMCOM /'P1DX','P1DY',
  92. & 'P2DX','P2DY',
  93. & 'P3DX','P3DY',
  94. & 'P4DX','P4DY',
  95. & 'P5DX','P5DY',
  96. & 'P6DX','P6DY',
  97. & 'P7DX','P7DY',
  98. & 'P8DX','P8DY',
  99. & 'P9DX','P9DY'/
  100.  
  101. DATA NOMCOM3 /'P1DX','P1DY','P1DZ',
  102. & 'P2DX','P2DY','P2DZ',
  103. & 'P3DX','P3DY','P3DZ'/
  104.  
  105. INTEGER NDIM
  106. SEGMENT MMAT1
  107. REAL*8 PM(NDIM,NDIM),PM1(NDIM,NDIM),XSOL(NDIM)
  108. INTEGER IC(NDIM)
  109. ENDSEGMENT
  110.  
  111. INTEGER K1,K2
  112. SEGMENT INDICE
  113. INTEGER NUME(K1,K2)
  114. ENDSEGMENT
  115. POINTEUR IND.INDICE,IND2.INDICE,IND22.INDICE
  116.  
  117. SEGMENT MATRICE
  118. REAL*8 MAT(K1,K2)
  119. ENDSEGMENT
  120. POINTEUR VAL1.MATRICE,VAL2.MATRICE,SCMB.MATRICE
  121.  
  122.  
  123. SEGMENT POINT2
  124. INTEGER POINT(K3)
  125. ENDSEGMENT
  126. POINTEUR IPO2.POINT2
  127.  
  128. SEGMENT MATRICE2
  129. REAL*8 MAT2(K1,K2)
  130. ENDSEGMENT
  131.  
  132. SEGMENT POINT3
  133. INTEGER POINT33(K3)
  134. ENDSEGMENT
  135. POINTEUR IPO3.POINT3
  136.  
  137. SEGMENT INDICE3
  138. INTEGER NU(K1,K2)
  139. ENDSEGMENT
  140. POINTEUR INDIC.INDICE3
  141.  
  142. SEGMENT REP
  143. INTEGER ID(K3)
  144. ENDSEGMENT
  145. POINTEUR TAB.REP,INDLI.REP
  146.  
  147. INTEGER K5
  148. SEGMENT NBFAC
  149. INTEGER NBFACEL(K5)
  150. INTEGER IMELEM(K5)
  151. ENDSEGMENT
  152.  
  153. INTEGER K6
  154. SEGMENT NBCOT
  155. INTEGER NBCOTE(K6)
  156. INTEGER IMECOTE(K6)
  157. ENDSEGMENT
  158.  
  159.  
  160.  
  161. C
  162. C
  163. C**** Nombre total de points (HP IDIM .EQ. 2)
  164. C
  165. c SEGACT MCOORD *MOD
  166. IOP1 = 3
  167. NTOT = nbpts
  168.  
  169. C
  170. C**** Le MELEME CENTRE (SPG du CHPOINT dont on veux calculer le gradient)
  171. C
  172. CALL KRIPAD(ICEN,MLECEN)
  173. C SEGMENT INTERVENANT POUR PRENDRE EN COMPTE PLUSIEURS SOUS DOMAINES
  174. MELEME = ICEN
  175. NCEN=MELEME.NUM(/2)
  176. C SEGDES MELEME
  177. K5 = NCEN
  178. SEGINI NBFAC
  179.  
  180. C
  181. C**** Le MELEME FACE (SPG du CHPOINT dont on veux calculer le gradient)
  182. C
  183. CALL KRIPAD(IFAC,MLEFA)
  184. MELEME = IFAC
  185. K6=MELEME.NUM(/2)
  186. C SEGDES MELEME
  187. c SEGINI NBCOT
  188.  
  189.  
  190.  
  191. C
  192. C
  193.  
  194. C
  195. C**** Le MELEME SOMMET
  196. C
  197. CALL KRIPAD(ISOMM,MLESOM)
  198. C
  199. C**** En KRIPAD
  200. C SEGACT ISOMM
  201. C SEGINI MLESOM
  202. C
  203. MELEME = ISOMM
  204. NSOMM = MELEME.NUM(/2)
  205. C SEGDES MELEME
  206. C
  207. C**** Le MPOVAL des SURFACES des FACES
  208. C
  209. CALL LICHT(ISURF,MPOSUR,TYPE,IGEOM)
  210. C
  211. C**** Le MPOVAL des NORMALES aux FACES
  212. C
  213. CALL LICHT(INORM,MPONOR,TYPE,IGEOM)
  214. C
  215. C**** Le MPOVAL du CHPOINT
  216. C
  217. CALL LICHT(ICHPO,MPOCHP,TYPE,IGEOM)
  218.  
  219. C**** Le MPOVAL du CHPOINT DU TENSEURS DE DIFFUSIONS
  220. C
  221. IF (ICHTE.GT.0) THEN
  222. CALL LICHT(ICHTE,MPOTEN,TYPE,IGEOM)
  223. ENDIF
  224. C
  225. C**** En LICHT
  226. C SEGACT*MOD MPOCHP
  227. C
  228. NCOMP = MPOCHP.VPOCHA(/2)
  229. IF (ICHTE.GT.0) THEN
  230. c CALL ECCHPO(ICHTE)
  231. ENDIF
  232.  
  233. C
  234. C**** Conditions limites (DIRICHLET)
  235. C
  236. IF (ICHCL .GT. 0) THEN
  237. TYPE=' '
  238. CALL LICHT(ICHCL,MPOVCL,TYPE,IGEOM)
  239. C
  240. C******* En LICHT
  241. C SEGACT*MOD MPOVCL
  242. C
  243. CALL KRIPAD(IGEOM,MLENCL)
  244. C
  245. C******* En KRIPAD
  246. C SEGACT IGEOM, MLENCL
  247. C
  248. MELEME = IGEOM
  249. C SEGDES MELEME
  250. ELSE
  251. JG = NTOT
  252. SEGINI MLENCL
  253. DO I1 = 1 , JG, 1
  254. MLENCL.LECT(I1)=0
  255. ENDDO
  256. MPOVCL = -1
  257. ENDIF
  258.  
  259. c CONDITIONS DE FLUX
  260. IF (ICHNE .GT. 0) THEN
  261. TYPE=' '
  262. CALL LICHT(ICHNE,MPOVNE,TYPE,IGEOM)
  263. C
  264. C******* En LICHT
  265. C SEGACT*MOD MPOVNE
  266. C
  267. CALL KRIPAD(IGEOM,MLENNE)
  268. C
  269. C******* En KRIPAD
  270. C SEGACT IGEOM, MLENCL
  271. C
  272. MELEME = IGEOM
  273. C SEGDES MELEME
  274. ELSE
  275. JG = NTOT
  276. SEGINI MLENNE
  277. DO I1 = 1 , JG, 1
  278. MLENNE.LECT(I1)=0
  279. ENDDO
  280. MPOVNE = -1
  281. ENDIF
  282.  
  283. c CONDITIONS MIXTES
  284. IF (ICHMI .GT. 0) THEN
  285. TYPE=' '
  286. CALL LICHT(ICHMI,MPOVMI,TYPE,IGEOM)
  287. C
  288. C******* En LICHT
  289. C SEGACT*MOD MPOVNE
  290. C
  291. CALL KRIPAD(IGEOM,MLENMI)
  292. C
  293. C******* En KRIPAD
  294. C SEGACT IGEOM, MLENCL
  295. C
  296. MELEME = IGEOM
  297. SEGDES MELEME
  298. ELSE
  299. JG = NTOT
  300. SEGINI MLENMI
  301. DO I1 = 1 , JG, 1
  302. MLENMI.LECT(I1)=0
  303. ENDDO
  304. MPOVMI = -1
  305. ENDIF
  306. C
  307. c OPTION FLUX CONVECTIFS
  308. IF (ICHCO .GT. 0) THEN
  309. TYPE=' '
  310. CALL LICHT(ICHCO,MPOVCO,TYPE,IGEOM)
  311. C
  312. C******* En LICHT
  313. C SEGACT*MOD MPOVNE
  314. C
  315. CALL KRIPAD(IGEOM,MLENCO)
  316. C
  317. C******* En KRIPAD
  318. C SEGACT IGEOM, MLENCL
  319. C
  320. MELEME = IGEOM
  321. C SEGDES MELEME
  322. ELSE
  323. JG = NTOT
  324. SEGINI MLENCO
  325. DO I1 = 1 , JG, 1
  326. MLENCO.LECT(I1)=0
  327. ENDDO
  328. MPOVCO = -1
  329. ENDIF
  330. C
  331. C
  332. C**** Boucle sur le FACEL
  333. C
  334. MELEFL=IFACEL
  335. MELEFP=IFACEP
  336. MELEFA=IFAC
  337. MELTFA = IELTFA
  338. SEGACT MELEFL
  339. SEGACT MELEFP
  340. SEGACT MELEFA
  341. SEGACT MELTFA
  342. C FACEL = MAILLAGE NON PARTITIONE
  343. NFAC=MELEFL.NUM(/2)
  344.  
  345. IF (IDIM.EQ.2) THEN
  346. c INITIALISATION DU CHAMPOINT POUR LE GRADIENT AUX FACES
  347. NAT=1
  348. NSOUPO=1
  349. SEGINI MCHPOI
  350. ICHGRA=MCHPOI
  351. MCHPOI.MOCHDE=
  352. &'Gradient VF '
  353. MCHPOI.JATTRI=2
  354. MCHPOI.IFOPOI=IFOUR
  355. NC=1
  356. SEGINI MSOUPO
  357. MCHPOI.IPCHP(1)=MSOUPO
  358. C SEGDES MCHPOI
  359. DO I1=1,NC,1
  360. MSOUPO.NOCOMP(I1)='FLUX'
  361. ENDDO
  362. C
  363. C******* Gradient aux faces
  364.  
  365. N=NFAC
  366. NC=1
  367. C
  368. C
  369. C**** Division par les volumes
  370. C
  371.  
  372. C CAS OU ON CALCULE LES COEFFICIENTS DE LA MATRICE
  373. C ON EST ICI
  374. IF ((LOGCOE.EQ.1).AND.(LOGCCL.EQ.1).AND.(LOGBOR.EQ.1)) THEN
  375.  
  376.  
  377. C PARAMETRES POUR LE GRADIENT AUX FACES
  378. SEGINI MPOGRA
  379. MSOUPO.IGEOC=IFAC
  380. MSOUPO.IPOVAL=MPOGRA
  381. C SEGDES MSOUPO
  382.  
  383. c ASSEMBLAGES DES MATRICES LOCALES POUR CHAQUE NOEUD
  384. CALL NORV2(MELEFA,MELEFL,MLECEN,MELEFP,MLESOM,MPONOR,
  385. & MPOSUR,MELTFA,MLEFA,MPOTEN,MPOCHP,MLENCL,MLENNE,
  386. & MLENMI,MPOVCL,MPOVNE,MPOVMI,ICHTE,ICHCL,ICHNE,
  387. & IPO2,SCMB,INDLI,TAB,VAL1,VAL2,IND22,IND2,IND,
  388. & NBFAC,NSOMM,NBMAX)
  389.  
  390. c INVERSION DE CHAQUE MATRICE LOCALE
  391. CALL NORV3(NSOMM,NBMAX,IPO2,SCMB,INDLI,
  392. & VAL1,VAL2,IND22,IND2,IND,IPO3,VAUX,TAB)
  393.  
  394. c RECONSTITUTION DU GRADIENT ET DES COEFFICIENTS PERMETTANT DE CALCULER CES
  395. c GRADIENTS
  396.  
  397. CALL NORV4(MELEFA,MELEFL,MLECEN,MELEFP,MLESOM,MPONOR,
  398. & MPOSUR,MELTFA,MLEFA,MPOTEN,MPOCHP,MLENCL,
  399. & MPOVCL,ICHTE,ICHCL,ICHCO,MPOVCO,IOP,
  400. & IPO2,SCMB,INDLI,VAL1,VAL2,IND22,IND2,IND,
  401. & IPO3,VAUX,TAB,MELEME,MPOGRA,MELVA1,MELVA2,
  402. & NBNN,NBFAC,MCHELM,MCHAML)
  403. ICOEFF = MCHELM
  404.  
  405. ELSE
  406. C ON CONNAIT LES COEFFICIENTS : ON EN DEDUIT LE GRADIENT
  407. SEGINI MPOGRA
  408. MSOUPO.IGEOC=IFAC
  409. MSOUPO.IPOVAL=MPOGRA
  410. C SEGDES MSOUPO
  411.  
  412. CALL NORV5(NFAC,MPOGRA,ICOEFF,MELVA1,MELEFL,MLECEN,
  413. & MLEFA,MPOCHP,
  414. & MLENCL,MPOVCL,MLENNE,MPOVNE,MLENMI,MPOVMI,
  415. & LOGBOR,LOGCCL,LOGCOE)
  416. ENDIF
  417. C SEGDES MPOGRA
  418.  
  419.  
  420.  
  421. C CAS 3 DIMENSIONS
  422. ELSE
  423.  
  424. c INITIALISATION DU CHAMPOINT POUR LE GRADIENT AUX FACES
  425. NAT=1
  426. NSOUPO=1
  427. SEGINI MCHPOI
  428. ICHGRA=MCHPOI
  429. MCHPOI.MOCHDE=
  430. &'Gradient VF '
  431. MCHPOI.JATTRI=2
  432. MCHPOI.IFOPOI=IFOUR
  433. NC=1
  434. SEGINI MSOUPO
  435. MCHPOI.IPCHP(1)=MSOUPO
  436. C SEGDES MCHPOI
  437. DO I1=1,NC,1
  438. MSOUPO.NOCOMP(I1)='FLUX'
  439. ENDDO
  440. C
  441. C******* Gradient aux faces
  442.  
  443. N=NFAC
  444. NC=1
  445. C
  446. C
  447. C**** Division par les volumes
  448. C
  449.  
  450. C CAS OU ON CALCULE LES COEFFICIENTS DE LA MATRICE
  451. IF ((LOGCOE.EQ.1).AND.(LOGCCL.EQ.1).AND.(LOGBOR.EQ.1)) THEN
  452.  
  453.  
  454. C PARAMETRES POUR LE GRADIENT AUX FACES
  455. SEGINI MPOGRA
  456. MSOUPO.IGEOC=IFAC
  457. MSOUPO.IPOVAL=MPOGRA
  458. C SEGDES MSOUPO
  459.  
  460. c ASSEMBLAGES DES MATRICES LOCALES POUR CHAQUE NOEUD
  461. CALL NOR2D3(MELEFA,MELEFL,MLECEN,MELEFP,MLESOM,MPONOR,
  462. & MPOSUR,MELTFA,MLEFA,MLEFA2,MPOTEN,MPOCHP,MLENCL,
  463. & MLENNE,
  464. & MLENMI,MPOVCL,MPOVNE,MPOVMI,ICHTE,ICHCL,ICHNE,
  465. & IPO2,SCMB,INDLI,TAB,VAL1,VAL2,IND22,IND2,IND,
  466. & NBFAC,NBCOT,NSOMM,NBMAX)
  467.  
  468. c INVERSION DE CHAQUE MATRICE LOCALE
  469. CALL NORV3(NSOMM,NBMAX,IPO2,SCMB,INDLI,
  470. & VAL1,VAL2,IND22,IND2,IND,IPO3,VAUX,TAB)
  471.  
  472. c RECONSTITUTION DU GRADIENT ET DES COEFFICIENTS PERMETTANT DE CALCULER CES
  473. c GRADIENTS
  474. CALL NOR4D3(
  475. & MELEFA,MELEFL,MLECEN,MELEFP,MLESOM,MPONOR,
  476. & MPOSUR,MELTFA,MLEFA,MLEFA2,MPOTEN,MPOCHP,MLENCL,
  477. & MPOVCL,ICHTE,ICHCL,ICHCO,MPOVCO,IOP,
  478. & IPO2,SCMB,INDLI,VAL1,VAL2,IND22,IND2,IND,
  479. & IPO3,TAB,MPOGRA,MELVA1,MELVA2,
  480. & NSOMM,NBMAX,NBFAC,NBCOT,MCHELM,MCHAML)
  481. ICOEFF = MCHELM
  482.  
  483. ELSE
  484.  
  485. C ON CONNAIT LES COEFFICIENTS : ON EN DEDUIT LE GRADIENT
  486. SEGINI MPOGRA
  487. MSOUPO.IGEOC=IFAC
  488. MSOUPO.IPOVAL=MPOGRA
  489. C SEGDES MSOUPO
  490. CALL NORV5(NFAC,MPOGRA,ICOEFF,MELVA1,MELEFL,MLECEN,MLEFA,
  491. & MPOCHP,MLENCL,MPOVCL,MLENNE,MPOVNE,MLENMI,
  492. & MPOVMI,LOGBOR,LOGCCL,LOGCOE)
  493.  
  494. ENDIF
  495. C SEGDES MPOGRA
  496. ENDIF
  497.  
  498.  
  499.  
  500.  
  501. SEGSUP MLECEN
  502. SEGDES MPOSUR
  503. SEGDES MPONOR
  504. SEGDES MPOCHP
  505. IF(MPOVCL .GT. 0)THEN
  506. SEGDES MPOVCL
  507. ENDIF
  508. IF(MPOVNE .GT. 0)THEN
  509. SEGDES MPOVNE
  510. ENDIF
  511. IF(MPOVMI .GT. 0)THEN
  512. SEGDES MPOVMI
  513. ENDIF
  514. IF(MPOVCO .GT. 0)THEN
  515. SEGDES MPOVCO
  516. ENDIF
  517. SEGSUP MLENCL
  518. SEGSUP MLENNE
  519. SEGSUP MLENMI
  520. SEGSUP MLENCO
  521. SEGSUP MLESOM
  522. SEGSUP NBFAC
  523. SEGDES MELEFL
  524. SEGDES MELEFP
  525. SEGDES MELEFA
  526. SEGDES MELTFA
  527.  
  528. C
  529. 9999 CONTINUE
  530. END
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  

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