Télécharger rlexce.eso

Retour à la liste

Numérotation des lignes :

rlexce
  1. C RLEXCE SOURCE CB215821 20/11/25 13:39:27 10792
  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.  
  109. -INC PPARAM
  110. -INC CCOPTIO
  111. -INC SMCOORD
  112. -INC SMELEME
  113. -INC SMLREEL
  114. -INC SMLENTI
  115. -INC SMCHPOI
  116. C
  117. INTEGER N1,N2
  118. SEGMENT MATRIX
  119. REAL*8 MAT(N1,N2)
  120. ENDSEGMENT
  121. C
  122. POINTEUR MELFAC.MELEME, MLEFAC.MLENTI, MLEBC.MLENTI, MPNORM.MPOVAL
  123. & ,MLESOU.MLENTI, MELCEN.MELEME ,MLECEN.MLENTI
  124. & ,MLECOE.MLENTI, MATCOE.MATRIX
  125. & ,MATA.MATRIX,MATU.MATRIX,MATV.MATRIX,MLRB.MLREEL
  126. & ,MLRSIG.MLREEL,MLRTRA.MLREEL,MTAA.MATRIX, MINTAA.MATRIX
  127. & ,MLRIN1.MLREEL,MLRIN2.MLREEL
  128. & ,MLRIN3.MLREEL
  129. C
  130. C**** Axis-symmetrical case
  131. C
  132. IF((IFOMOD .EQ. 0) .AND. (IDIM .EQ. 2))THEN
  133. LOGAXI=.TRUE.
  134. NAXI=2
  135. ELSE
  136. NAXI=0
  137. LOGAXI=.FALSE.
  138. ENDIF
  139. C
  140. C**** We create the MLENTI for the centers
  141. C
  142. CALL KRIPAD(MELCEN,MLECEN)
  143. IF(IERR .NE. 0)GOTO 9999
  144. C En KRIPAD
  145. C SEGINI MLECEN
  146. C
  147. C**** We create the MLENTI for the faces
  148. C
  149. CALL KRIPAD(MELFAC,MLEFAC)
  150. IF(IERR .NE. 0)GOTO 9999
  151. C En KRIPAD
  152. C SEGINI MLEFAC
  153. C
  154. C**** We create the MLENTI for the BC
  155. C
  156. IF(ICHCL.NE.0)THEN
  157. CALL LICHT(ICHCL,MPOVAL,TYPE,IGEOM)
  158. C In LICHT
  159. C SEGACT MPOVAL*MOD
  160. SEGDES MPOVAL
  161. ELSE
  162. IGEOM=0
  163. ENDIF
  164. CALL KRIPAD(IGEOM,MLEBC)
  165. IF(IERR .NE. 0)GOTO 9999
  166. C SEGINI MLEBC
  167. C
  168. C**** Le MPOVAL des normales
  169. C
  170. CALL LICHT(INORM,MPNORM,TYPE,IGEOM)
  171. C SEGACT MPNORM
  172. C
  173. C**** We recover the elemenary mesh of MELEME
  174. C We compute the number of maximum number of neighbors
  175. C We compute the number of centers
  176. C
  177. SEGACT MELEME
  178. NSOU=MAX(MELEME.LISOUS(/1),1)
  179. JG=NSOU
  180. SEGINI MLESOU
  181. IF (NSOU.EQ.1)THEN
  182. MLESOU.LECT(1)=MELEME
  183. NBNN=MELEME.NUM(/1)
  184. NTCEN=MELEME.NUM(/2)
  185. NVMAX=NBNN
  186. ELSE
  187. NVMAX=0
  188. NTCEN=0
  189. DO ISOUS=1,NSOU,1
  190. IPT1=MELEME.LISOUS(ISOUS)
  191. MLESOU.LECT(ISOUS)=IPT1
  192. SEGACT IPT1
  193. NBNN=IPT1.NUM(/1)
  194. NVMAX=MAX(NVMAX,NBNN)
  195. NTCEN=NTCEN+IPT1.NUM(/2)
  196. ENDDO
  197. ENDIF
  198. NVMAX=NVMAX+NAXI
  199. C
  200. C**** The output
  201. C
  202. JG=NTCEN
  203. SEGINI MLECOE
  204. C
  205. C MATA = matrix to "pseudoinvert" (NVMAX,IDIM+1)
  206. C MATU = matrix of the singular right eigenvectors of MATA
  207. C (NVMAX,IDIM+1)
  208. C MATV = matrix of the singular left eigenvectors of MATA
  209. C (IDIM+1,IDIM+1)
  210. C But in invsvd.eso, MATV dimensions are NVMAX,IDIM+1
  211. C MLRSIG = singular values of MATA (IDIM+1)
  212. C MLRB = vector (NVMAX)
  213. C MLRB.PROG(j) = 1
  214. C
  215. C N.B. MATA = MATU MATSIG t(MATV)
  216. C If MATA is non singular,
  217. C inv(MATA) = MATV inv(MATSIG) t(MATU)
  218. C
  219. C MLRTRA temporary vector of invsvd.eso
  220. C NVMIN = IDIM + 1 (the most little dimension of the matrices)
  221. C
  222. N1=NVMAX
  223. N2=IDIM+1
  224. SEGINI MATA
  225. SEGINI MATU
  226. SEGINI MATV
  227. JG=NVMAX
  228. SEGINI MLRB
  229. JG=IDIM+1
  230. SEGINI MLRSIG
  231. SEGINI MLRTRA
  232. NVMIN=N2
  233. C
  234. C MTAA : [t(MATA).MATA]
  235. C MINTAA : [inve(t(MATA) MATA)]
  236. C MLRIN1,2,3 : "temporary vectors"
  237. C
  238. N1=NVMIN
  239. N2=NVMIN
  240. SEGINI MTAA
  241. SEGINI MINTAA
  242. JG=NVMIN
  243. SEGINI MLRIN1
  244. SEGINI MLRIN2
  245. SEGINI MLRIN3
  246. C
  247. C**** Loop on the sommet to compute the coefficient
  248. C
  249. ICEN=0
  250. DO ISOUS=1,NSOU,1
  251. IPT1=MLESOU.LECT(ISOUS)
  252. NBNN=IPT1.NUM(/1)
  253. NBELEM=IPT1.NUM(/2)
  254. DO IELEM=1,NBELEM,1
  255. C
  256. NGC=IPT1.NUM(NBNN,IELEM)
  257. IPCOOR=((NGC-1)*(IDIM+1))+1
  258. XC=MCOORD.XCOOR(IPCOOR)
  259. YC=MCOORD.XCOOR(IPCOOR+1)
  260. IF(IDIM.EQ.3) ZC=MCOORD.XCOOR(IPCOOR+2)
  261. C
  262. C********** We create the matrix of coefficients.
  263. C
  264. N2=NBNN+NAXI
  265. N1=NVMIN
  266. ICEN=ICEN+1
  267. SEGINI MATCOE
  268. MLECOE.LECT(ICEN)=MATCOE
  269. C
  270. C********** Loop involving the neighbors (and the centre itself)
  271. C We create the matrix to "pseudoinvert"
  272. C
  273. DO IVOI=1,NBNN,1
  274. NGV=IPT1.NUM(IVOI,IELEM)
  275. NLV=MLECEN.LECT(NGV)
  276. NLV1=MLEBC.LECT(NGV)
  277. IF((NLV .NE. 0) .OR. (NLV1 .NE. 0))THEN
  278. C
  279. C**************** NGV is a 'centre' point or a ICHCL point
  280. C
  281. IPCOOR=((NGV-1)*(IDIM+1))+1
  282. XV=MCOORD.XCOOR(IPCOOR)
  283. YV=MCOORD.XCOOR(IPCOOR+1)
  284. MATA.MAT(IVOI,1)=1
  285. MATA.MAT(IVOI,2)=XV
  286. MATA.MAT(IVOI,3)=YV
  287. IF(IDIM.EQ.3)THEN
  288. ZV=MCOORD.XCOOR(IPCOOR+2)
  289. MATA.MAT(IVOI,4)=ZV
  290. ENDIF
  291. ELSE
  292. C
  293. C**************** Reflecting BC reconstruction
  294. C
  295. NLF=MLEFAC.LECT(NGV)
  296. RNX=MPNORM.VPOCHA(NLF,1)
  297. RNY=MPNORM.VPOCHA(NLF,2)
  298. IPCOOR=((NGV-1)*(IDIM+1))+1
  299. XV=MCOORD.XCOOR(IPCOOR)
  300. YV=MCOORD.XCOOR(IPCOOR+1)
  301. ALPHA=(XV-XC)*RNX+(YV-YC)*RNY
  302. DX=ALPHA*2.0D0*RNX
  303. DY=ALPHA*2.0D0*RNY
  304. MATA.MAT(IVOI,1)=1
  305. MATA.MAT(IVOI,2)=XC+DX
  306. MATA.MAT(IVOI,3)=YC+DY
  307. IF(IDIM.EQ.3)THEN
  308. RNZ=MPNORM.VPOCHA(NLF,3)
  309. ZV=MCOORD.XCOOR(IPCOOR+2)
  310. ALPHA=ALPHA+(ZV-ZC)*RNZ
  311. DZ=ALPHA*2.0D0*RNZ
  312. MATA.MAT(IVOI,4)=ZC+DZ
  313. ENDIF
  314. ENDIF
  315. MLRB.PROG(IVOI)=1.0D0
  316. ENDDO
  317. C
  318. DO IVOI=NBNN+1,NBNN+NAXI,1
  319. MATA.MAT(IVOI,1)=1
  320. MATA.MAT(IVOI,2)=XC
  321. MATA.MAT(IVOI,3)=YC
  322. MLRB.PROG(IVOI)=1.0D0
  323. ENDDO
  324. C
  325. CC
  326. CC TEST
  327. CC
  328. C do ivoi=1,nbnn,1
  329. C write(*,*) 'ngv =', ipt1.num(ivoi,ielem)
  330. C write(*,*)
  331. C & 'mata.mat(',ivoi,')=',(mata.mat(ivoi,i1),i1=1,nvmin
  332. C $ ,1)
  333. C write(*,*) 'b(',ivoi,')=',mlrb.prog(ivoi)
  334. C enddo
  335. C
  336. C
  337. C********** Now we have to invert this matrix
  338. C
  339. LOGSVD=.TRUE.
  340. CALL INVSVD( NVMAX, NBNN+NAXI, NVMIN, MATA.MAT,
  341. & MLRSIG.PROG,.TRUE.,MATU.MAT,.TRUE.,MATV.MAT,IERSVD,
  342. & MLRTRA.PROG)
  343. IF(IERSVD.NE.0)THEN
  344. C
  345. C************* SVD decomposition of the matrix does not work
  346. C
  347. LOGSVD=.FALSE.
  348. ELSE
  349. C
  350. C************ We check the condition number of MATA
  351. C
  352. SMAX=0.0D0
  353. DO I1=1,NVMIN,1
  354. SMAX=MAX(SMAX,MLRSIG.PROG(I1))
  355. ENDDO
  356. SMIN=SMAX
  357. DO I1=1,NVMIN,1
  358. SMIN=MIN(SMIN,MLRSIG.PROG(I1))
  359. ENDDO
  360. IF((SMIN/SMAX) .LT. ERRTOL)THEN
  361. LOGSVD=.FALSE.
  362. ENDIF
  363. ENDIF
  364. C
  365. C TEST
  366. C write(*,*) 'LOGSVD=.FALSE.'
  367. C LOGSVD=.FALSE.
  368. C
  369. IF(LOGSVD)THEN
  370. C
  371. C********** INVSVD worked
  372. C
  373. C MATA = MATU MATSIG t(MATV)
  374. C inv(MATA) = MATV inv(MATSIG) t(MATU)
  375. C
  376. DO I4=1,NVMIN,1
  377. DO IVOI=1,NBNN+NAXI,1
  378. DO I2=1,IDIM+1,1
  379. C I2=1 is the only coefficient we are not interested
  380. C in. But we computed it to verify that
  381. C sum_ivoi MATCOE.MAT(ivoi,1) = 1
  382. MATCOE.MAT(I2,IVOI)=MATCOE.MAT(I2,IVOI)+
  383. & (MATV.MAT(I2,I4)*MATU.MAT(IVOI,I4)
  384. & /MLRSIG.PROG(I4))
  385. ENDDO
  386. ENDDO
  387. ENDDO
  388. ELSE
  389. WRITE (IOIMP,*) 'rlexce.eso'
  390. C 22 0
  391. C Opération malvenue. Résultat douteux
  392. CALL ERREUR(22)
  393. C
  394. C************* INVSVD does not worked
  395. C For each neighbor k we have to compute the solution
  396. C of
  397. C
  398. C t(MATA) MATA x = t(MATA) * b
  399. C
  400. C where b= \sum_l e_l \delta(k,l) = e_k
  401. C
  402. C To do that, we compute
  403. C
  404. C X_0 = [inve(t(MATA) MATA)] [t(MATA) * b]
  405. C
  406. C X_1 = X_0 + [inve(t(MATA) MATA)] [t(MATA) * b -
  407. C [t(MATA) MATA] X_0]
  408. C
  409. C
  410. C********** We compute [t(MATA) MATA]
  411. C We store it in the upper triangle of MTAA(NVMIN,NVMIN)
  412. C
  413. DO I1=1,NVMIN,1
  414. DO I2=I1,NVMIN,1
  415. MTAA.MAT(I1,I2)=0.0D0
  416. ENDDO
  417. ENDDO
  418. C
  419. DO I1=1,NVMIN,1
  420. DO I2=I1,NVMIN,1
  421. DO I3=1,NBNN+NAXI,1
  422. MTAA.MAT(I1,I2)=MTAA.MAT(I1,I2)+
  423. & (MATA.MAT(I3,I1)*MATA.MAT(I3,I2))
  424. ENDDO
  425. ENDDO
  426. ENDDO
  427. C
  428. C************* We compute [inve(t(MATA) MATA)]
  429. C CHOLDC stores it in the upper trianle of MINTAA(NVMIN,NVMIN)
  430. C
  431. CALL CHOLDC(NVMIN,NVMIN,MTAA.MAT,MLRIN1.PROG,MINTAA.MAT,
  432. & MLRIN2.PROG,IERR0)
  433. IF(IERR0.NE.0)THEN
  434. WRITE(IOIMP,*) 'subroutine rlexce.eso.'
  435. C 26 2
  436. C Tache impossible. Probablement données erronées
  437. CALL ERREUR(26)
  438. GOTO 9999
  439. ENDIF
  440. C
  441. C************* We complete MTAA and MINTAA
  442. C
  443. DO I1=1,NVMIN,1
  444. DO I2=I1+1,NVMIN,1
  445. MINTAA.MAT(I2,I1)=MINTAA.MAT(I1,I2)
  446. MTAA.MAT(I2,I1)=MTAA.MAT(I1,I2)
  447. ENDDO
  448. ENDDO
  449. C
  450. DO IVOI=1,NBNN+NAXI,1
  451. C
  452. C************* We compute [t(MATA) . b] and we store it in MLRIN1.PROG
  453. C
  454. DO I1=1,NVMIN,1
  455. MLRIN1.PROG(I1)=MATA.MAT(IVOI,I1)*MLRB.PROG(IVOI)
  456. MLRIN2.PROG(I1)=0.0D0
  457. MLRIN3.PROG(I1)=0.0D0
  458. ENDDO
  459. C
  460. C**************** X_0 = [inve(t(MATA) MATA)] [t(MATA) * b]
  461. C X_0(i1) into MLRIN2.PROG(I1)
  462. C
  463. DO I2=1,NVMIN,1
  464. DO I1=1,NVMIN,1
  465. MLRIN2.PROG(I1)=MLRIN2.PROG(I1)+
  466. & (MINTAA.MAT(I1,I2)*MLRIN1.PROG(I2))
  467. ENDDO
  468. ENDDO
  469. C
  470. C*************** X_1 = X_0 + [inve(t(MATA) MATA)] [t(MATA) * b -
  471. C [t(MATA) MATA] X_0]
  472. C
  473. C [t(MATA) MATA] X_0 into MLRIN3.PROG
  474. C
  475. DO I2=1,NVMIN,1
  476. DO I1=1,NVMIN,1
  477. MLRIN3.PROG(I1)=MLRIN3.PROG(I1)+
  478. & (MTAA.MAT(I1,I2)*MLRIN2.PROG(I2))
  479. ENDDO
  480. ENDDO
  481. C
  482. C**************** Now we have
  483. C [t(MATA) . b] in MLRIN1.PROG
  484. C X_0(i1) in MLRIN2.PROG(I1)
  485. C [t(MATA) MATA] X_0 in MLRIN3.PROG
  486. C
  487. C X_1(i1) in MLRCOE.MAT(i1,IVOI)
  488. C
  489. DO I1=1,IDIM+1,1
  490. C The only unuseful one is I1=1
  491. DO I2=1,NVMIN,1
  492. MATCOE.MAT(I1,IVOI)=MATCOE.MAT(I1,IVOI)+
  493. & (MINTAA.MAT(I1,I2)*
  494. & (MLRIN1.PROG(I2)-MLRIN3.PROG(I2)))
  495. ENDDO
  496. MATCOE.MAT(I1,IVOI)=MATCOE.MAT(I1,IVOI)+
  497. & MLRIN2.PROG(I1)
  498. ENDDO
  499. ENDDO
  500. ENDIF
  501. C
  502. C LOGAXI -> We eliminate the false neighbors
  503. C
  504. IF(LOGAXI)THEN
  505. DO I1=1,NVMIN,1
  506. MATCOE.MAT(I1,NBNN)=MATCOE.MAT(I1,NBNN)+
  507. & MATCOE.MAT(I1,NBNN+1)+MATCOE.MAT(I1,NBNN+2)
  508. ENDDO
  509. N2=NBNN
  510. N1=NVMIN
  511. SEGADJ MATCOE
  512. ENDIF
  513. CC
  514. CC TEST
  515. C write(*,*) 'ngc =', NGC
  516. C write(*,*) 'invide',LOGSVD
  517. C write(*,*) 'nvois =',(ipt1.num(ivoi,ielem),ivoi=1,nbnn,1)
  518. C write(*,*) 'coeff(1) =',(matcoe.mat(1,ivoi),ivoi=1,nbnn,1)
  519. C write(*,*) 'coeff(2) =',(matcoe.mat(2,ivoi),ivoi=1,nbnn,1)
  520. C write(*,*) 'coeff(3) =',(matcoe.mat(3,ivoi),ivoi=1,nbnn,1)
  521. C if(idim.eq.3) write(*,*) 'coeff(4)=',
  522. C & (matcoe.mat(4,ivoi),ivoi=1,nbnn,1)
  523. C xv=0.0D0
  524. C yv=0.0D0
  525. C zv=0.0D0
  526. C xc=0.0D0
  527. C do ivoi=1,nbnn,1
  528. C xv=xv+matcoe.mat(1,ivoi)
  529. C yv=yv+matcoe.mat(2,ivoi)
  530. C zv=zv+matcoe.mat(3,ivoi)
  531. C if(idim.eq.3) xc=xc+matcoe.mat(4,ivoi)
  532. C enddo
  533. C write(*,*) 'sum_1=',xv
  534. C write(*,*) 'sum_2=',yv
  535. C write(*,*) 'sum_3=',zv
  536. C if(idim.eq.3) write(*,*) 'sum_4=',xc
  537. CC
  538. SEGDES MATCOE
  539. ENDDO
  540. SEGDES IPT1
  541. ENDDO
  542. C
  543. SEGSUP MLECEN
  544. SEGSUP MLEFAC
  545. SEGSUP MLEBC
  546. C
  547. SEGDES MPNORM
  548. IF(NSOU .GT. 1) SEGDES MELEME
  549. SEGSUP MLESOU
  550. C
  551. SEGDES MLECOE
  552. C
  553. SEGSUP MATA
  554. SEGSUP MATU
  555. SEGSUP MATV
  556. SEGSUP MLRSIG
  557. SEGSUP MLRTRA
  558. SEGSUP MLRB
  559. C
  560. SEGSUP MTAA
  561. SEGSUP MINTAA
  562. SEGSUP MLRIN1
  563. SEGSUP MLRIN2
  564. SEGSUP MLRIN3
  565. C
  566. C write(ioimp,*) 'FINITO'
  567. C stop
  568. C
  569. 9999 CONTINUE
  570. RETURN
  571. END
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  

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