Télécharger recomb.eso

Retour à la liste

Numérotation des lignes :

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

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