limtik
C LIMTIK SOURCE PV 20/09/26 21:18:39 10724 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) C*********************************************************************** C NOM : LIMTAK C DESCRIPTION : Lecture d'un objet de type MATRIK sur le C fichier IFRES C (appelé par lipil.eso) C C LANGAGE : ESOPE C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/TTMF) C mél : gounand@semt2.smts.cea.fr C*********************************************************************** C APPELES (E/S) : LFCDIE (lecture d'un tableau d'entiers) C LFCDI2 (lecture d'un tableau de REAL*8) C LFCDIM (lecture d'un tableau de CHARACTER*4) C*********************************************************************** C SYNTAXE GIBIANE : RESTITUER C ENTREES : IFRES, numéro du fichier de lecture C IMAX1, nombre d'objets MATRIK à lire C IFORM, le fichier à lire est formaté ou C non. C ENTREES/SORTIES : ITLACC, la pile des objets MATRIK à C laquelle on ajoute les objets lus C CODE RETOUR (IRET) : 0, ok C 1, erreur dans la lecture de l'objet C*********************************************************************** C VERSION : v1, 15/07/98, version initiale C HISTORIQUE : v1, 15/07/98, création C HISTORIQUE : C HISTORIQUE : C*********************************************************************** C Prière de PRENDRE LE TEMPS de compléter les commentaires C en cas de modification de ce sous-programme afin de faciliter C la maintenance ! C*********************************************************************** -INC PPARAM -INC CCOPTIO -INC SMMATRIK -INC TMCOLAC SEGMENT/ITBBM1/( ITABM1(NM)) C INTEGER NDTAB INTEGER IEL,I,J,K,L INTEGER ILENA(11) C====================================================================== * * Executable statements * IRET=0 IRETOU=0 NM=0 SEGINI ITBBM1 DO 1 IEL=1,IMAX1 C Restitution du chapeau C.... On initialise des piles d'objets non connus de CASTEM C MINC, PMORS, IZA, IDMAT SEGINI ITLAC1 SEGINI ITLAC2 SEGINI ITLAC3 SEGINI ITLAC4 MATRIK=0 C Dimensions NDTAB=4 IF (IRETOU.NE.0) GOTO 9999 NRIGE =ILENA(1) NMATRI=ILENA(2) NKID =ILENA(3) NKMT =ILENA(4) SEGINI MATRIK C Rigidités élémentaires NDTAB = NRIGE * NMATRI IF (IRETOU.NE.0) GOTO 9999 C Matrice assemblée NDTAB=11 IF (IRETOU.NE.0) GOTO 9999 KMINC =ILENA( 2) KMINCP=ILENA( 3) KMINCD=ILENA( 4) KIZM =ILENA( 5) KISPGT=ILENA( 6) KISPGP=ILENA( 7) KISPGD=ILENA( 8) KNTTT =ILENA( 9) KNTTP =ILENA(10) KNTTD =ILENA(11) NDTAB=NKID IF (IRETOU.NE.0) GOTO 9999 NDTAB=NKMT IF (IRETOU.NE.0) GOTO 9999 C Restitution des IMATRI DO 11 I=1,NMATRI IMATRI=IRIGEL(4,I) IF (IMATRI.NE.0) THEN NDTAB=2 IF (IRETOU.NE.0) GOTO 9999 NBSOUS=ILENA(1) NBME =ILENA(2) SEGINI IMATRI NM=4*NBME SEGADJ ITBBM1 DO 111 J=1,NBME J4=(4*J)-3 WRITE(LISDUA(J),FMT='(2A4)') ITABM1(J4+2),ITABM1(J4+3) 111 CONTINUE NDTAB=NBSOUS*NBME IF (IRETOU.NE.0) GOTO 9999 NDTAB=2 IF (IRETOU.NE.0) GOTO 9999 KSPGP=ILENA(1) KSPGD=ILENA(2) C Restitution des IZAFM DO 112 K=1,NBME DO 1121 L=1,NBSOUS IZAFM=LIZAFM(L,K) IF (IZAFM.NE.0) THEN NDTAB=3 IF (IRETOU.NE.0) GOTO 9999 NP =ILENA(2) MP =ILENA(3) SEGINI IZAFM IF (IRETOU.NE.0) GOTO 9999 SEGDES IZAFM LIZAFM(L,K)=IZAFM ENDIF 1121 CONTINUE 112 CONTINUE SEGDES IMATRI IRIGEL(4,I)=IMATRI ENDIF 11 CONTINUE C Restitution des MINC NDTAB=4 IF (IRETOU.NE.0) GOTO 9999 NBMINC=ILENA(1) JMINC =ILENA(2) JMINCP=ILENA(3) JMINCD=ILENA(4) DO 12 I=1,NBMINC NDTAB=2 IF (IRETOU.NE.0) GOTO 9999 NPT=ILENA(1) NBI=ILENA(2) SEGINI MINC NM=2*NBI SEGADJ ITBBM1 IF (IRETOU.NE.0) GOTO 9999 DO 121 J=1,NBI 121 CONTINUE NDTAB=NPT+1 IF (IRETOU.NE.0) GOTO 9999 NDTAB=NPT*(NBI+1) IF (IRETOU.NE.0) GOTO 9999 SEGDES MINC ITLAC1.ITLAC(**)=MINC 12 CONTINUE IF (JMINC.NE.0) KMINC =ITLAC1.ITLAC(JMINC) IF (JMINCP.NE.0) KMINCP=ITLAC1.ITLAC(JMINCP) IF (JMINCD.NE.0) KMINCD=ITLAC1.ITLAC(JMINCD) C Restitution des PMORS NDTAB=3 IF (IRETOU.NE.0) GOTO 9999 NBMORS=ILENA(1) JMORS =ILENA(2) JMRST =ILENA(3) DO 13 I=1,NBMORS NDTAB=2 IF (IRETOU.NE.0) GOTO 9999 NTT=ILENA(1) NJA=ILENA(2) SEGINI PMORS NDTAB=NTT+1 IF (IRETOU.NE.0) GOTO 9999 NDTAB=NJA IF (IRETOU.NE.0) GOTO 9999 SEGDES PMORS ITLAC2.ITLAC(**)=PMORS 13 CONTINUE IF (JMORS.NE.0) KIDMAT(4)=ITLAC2.ITLAC(JMORS) IF (JMRST.NE.0) KIDMAT(6)=ITLAC2.ITLAC(JMRST) C Restitution des IDMAT (faite avant les IZA C car IDIAG pointe sur un IZA) NDTAB=3 IF (IRETOU.NE.0) GOTO 9999 NBIDMA=ILENA(1) JDMATP=ILENA(2) JDMATD=ILENA(3) DO 15 I=1,NBIDMA NDTAB=4 IF (IRETOU.NE.0) GOTO 9999 NTT =ILENA(1) NPT =ILENA(2) NBLK=ILENA(3) SEGINI IDMAT IDIAG=ILENA(4) NDTAB=NTT IF (IRETOU.NE.0) GOTO 9999 NDTAB=2*NTT IF (IRETOU.NE.0) GOTO 9999 NDTAB=NPT IF (IRETOU.NE.0) GOTO 9999 NDTAB=NPT IF (IRETOU.NE.0) GOTO 9999 NDTAB=NBLK IF (IRETOU.NE.0) GOTO 9999 NDTAB=NBLK IF (IRETOU.NE.0) GOTO 9999 NDTAB=NBLK+1 IF (IRETOU.NE.0) GOTO 9999 SEGDES IDMAT ITLAC4.ITLAC(**)=IDMAT 15 CONTINUE IF (JDMATP.NE.0) KIDMAT(1)=ITLAC4.ITLAC(JDMATP) IF (JDMATD.NE.0) KIDMAT(2)=ITLAC4.ITLAC(JDMATD) C Restitution des IZA NDTAB=8 IF (IRETOU.NE.0) GOTO 9999 NBIZA =ILENA( 1) JS2B =ILENA( 2) JISA =ILENA( 3) JIST =ILENA( 4) JZDU =ILENA( 5) JZDP =ILENA( 6) JZFU =ILENA( 7) JZFP =ILENA( 8) DO 14 I=1,NBIZA NDTAB=1 IF (IRETOU.NE.0) GOTO 9999 NBVA=ILENA(1) SEGINI IZA NDTAB=NBVA IF (IRETOU.NE.0) GOTO 9999 SEGDES IZA ITLAC3.ITLAC(**)=IZA 14 CONTINUE IF (JS2B.NE.0) KIDMAT(3)=ITLAC3.ITLAC(JS2B) IF (JISA.NE.0) KIDMAT(5)=ITLAC3.ITLAC(JISA) IF (JIST.NE.0) KIDMAT(7)=ITLAC3.ITLAC(JIST) IF (JZDU.NE.0) KKMMT (4)=ITLAC3.ITLAC(JZDU) IF (JZDP.NE.0) KKMMT (5)=ITLAC3.ITLAC(JZDP) IF (JZFU.NE.0) KKMMT (6)=ITLAC3.ITLAC(JZFU) IF (JZFP.NE.0) KKMMT (7)=ITLAC3.ITLAC(JZFP) C Restauration des pointeurs des IZA dans IDMAT DO 17 I=1,NBIDMA IDMAT=ITLAC4.ITLAC(I) SEGACT IDMAT*MOD NBLK=IDESCL(/1) C IDIAG IV3=IDIAG IF (IV3.NE.0) IDIAG=ITLAC3.ITLAC(IV3) C IDESCL DO 171 J=1,NBLK IV3=IDESCL(J) IF (IV3.NE.0) IDESCL(J)=ITLAC3.ITLAC(IV3) 171 CONTINUE C IDESCU DO 172 J=1,NBLK IV3=IDESCU(J) IF (IV3.NE.0) IDESCU(J)=ITLAC3.ITLAC(IV3) 172 CONTINUE SEGDES IDMAT 17 CONTINUE SEGDES MATRIK ITLAC(**)=MATRIK SEGSUP ITLAC4 SEGSUP ITLAC3 SEGSUP ITLAC2 SEGSUP ITLAC1 1 CONTINUE SEGSUP ITBBM1 * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE WRITE(IOIMP,*) 'An error was detected in subroutine limtik' IRET=1 RETURN * * End of subroutine LIMTIK * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales