dtsolu
C DTSOLU SOURCE PV 21/01/21 21:15:12 10862 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) character*19 mrota , mrotp character*24 mrots character*22 mtran , mtrap character*27 mtras character*1 ichari,mrotd,mtrad,icharr logical logii,logir integer ico, icoch, icolr, icotb integer ipile, iret, irett, irret integer irotd, irotp, irots integer itabr, itrad, itrap, itras integer itys, ivali, ivalr, kmel1, ksolit integer n, nip, nipo, nn real*8 xvali, xvalr C C ===================================================================== C = DESTRUCTION D'UN OBJET SOLUTION = C = = C = CREATION 06/01/86 = C = PROGRAMMEUR GUILBAUD = C ===================================================================== C -INC PPARAM -INC CCOPTIO -INC COCOLL -INC SMSOLUT -INC SMELEME -INC SMTABLE -INC SMLREEL -INC TMCOLAC pointeur piles.LISPIL pointeur jcolac.ICOLAC pointeur jlisse.ILISSE pointeur jtlacc.ITLACC pointeur pile.ITLACC * DATA MROTA/'ROTATION D ENSEMBLE'/ DATA MROTP/'VITESSE DE ROTATION'/ DATA MROTS/'ACCELERATION DE ROTATION'/ DATA MTRAN/'TRANSLATION D ENSEMBLE'/ DATA MTRAP/'VITESSE DE TRANSLATION'/ DATA MTRAS/'ACCELERATION DE TRANSLATION'/ * iun=1 MSOLUT=IRET irret=0 SEGACT MSOLUT ITYS=0 IF(ITYSOL.NE.'MODE ') GO TO 101 ITYS=1 GO TO 200 101 CONTINUE IF(ITYSOL.NE.'SOLUSTAT'.AND.ITYSOL.NE.'PSEUMODE') GO TO 102 ITYS=2 GOTO 200 102 CONTINUE IF(ITYSOL.NE.'DYNAMIQU') GOTO 103 ITYS=3 GO TO 200 103 MOTERR(1:8)='SOLUTION' MOTERR(9:16)=ITYSOL C L OPERATEUR DETRUIRE NE FONCTIONNE PAS POUR UN OBJET SOLUTION C COMPORTANT CE SOUS-TYPE SEGDES MSOLUT GOTO 1000 200 NIPO=MSOLIS(/1) MSOLRE=MSOLIS(1) IF(MSOLRE.NE.0) SEGSUP MSOLRE MSOLEN=MSOLIS(2) IF(MSOLEN.NE.0) SEGSUP MSOLEN MELEME=MSOLIS(3) IF(MELEME.NE.0.AND.ITYS.EQ.1) THEN SEGSUP MELEME IF(IPSAUV.NE.0) THEN ICOLAC = IPSAUV SEGACT ICOLAC ILISSE=ILISSG SEGACT ILISSE*MOD ITLACC = KCOLA(ICO) SEGACT ITLACC*MOD SEGDES ITLACC,ILISSE SEGDES ICOLAC ENDIF C Suppression du meleme des piles d'objets communiques if(piComm.gt.0) then piles=piComm segact piles do ipile=1,piles.proc(/1) jcolac= piles.proc(ipile) if(jcolac.ne.0) then segact jcolac jlisse=jcolac.ilissg segact jlisse*mod jtlacc=jcolac.kcola(ico) segact jtlacc*mod segdes jtlacc segdes jlisse segdes jcolac endif enddo segdes piles endif ENDIF MSOLEN=MSOLIS(4) IF(MSOLEN.NE.0) THEN SEGACT MSOLEN N=ISOLEN(/1) IF(N.NE.0) THEN DO 210 NN=1,N MMODE=ISOLEN(NN) SEGSUP MMODE 210 CONTINUE ENDIF SEGSUP MSOLEN ENDIF DO 230 NIP=5,NIPO MSOLEN=MSOLIS(NIP) IF(MSOLEN.NE.0) THEN SEGACT MSOLEN N=ISOLEN(/1) IF(N.NE.0) THEN KSOLIT=MSOLIT(NIP) DO 220 NN=1,N IRETT=ISOLEN(NN) IF(IRETT.NE.0) THEN IF(KSOLIT.EQ.2) THEN IF(IPSAUV.NE.0) THEN ICOLAC = IPSAUV SEGACT ICOLAC ILISSE=ILISSG SEGACT ILISSE*MOD ITLACC = KCOLA(ICOCH) SEGACT ITLACC*MOD SEGDES ITLACC ENDIF C Suppression du CHPOINT des piles d'objets communiques if(piComm.gt.0) then piles=piComm segact piles do ipile=1,piles.proc(/1) jcolac= piles.proc(ipile) if(jcolac.ne.0) then segact jcolac jlisse=jcolac.ilissg segact jlisse*mod jtlacc=jcolac.kcola(ico) segact jtlacc*mod segdes jtlacc segdes jlisse segdes jcolac endif enddo segdes piles endif ENDIF IF(KSOLIT.EQ.5) THEN IF(IPSAUV.NE.0) THEN ICOLAC = IPSAUV SEGACT ICOLAC ILISSE=ILISSG SEGACT ILISSE*MOD ITLACC = KCOLA(ICOCH) SEGACT ITLACC*MOD SEGDES ITLACC ENDIF C Suppression du MCHAML des piles d'objets communiques if(piComm.gt.0) then piles=piComm segact piles do ipile=1,piles.proc(/1) jcolac= piles.proc(ipile) if(jcolac.ne.0) then segact jcolac jlisse=jcolac.ilissg segact jlisse*mod jtlacc=jcolac.kcola(ico) segact jtlacc*mod segdes jtlacc segdes jlisse segdes jcolac endif enddo segdes piles endif ENDIF IF ( MSOLIT.EQ.10 ) THEN KMEL1 = MSOLIS(3) IF ( NIP.EQ.11 ) THEN * IVALI,XVALI,ICHARI,LOGII,KMEL1, * 'TABLE ', * IVALR,XVALR,ICHARR,LOGIR,ITABR) * IVALI,XVALI,MROTS ,LOGII,KMEL1, * 'LISTREEL', * IVALR,XVALR,ICHARR,LOGIR,IROTS) MLREEL = IROTS SEGSUP MLREEL * IVALI,XVALI,MROTP ,LOGII,KMEL1, * 'LISTREEL', * IVALR,XVALR,ICHARR,LOGIR,IROTP) MLREEL = IROTP SEGSUP MLREEL * IVALI,XVALI,MROTD ,LOGII,KMEL1, * 'LISTREEL', * IVALR,XVALR,ICHARR,LOGIR,IROTD) MLREEL = IROTD SEGSUP MLREEL MTABLE = ITABR SEGSUP MTABLE ITABR = 0 CONTINUE MTABLE = IRRET SEGSUP MTABLE IF(IPSAUV.NE.0) THEN ICOLAC = IPSAUV SEGACT ICOLAC ILISSE=ILISSG SEGACT ILISSE*MOD ITLACC = KCOLA(ICOLR) SEGACT ITLACC*MOD SEGDES ITLACC ITLACC = KCOLA(ICOTB) SEGACT ITLACC*MOD SEGDES ITLACC SEGDES ICOLAC,ILISSE ENDIF C Suppression du list reel et table des piles d'objets communiques if(piComm.gt.0) then piles=piComm segact piles do ipile=1,piles.proc(/1) jcolac= piles.proc(ipile) if(jcolac.ne.0) then segact jcolac jlisse=jcolac.ilissg segact jlisse*mod jtlacc=jcolac.kcola(ico) segact jtlacc*mod segdes jtlacc endif enddo do ipile=1,piles.proc(/1) jcolac= piles.proc(ipile) if(jcolac.ne.0) then jlisse=jcolac.ilissg jtlacc=jcolac.kcola(ico) segact jtlacc*mod segdes jtlacc segdes jlisse segdes jcolac endif enddo segdes piles endif IRRET = 0 ELSE IF ( NIP.EQ.12 ) THEN * IVALI,XVALI,ICHARI,LOGII,KMEL1, * 'TABLE ', * IVALR,XVALR,ICHARR,LOGIR,ITABR) * IVALI,XVALI,MTRAS ,LOGII,KMEL1, * 'LISTREEL', * IVALR,XVALR,ICHARR,LOGIR,ITRAS) MLREEL = ITRAS SEGSUP MLREEL * IVALI,XVALI,MTRAP ,LOGII,KMEL1, * 'LISTREEL', * IVALR,XVALR,ICHARR,LOGIR,ITRAP) MLREEL = ITRAP SEGSUP MLREEL * IVALI,XVALI,MTRAD ,LOGII,KMEL1, * 'LISTREEL', * IVALR,XVALR,ICHARR,LOGIR,ITRAD) MLREEL = ITRAD SEGSUP MLREEL MTABLE = ITABR SEGSUP MTABLE CONTINUE MTABLE = IRRET SEGSUP MTABLE IF(IPSAUV.NE.0) THEN ICOLAC = IPSAUV SEGACT ICOLAC ILISSE=ILISSG SEGACT ILISSE*MOD ITLACC = KCOLA(ICOLR) SEGACT ITLACC*MOD SEGDES ITLACC ITLACC = KCOLA(ICOTB) SEGACT ITLACC*MOD SEGDES ITLACC SEGDES ICOLAC,ILISSE ENDIF C Suppression du list reel et table des piles d'objets communiques if(piComm.gt.0) then piles=piComm segact piles do ipile=1,piles.proc(/1) jcolac= piles.proc(ipile) if(jcolac.ne.0) then segact jcolac jlisse=jcolac.ilissg segact jlisse*mod jtlacc=jcolac.kcola(ico) segact jtlacc*mod segdes jtlacc endif enddo do ipile=1,piles.proc(/1) jcolac= piles.proc(ipile) if(jcolac.ne.0) then jlisse=jcolac.ilissg jtlacc=jcolac.kcola(ico) segact jtlacc*mod segdes jtlacc segdes jlisse segdes jcolac endif enddo segdes piles endif ITABR = 0 IRRET = 0 ENDIF ENDIF ENDIF 220 CONTINUE ENDIF SEGSUP MSOLEN ENDIF 230 CONTINUE 1000 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales