Télécharger rlexce.eso

Retour à la liste

Numérotation des lignes :

  1. C RLEXCE SOURCE CHAT 05/01/13 03:02:22 5004
  2. SUBROUTINE RLEXCE(MELEME,MELCEN,MELFAC,INORM,ICHCL,MLECOE)
  3. C************************************************************************
  4. C
  5. C PROJET : CASTEM 2000
  6. C
  7. C NOM : RLEXCE
  8. C
  9. C DESCRIPTION : Appelle par GRADGE
  10. C
  11. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  12. C
  13. C AUTEUR : A. BECCANTINI
  14. C
  15. C************************************************************************
  16. C
  17. C This subroutine computes the coefficients which allow to perform
  18. C a linear exact reconstruction of each 'CENTRE' value.
  19. C Indeed, given the i-th centre (NC=MELEME.NUM(NBNN,i)), given the list
  20. C of its neighbors MELEME.NUM(j,i),j=1,NBNN-1,
  21. C we have to compute the matrix of coefficients a(i,j) such that
  22. C
  23. C VAL(MELEME.NUM(NBNN,i)) = \sum_{neig1} a(i,neig1) * VAL(neig1)
  24. C
  25. C where neig1 is a 'CENTRE' point or a 'wall boundary condition'
  26. C point.
  27. C
  28. C To compute these coefficients, we impose that VAL is linear with
  29. C respect to the coordinates of NC and its neighbor. Then, since
  30. C there are less unknowns than equations, we use a least square
  31. C method. We impose that
  32. C
  33. C A + B (x_{neig} - x_NC) + C (y_{neig} - y_NC) + D (z_{neig} - z_NC)
  34. C = VAL(neig)
  35. C
  36. C To determine A, B, C, D we have to solve
  37. C
  38. C MATA . tran(A, B, C, D) = tran(VAL(1), VAL(2), ... , VALNOR(j) /
  39. C (r_{j} - r_NC)
  40. C
  41. C with MATA(1,*) = (1,x_1-x_NC,y_1-y_NC,z_1-z_NC)
  42. C MATA(2,*) = (1,x_2-x_NC,y_2-y_NC,z_2-z_NC)
  43. C ...
  44. C
  45. C To determine a(i,neig) we have to solve a linear system (for each
  46. C neig). If the neighbor is a 'CENTRE' point or a 'wall boundary
  47. C condition' point we solve
  48. C
  49. C MATA . tran(a(i,neig), b(i,neig), c(i,neig), d(i,neig)) = e_{neig}
  50. C
  51. C with e_{neig} = tran (0,0,...,0,1,0,...) (1 in the neig position)
  52. C
  53. C N.B. Concerning the neighbor, two different cases are taken into
  54. C account.
  55. C 1) Reflecting boundary conditions:
  56. C The neighbor does not belong to the geometrical support of
  57. C ICHCL -> It is a wall point
  58. C Then the reconstruction is performed on a virtual point,
  59. C the symmetric point of the centre with respect to the wall
  60. C 2) Non_reflecting boundary conditions:
  61. C The neighbor belongs to the geometrical support of ICHCL
  62. C -> The reconstruction is performed on such FACE point
  63. C
  64. C**** Inputs:
  65. C
  66. C MELEME = the MELEME which contains the stencil of the gradient
  67. C molecule
  68. C MELCEN = the 'CENTRE' meleme
  69. C MELFAC = the 'FACE' meleme
  70. C INORM = the CHAMPOINT containing the face normals
  71. C ICHCL = the CHAMPOINT containing the non-reflecting boundary
  72. C conditions
  73. C
  74. C**** Output:
  75. C
  76. C MLECOE = list of integers.
  77. C
  78. C MLECOE.LECT(i) points to the MLREEL MATCOE which
  79. C contain the a(i,neig)
  80. C
  81. C***********************************************************************
  82. C
  83. C Modified the 25-th of february to take into account the 'MODE' 'AXIS'
  84. C
  85. C**** Variables de COOPTIO
  86. C
  87. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  88. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  89. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  90. C & ,IECHO, IIMPI, IOSPI
  91. C & ,IDIM
  92. CC & ,MCOORD
  93. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  94. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  95. C & ,NORINC,NORVAL,NORIND,NORVAD
  96. C & ,NUCROU, IPSAUV, IFICLE, IPREFI, IREFOR, ISAFOR
  97. CC
  98. IMPLICIT INTEGER(I-N)
  99. INTEGER INORM, ICHCL, IGEOM, NSOU, JG, NTCEN, NVMAX, NVMIN
  100. & ,NBNN, NBELEM, NGV
  101. & , NGC, IPCOOR, NLV, NLV1, NLF, IERSVD, IERR0
  102. & ,ISOUS , ICEN, IELEM, IVOI, I1, I2, I3, I4, NAXI
  103. REAL*8 XC ,YC, ZC, XV, YV, ZV, DX, DY, DZ, ERRTOL, SMAX, SMIN
  104. & ,RNX, RNY, RNZ, ALPHA
  105. PARAMETER(ERRTOL=1.0D-16)
  106. CHARACTER*8 TYPE
  107. LOGICAL LOGSVD, LOGAXI
  108. -INC CCOPTIO
  109. -INC SMCOORD
  110. -INC SMELEME
  111. -INC SMLREEL
  112. -INC SMLENTI
  113. -INC SMCHPOI
  114. C
  115. INTEGER N1,N2
  116. SEGMENT MATRIX
  117. REAL*8 MAT(N1,N2)
  118. ENDSEGMENT
  119. C
  120. POINTEUR MELFAC.MELEME, MLEFAC.MLENTI, MLEBC.MLENTI, MPNORM.MPOVAL
  121. & ,MLESOU.MLENTI, MELCEN.MELEME ,MLECEN.MLENTI
  122. & ,MLECOE.MLENTI, MATCOE.MATRIX
  123. & ,MATA.MATRIX,MATU.MATRIX,MATV.MATRIX,MLRB.MLREEL
  124. & ,MLRSIG.MLREEL,MLRTRA.MLREEL,MTAA.MATRIX, MINTAA.MATRIX
  125. & ,MLRIN1.MLREEL,MLRIN2.MLREEL
  126. & ,MLRIN3.MLREEL
  127. C
  128. C**** Axis-symmetrical case
  129. C
  130. IF((IFOMOD .EQ. 0) .AND. (IDIM .EQ. 2))THEN
  131. LOGAXI=.TRUE.
  132. NAXI=2
  133. ELSE
  134. NAXI=0
  135. LOGAXI=.FALSE.
  136. ENDIF
  137. C
  138. C**** We create the MLENTI for the centers
  139. C
  140. CALL KRIPAD(MELCEN,MLECEN)
  141. IF(IERR .NE. 0)GOTO 9999
  142. C En KRIPAD
  143. C SEGINI MLECEN
  144. C
  145. C**** We create the MLENTI for the faces
  146. C
  147. CALL KRIPAD(MELFAC,MLEFAC)
  148. IF(IERR .NE. 0)GOTO 9999
  149. C En KRIPAD
  150. C SEGINI MLEFAC
  151. C
  152. C**** We create the MLENTI for the BC
  153. C
  154. IF(ICHCL.NE.0)THEN
  155. CALL LICHT(ICHCL,MPOVAL,TYPE,IGEOM)
  156. C In LICHT
  157. C SEGACT MPOVAL*MOD
  158. SEGDES MPOVAL
  159. ELSE
  160. IGEOM=0
  161. ENDIF
  162. CALL KRIPAD(IGEOM,MLEBC)
  163. IF(IERR .NE. 0)GOTO 9999
  164. C SEGINI MLEBC
  165. C
  166. C**** Le MPOVAL des normales
  167. C
  168. CALL LICHT(INORM,MPNORM,TYPE,IGEOM)
  169. C SEGACT MPNORM
  170. C
  171. C**** We recover the elemenary mesh of MELEME
  172. C We compute the number of maximum number of neighbors
  173. C We compute the number of centers
  174. C
  175. SEGACT MELEME
  176. NSOU=MAX(MELEME.LISOUS(/1),1)
  177. JG=NSOU
  178. SEGINI MLESOU
  179. IF (NSOU.EQ.1)THEN
  180. MLESOU.LECT(1)=MELEME
  181. NBNN=MELEME.NUM(/1)
  182. NTCEN=MELEME.NUM(/2)
  183. NVMAX=NBNN
  184. ELSE
  185. NVMAX=0
  186. NTCEN=0
  187. DO ISOUS=1,NSOU,1
  188. IPT1=MELEME.LISOUS(ISOUS)
  189. MLESOU.LECT(ISOUS)=IPT1
  190. SEGACT IPT1
  191. NBNN=IPT1.NUM(/1)
  192. NVMAX=MAX(NVMAX,NBNN)
  193. NTCEN=NTCEN+IPT1.NUM(/2)
  194. ENDDO
  195. ENDIF
  196. NVMAX=NVMAX+NAXI
  197. C
  198. C**** The output
  199. C
  200. JG=NTCEN
  201. SEGINI MLECOE
  202. C
  203. C MATA = matrix to "pseudoinvert" (NVMAX,IDIM+1)
  204. C MATU = matrix of the singular right eigenvectors of MATA
  205. C (NVMAX,IDIM+1)
  206. C MATV = matrix of the singular left eigenvectors of MATA
  207. C (IDIM+1,IDIM+1)
  208. C But in invsvd.eso, MATV dimensions are NVMAX,IDIM+1
  209. C MLRSIG = singular values of MATA (IDIM+1)
  210. C MLRB = vector (NVMAX)
  211. C MLRB.PROG(j) = 1
  212. C
  213. C N.B. MATA = MATU MATSIG t(MATV)
  214. C If MATA is non singular,
  215. C inv(MATA) = MATV inv(MATSIG) t(MATU)
  216. C
  217. C MLRTRA temporary vector of invsvd.eso
  218. C NVMIN = IDIM + 1 (the most little dimension of the matrices)
  219. C
  220. N1=NVMAX
  221. N2=IDIM+1
  222. SEGINI MATA
  223. SEGINI MATU
  224. SEGINI MATV
  225. JG=NVMAX
  226. SEGINI MLRB
  227. JG=IDIM+1
  228. SEGINI MLRSIG
  229. SEGINI MLRTRA
  230. NVMIN=N2
  231. C
  232. C MTAA : [t(MATA).MATA]
  233. C MINTAA : [inve(t(MATA) MATA)]
  234. C MLRIN1,2,3 : "temporary vectors"
  235. C
  236. N1=NVMIN
  237. N2=NVMIN
  238. SEGINI MTAA
  239. SEGINI MINTAA
  240. JG=NVMIN
  241. SEGINI MLRIN1
  242. SEGINI MLRIN2
  243. SEGINI MLRIN3
  244. C
  245. C**** Loop on the sommet to compute the coefficient
  246. C
  247. ICEN=0
  248. DO ISOUS=1,NSOU,1
  249. IPT1=MLESOU.LECT(ISOUS)
  250. NBNN=IPT1.NUM(/1)
  251. NBELEM=IPT1.NUM(/2)
  252. DO IELEM=1,NBELEM,1
  253. C
  254. NGC=IPT1.NUM(NBNN,IELEM)
  255. IPCOOR=((NGC-1)*(IDIM+1))+1
  256. XC=MCOORD.XCOOR(IPCOOR)
  257. YC=MCOORD.XCOOR(IPCOOR+1)
  258. IF(IDIM.EQ.3) ZC=MCOORD.XCOOR(IPCOOR+2)
  259. C
  260. C********** We create the matrix of coefficients.
  261. C
  262. N2=NBNN+NAXI
  263. N1=NVMIN
  264. ICEN=ICEN+1
  265. SEGINI MATCOE
  266. MLECOE.LECT(ICEN)=MATCOE
  267. C
  268. C********** Loop involving the neighbors (and the centre itself)
  269. C We create the matrix to "pseudoinvert"
  270. C
  271. DO IVOI=1,NBNN,1
  272. NGV=IPT1.NUM(IVOI,IELEM)
  273. NLV=MLECEN.LECT(NGV)
  274. NLV1=MLEBC.LECT(NGV)
  275. IF((NLV .NE. 0) .OR. (NLV1 .NE. 0))THEN
  276. C
  277. C**************** NGV is a 'centre' point or a ICHCL point
  278. C
  279. IPCOOR=((NGV-1)*(IDIM+1))+1
  280. XV=MCOORD.XCOOR(IPCOOR)
  281. YV=MCOORD.XCOOR(IPCOOR+1)
  282. MATA.MAT(IVOI,1)=1
  283. MATA.MAT(IVOI,2)=XV
  284. MATA.MAT(IVOI,3)=YV
  285. IF(IDIM.EQ.3)THEN
  286. ZV=MCOORD.XCOOR(IPCOOR+2)
  287. MATA.MAT(IVOI,4)=ZV
  288. ENDIF
  289. ELSE
  290. C
  291. C**************** Reflecting BC reconstruction
  292. C
  293. NLF=MLEFAC.LECT(NGV)
  294. RNX=MPNORM.VPOCHA(NLF,1)
  295. RNY=MPNORM.VPOCHA(NLF,2)
  296. IPCOOR=((NGV-1)*(IDIM+1))+1
  297. XV=MCOORD.XCOOR(IPCOOR)
  298. YV=MCOORD.XCOOR(IPCOOR+1)
  299. ALPHA=(XV-XC)*RNX+(YV-YC)*RNY
  300. DX=ALPHA*2.0D0*RNX
  301. DY=ALPHA*2.0D0*RNY
  302. MATA.MAT(IVOI,1)=1
  303. MATA.MAT(IVOI,2)=XC+DX
  304. MATA.MAT(IVOI,3)=YC+DY
  305. IF(IDIM.EQ.3)THEN
  306. RNZ=MPNORM.VPOCHA(NLF,3)
  307. ZV=MCOORD.XCOOR(IPCOOR+2)
  308. ALPHA=ALPHA+(ZV-ZC)*RNZ
  309. DZ=ALPHA*2.0D0*RNZ
  310. MATA.MAT(IVOI,4)=ZC+DZ
  311. ENDIF
  312. ENDIF
  313. MLRB.PROG(IVOI)=1.0D0
  314. ENDDO
  315. C
  316. DO IVOI=NBNN+1,NBNN+NAXI,1
  317. MATA.MAT(IVOI,1)=1
  318. MATA.MAT(IVOI,2)=XC
  319. MATA.MAT(IVOI,3)=YC
  320. MLRB.PROG(IVOI)=1.0D0
  321. ENDDO
  322. C
  323. CC
  324. CC TEST
  325. CC
  326. C do ivoi=1,nbnn,1
  327. C write(*,*) 'ngv =', ipt1.num(ivoi,ielem)
  328. C write(*,*)
  329. C & 'mata.mat(',ivoi,')=',(mata.mat(ivoi,i1),i1=1,nvmin
  330. C $ ,1)
  331. C write(*,*) 'b(',ivoi,')=',mlrb.prog(ivoi)
  332. C enddo
  333. C
  334. C
  335. C********** Now we have to invert this matrix
  336. C
  337. LOGSVD=.TRUE.
  338. CALL INVSVD( NVMAX, NBNN+NAXI, NVMIN, MATA.MAT,
  339. & MLRSIG.PROG,.TRUE.,MATU.MAT,.TRUE.,MATV.MAT,IERSVD,
  340. & MLRTRA.PROG)
  341. IF(IERSVD.NE.0)THEN
  342. C
  343. C************* SVD decomposition of the matrix does not work
  344. C
  345. LOGSVD=.FALSE.
  346. ELSE
  347. C
  348. C************ We check the condition number of MATA
  349. C
  350. SMAX=0.0D0
  351. DO I1=1,NVMIN,1
  352. SMAX=MAX(SMAX,MLRSIG.PROG(I1))
  353. ENDDO
  354. SMIN=SMAX
  355. DO I1=1,NVMIN,1
  356. SMIN=MIN(SMIN,MLRSIG.PROG(I1))
  357. ENDDO
  358. IF((SMIN/SMAX) .LT. ERRTOL)THEN
  359. LOGSVD=.FALSE.
  360. ENDIF
  361. ENDIF
  362. C
  363. C TEST
  364. C write(*,*) 'LOGSVD=.FALSE.'
  365. C LOGSVD=.FALSE.
  366. C
  367. IF(LOGSVD)THEN
  368. C
  369. C********** INVSVD worked
  370. C
  371. C MATA = MATU MATSIG t(MATV)
  372. C inv(MATA) = MATV inv(MATSIG) t(MATU)
  373. C
  374. DO I4=1,NVMIN,1
  375. DO IVOI=1,NBNN+NAXI,1
  376. DO I2=1,IDIM+1,1
  377. C I2=1 is the only coefficient we are not interested
  378. C in. But we computed it to verify that
  379. C sum_ivoi MATCOE.MAT(ivoi,1) = 1
  380. MATCOE.MAT(I2,IVOI)=MATCOE.MAT(I2,IVOI)+
  381. & (MATV.MAT(I2,I4)*MATU.MAT(IVOI,I4)
  382. & /MLRSIG.PROG(I4))
  383. ENDDO
  384. ENDDO
  385. ENDDO
  386. ELSE
  387. WRITE (IOIMP,*) 'rlexce.eso'
  388. C 22 0
  389. C Opération malvenue. Résultat douteux
  390. CALL ERREUR(22)
  391. C
  392. C************* INVSVD does not worked
  393. C For each neighbor k we have to compute the solution
  394. C of
  395. C
  396. C t(MATA) MATA x = t(MATA) * b
  397. C
  398. C where b= \sum_l e_l \delta(k,l) = e_k
  399. C
  400. C To do that, we compute
  401. C
  402. C X_0 = [inve(t(MATA) MATA)] [t(MATA) * b]
  403. C
  404. C X_1 = X_0 + [inve(t(MATA) MATA)] [t(MATA) * b -
  405. C [t(MATA) MATA] X_0]
  406. C
  407. C
  408. C********** We compute [t(MATA) MATA]
  409. C We store it in the upper triangle of MTAA(NVMIN,NVMIN)
  410. C
  411. DO I1=1,NVMIN,1
  412. DO I2=I1,NVMIN,1
  413. MTAA.MAT(I1,I2)=0.0D0
  414. ENDDO
  415. ENDDO
  416. C
  417. DO I1=1,NVMIN,1
  418. DO I2=I1,NVMIN,1
  419. DO I3=1,NBNN+NAXI,1
  420. MTAA.MAT(I1,I2)=MTAA.MAT(I1,I2)+
  421. & (MATA.MAT(I3,I1)*MATA.MAT(I3,I2))
  422. ENDDO
  423. ENDDO
  424. ENDDO
  425. C
  426. C************* We compute [inve(t(MATA) MATA)]
  427. C CHOLDC stores it in the upper trianle of MINTAA(NVMIN,NVMIN)
  428. C
  429. CALL CHOLDC(NVMIN,NVMIN,MTAA.MAT,MLRIN1.PROG,MINTAA.MAT,
  430. & MLRIN2.PROG,IERR0)
  431. IF(IERR0.NE.0)THEN
  432. WRITE(IOIMP,*) 'subroutine rlexce.eso.'
  433. C 26 2
  434. C Tache impossible. Probablement données erronées
  435. CALL ERREUR(26)
  436. GOTO 9999
  437. ENDIF
  438. C
  439. C************* We complete MTAA and MINTAA
  440. C
  441. DO I1=1,NVMIN,1
  442. DO I2=I1+1,NVMIN,1
  443. MINTAA.MAT(I2,I1)=MINTAA.MAT(I1,I2)
  444. MTAA.MAT(I2,I1)=MTAA.MAT(I1,I2)
  445. ENDDO
  446. ENDDO
  447. C
  448. DO IVOI=1,NBNN+NAXI,1
  449. C
  450. C************* We compute [t(MATA) . b] and we store it in MLRIN1.PROG
  451. C
  452. DO I1=1,NVMIN,1
  453. MLRIN1.PROG(I1)=MATA.MAT(IVOI,I1)*MLRB.PROG(IVOI)
  454. MLRIN2.PROG(I1)=0.0D0
  455. MLRIN3.PROG(I1)=0.0D0
  456. ENDDO
  457. C
  458. C**************** X_0 = [inve(t(MATA) MATA)] [t(MATA) * b]
  459. C X_0(i1) into MLRIN2.PROG(I1)
  460. C
  461. DO I2=1,NVMIN,1
  462. DO I1=1,NVMIN,1
  463. MLRIN2.PROG(I1)=MLRIN2.PROG(I1)+
  464. & (MINTAA.MAT(I1,I2)*MLRIN1.PROG(I2))
  465. ENDDO
  466. ENDDO
  467. C
  468. C*************** X_1 = X_0 + [inve(t(MATA) MATA)] [t(MATA) * b -
  469. C [t(MATA) MATA] X_0]
  470. C
  471. C [t(MATA) MATA] X_0 into MLRIN3.PROG
  472. C
  473. DO I2=1,NVMIN,1
  474. DO I1=1,NVMIN,1
  475. MLRIN3.PROG(I1)=MLRIN3.PROG(I1)+
  476. & (MTAA.MAT(I1,I2)*MLRIN2.PROG(I2))
  477. ENDDO
  478. ENDDO
  479. C
  480. C**************** Now we have
  481. C [t(MATA) . b] in MLRIN1.PROG
  482. C X_0(i1) in MLRIN2.PROG(I1)
  483. C [t(MATA) MATA] X_0 in MLRIN3.PROG
  484. C
  485. C X_1(i1) in MLRCOE.MAT(i1,IVOI)
  486. C
  487. DO I1=1,IDIM+1,1
  488. C The only unuseful one is I1=1
  489. DO I2=1,NVMIN,1
  490. MATCOE.MAT(I1,IVOI)=MATCOE.MAT(I1,IVOI)+
  491. & (MINTAA.MAT(I1,I2)*
  492. & (MLRIN1.PROG(I2)-MLRIN3.PROG(I2)))
  493. ENDDO
  494. MATCOE.MAT(I1,IVOI)=MATCOE.MAT(I1,IVOI)+
  495. & MLRIN2.PROG(I1)
  496. ENDDO
  497. ENDDO
  498. ENDIF
  499. C
  500. C LOGAXI -> We eliminate the false neighbors
  501. C
  502. IF(LOGAXI)THEN
  503. DO I1=1,NVMIN,1
  504. MATCOE.MAT(I1,NBNN)=MATCOE.MAT(I1,NBNN)+
  505. & MATCOE.MAT(I1,NBNN+1)+MATCOE.MAT(I1,NBNN+2)
  506. ENDDO
  507. N2=NBNN
  508. N1=NVMIN
  509. SEGADJ MATCOE
  510. ENDIF
  511. CC
  512. CC TEST
  513. C write(*,*) 'ngc =', NGC
  514. C write(*,*) 'invide',LOGSVD
  515. C write(*,*) 'nvois =',(ipt1.num(ivoi,ielem),ivoi=1,nbnn,1)
  516. C write(*,*) 'coeff(1) =',(matcoe.mat(1,ivoi),ivoi=1,nbnn,1)
  517. C write(*,*) 'coeff(2) =',(matcoe.mat(2,ivoi),ivoi=1,nbnn,1)
  518. C write(*,*) 'coeff(3) =',(matcoe.mat(3,ivoi),ivoi=1,nbnn,1)
  519. C if(idim.eq.3) write(*,*) 'coeff(4)=',
  520. C & (matcoe.mat(4,ivoi),ivoi=1,nbnn,1)
  521. C xv=0.0D0
  522. C yv=0.0D0
  523. C zv=0.0D0
  524. C xc=0.0D0
  525. C do ivoi=1,nbnn,1
  526. C xv=xv+matcoe.mat(1,ivoi)
  527. C yv=yv+matcoe.mat(2,ivoi)
  528. C zv=zv+matcoe.mat(3,ivoi)
  529. C if(idim.eq.3) xc=xc+matcoe.mat(4,ivoi)
  530. C enddo
  531. C write(*,*) 'sum_1=',xv
  532. C write(*,*) 'sum_2=',yv
  533. C write(*,*) 'sum_3=',zv
  534. C if(idim.eq.3) write(*,*) 'sum_4=',xc
  535. CC
  536. SEGDES MATCOE
  537. ENDDO
  538. SEGDES IPT1
  539. ENDDO
  540. C
  541. SEGSUP MLECEN
  542. SEGSUP MLEFAC
  543. SEGSUP MLEBC
  544. C
  545. SEGDES MPNORM
  546. IF(NSOU .GT. 1) SEGDES MELEME
  547. SEGSUP MLESOU
  548. C
  549. SEGDES MLECOE
  550. C
  551. SEGSUP MATA
  552. SEGSUP MATU
  553. SEGSUP MATV
  554. SEGSUP MLRSIG
  555. SEGSUP MLRTRA
  556. SEGSUP MLRB
  557. C
  558. SEGSUP MTAA
  559. SEGSUP MINTAA
  560. SEGSUP MLRIN1
  561. SEGSUP MLRIN2
  562. SEGSUP MLRIN3
  563. C
  564. C write(ioimp,*) 'FINITO'
  565. C stop
  566. C
  567. 9999 CONTINUE
  568. RETURN
  569. END
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  

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