Télécharger recomb.eso

Retour à la liste

Numérotation des lignes :

  1. C RECOMB SOURCE BP208322 17/07/25 21:15:17 9518
  2. SUBROUTINE RECOMB
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. *_______________________________________________________________________
  6. *
  7. * OPERATEUR RECO :
  8. * RECOMBINAISON EN ANALYSE MODALE.
  9. *
  10. * ANCIENNE SYNTAXE:
  11. * ================
  12. * ******** B EST UNE BASE ELEMENTAIRE
  13. * ----------------
  14. * X1 = RECO XA B DEPL;
  15. * X2 = RECO XA B CONT;
  16. *
  17. * ******** B EST UNE BASE COMPLEXE: STR1 EST LA STRUCTURE
  18. * ------------- POUR LAQUELLE LA
  19. * RECOMBINAISON S'EFFECTUE, ET N LE NUMERO DE
  20. * LA SOUS-STRUCTURE SI CELLE CI EST FORMEE DE
  21. * SOUS-STRUCTURES IDENTIQUES.
  22. *
  23. * X1 = RECO XA B STR1 (N) DEPL ;
  24. * X2 = RECO XA B STR1 (N) CONT ;
  25. *
  26. * XA : OBJET CHPOINT CONTENANT LES CONTRIBUTIONS MODALES
  27. * DEPL : ON RECOMBINE DES DEPLACEMENTS. X1 EST UN CHPOINT
  28. * CONT : ON RECOMBINE DES CONTRAINTES . X2 EST UN CHELEM
  29. *
  30. * PASSAGE AUX NOUVEAUX CHAMELEM PAR JM CAMPENON LE 02/91
  31. * EXTENSION AU CAS OU XA EST UN LISTCHPO LE 7/04/2016
  32. *
  33. *
  34. *_______________________________________________________________________
  35. *
  36. -INC CCOPTIO
  37. -INC CCREEL
  38. -INC SMBASEM
  39. -INC SMCHPOI
  40. -INC SMLCHPO
  41. -INC SMLREEL
  42. -INC SMSOLUT
  43. -INC SMSTRUC
  44. LOGICAL L0,L1,LOGIN,LOGRE
  45. PARAMETER ( LMOOPT = 5 , IUN = 1 )
  46. CHARACTER*4 MOOPT(LMOOPT)
  47. CHARACTER*(8) ITYPE,CTYP,TYPOBJ,TYPRET
  48. CHARACTER*(16) TYPTAB
  49. CHARACTER*72 CHARRE
  50. DATA MOOPT/'DEPL','CONT','VITE','ACCE','REAC'/
  51. CHARACTER*12 MOCLE2(LMOOPT),MODYN
  52. DATA MOCLE2/'DEPLACEMENT','DEPLACEMENT','VITESSE','ACCELERATION'
  53. & ,'DEPLACEMENT'/
  54.  
  55.  
  56. C---- Lecture de l'objet resultat + Aiguillage
  57. c qui determine (en partie) dans quel cas on est -------------------
  58.  
  59. c-----CHPOINT
  60. ILECT=0
  61. CALL LIROBJ('CHPOINT ',ICHP1,0,IRET3)
  62. c write(6,*) 'CHPOINT?',IRET3
  63. IF(IRET3.EQ.1) GOTO 300
  64.  
  65. c-----LISTCHPO
  66. CALL LIROBJ('LISTCHPO',ILCHP1,0,IRET23)
  67. IF (IRET23.EQ.1) THEN
  68.  
  69. * TABLE DE MODES
  70. CALL LIRTAB('BASE_MODALE',ITBAS1,1,IRET)
  71. IF (IERR.NE.0) RETURN
  72.  
  73. * NOMBRE DE MODES
  74. CALL LIRENT(NMOD1,0,IRET)
  75. IF (IRET.EQ.0) NMOD1=0
  76.  
  77. CALL RECLCH(ILCHP1,ITBAS1,NMOD1,ILCHP2)
  78. IF (IERR.NE.0) RETURN
  79. CALL ECROBJ('LISTCHPO',ILCHP2)
  80.  
  81. RETURN
  82.  
  83. ENDIF
  84.  
  85.  
  86. c-----TABLE
  87. CALL LIROBJ('TABLE ',ITAB1,0,IRET12)
  88. c write(6,*) 'TABLE?',IRET12
  89. IF(IRET12.EQ.0) GOTO 9
  90.  
  91. C---- Lecture du mot clé -----------------------------------------------
  92. IMOO=0
  93. CALL LIRMOT(MOOPT,LMOOPT,IMOO,0)
  94.  
  95.  
  96. c -table PASAPAS ?
  97. c CALL LIRTAB('PASAPAS',ITPASA,0,IRET2)
  98. TYPOBJ = ' '
  99. TYPTAB ='PASAPAS'
  100. LE=7
  101. IRET2=0
  102. CALL ACCTAB(ITAB1,'MOT ',IVALIN,XVALIN,'SOUSTYPE',LOGIN,
  103. $ IOBIN, TYPOBJ,IVALRE,XVALRE,CHARRE,LOGRE,IOBRE)
  104. c write(6,*) 'TABLE PASAPAS?',TYPOBJ,IVALRE,CHARRE(1:LE)
  105. IF(TYPOBJ.NE.'MOT ') GOTO 2
  106. IF(IVALRE.NE.LE) GOTO 2
  107. IF(CHARRE(1:LE).NE.TYPTAB) GOTO 2
  108. ITPASA=ITAB1
  109. IRET2=1
  110. c si table PASAPAS on recupere le chpoint qui va bien
  111. ITRES=ITPASA
  112. IF(IMOO.EQ.0) THEN
  113. WRITE(IOIMP,*) 'OPERATEUR RECO : On attend un mot-cle'
  114. CALL ERREUR(21)
  115. RETURN
  116. ENDIF
  117. CALL REPEC2(ITRES,IMOO,ICHP1)
  118. ILECT=1
  119. GOTO 300
  120.  
  121. 2 CONTINUE
  122. c -table RESULTAT_DYNE ?
  123. c CALL LIRTAB('RESULTAT_DYNE',ITDYNE,0,IRET1)
  124. TYPOBJ = ' '
  125. TYPTAB ='RESULTAT_DYNE'
  126. LE=13
  127. IRET1=0
  128. CALL ACCTAB(ITAB1,'MOT ',IVALIN,XVALIN,'SOUSTYPE',LOGIN,
  129. $ IOBIN, TYPOBJ,IVALRE,XVALRE,CHARRE,LOGRE,IOBRE)
  130. c write(6,*) 'TABLE PASAPAS?',TYPOBJ,IVALRE,CHARRE(1:LE)
  131. IF(TYPOBJ.NE.'MOT ') GOTO 9
  132. IF(IVALRE.NE.LE) GOTO 9
  133. IF(CHARRE(1:LE).NE.TYPTAB) GOTO 9
  134. ITDYNE=ITAB1
  135. IRET1=1
  136. GOTO 100
  137.  
  138. C-----ERREUR argument entree
  139. 9 CONTINUE
  140. WRITE(IOIMP,*) 'OPERATEUR RECO : On attend un objet de type :'
  141. WRITE(IOIMP,*) '- TABLE de sous-type RESULTAT_DYNE,'
  142. WRITE(IOIMP,*) '- TABLE de sous-type PASAPAS,'
  143. WRITE(IOIMP,*) '- ou CHPOINT ou LISTCHPO'
  144. CALL ERREUR(21)
  145. RETURN
  146.  
  147.  
  148. C---- Cas d'un CHPOINT -------------------------------------------------
  149. 300 CONTINUE
  150.  
  151. c A partir de quelle objet recombine t'on ?
  152. c (modele, table ou basemoda)
  153.  
  154. C---- Cas d'un CHPOINT + MODELE modal ----------------------------------
  155. c CALL LIROBJ('MMODEL',IPMODL,ILECT,IRET)
  156. CALL LIROBJ('MMODEL',IPMODL,0,IRET)
  157. IF (IRET.NE.0) THEN
  158. CALL LIROBJ('MCHAML',IPIN,1,IRET1)
  159. if (IERR.NE.0) RETURN
  160. CALL REDUAF(IPIN,IPMODL,IPCHA1,0,IR,KER)
  161. IF(IR .NE. 1) CALL ERREUR(KER)
  162. IF(IERR .NE. 0) RETURN
  163.  
  164. CALL RECOF2(ipmodl,ipcha1,ichp1,ipout)
  165. if (IERR.NE.0) RETURN
  166. CALL ECROBJ('CHPOINT ',ipout)
  167. RETURN
  168. ENDIF
  169.  
  170. C---- Cas d'un CHPOINT + TABLES (LIAISONS_STATIQUES + BASE_MODALE) -----
  171. CALL LIRTAB('LIAISONS_STATIQUES',itst,0,iretst)
  172. CALL LIRTAB('BASE_MODALE',itbm,0,iretbm)
  173. if (ierr.ne.0) return
  174.  
  175. c -si on n'a pas lu de table on va vers l'ancienne syntaxe (BASEMODA)
  176. if (iretst.eq.0.and.iretbm.eq.0) GOTO 900
  177.  
  178. c -syntaxe avec une ou des tables
  179. CALL RECOF1(itst,itbm,ichp1,ipout)
  180. if (ierr.ne.0) return
  181. CALL ECROBJ('CHPOINT ',ipout)
  182. RETURN
  183.  
  184.  
  185. C---- Cas d'une TABLE de RESULTAT_DYNE ---------------------------------
  186. 100 CONTINUE
  187.  
  188. ITRES = ITDYNE
  189.  
  190. c qq initialisations
  191. KPSMO = 0
  192. KCHAR = 0
  193. KCHLIA = 0
  194. ITLIA = 0
  195. XTEMP = 0.D0
  196.  
  197. c Lecture obligatoire mot clé (DEPL,...)
  198. IF(IMOO.EQ.0) THEN
  199. WRITE(IOIMP,*) 'OPERATEUR RECO : On attend un mot-cle'
  200. CALL ERREUR(21)
  201. RETURN
  202. ENDIF
  203.  
  204. c + temps pour lequel il faut restituer
  205. CALL LIRREE(XTEMP,1,IRET)
  206. IF (IERR.NE.0) RETURN
  207. XMPE = -XPETIT
  208. IF (XTEMP.LT.XMPE) THEN
  209. CALL ERREUR(431)
  210. RETURN
  211. ENDIF
  212.  
  213. C + table BASE_MODALE ou ENSEMBLE_DE_BASES
  214. CALL LIRTAB('BASE_MODALE',ITBAS,0,IRET)
  215. IF (IRET.EQ.0) THEN
  216. CALL LIRTAB('ENSEMBLE_DE_BASES',ITBAS,1,IRET)
  217. ENDIF
  218. IF (IERR.NE.0) RETURN
  219.  
  220. c + facultative chargement et liaison
  221. CALL LIROBJ('CHARGEME',KCHAR,0,IRET)
  222. CALL LIRTAB('LIAISON',ITLIA,0,IRET)
  223.  
  224. c l'instant XTEMP correspond au pas de temps IPOS
  225. CALL ACCTAB(ITRES,'MOT',I0,X0,'TEMPS_DE_SORTIE',L0,IP0,
  226. & 'LISTREEL',I1,X1,' ',L1,LBO)
  227. IF (IERR.NE.0) RETURN
  228. MLREEL = LBO
  229. SEGACT MLREEL
  230. LTE = PROG(/1)
  231. PRECI = (PROG(LTE) - PROG(1)) / (LTE * 100)
  232. c rem bp : heureusement que DYNE fonctionne a pas de temps constant !
  233. c sinon il faudrait revoir la def de PRECI !!!
  234. CALL PLACE3(PROG,IUN,LTE,XTEMP,IR,AR)
  235. IF (AR.LE.PRECI) THEN
  236. IPOS = IR
  237. ELSE
  238. ARR = ABS(1. - AR)
  239. IF (ARR.LE.PRECI) THEN
  240. IPOS = IR + 1
  241. ELSE
  242. MOTERR(1:8) = 'TABLE '
  243. MOTERR(9:16) ='LISTREEL'
  244. CALL ERREUR(135)
  245. SEGDES MLREEL
  246. RETURN
  247. ENDIF
  248. ENDIF
  249. SEGDES MLREEL
  250.  
  251. cbp QUEL TYPE DE SORTIE DE LA TABLE DYNE (CHPOINT OU LISTREEEL)?
  252.  
  253. c existe-t-il le LISTREEL dans la table . 'DEPLACEMENT' ?
  254. MODYN=MOCLE2(IMOO)
  255. TYPRET=' '
  256. CALL ACCTAB (ITRES ,'MOT',I0,X0,MODYN,L0,IRET0,
  257. & TYPRET,I1,X1,' ',L1,IDYN1)
  258. IF(TYPRET.EQ.'TABLE'.AND.IDYN1.NE.0) THEN
  259. ICHPT=-1*IDYN1
  260. IF (MOOPT(IMOO).EQ.'DEPL') THEN
  261. CALL RCDEPL(ITBAS,ICHPT,KCHAR,XTEMP,ITRES,IPOS,ITLIA,0)
  262. ELSE IF (MOOPT(IMOO).EQ.'VITE') THEN
  263. CALL RCDEPL(ITBAS,ICHPT,KCHAR,XTEMP,ITRES,IPOS,ITLIA,1)
  264. ELSE IF (MOOPT(IMOO).EQ.'ACCE') THEN
  265. CALL RCDEPL(ITBAS,ICHPT,KCHAR,XTEMP,ITRES,IPOS,ITLIA,-1)
  266. ELSE IF (MOOPT(IMOO).EQ.'REAC') THEN
  267. CALL RCDEPL(ITBAS,ICHPT,KCHAR,XTEMP,ITRES,IPOS,ITLIA,2)
  268. ELSE
  269. CALL RCCONT(ITBAS,ICHPT,KCHAR,XTEMP,ITRES,IPOS,ITLIA)
  270. ENDIF
  271. RETURN
  272. ENDIF
  273.  
  274. c Recuperation du CHPOINT a l'instant XTEMP
  275. c + Recombinaison via RCDEPL et RCCONT
  276. c (Ecriture du CHPOIN/MCHAML dans RCDEPL/RCCONT)
  277. CALL ACCTAB(ITRES,'ENTIER',IPOS,X0,' ',L0,IP0,
  278. & 'TABLE',I1,X1,' ',L1,ITDEP)
  279. IF (IERR.NE.0) RETURN
  280. IF (MOOPT(IMOO).EQ.'DEPL') THEN
  281. CALL ACCTAB(ITDEP,'MOT',I0,X0,'DEPLACEMENT',L0,IP0,
  282. & 'CHPOINT',I1,X1,' ',L1,ICHPT)
  283. IF (IERR.NE.0) RETURN
  284. CALL RCDEPL(ITBAS,ICHPT,KCHAR,XTEMP,ITRES,IPOS,ITLIA,0)
  285. ELSE IF (MOOPT(IMOO).EQ.'VITE') THEN
  286. CALL ACCTAB(ITDEP,'MOT',I0,X0,'VITESSE',L0,IP0,
  287. & 'CHPOINT',I1,X1,' ',L1,ICHPT)
  288. IF (IERR.NE.0) RETURN
  289. CALL RCDEPL(ITBAS,ICHPT,KCHAR,XTEMP,ITRES,IPOS,ITLIA,1)
  290. ELSE IF (MOOPT(IMOO).EQ.'ACCE') THEN
  291. CALL ACCTAB(ITDEP,'MOT',I0,X0,'ACCELERATION',L0,IP0,
  292. & 'CHPOINT',I1,X1,' ',L1,ICHPT)
  293. IF (IERR.NE.0) RETURN
  294. CALL RCDEPL(ITBAS,ICHPT,KCHAR,XTEMP,ITRES,IPOS,ITLIA,-1)
  295. ELSE IF (MOOPT(IMOO).EQ.'REAC') THEN
  296. CALL ACCTAB(ITDEP,'MOT',I0,X0,'DEPLACEMENT',L0,IP0,
  297. & 'CHPOINT',I1,X1,' ',L1,ICHPT)
  298. IF (IERR.NE.0) RETURN
  299. CALL RCDEPL(ITBAS,ICHPT,KCHAR,XTEMP,ITRES,IPOS,ITLIA,2)
  300. ELSE
  301. CALL ACCTAB(ITDEP,'MOT',I0,X0,'DEPLACEMENT',L0,IP0,
  302. & 'CHPOINT',I1,X1,' ',L1,ICHPT)
  303. IF (IERR.NE.0) RETURN
  304. CALL RCCONT(ITBAS,ICHPT,KCHAR,XTEMP,ITRES,IPOS,ITLIA)
  305. ENDIF
  306.  
  307. RETURN
  308. C---- fin du cas avec une TABLE de RESULTAT_DYNE -----------------------
  309.  
  310.  
  311.  
  312. *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+**+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
  313. * version appelee a disparaitre
  314. *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+**+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
  315. 900 CONTINUE
  316. C---- Cas d'un CHPOINT + BASEMODA --------------------------------------
  317.  
  318. C Lecture obligatoire de la BASEMODA + un mot clé (DEPL,...)
  319. CALL LIROBJ ('BASEMODA',IP2,0,IRETOU)
  320. if (IRETOU.eq.0.or.IERR.NE.0) THEN
  321. WRITE(IOIMP,*) 'OPERATEUR RECO : Apres un CHPOINT,' ,
  322. & ' on attend un objet de type :'
  323. WRITE(IOIMP,*) '- TABLE de sous-type BASE_MODALE,'
  324. WRITE(IOIMP,*) '- TABLE de sous-type LIAISONS_STATIQUES,'
  325. WRITE(IOIMP,*) '- ou BASEMODA'
  326. CALL ERREUR(21)
  327. RETURN
  328. ENDIF
  329.  
  330. IF (IRET3.EQ.1) THEN
  331. IMOO=0
  332. CALL LIRMOT(MOOPT,LMOOPT,IMOO,0)
  333. ENDIF
  334.  
  335. IF(IMOO.EQ.0) THEN
  336. WRITE(IOIMP,*) 'OPERATEUR RECO : On attend un mot-cle'
  337. CALL ERREUR(21)
  338. RETURN
  339. ENDIF
  340.  
  341. c qq initialisations + recup du chpoint
  342. KPSMO = 0
  343. KCHAR = 0
  344. KCHLIA = 0
  345. ITLIA = 0
  346. XTEMP = 0.D0
  347. ICH1=ICHP1
  348.  
  349. c lecture du temps si PSEUDO MODE (+chargement + chpoint de liaison)
  350. IF(IERR.NE.0) RETURN
  351. CALL LIRREE(XTEMP,0,IRETOU)
  352. IF (IRETOU.EQ.1) THEN
  353. KPSMO = 1
  354. CALL LIROBJ('CHPOINT ',KCHLIA,0,IRETOU)
  355. CALL LIROBJ('CHARGEME',KCHAR,0,IRETOU)
  356. ENDIF
  357. IF(IERR.NE.0) RETURN
  358. C
  359. C **** ON VERIFIE QUE LE CHPOINT CONTIENT LES CONTRIBUTIONS MODALES
  360. C
  361. MCHPOI = ICH1
  362. SEGACT MCHPOI
  363. NSOUPO = IPCHP(/1)
  364. DO 1 ISOU = 1,NSOUPO
  365. MSOUPO = IPCHP(ISOU)
  366. SEGACT MSOUPO
  367. IF (NOCOMP(/2).NE.1) THEN
  368. C ON CHERCHE UN CHPOINT QUI CONTIENT DES CONTIBUTIONS MODALES
  369. CALL ERREUR(188)
  370. RETURN
  371. ENDIF
  372. IF (NOCOMP(1).NE.'ALFA') THEN
  373. C ON CHERCHE ........
  374. CALL ERREUR(188)
  375. SEGDES MSOUPO
  376. RETURN
  377. ENDIF
  378. SEGDES MSOUPO
  379. 1 CONTINUE
  380. SEGDES MCHPOI
  381.  
  382. * TRAVAIL SUR LA BASE MODALE
  383. MBASEM = IP2
  384. SEGACT MBASEM
  385. NBAS = LISBAS(/1)
  386. IP4 = 1
  387. IF (NBAS.NE.1) THEN
  388. C BASE COMPLEXE
  389. CALL LIROBJ('STRUCTUR',IRET,1,IRETOU)
  390. IF( IERR.NE.0 ) RETURN
  391. MSTRUC = IRET
  392. SEGACT MSTRUC
  393. NSTRU = LISTRU(/1)
  394. MSOSTU = LISTRU(1)
  395. IP3 = 1
  396. IF (NSTRU.NE.1) THEN
  397. C STRUCTURE COMPLEXE
  398. CALL LIRENT(IP3,1,IRETOU)
  399. IF (IERR.NE.0) RETURN
  400. C ON VERIFIE QU'IL S'AGIT DE SOUS-STRUCTURES IDENTIQUES
  401. SEGACT MSOSTU
  402. ISRAI1 = ISRAID
  403. SEGDES MSOSTU
  404. DO 14 NS = 2,NSTRU
  405. MSOSTU = LISTRU(NS)
  406. SEGACT MSOSTU
  407. IF (ISRAI1.NE.ISRAID) RETURN
  408. SEGDES MSOSTU
  409. 14 CONTINUE
  410. IF (IP3.EQ.0 .OR. IP3.GT.NSTRU) THEN
  411. CALL ERREUR(216)
  412. RETURN
  413. ENDIF
  414. MSOSTU = LISTRU(IP3)
  415. ENDIF
  416. SEGDES MSTRUC
  417. C ON VERIFIE QUE LA SOUS-STRUCTURE EST DANS LA BASE
  418. DO 16 NB = 1,NBAS
  419. MSOBAS = LISBAS(NB)
  420. SEGACT MSOBAS
  421. IP4 = NB
  422. IF (IBSTRM(1).EQ.MSOSTU) GOTO 17
  423. SEGDES MSOBAS
  424. 16 CONTINUE
  425. C *** INCOHERENCE ENTRE LA BASE ET LA STRUCTURE
  426. CALL ERREUR(216)
  427. RETURN
  428. 17 CONTINUE
  429. ENDIF
  430. MSOBAS = LISBAS(IP4)
  431. SEGDES MBASEM
  432. SEGACT MSOBAS
  433. IBMODE = IBSTRM(2)
  434. IBSOLS = IBSTRM(3)
  435. IBPSMO = IBSTRM(5)
  436. IRET = 0
  437. IRET1 = 0
  438. IRET2 = 0
  439. *
  440. IF (IMOO.EQ.2) THEN
  441. *
  442. * RECOMBINAISON DE CONTRAINTES
  443. *
  444. READ (MOOPT(2),FMT='(A4)') MOCON
  445. IF (IBMODE.NE.0) THEN
  446. MSOLUT = IBMODE
  447. SEGACT MSOLUT
  448. KMEL1 = MSOLIS(3)
  449. KCON = MSOLIS(6)
  450. SEGDES MSOLUT
  451. IF (KCON.EQ.0) THEN
  452. MOTERR(1:8) = ITYSOL
  453. CALL ERREUR(61)
  454. RETURN
  455. ENDIF
  456. CALL RCOSIG(ICH1,KCON,KMEL1,IRET1)
  457. IF( IERR.NE.0 ) RETURN
  458. IF (IBSOLS.EQ.0) IRET = IRET1
  459. ENDIF
  460. IF (IBSOLS.NE.0) THEN
  461. MSOLUT = IBSOLS
  462. SEGACT MSOLUT
  463. KMEL1 = MSOLIS(3)
  464. KCON = MSOLIS(6)
  465. SEGDES MSOLUT
  466. IF (KCON.EQ.0) THEN
  467. MOTERR(1:8) = ITYSOL
  468. CALL ERREUR(61)
  469. RETURN
  470. ENDIF
  471. CALL RCOSIG(ICH1,KCON,KMEL1,IRET2)
  472. IF( IERR.NE.0 ) RETURN
  473. IF (IRET1.NE.0) THEN
  474. ICONV=0
  475. CALL ADCHEL(IRET1,IRET2,IRET,IUN)
  476. ELSE
  477. IRET = IRET2
  478. ENDIF
  479. ENDIF
  480. IF (IRET.EQ.0) RETURN
  481. ITYPE = 'CHAMELEM'
  482. ELSE
  483. *
  484. * RECOMBINAISON DE DEPLACEMENTS
  485. *
  486. READ (MOOPT(1),FMT='(A4)') MODEPL
  487. IF (IBMODE.NE.0) THEN
  488. MSOLUT = IBMODE
  489. SEGACT MSOLUT
  490. KDEPL = MSOLIS(5)
  491. KMEL1 = MSOLIS(3)
  492. SEGDES MSOLUT
  493. IF (KDEPL.EQ.0) THEN
  494. MOTERR(1:8) = ITYSOL
  495. CALL ERREUR(61)
  496. RETURN
  497. ENDIF
  498. CALL RCODP1(ICH1,KDEPL,KMEL1,IRET1)
  499. IF (IERR.NE.0) RETURN
  500. IF (IBSOLS.EQ.0) IRET = IRET1
  501. ENDIF
  502. IF (IBSOLS.NE.0) THEN
  503. MSOLUT = IBSOLS
  504. SEGACT MSOLUT
  505. KDEPL = MSOLIS(5)
  506. KMEL1 = MSOLIS(3)
  507. SEGDES MSOLUT
  508. IF (KDEPL.EQ.0) THEN
  509. MOTERR(1:8) = ITYSOL
  510. CALL ERREUR(61)
  511. RETURN
  512. ENDIF
  513. CALL RCODP1(ICH1,KDEPL,KMEL1,IRET2)
  514. IF (IERR.NE.0) RETURN
  515. IF (IRET1.NE.0) THEN
  516. CALL ADCHPO(IRET1,IRET2,IRET,1D0,1D0)
  517. IF( IERR.NE.0 ) RETURN
  518. ELSE
  519. IRET = IRET2
  520. ENDIF
  521. ENDIF
  522. IF (IRET.EQ.0) RETURN
  523. ITYPE = 'CHPOINT '
  524. ENDIF
  525. *
  526. * PRIS EN COMPTE DES PSEUDO-MODES
  527. *
  528. IF (KPSMO.NE.0) THEN
  529. CALL PSRECO(IBMODE,IBPSMO,MOOPT(IMOO),KCHAR,KCHLIA,XTEMP,IRET)
  530. ENDIF
  531. *
  532. SEGDES MSOBAS
  533.  
  534. CALL ECROBJ (ITYPE,IRET)
  535. *
  536. RETURN
  537. END
  538.  
  539.  
  540.  
  541.  

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