ecmatt
C ECMATT SOURCE CB215821 20/11/25 13:27:02 10792 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) CHARACTER*3 MOTAXE CHARACTER*5 MROTOR CHARACTER*6 MSTATO CHARACTER*7 MINERT CHARACTER*9 MINCON CHARACTER*11 MOTST1,MOTST2 CHARACTER*16 MOTSS1,MOTSS2 CHARACTER*19 MOTVIT CHARACTER*20 MOTAB2,MOTAB1 CHARACTER*22 MOTPRO CHARACTER*46 MCARA2 CHARACTER*49 MCARA1 LOGICAL LOGI CHARACTER*8 CHARI C =================================================================== C = ECRITURE D'UN OBJET ATTACHE = C = PROGRAMMEUR GUILBAUD = C = CREATION / /85 = C =================================================================== -INC SMATTAC -INC PPARAM -INC CCOPTIO -INC SMCHPOI -INC SMLMOTS -INC SMELEME -INC SMCOORD -INC SMSTRUC SEGMENT STRAV CHARACTER*(LOCOMP) ITRAV(0) ENDSEGMENT SEGMENT IWORK(0) SEGMENT ICPR(nbpts) SEGMENT ITAB(0) SEGMENT/JTAB/(TABL(IFI)*D) SEGMENT ITPOI(N) SEGMENT ITMEL(N) SEGMENT/MTSTR/(ITSTR(N)) SEGMENT ITMAS(NATTA) SEGMENT ITMSP(NATTA) SEGMENT ITMSC(NATTA) SEGMENT ITMSD(NATTA) CHARACTER*4 IETOI DATA IETOI/'****'/ DATA LONREF/8/ DATA MOTAXE/'AXE'/ DATA MOTST1/'STRUCTURE 1'/ DATA MOTST2/'STRUCTURE 2'/ DATA MOTSS1/'SOUS-STRUCTURE 1'/ DATA MOTSS2/'SOUS-STRUCTURE 2'/ DATA MOTAB1/'POINT 1 DU MECANISME'/ DATA MOTAB2/'POINT 2 DU MECANISME'/ DATA MOTPRO/'CONSIGNE EN PROPORTION'/ DATA MOTVIT/'CONSIGNE EN VITESSE'/ DATA MINERT/'INERTIE'/,MINCON/'INCONNUES'/ DATA MROTOR/'ROTOR'/ DATA MSTATO/'STATOR'/ DATA MCARA1/'CARACTERISTIQUE DE L ASSERVISSEMENT EN PROPORTION'/ DATA MCARA2/'CARACTERISTIQUE DE L ASSERVISSEMENT EN VITESSE'/ DO 5 I=1,LONREF 5 CONTINUE MATTAC=IRET INTERR(1)=MATTAC WRITE(IOIMP,102) 102 FORMAT(10X,'* MSOUMA * ITYATT * IATREL *') SEGACT MATTAC NATTA=LISATT(/1) DO 20 IL=1,NATTA MSOUMA=LISATT(IL) SEGACT MSOUMA WRITE(IOIMP,103) MSOUMA,ITYATT,IATREL(1) 103 FORMAT(10X,'* ',I4,' * ',A4,' * ',I4,' * ') NRELA=IATREL(/1) DO 10 IN=2,NRELA WRITE(IOIMP,104) IATREL(IN) 104 FORMAT(10X,2('* '),'* ',I4,' *') 10 CONTINUE 20 CONTINUE IMECA=0 IASSE=0 ICHOC=0 IDEVE=0 SEGINI ITMAS,ITMSP,ITMSC,ITMSD DO 25 IL=1,NATTA MSOUMA=LISATT(IL) SEGACT MSOUMA IF(ITYATT.EQ.'ASSE') GOTO 2100 IF(ITYATT.EQ.'MECA') GOTO 21 IF(ITYATT.EQ.'FLUI') GOTO 21 IF(ITYATT.EQ.'DEPI') GOTO 21 IF(ITYATT.EQ.'CHOC') GOTO 22 IF(ITYATT.EQ.'DEVE') GOTO 23 GOTO 24 2100 IASSE=IASSE+1 ITMAS(IASSE)=MSOUMA GOTO 24 21 IMECA=IMECA+1 ITMSP(IMECA)=MSOUMA GOTO 24 22 ICHOC=ICHOC+1 ITMSC(ICHOC)=MSOUMA GOTO 24 23 IDEVE=IDEVE+1 ITMSD(IDEVE)=MSOUMA 24 CONTINUE M=IPMATK(/1) IF(M.EQ.0) GOTO 190 INTERR(1)=MSOUMA DO 180 MM=1,M C ECRITURE D'UN OBJET RIGIDITE IRET=IPMATK(MM) 180 CONTINUE 190 CONTINUE SEGDES MSOUMA 25 CONTINUE IF(IMECA.EQ.0) GOTO 175 C C TRATEMENT DES LIAISONS MECANIQUES PERMANENTES C SEGINI IWORK NBSTRU=0 DO 170 IL=1,IMECA MSOUMA=ITMSP(IL) SEGACT MSOUMA NRELA=IATREL(/1) SEGINI STRAV LONTRA=0 DO 80 IN=1,NRELA MJONCT=IATREL(IN) SEGACT MJONCT NS=ISTRJO(/1) DO 70 N=1,NS C MISE EN MEMOIRE DES SOUS-STRUCTURES INTERVENANT DANS LA LIAISON MSOSTU=ISTRJO(N) IF(NBSTRU.EQ.0) GOTO 28 DO 27 I=1,NBSTRU IF(MSOSTU.EQ.IWORK(I)) GOTO 29 27 CONTINUE 28 IWORK(**)=MSOSTU NBSTRU=NBSTRU+1 29 CONTINUE MCHPOI=IPCHJO(N) SEGACT MCHPOI NSOUPO=IPCHP(/1) DO 60 L=1,NSOUPO MSOUPO=IPCHP(L) SEGACT MSOUPO NC=NOCOMP(/2) DO 50 NCC=1,NC IF(LONTRA.EQ.0) GOTO 40 DO 30 I=1,LONTRA 30 CONTINUE 50 CONTINUE LONTRA=ITRAV(/2) SEGDES MSOUPO 60 CONTINUE SEGDES MCHPOI 70 CONTINUE SEGDES MJONCT 80 CONTINUE IECRI=(LONTRA-1)/LONREF+1 DO 160 IN=1,NRELA MJONCT=IATREL(IN) SEGACT MJONCT MELEME=MJOPOI SEGACT MELEME IJOPOI=NUM(1,1) SEGDES MELEME INTERR(1)=IN INTERR(2)=MJONCT INTERR(3)=IJOPOI MOTERR(1:4)=MJOTYP MOTERR(5:8)=MJODDL NS=ISTRJO(/1) DO 150 N=1,NS MCHPOI=IPCHJO(N) MSOSTU=ISTRJO(N) WRITE(IOIMP,107) MSOSTU,MCHPOI 107 FORMAT(/10X,' MSOSTU =',I4,' MCHPOI =',I4/) IDEB=1 IFIN=MIN(LONTRA,LONREF) IDEC=0 DO 145 IE=1,IECRI IFI=IFIN-IDEB+1 WRITE(IOIMP,108)(IETOI,I=1,IFI) 108 FORMAT(1X,'**********',8(A4,'***********')) WRITE(IOIMP,109) (ITRAV(I),I=IDEB,IFIN) 109 FORMAT(1X,'* POINTS *',8(' ',A4,' *')) WRITE(IOIMP,108)(IETOI,I=1,IFI) SEGACT MCHPOI NSOUPO=IPCHP(/1) DO 140 L=1,NSOUPO MSOUPO=IPCHP(L) SEGACT MSOUPO MELEME=IGEOC SEGACT MELEME NBPT=NUM(/2) NC=NOCOMP(/2) SEGINI ITAB DO 110 NCC=1,NC ITAB(**)=0 DO 85 I=IDEB,IFIN II=I 85 CONTINUE GOTO 110 90 ITAB(NCC)=II-IDEC 110 CONTINUE SEGINI JTAB DO 115 I=1,IFI TABL(I)=0.D0 115 CONTINUE MPOVAL=IPOVAL SEGACT MPOVAL DO 130 NBP=1,NBPT DO 120 NCC=1,NC IT=ITAB(NCC) IF(IT.EQ.0) GOTO 120 TABL(IT)=VPOCHA(NBP,NCC) 120 CONTINUE IWRITE=NUM(1,NBP) WRITE(IOIMP,111) IWRITE,(TABL(I),I=1,IFI) 111 FORMAT(1X,'* ',I4,' *',8(1X,1PE12.5,' *')) 130 CONTINUE SEGDES MELEME SEGSUP JTAB SEGDES MPOVAL SEGDES MSOUPO SEGSUP ITAB 140 CONTINUE WRITE(IOIMP,108)(IETOI,I=1,IFI) SEGDES MCHPOI IDEB=IFIN+1 IDEC=IFIN IFIN=(IE+1)*LONREF IFIN=MIN(LONTRA,IFIN) 145 CONTINUE 150 CONTINUE SEGDES MJONCT 160 CONTINUE SEGSUP STRAV 165 SEGDES MSOUMA WRITE(IOIMP,121) 121 FORMAT(/) 170 CONTINUE SEGSUP IWORK 175 IF(ICHOC.EQ.0) GOTO 550 C C TRAITEMENT DES CHOCS C DO 540 IL=1,ICHOC MSOUMA=ITMSC(IL) SEGACT MSOUMA NRELA=IATREL(/1) N=2*NRELA SEGINI ITPOI,MTSTR,ITMEL DO 215 NR=1,NRELA MJONCT=IATREL(NR) SEGACT MJONCT DO 210 NS=1,2 INS=(NS-1)*NRELA+NR ITSTR(INS)=ISTRJO(NS) MCHPOI=IPCHJO(NS) SEGACT MCHPOI MSOUPO=IPCHP(1) SEGACT MSOUPO MELEME=IGEOC SEGACT MELEME ITPOI(INS)=NUM(1,1) SEGDES MELEME,MSOUPO,MCHPOI MELEME=IPOSJO(NS) SEGACT MELEME ITMEL(INS)=NUM(1,1) SEGDES MELEME 210 CONTINUE 215 SEGDES MJONCT INTERR(1)= MSOUMA IECRI=(NRELA-1)/12+1 IDEB=1 IFIN=MIN(NRELA,12) DO 220 IE=1,IECRI WRITE(IOIMP,320) (IATREL(I),I=IDEB,IFIN) WRITE(IOIMP,320) (ITSTR(I),I=IDEB,IFIN) WRITE(IOIMP,320) (ITPOI(I),I=IDEB,IFIN) WRITE(IOIMP,320) (ITMEL(I),I=IDEB,IFIN) WRITE(IOIMP,320) (ITSTR(I+NRELA),I=IDEB,IFIN) WRITE(IOIMP,320) (ITPOI(I+NRELA),I=IDEB,IFIN) WRITE(IOIMP,320) (ITMEL(I+NRELA),I=IDEB,IFIN) 320 FORMAT(22X,12(1X,I5,' *')) IDEB=IFIN+1 IFIN=(IE+1)*12 IFIN=MIN(NRELA,IFIN) 220 CONTINUE C ECRITURE DES CARACTERISTIQUES DU CHOC MGEOCH=IGEOCH MPHYCH=IPHYCH SEGACT MGEOCH,MPHYCH NN=INORCH(/1) IF(NN.NE.1) GOTO 230 INTERR(1)=INORCH(1) REAERR(1)=RJEUCH(1) GOTO 250 230 INTERR(1)=INORCH(1) MOTERR(1:4)=MPOPRO(1) IF(RJEUCH(/1).NE.0) THEN REAERR(1)=RJEUCH(1) ENDIF DO 240 I=1,2 INTERR(1)=I INTERR(2)=IMAPRO(I) REAERR(1)=TAIPRO(I) INTERR(2)=INORCH(I+1) 240 CONTINUE 250 REAERR(1)= RAIPRO NA=AMOPRO(/1) IF(NA.EQ.1)THEN REAERR(1)= AMOPRO(1) ENDIF NF=FROPRO(/1) IF(NF.EQ.1) THEN REAERR(1)= FROPRO(1) ENDIF SEGSUP ITPOI,MTSTR,ITMEL SEGDES MSOUMA,MGEOCH,MPHYCH 540 CONTINUE 550 IF(IDEVE.EQ.0) GOTO 950 C TRAITEMENT DE LA LIAISON DEVERSOIR C DO 940 IL=1,IDEVE MSOUMA=ITMSD(IL) SEGACT MSOUMA NRELA=IATREL(/1) N=2*NRELA SEGINI ITPOI,MTSTR DO 615 NR=1,NRELA MJONCT=IATREL(NR) SEGACT MJONCT DO 610 NS=1,2 INS=(NS-1)*NRELA+NR ITSTR(INS)=ISTRJO(NS) MCHPOI=IPCHJO(NS) SEGACT MCHPOI MSOUPO=IPCHP(1) SEGACT MSOUPO MELEME=IGEOC SEGACT MELEME ITPOI(INS)=NUM(1,1) SEGDES MELEME,MSOUPO,MCHPOI 610 CONTINUE 615 SEGDES MJONCT INTERR(1)= MSOUMA IECRI=(NRELA-1)/12+1 IDEB=1 IFIN=MIN(NRELA,12) DO 620 IE=1,IECRI WRITE(IOIMP,720) (IATREL(I),I=IDEB,IFIN) WRITE(IOIMP,720) (ITSTR(I),I=IDEB,IFIN) WRITE(IOIMP,720) (ITPOI(I),I=IDEB,IFIN) WRITE(IOIMP,720) (ITSTR(I+NRELA),I=IDEB,IFIN) WRITE(IOIMP,720) (ITPOI(I+NRELA),I=IDEB,IFIN) 720 FORMAT(22X,12(1X,I5,' *')) IDEB=IFIN+1 IFIN=(IE+1)*12 IFIN=MIN(NRELA,IFIN) 620 CONTINUE C C ECRITURE DES CARACTERISTIQUES DU DEVERSOIR MGEOCH=IGEOCH SEGACT MGEOCH WRITE(IOIMP,1010) REAERR(1)=RJEUCH(1) REAERR(2)=RJEUCH(2) REAERR(1)=RJEUCH(3) REAERR(2)=RJEUCH(4) REAERR(1)=RJEUCH(5) REAERR(2)=RJEUCH(6) REAERR(1)=RJEUCH(7) REAERR(2)=RJEUCH(8) REAERR(1)=RJEUCH(9) 1010 FORMAT(/) SEGSUP ITPOI,MTSTR SEGDES MSOUMA,MGEOCH 940 CONTINUE 950 IF(IASSE.EQ.0) GOTO 1150 C C TRAITEMENT DE LA LIAISON MOTEUR ASSERVI C IS2 = 0 DO 1140 IL=1,IASSE MSOUMA=ITMAS(IL) SEGACT MSOUMA MATAB = IATREL(1) * 'POINT ',IVA,XVA,CHARI ,LOGI,IVEC1) II = ( IVEC1 - 1 ) * (IDIM + 1) REAERR(1)=XCOOR(II+1) REAERR(2)=XCOOR(II+2) REAERR(3)= 0.D0 IF(IDIM.EQ.3) REAERR(3)=XCOOR(II+3) * 'STRUCTUR',IVA,XVA,CHARI ,LOGI,IS1 ) INTERR(1)=IS1 * 'ENTIER ',N1 ,XVA,CHARI ,LOGI,IOB ) MSTRUC = IS1 SEGACT MSTRUC ISS1 = LISTRU(N1) INTERR(1)=ISS1 SEGDES MSTRUC * 'STRUCTUR',IVA,XVA,CHARI ,LOGI,IS2 ) IF(IS2.NE.0) THEN INTERR(1)=IS2 * 'ENTIER ',N2 ,XVA,CHARI ,LOGI,IOB ) MSTRUC = IS2 SEGACT MSTRUC ISS2 = LISTRU(N2) INTERR(1)=ISS2 SEGDES MSTRUC * 'POINT ',IVA,XVA,CHARI ,LOGI,IQ2 ) ENDIF * 'LISTMOTS',IVA,XVA,CHARI ,LOGI,IL1) MLMOTS = IL1 SEGACT MLMOTS MOTERR = ' ' DO 789 IC=1,NC I1=IC*4-3 789 CONTINUE SEGDES MLMOTS * 'FLOTTANT',IVA,STATOR,CHARI ,LOGI,IOB ) REAERR(1)=STATOR * 'FLOTTANT',IVA,ROTOR,CHARI ,LOGI,IOB ) REAERR(1)=ROTOR * 'FLOTTANT',IVA,FINERT,CHARI ,LOGI,IOB ) REAERR(1)=FINERT * 'LISTREEL',IVA,XVA,CHARI ,LOGI,IOBJ1) * 'LISTREEL',IVA,XVA,CHARI ,LOGI,IOBJ2) INTERR(1)=IOBJ1 INTERR(2)=IOBJ2 * 'FLOTTANT',IVA,RKP,CHARI ,LOGI,IOB ) * 'FLOTTANT',IVA,RKV,CHARI ,LOGI,IOB ) REAERR(1)=RKP REAERR(2)=RKV 1140 CONTINUE 1150 CONTINUE WRITE(IOIMP,122) 122 FORMAT(///) SEGDES MATTAC SEGSUP ITMSP,ITMSC,ITMSD RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales