Télécharger fpmass.eso

Retour à la liste

Numérotation des lignes :

fpmass
  1. C FPMASS SOURCE OF166741 25/02/06 21:15:06 12146
  2.  
  3. C_____________________________________________________________________
  4. C
  5. C CALCULE LES FORCES DE PRESSIONS APPLIQUEES SUR DES MASSIFS
  6. C
  7. C ENTREES :
  8. C ---------
  9. C
  10. C IPCHE1 CHPOINT CONTENANT LES VALEURS DES PRESSIONS AUX NOEUDS
  11. C DE LA FACE D UN MASSIF
  12. C IPCHM1 CHAMELEM CONTENANT LES VALEURS DES PRESSIONS AUX NOEUDS
  13. C DE LA FACE D UN MASSIF
  14. C IPMODL OBJET MODELE SUR LEQUEL S APPLIQUE LA PRESSION
  15. C
  16. C JPMAIL POINTEUR SUR LE MAILLAGE SI ON A LU UN FLOTTANT ET
  17. C UN MAILLAGE, SINON 0
  18. C
  19. C XP LA VALEUR DE LA PRESSION SI ON L'A LUE
  20. C
  21. C SORTIES :
  22. C ----------
  23. C
  24. C IPTFP = CHPOINT DES FORCES NODALES EQUIVALENTES
  25. C IRET = 1 OU 0 SUIVANT SUCCES OU NON
  26. C
  27. C REVISION JACQUELINE BROCHARD SEPTEMBRE 86
  28. C MISE A JOUR P VERPEAUX MAI 88
  29. C
  30. C PASSAGE AUX NOUVEAU CHAMELEM PAR JM CAMPENON LE 17 09 90
  31. C_______________________________________________________________________
  32.  
  33. SUBROUTINE FPMASS(IPCHE1,IPCHM1,IPMODL,IPTFP,JPMAIL,XP,IRET)
  34.  
  35. IMPLICIT INTEGER(I-N)
  36. IMPLICIT REAL*8(A-H,O-Z)
  37.  
  38. -INC PPARAM
  39. -INC CCOPTIO
  40. -INC CCREEL
  41. -INC CCHAMP
  42.  
  43. -INC SMCOORD
  44. -INC SMELEME
  45. -INC SMMODEL
  46. -INC SMCHAML
  47. -INC SMCHPOI
  48. -INC SMINTE
  49.  
  50. SEGMENT INFO
  51. INTEGER INFELL(JG)
  52. ENDSEGMENT
  53.  
  54. SEGMENT NOTYPE
  55. CHARACTER*16 TYPE(NBTYPE)
  56. ENDSEGMENT
  57.  
  58. SEGMENT MPTVAL
  59. INTEGER IPOS(NS) ,NSOF(NS)
  60. INTEGER IVAL(NCOSOU)
  61. CHARACTER*16 TYVAL(NCOSOU)
  62. ENDSEGMENT
  63.  
  64. segment netn(nonetn)
  65. segment ietn(letn)
  66.  
  67. CHARACTER*4 MOSTRI,MOAPPU,MOGEOM
  68. CHARACTER*(NCONCH) CONM
  69. PARAMETER (NINF=3)
  70. INTEGER INFOS(NINF)
  71. LOGICAL LSUPFO,ltelq
  72.  
  73. DATA MOAPPU/'APPU'/,MOSTRI/'STRI'/
  74. DATA MOGEOM/'GEOM'/
  75.  
  76. IRET = 0
  77. IGEOM = 0
  78.  
  79. NHRM=NIFOUR
  80.  
  81. C-----------------------------------------------------------------------
  82. C LECTURE DU CHAMP DE CARACTERISTIQUES
  83. C-----------------------------------------------------------------------
  84. IPCHE2 = 0
  85. ISUPCA = 0
  86. C Prevoir la lecture en amont !
  87. CALL LIROBJ('MCHAML ',IPCHE2,0,irt2)
  88. IF (IERR.NE.0) RETURN
  89. IF (IPCHE2.NE.0) THEN
  90. CALL ACTOBJ('MCHAML ',IPCHE2,1)
  91. IF (IERR.NE.0) RETURN
  92.  
  93. CALL REDUAF(IPCHE2,MODORI,ipche20,0,iretca,kerr)
  94. if (iretca.ne.1) call erreur(kerr)
  95. IF (IERR.NE.0) RETURN
  96. IPCHE2 = ipche20
  97. C
  98. C Verification du lieu support du MCHAML de caracteristiques
  99. C
  100. CALL QUESUP(IPMODL,IPCHE2,3,1,ISUPCA,iretca)
  101. IF (ISUPCA.GT.1) RETURN
  102. ENDIF
  103. C-----------------------------------------------------------------------
  104. C CAS OU UN CHPOINT EST FOURNI
  105. C ON CREE L OBJET GEOMETRIQUE CONTENANT TOUS LES PTS SI BESOIN
  106. IF (JPMAIL.EQ.0.AND.IPCHM1.EQ.0) THEN
  107. MCHPOI=IPCHE1
  108. ltelq=.false.
  109. DO I=1,IPCHP(/1)
  110. MSOUPO=IPCHP(I)
  111. IF (I.GT.1) THEN
  112. CALL FUSE(IGEOM,IGEOC,IPPT,ltelq)
  113. IGEOM=IPPT
  114. ELSE
  115. IGEOM=IGEOC
  116. ENDIF
  117. ENDDO
  118. IF (IERR.NE.0) RETURN
  119. ENDIF
  120. C-----------------------------------------------------------------------
  121. C CAS OU UN CHAMELEM EST FOURNI
  122. C ON CREE L OBJET GEOMETRIQUE CONTENANT TOUS LES PTS SI BESOIN
  123. IF (IPCHM1.NE.0) THEN
  124. MCHEL2 = IPCHM1
  125. ltelq=.false.
  126. DO I=1,MCHEL2.IMACHE(/1)
  127. IMTMP=MCHEL2.IMACHE(I)
  128. IF (I.GT.1) THEN
  129. CALL FUSE(IGEOM,IMTMP,IPPT,ltelq)
  130. IGEOM=IPPT
  131. ELSE
  132. IGEOM=IMTMP
  133. ENDIF
  134. ENDDO
  135. IF (IERR.NE.0) RETURN
  136. ENDIF
  137.  
  138. C= Cas des modes de calculs en DEFORMATIONS GENERALISEES
  139. IF (IFOUR.EQ.-3) THEN
  140. NDPGE=3
  141. ELSE IF (IFOUR.EQ.11) THEN
  142. NDPGE=2
  143. ELSE IF (IFOUR.EQ. 7.OR.IFOUR.EQ. 8.OR.IFOUR.EQ. 9.OR.
  144. & IFOUR.EQ.10.OR.IFOUR.EQ.14) THEN
  145. NDPGE=1
  146. ELSE
  147. NDPGE=0
  148. ENDIF
  149.  
  150. C- Un petit segment toujours utile :
  151. nbtype = 1
  152. SEGINI,notype
  153. notype.TYPE(1) = 'REAL*8 '
  154. MOTYR8 = notype
  155.  
  156. c- Segments utiles pour accelerer la recherche des elements touchant un noeud.
  157. SEGACT,mcoord
  158. nonetn = nbpts+1
  159. netn = 0
  160. ietn = 0
  161. C
  162. C TRAITEMENT DU MODELE
  163. C
  164. MMODEL = IPMODL
  165. NSOUS = mmodel.KMODEL(/1)
  166.  
  167. IRRT=0
  168. DO 100 ISOUS = 1, NSOUS
  169. C
  170. ISOK = 0
  171. MOCARA = 0
  172. IVACAR = 0
  173. C
  174. C TRAITEMENT DU MODELE
  175. C
  176. IMODEL = mmodel.KMODEL(ISOUS)
  177. IPMAIL = imodel.IMAMOD
  178. CONM = imodel.CONMOD
  179. MELM = imodel.NEFMOD
  180.  
  181. C* write(*,*) ISOUS,'/',NSOUS,' : ',IMODEL,'NEFMOD=',MELM
  182. if ((melm .eq. 22).OR.(melm .eq. 259)) then
  183. C ... Ici sous modele de multiplicateur de lagrange on
  184. C incrémente le compteur et on passe à la zone suivante ...
  185. IRRT=IRRT+1
  186. GOTO 100
  187. endif
  188. C
  189. C ON RECUPERE LES ELTS DE L ENVELOPPE DU MASSIF APPUYES
  190. C STRICTEMENT SUR LE CHPOINT DE PRESSIONS OU appartenant au
  191. C MAILLAGE DONNE
  192. C
  193. CALL ECROBJ('MAILLAGE',IPMAIL)
  194. IF (IDIM.EQ.2) THEN
  195. CALL PRCONT
  196. ELSE IF (IDIM.EQ.3) THEN
  197. CALL ENVELO
  198. ELSE IF (IDIM.EQ.1) THEN
  199. CALL PREX1D
  200. ENDIF
  201. IF (IERR.NE.0) GOTO 9900
  202. CALL LIROBJ('MAILLAGE',ienvel,1,iretou)
  203. IF (IERR .NE. 0) GOTO 9900
  204. CALL ACTOBJ('MAILLAGE',ienvel,1)
  205.  
  206. C ... si un CHPOINT a été donné, on va chercher la partie de
  207. C l'enveloppe s'appuyant strictement sur le support du CHPOINT ...
  208. IF (JPMAIL.EQ.0) THEN
  209. CALL ECROBJ('MAILLAGE',IGEOM)
  210. CALL ECRCHA(MOSTRI)
  211. CALL ECRCHA(MOAPPU)
  212. CALL ECROBJ('MAILLAGE',ienvel)
  213. CALL EXTREL(IRR,0,IBNOR)
  214. ELSE
  215. C ... sinon, on va chercher l'intersection de l'enveloppe avec
  216. C le maillage fourni ...
  217. CALL INTERB(ienvel,jpmail,irr,IPOGEO)
  218. ENDIF
  219. C ... Ici on teste si intersection est vide, si OUI on
  220. C incrémente le compteur et on passe à la zone suivante ...
  221. IF (irr.gt.0) THEN
  222. IRRT=IRRT+1
  223. GOTO 100
  224. ENDIF
  225. IF (JPMAIL.EQ.0) THEN
  226. CALL LIROBJ('MAILLAGE',IPOGEO,1,iret)
  227. IF (IERR.NE.0) GOTO 9900
  228. CALL ACTOBJ('MAILLAGE',IPOGEO,1)
  229. ENDIF
  230.  
  231. C pour accelerer la recherche, utilisation d'un tableau des elements touchant un noeud.
  232. if (netn.EQ.0) THEN
  233. segini,netn
  234. else
  235. do i = 1, nonetn
  236. netn(i) = 0
  237. enddo
  238. endif
  239. IPT1 = IPMAIL
  240. nbnn1 = ipt1.num(/1)
  241. nbel1 = ipt1.num(/2)
  242. do j = 1, nbel1
  243. do i = 1, nbnn1
  244. ino = ipt1.num(i,j)
  245. netn(ino) = netn(ino)+1
  246. enddo
  247. enddo
  248. do i = 2, nonetn
  249. netn(i) = netn(i) + netn(i-1)
  250. enddo
  251. letn = netn(nonetn)
  252. if (ietn.eq.0) then
  253. segini,ietn
  254. else
  255. if (letn.gt.ietn(/1)) segadj,ietn
  256. do i = 1, letn
  257. ietn(i) = 0
  258. enddo
  259. endif
  260. do j = 1, nbel1
  261. do i = 1, nbnn1
  262. ino = ipt1.num(i,j)
  263. ietn(netn(ino)) = j
  264. netn(ino) = netn(ino)-1
  265. enddo
  266. enddo
  267. ietn1 = ietn
  268. netn1 = netn
  269.  
  270. C_______________________________________________________________________
  271. C
  272. C TRAITEMENT DES CHAMPS DE CARACTERISTIQUES
  273. C_______________________________________________________________________
  274. NBROBL = 0
  275. NBRFAC = 0
  276. IF (IPCHE2.NE.0 .AND. IFOUR.EQ.-2) THEN
  277. C
  278. C CREATION DU TABLEAU INFOS
  279. C
  280. CALL IDENT(IPMAIL,CONM,IPCHE2,0,INFOS,IRTD)
  281. IF (IRTD.EQ.0) GOTO 9900
  282. C
  283. NBRFAC=1
  284. SEGINI,NOMID
  285. LESFAC(1)='DIM3'
  286. MOCARA = NOMID
  287. C
  288. IF (ISUPCA.NE.1) THEN
  289. CALL KOMCHA(IPCHE2,IPMAIL,CONM,MOCARA,MOTYR8,0,
  290. & INFOS,3,IVACAR)
  291. IF (IERR.NE.0) GOTO 9900
  292. ENDIF
  293. ENDIF
  294. NCARA = NBROBL
  295. NCARF = NBRFAC
  296. NCARR = NCARA+NCARF
  297. C
  298. C ON DETERMINE LA FORMULATION ASSOCIEE A L OBJET
  299. C GEOMETRIQUE ELEMENTAIRE DE SURFACE
  300. C
  301. IPT3 = IPOGEO
  302. NBSOU3 = IPT3.LISOUS(/1)
  303. IPT2=IPT3
  304. C
  305. C BOUCLE SUR LES SOUS ZONES DE L ENVELOPPE
  306. C
  307. DO 110 IB=1,MAX(1,NBSOU3)
  308.  
  309. MOFORC = 0
  310. IVAFOR = 0
  311. IVACA1 = 0
  312. IPMOD1 = 0
  313. IPTVPR = 0
  314. lsupfo = .false.
  315. ISOK = 0
  316.  
  317. IF (NBSOU3.NE.0) THEN
  318. IPT2=IPT3.LISOUS(IB)
  319. ENDIF
  320. IPOGEO=IPT2
  321.  
  322. NBNN = IPT2.NUM(/1)
  323. LETYP = IPT2.ITYPEL
  324. C
  325. C PETIT TEST SUR LE TYPE
  326. IF (LETYP.EQ.1.AND.IDIM.NE.1) THEN
  327. CALL ERREUR(16)
  328. GOTO 9990
  329. ENDIF
  330. CALL TYPFAC(MELM,NBNN,MELE)
  331. C write(*,*) 'TYPFAC --> MELE=',MELE
  332. C ERREUR : IMPOSSIBLE D UTILISER L OPERATEUR PRESSI POUR
  333. C LES ELEMENTS DE FORMULATION MELM
  334. IF (MELE.EQ.0) THEN
  335. MOTERR(1:8)=NOMTP(MELM)
  336. CALL ERREUR(193)
  337. GOTO 9990
  338. ENDIF
  339. C
  340. C CAS OU UN CHAMP PAR POINT A ETE FOURNI
  341. C ON CREE L OBJET MODEL ASSOCIE A LA SURFACE ELEMENTAIRE
  342. C ON TRANSFORME LE CHPOINT DE PRESSION EN CHELEM ELEMENTAIRE
  343. IF (JPMAIL.EQ.0.AND.IPCHM1.EQ.0) THEN
  344. N1 = 1
  345. SEGINI,MMODE1
  346. NFOR = imodel.FORMOD(/2)
  347. NMAT = imodel.MATMOD(/2)
  348. c* MN3 = imodel.INFMOD(/1)
  349. MN3 = 1
  350. NPARMO = 0
  351. NOBMOD = 0
  352. SEGINI,IMODE1
  353. imode1.IMAMOD = IPOGEO
  354. imode1.NEFMOD = MELE
  355. imode1.CONMOD = imodel.CONMOD
  356. DO i = 1, NFOR
  357. imode1.FORMOD(i) = imodel.FORMOD(i)
  358. ENDDO
  359. DO i = 1, NMAT
  360. imode1.MATMOD(i) = imodel.MATMOD(i)
  361. ENDDO
  362. c* DO i = 1, MN3
  363. c* imode1.INFMOD(i) = imodel.INFMOD(i)
  364. c* ENDDO
  365. c* lzero = 0
  366. c* call inomid(imode1,lzero,lzero,lzero,lzero)
  367. c* call prquoi(imode1)
  368. mmode1.KMODEL(1) = IMODE1
  369. IPMOD1 = MMODE1
  370. c* Il faut redefinir a chaque fois IPMOD1 pour eviter rappel du
  371. c* preconditionnement dans CHAME1 qui ne cree pas
  372. CALL CHAME1(0,IPMOD1,IPCHE1,' ',ICHELP,3)
  373. IF (IERR.NE.0) GOTO 9990
  374. MCHEL1=ICHELP
  375. MCHAM1=MCHEL1.ICHAML(1)
  376. IPTVPR=MCHAM1.IELVAL(1)
  377. ENDIF
  378. C
  379. C INFORMATION SUR L'ELEMENT FINI
  380. C
  381. CALL ELQUOI(MELE,0,3,IPINF,IMODEL)
  382. Cbp : on aurait voulu faire CALL ELQUOI(MELE,0,3,IPINF,IMODE1),
  383. C : mais cela ne marche evidemment pas bien...
  384. IF (IERR.NE.0) GOTO 9990
  385. INFO=IPINF
  386. IPTINT=INFELL(11)
  387. MFR =INFELL(13)
  388. C*OF En DIMEnsion 1, on force FORMULATION MASSIVE pour POI1
  389. IF (IDIM.EQ.1.AND.MELE.EQ.45) MFR=1
  390. IPPORE=0
  391. IF (MFR.EQ.33) IPPORE=NBNN
  392. C Destruction immediate du segment
  393. SEGSUP,INFO
  394. C_______________________________________________________________________
  395. C
  396. C RECHERCHE DES NOMS DE COMPOSANTES
  397. C_______________________________________________________________________
  398. MOFORC = imodel.lnomid(2)
  399. if (moforc.ne.0) then
  400. lsupfo = .false.
  401. nomid = moforc
  402. nfor = lesobl(/2)
  403. nfac = 0
  404. C write(*,*) 'nomid deja existant dans IMODEL',IMODEL
  405. else
  406. lsupfo = .true.
  407. CALL IDFORC(MFR,IFOUR,MOFORC,NFOR,NFAC)
  408. write(ioimp,*) 'FPMASS : appel a IDFORC pour creer nomid'
  409. endif
  410. NCOMP=NFOR-NDPGE
  411. NOMID=MOFORC
  412.  
  413. Cbp on verifie qu on a suffisamment de composantes d'effort
  414. NFO=0
  415. IF (MELE.EQ.2 .OR. MELE.EQ.3) NFO=2
  416. IF (MELE.EQ.31 .OR. MELE.EQ.32 .OR. MELE.EQ.33 .OR.
  417. & MELE.EQ.34) NFO=3
  418. IF (MELE.EQ.45) NFO=1
  419. IF (NFO.ne.0) THEN
  420. IF (NCOMP.lt.NFO) GOTO 444
  421. DO ICOMP=1,NFO
  422. IF(LESOBL(ICOMP)(1:1).NE.'F') GOTO 444
  423. ENDDO
  424. GOTO 440
  425. ENDIF
  426. C -erreur
  427. 444 CONTINUE
  428. write(IOIMP,*) 'on attend un MODELE avec au moins',NFO,
  429. & 'composantes de FORCES !'
  430. write(IOIMP,*) 'Ici, on a :',(LESOBL(i),i=1,NCOMP)
  431. MOTERR(1:16)='MECANIQUE, ... '
  432. CALL ERREUR(719)
  433. GOTO 9990
  434. C -pas d'erreur
  435. 440 CONTINUE
  436. C
  437. C CAS OU UN CHAMP PAR ELEMENT A ETE FOURNI
  438. C -> Verification de son support
  439. C
  440. IF (IPCHM1.NE.0) THEN
  441. CALL QUESUP(0,IPCHM1,0,0,ISUP1,ISUP2)
  442. MCHEL2=IPCHM1
  443. MCHAM2 = MCHEL2.ICHAML(1)
  444. IF (ISUP2.NE.3) THEN
  445. IF (ISUP2.EQ.4) THEN
  446. CALL ERREUR(609)
  447. GOTO 9990
  448. ELSE IF (ISUP2.EQ.5) THEN
  449. IPTVPR = MCHAM2.IELVAL(1)
  450. ELSE IF (ISUP2.EQ.1.OR.ISUP2.EQ.2) THEN
  451. IVPRES = MCHAM2.IELVAL(1)
  452. CALL VALMEL(IVPRES,IPTINT,IPTVPR)
  453. ENDIF
  454. ELSE
  455. IPTVPR = MCHAM2.IELVAL(1)
  456. ENDIF
  457. ENDIF
  458. C
  459. C INITIALISATION DU CHELEM ELEMENTAIRE DES FORCES NODALES
  460. C
  461. N1=1
  462. L1=6
  463. N3=6
  464. SEGINI MCHELM
  465. TITCHE='FORCES'
  466. IFOCHE=IFOUR
  467. IPCHEL=MCHELM
  468. C
  469. IMACHE(1)=IPOGEO
  470. INFCHE(1,1)=0
  471. INFCHE(1,2)=0
  472. INFCHE(1,3)=NHRM
  473. INFCHE(1,4)=IPTINT
  474. INFCHE(1,5)=0
  475. INFCHE(1,6)=3
  476. C
  477. C RECHERCHE DE LA TAILLE DES MELVALS
  478. C
  479. MELEME=IPOGEO
  480. N1PTEL=NUM(/1)
  481. N1EL =NUM(/2)
  482. N2PTEL=0
  483. N2EL =0
  484. C
  485. C CREATION DU MCHAML DE LA SOUS ZONE
  486. C
  487. N2=NCOMP
  488. SEGINI MCHAML
  489. ICHAML(1)=MCHAML
  490. NS=1
  491. NCOSOU=NCOMP
  492. SEGINI MPTVAL
  493. IVAFOR=MPTVAL
  494. nomid = MOFORC
  495.  
  496. DO ICOMP=1,NCOMP
  497. NOMCHE(ICOMP)=LESOBL(ICOMP)
  498. TYPCHE(ICOMP)='REAL*8'
  499. SEGINI MELVAL
  500. IELVAL(ICOMP)=MELVAL
  501. IVAL(ICOMP)=MELVAL
  502. ENDDO
  503. C____________________________________________________________________
  504. C
  505. C TRAITEMENT DES CHAMPS DE CARACTERISTIQUES
  506. C____________________________________________________________________
  507. IF (MOCARA.NE.0) THEN
  508. IVACA1 = IVACAR
  509. IF (ISUPCA.EQ.1) THEN
  510. CALL KOMCHA(IPCHE2,IPMAIL,CONM,MOCARA,MOTYR8,0,
  511. & INFOS,3,IVACA1)
  512. IF (IERR.NE.0) GOTO 9900
  513. CALL VALCHE(IVACA1,NCARR,IPTINT,IPPORE,MOCARA,MELE)
  514. IF (IERR.NE.0) THEN
  515. ISUPCA = 0
  516. GOTO 9990
  517. ENDIF
  518. ENDIF
  519. ENDIF
  520. C
  521. C CALCUL DES FORCES NODALES EQUIVALENTES
  522. C DEBRANCHEMENT SUIVANT LE TYPE DES ELEMENTS
  523. C
  524. C CAS DES ELEMENTS MASSIFS BIDIMENSIONNELS
  525. C FACES ASSOCIEES SEG2 OU SEG3
  526. C
  527. IF (MELE.EQ.2.OR.MELE.EQ.3) THEN
  528. CALL FPMA2D(IPTVPR,IPOGEO,ipt1,IPTINT,IVAFOR,IVACA1,XP
  529. + ,netn1,ietn1)
  530. C
  531. C CAS DES ELEMENTS MASSIFS TRIDIMENSIONNELS
  532. C FACES ASSOCIEES FAC3,FAC4,FAC6 OU FAC8
  533. C
  534. ELSE IF(MELE.EQ.31.OR.MELE.EQ.32.OR.MELE.EQ.33.
  535. + OR.MELE.EQ.34)THEN
  536. CALL FPMA3D(IPTVPR,IPOGEO,ipt1,IPTINT,IVAFOR,XP
  537. + ,netn1,ietn1)
  538. C
  539. C= Cas des elements MASSIFs UNIDIMENSIONNELs (1D)
  540. C= Face associee : POI1 (numero 45)
  541. ELSE IF (MELE.EQ.45) THEN
  542. CALL FPMA1D(IPTVPR,IPOGEO,ipt1,IPTINT,IVAFOR,XP
  543. + ,netn1,ietn1)
  544. C
  545. C ERREUR L ELEMENT N EST PAS ENCORE IMPLEMENTE
  546. C
  547. ELSE
  548. MOTERR(1:4)=NOMTP(MELE)
  549. MOTERR(5:12)='FPMASS'
  550. CALL ERREUR (86)
  551. GOTO 9990
  552. ENDIF
  553. C
  554. C ON TRANSFORME LE CHAM/ELEM EN CHAM/POIN
  555. C ET ON ADDITIONNE LES CHAM/POIN ELEMENTAIRES
  556. C
  557. CALL CHAMPO(IPCHEL,0,IPCHPO,IPPT)
  558. CALL DTCHAM(IPCHEL)
  559. IF (IPPT.EQ.0) THEN
  560. GOTO 9990
  561. ENDIF
  562. IF ((ISOUS-IRRT).GT.1.OR.IB.GT.1) THEN
  563. CALL ADCHPO(IPCHPO,IPTFP,IPPT,1D0,1D0)
  564. C CALL ECRCHA(MOGEOM)
  565. CALL DTCHPO(IPCHPO)
  566. C CALL ECRCHA(MOGEOM)
  567. CALL DTCHPO(IPTFP)
  568. IF (IPPT.EQ.0) GOTO 9990
  569. IPTFP=IPPT
  570. ELSE
  571. IPTFP=IPCHPO
  572. ENDIF
  573.  
  574. ISOK = 1
  575.  
  576. 9990 CONTINUE
  577. mptval = IVAFOR
  578. IF (IVAFOR.NE.0) SEGSUP,mptval
  579. nomid = MOFORC
  580. if (MOFORC.NE.0 .and. lsupfo) SEGSUP,nomid
  581. IF (IVACA1.NE.0 .AND. ISUPCA.EQ.1) THEN
  582. CALL DTMVAL(IVACA1,3)
  583. ENDIF
  584. IF (IPMOD1.NE.0) CALL DTMODL(IPMOD1)
  585. IF (ISOK.EQ.0) GOTO 9900
  586.  
  587. 110 CONTINUE
  588. C- Fin de la boucle sur les sous zones de l'enveloppe
  589.  
  590. 9900 CONTINUE
  591. nomid = MOCARA
  592. IF (MOCARA.NE.0) SEGSUP,nomid
  593. IF (IVACAR.NE.0) CALL DTMVAL(IVACAR,1)
  594. IF (ISOK.EQ.0) GOTO 9000
  595.  
  596. 100 CONTINUE
  597.  
  598. IF (IRRT.EQ.NSOUS) THEN
  599. IRET = 0
  600. CALL ERREUR(395)
  601. ELSE
  602. IRET = 1
  603. ENDIF
  604.  
  605. 9000 CONTINUE
  606. notype = MOTYR8
  607. SEGSUP,notype
  608. if (netn.ne.0) SEGSUP,netn
  609. if (ietn.ne.0) SEGSUP,ietn
  610.  
  611. RETURN
  612. END
  613.  
  614.  

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