wrpil
C WRPIL SOURCE OF166741 24/11/14 21:15:29 12078 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) C======================================================================= C BUT : ECRITURE DES PILES SUR LE FICHIER IOSAU C APPELE PAR SAUV C APPELLE : WRPOIN NOMMEF SOPAPF ECDIFE ECDIFM ECDIFR SOSOLF C : ECDES ECDIFP JDANSI WRMAIL C ECRIT PAR FARVACQUE - REPRIS PAR LENA C C HISTORIQUE : ajout des objets de type MATRAK et MATRIK par C GOUNAND (15/07/98) C ajout des tableaux de noms d'inconnues primales et duales C LNOMDD, LNOMDU gounand (06/11/2014) C C======================================================================= C TABLEAU KCOLA: VOIR SIGNIFICATION DANS SOUS-PROGRAMME TYPFIL C======================================================================= -INC PPARAM -INC CCOPTIO -INC CCREEL -INC CCNOYAU -INC CCGEOME -INC CCFXDR -INC CCHAMP -INC SMELEME -INC SMBASEM -INC SMRIGID -INC SMCOORD -INC SMSTRUC -INC SMDEFOR -INC SMLREEL -INC SMLENTI -INC SMCHARG -INC SMEVOLL -INC SMELSTR -INC SMCLSTR -INC SMTEXTE -INC SMSUPER -INC SMVECTD -INC SMLMOTS -INC SMTABLE -INC SMLCHPO -INC SMINTE -INC TMCOLAC -INC SMLOBJE SEGMENT/ITBBE1/( ITABE1(NN)) SEGMENT/ITBBE2/( ITABE2(NN)) segment itbbc2 character*4 itabc2(nn) endsegment SEGMENT/ITBBM1/( ITABM1(NM)) segment itbbc1 character*4 itabc1(nm) endsegment SEGMENT/ITBBM2/( ITABM2(NM2)) segment itbbc3 character*4 itabc3(nm2) endsegment SEGMENT/ITBBM3/( ITABM3(NM2)) segment itbbc4 character*4 itabc4(nm2) endsegment SEGMENT/ITBBM4/( ITABM4(NM2)) segment itbbc5 character*4 itabc5(nm2) endsegment SEGMENT/ITABR1/( TABR1(L)*D) SEGMENT ITAMOT CHARACTER*(NN) ITAMO INTEGER ICOTA(NNN) ENDSEGMENT segment xmaaux real*8 reaux(laux,nelrig) endsegment CHARACTER*(8) ITYPE,ITYPO CHARACTER*512 CHA1 REAL*8 XRA LOGICAL LIRA DIMENSION ILENA(30) DIMENSION IPV(2) real*4 densi4 C====================================================================== WRITE (IOIMP,19) IONIVE 19 FORMAT (//,' NIVEAU DU FICHIER DE SAUVEGARDE',I3) * verif ouverture du fichier de sauvegarde if (iform.eq.2) then if (ierr.ne.0) return endif ITBBE1=0 ITBBE2=0 ITBBM1=0 ITBBM2=0 ITBBM3=0 ITBBM4=0 ITABR1=0 SEGACT ICOLAC NITLAC=ICOLA(/1) IF(IPSAUV.NE.0) GOTO 7654 C **** TITRE ******************************************** C C IQUOI=3 C CALL ECDES (IOSAU,IQUOI,IFORM) C CALL ECDIFM (IOSAU,18,TITREE,IFORM) C C **** INFORMATIONS GENERALES MAILLAGE ***************** C **** INFORMATIONS GENERALES A METTRE DANS LES COMMONS C IQUOI=4 IF(IFORM.EQ.1) WRITE (IOSAU,701)IONIVE, IERMAX,IDIM IF(IFORM.EQ.0) WRITE (IOSAU) IONIVE, IERMAX,IDIM if(iform.eq.2) then ios=IXDRINT( ixdrw, ionive ) ios=IXDRINT( ixdrw, iermax ) ios=IXDRINT( ixdrw, idim ) dimatt = dimatt + 4 endif 701 FORMAT(' NIVEAU',I4,' NIVEAU ERREUR',I4,' DIMENSION',I4) IF(IONIVE .GE. 23)THEN C Ecriture de la longueur des Chaines de CARACTERES des composantes ('MCHAML','CHPOINT','LISTMOTS',etc.) C Attention LOCOMP est un PARAMETER on ne peut pas l'envoyer a IXDRINT qui le reecrit en sortie pour controle LCOMWR=MIN(LOCOMP,LOCHAI) IF (IFORM.EQ.1) WRITE(IOSAU,700) LCOMWR IF (IFORM.EQ.0) WRITE(IOSAU) LCOMWR if (iform.eq.2) then ios =IXDRINT( ixdrw, LCOMWR ) dimatt =dimatt + 2 endif 700 FORMAT(' TAILLE DES COMPOSANTES',I4) ELSE LCOMWR=-1 ENDIF C Ecriture de la DENSITE IF (IFORM.EQ.1)WRITE(IOSAU,702) DENSIT IF (IFORM.EQ.0)WRITE(IOSAU) DENSIT if (iform.eq.2) then densi4 = densit ios = IXDRREAL( ixdrw, densi4 ) dimatt = dimatt + 2 endif 702 FORMAT(' DENSITE',E12.5) C C ***** INFORMATIONS GENERALES CASTEM2000 ***************** C IQUOI=7 N=7 IF(IONIVE.GE.6) N=8 IF(IFORM.EQ.1)WRITE(IOSAU,703) N IF(IFORM.EQ.0)WRITE(IOSAU) N if (iform.eq.2) then ios = IXDRINT( ixdrw, n) dimatt = dimatt + 2 endif 703 FORMAT(' NOMBRE INFO CASTEM2000',I4) C A partir du niveau 20, NSDPGE n'est plus utile... izzz = 0 IF (IFORM.EQ.1) THEN WRITE(IOSAU,704) IFOUR,NIFOUR,IFOMOD,ILGNI,IIMPI,IOSPI,ISOTYP IF (IONIVE.GE.6.AND.IONIVE.LE.19) WRITE(IOSAU,706) izzz IF (IONIVE.GE.20) WRITE(IOSAU,707) izzz ENDIF IF (IFORM.EQ.0) WRITE(IOSAU) IFOUR,NIFOUR,IFOMOD,ILGNI,IIMPI, & IOSPI,ISOTYP,izzz if (iform.eq.2) then ios = IXDRINT( ixdrw, ifour ) ios = IXDRINT( ixdrw, nifour) ios = IXDRINT( ixdrw, ifomod) ios = IXDRINT( ixdrw, ILGNI ) ios = IXDRINT( ixdrw, iimpi ) ios = IXDRINT( ixdrw, iospi ) ios = IXDRINT( ixdrw, isotyp) ios = IXDRINT( ixdrw, izzz ) dimatt = dimatt + 9 endif 704 FORMAT(' IFOUR',I4,' NIFOUR',I4,' IFOMOD',I4,' ILGNI',I4, * ' IIMPI',I4,' IOSPI' ,I4,' ISOTYP',I4) 706 FORMAT(' NSDPGE',I6) 707 FORMAT(' ------',I6) 7654 CONTINUE C C ****** Noms des composantes primales et duales C repris de l'écriture des LISTMOTS C IF (IONIVE.GE.19) THEN IQUOI=8 * Primal ILENA(1)=LEN(NOMDD(1)) ILENA(2)=LNOMDD ITOTO=2 NNA=ILENA(1) NNN = 0 NN = ILENA(1)*ILENA(2) SEGINI ITAMOT DO IMM=1,ILENA(2) ITAMO((IMM-1)*NNA+1:IMM*NNA)=NOMDD(IMM) ENDDO SEGSUP ITAMOT * Dual ILENA(1)=LEN(NOMDU(1)) ILENA(2)=LNOMDU ITOTO=2 NNA=ILENA(1) NNN = 0 NN = ILENA(1)*ILENA(2) SEGINI ITAMOT DO IMM=1,ILENA(2) ITAMO((IMM-1)*NNA+1:IMM*NNA)=NOMDU(IMM) ENDDO SEGSUP ITAMOT ENDIF C C **** COORDONNEES + MELEME : APPEL DE MAILLA ******************** C C IF(IMAX.NE.0) CALL WRPOIN (IMAX,IFORM,ICOLAC) C C C **** BOUCLE SUR LES FILES DE SORTIE IFILE=1,NITLAC ************* C DO 1099 IFILE=1,NITLAC *pv on se sort pas le mmatri if (ifile.eq.16) goto 1099 *tc on ne sort pas les points * if(ifile.eq.32) GOTO 1099 ITLACC=KCOLA(IFILE) IMAX1=ITLAC(/1) IF(IMAX1.EQ.0) GOTO 1099 IDEB=1 IF(IPSAUV.NE.0) IDEB=KCOLAC(IFILE)+1 IF(IMAX1.LT.IDEB.AND.IFILE.NE.32) GOTO 1099 ITYPE=' ' C IF (IFILE.NE.8.AND.IFILE.NE.36.AND. ISILEN.NE.1) $ WRITE(IOIMP,801)IFILE,IMAX1,ITYPE 801 FORMAT(/,' LA PILE NUMERO',I4,' CONTIENT',I8,' OBJET(S) ',A8) C IP1=ICOLA(IFILE) IF (IFILE.NE.8.AND.IFILE.NE.36) GOTO(6001,6002,6003,6004,6005,6006,6007,6008,6009,6010,6011, 1 6012,6013,6014,6015,6016,6017,6018,6019,6020,6021,6022, 1 6023,6024,6025,6026,6027,6028,6029,6030,6031,6032, 1 6033,6034,6035,6036,6037,6038,6039,6040,6041, 1 6042,6043,6010,6045,6010,6010,6048,6049,6050 ),IFILE 1001 MOTERR(1:8)=ITYPE GOTO 1099 C **************************MELEME ********************************* 6001 CONTINUE DO 1100 IEL=IDEB,IMAX1 MELEME =ITLAC(IEL) 1100 CONTINUE GOTO 1098 C **************************CHPOINT********************************* 6002 CONTINUE GOTO 1098 C ***********************MRIGID************************************* 6003 CONTINUE DO 1202 IEL=IDEB,IMAX1 MRIGID=ITLAC(IEL) SEGACT MRIGID*mod NRIGEL=IRIGEL(/2) NRIGE =IRIGEL(/1) NBGEOR=0 IF(IMGEO1.NE.0) THEN IMGEOD=IMGEO1 SEGACT IMGEOD NBGEOR=IMGEOR(/1) ENDIF *pv IF(ICHOLE.GE.0) THEN *pv ICHOLX=0 *pv ELSE *pv ICHOLX=-ICHOLE *pv ENDIF ICHOLX=0 ILENA(1)=NRIGEL ILENA(2)=ICHOLX ILENA(3)=NBGEOR ILENA(4)=NRIGE ILENA(5)=IFORIG ITOTO=5 ITOTO=2 if (ichar(mtymat(1:1)).eq.0) mtymat=' ' READ (MTYMAT,FMT='(2A4)') IPV if (iform.eq.2) then ios=IXDRSTRING( ixdrw, mtymat(1:8)) dimatt = dimatt + 2 endif NN=NRIGE*NRIGEL+NBGEOR +NRIGEL SEGINI ITBBE1 NNN=0 DO 1203 IR=1,NRIGEL DESCR=IRIGEL(3,IR) SEGACT DESCR xmatri=irigel(4,ir) if (xmatri.gt.0) then segact xmatri nelrig=re(/3) endif NLIGRP=NOELEP(/1) NLIGRD=NOELED(/1) II=NRIGE*(IR-1) DO 1204 NR=1,NRIGE IRR=II+NR ITABE1(IRR)=IRIGEL(NR,IR) 1204 CONTINUE ITABE1(II+3)=NLIGRP if (ionive.le.19) ITABE1(II+4)=nelrig ITABE1(NRIGE*NRIGEL + NBGEOR + IR)=NLIGRD NNN=NNN+NLIGRP + NLIGRD SEGDES DESCR 1203 CONTINUE IF(NBGEOR.NE.0) THEN DO 1206 I=1,NBGEOR IVA=IMGEOR(I) ITABE1(NRIGE*NRIGEL+I)=IVA 1206 CONTINUE SEGDES IMGEOD ENDIF NN=NNN SEGADJ ITBBE1 NM=NNN SEGINI ITBBM1,itbbc1 J=0 DO 1208 IR=1,NRIGEL DESCR=IRIGEL(3,IR) SEGACT DESCR NLIGRP=NOELEP(/1) NLIGRD=NOELED(/1) DO 1205 I=1,NLIGRP J=J+1 ITABE1(J)=NOELEP(I) READ (LISINC(I),FMT='(A4)') ITABM1(J) itabc1(j)=lisinc(i) 1205 CONTINUE DO 1209 I=1,NLIGRD J=J+1 ITABE1(J)=NOELED(I) READ (LISDUA(I),FMT='(A4)') ITABM1(J ) itabc1(j)=lisdua(i) 1209 CONTINUE SEGDES DESCR 1208 CONTINUE if (iform.eq.2) then ios=IXDRSTRING( ixdrw, itabc1(1)(1:nm*4)) dimatt = dimatt + nm endif SEGSUP ITBBE1,ITBBM1,itbbc1 if (ionive.le.19) then do 1210 ir=1,nrigel xmatri=irigel(4,ir) segact xmatri lval=re(/1)*re(/2)*re(/3) segdes xmatri 1210 continue endif SEGDES MRIGID 1202 CONTINUE GOTO 1098 C *************************** ******************************* 6004 CONTINUE GOTO 1098 C *********************** ********************************* 6005 CONTINUE GOTO 1098 C ********************************BLOQ STRUC 6006 CONTINUE DO 60 IEL=IDEB,IMAX1 MCLSTR=ITLAC(IEL) SEGACT MCLSTR N=ISOSTR(/1) ILENA(1)=N ITOTO=1 SEGDES MCLSTR 60 CONTINUE GOTO 1098 C ********************************ELEM STRUC 6007 CONTINUE DO 70 IEL=IDEB,IMAX1 MELSTR=ITLAC(IEL) SEGACT MELSTR N=ISOSTU(/1) ILENA(1)=N ITOTO=1 SEGDES MELSTR 70 CONTINUE GOTO 1098 C ********************MSOLUT************************************* 6008 CONTINUE C---- TRAITE PLUS LOIN EN FIN DE SP ------------------------------- GOTO 1099 C ********************MSTRUC************************************* 6009 CONTINUE DO 1900 IEL=IDEB,IMAX1 MSTRUC=ITLAC(IEL) SEGACT MSTRUC NS=LISTRU(/1) ILENA(1)=NS ITOTO=1 SEGDES MSTRUC 1900 CONTINUE GOTO 1098 C ******************************* MTABLE ************************** 6010 CONTINUE NTOTO=6 if(meffac.ne.0) segact meffac DO 710 IEL=IDEB,IMAX1 MMM=0 MTABLE=ITLAC(IEL) IF (MTABLE.EQ.0) GOTO 109 SEGACT MTABLE L6=MLOTAB L=L6 NN=0 SEGINI ITBBE1 IF (L.EQ.0) GOTO 109 DO 711 K=1,L ITYPE=MTABTI(K) JI=0 * IF(ITYPE.EQ.'METHODE ') ITYPE='MOT ' IF(JI.LE.0) GOTO 711 ITYPE=MTABTV(K) J=0 IF(J.LE.0) GOTO 711 * on ne sauve pas les fantomes si on n'est pas en increment if (ipsauv.eq.0.and.j.eq.47) then segact mtable*mod MTABTV(K)='ANNULE' segact mtable goto 711 endif IVA=MTABII(K) ITABE1(**)=JI ITABE1(**)=IVA IVA=MTABIV(K) * on remplace les procedures par des entiers valant ?. if( j.eq.36) then j = 26 iva= 1 endif if(j.eq.47) then itype = tyeffa(iva) j=0 iva= neffac(iva) endif ITABE1(**)=J ITABE1(**)=IVA 711 CONTINUE MMM=ITABE1(/1) 109 ITOTO=1 ILENA(1)=MMM IF (MTABLE.EQ.0) GOTO 710 SEGSUP ITBBE1 713 SEGDES MTABLE 710 CONTINUE GOTO 1098 715 CONTINUE MOTERR(1:8)=ITYPE SEGDES MTABLE SEGSUP ITBBE1 GOTO 1099 C ***************************** ***************************** 6011 CONTINUE GOTO 1098 C *************************MSOSTU******************************* 6012 CONTINUE NN=3 SEGINI ITBBE1 DO 2201 IEL=IDEB,IMAX1 MSOSTU=ITLAC(IEL) IF(MSOSTU.EQ.0) GOTO 2201 SEGACT MSOSTU NS=ISCHAM(/1) ITOTO = 1 ILENA(1)=NS ITOTO=3+NS NN=ITOTO SEGADJ ITBBE1 ITABE1(1)=ITYSOU ITABE1(2)=ISRAID ITABE1(3)=ISMASS SEGDES MSOSTU 2201 CONTINUE SEGSUP ITBBE1 GOTO 1098 C ***************************** IMATRI ***************************** 6013 CONTINUE DO 2300 IEL=IDEB,IMAX1 xmatri=itlac(iel) segact xmatri lval=re(/1)*re(/2)*re(/3) ilena(1)=re(/1) ilena(2)=re(/2) ilena(3)=re(/3) ilena(4)=symre *** write (6,*) ' imatri ',iel,re(/1),re(/2),re(/3),symre itoto=4 if (symre.eq.0.and.ilena(1).eq.ilena(2)) then * cas symetrique on ne sauve que la partie triangulaire laux = ilena(1)*(ilena(1)+1)/2 nelrig=ilena(3) segini xmaaux do k=1,nelrig ip=0 do j=1,ilena(2) do i=1,j reaux(ip+i,k)=re(i,j,k) * Les raideurs calculees avec hook ne sont pas tres symetriques if (abs(re(i,j,k)-re(j,i,k)).gt. > (abs(re(i,j,k))+abs(re(j,i,k)))*xzprec*1d4+xpetit) then ** write(6,*) re(i,j,k),re(j,i,k) endif enddo ip=ip+j enddo enddo segsup xmaaux else * cas general on sauve tout endif segdes xmatri 2300 CONTINUE GOTO 1098 C ***************************** MJONCT ***************************** 6014 CONTINUE GOTO 1098 C ***************************** MATTAC ***************************** 6015 CONTINUE GOTO 1098 C ***************************** MMATRI ***************************** 6016 CONTINUE GOTO 1098 C *********************MDEFOR*********************************** 6017 CONTINUE DO 2700 IEL=IDEB,IMAX1 MDEFOR=ITLAC(IEL) SEGACT MDEFOR NDEF=IELDEF(/1) ILENA(1)= NDEF ITOTO = 1 NN=7*NDEF SEGINI ITBBE1 SEGSUP ITBBE1 C SEGDES MDEFOR 2700 CONTINUE GOTO 1098 C ***************************MLREEL****************************** 6018 CONTINUE DO 2800 IEL=IDEB,IMAX1 MLREEL=ITLAC(IEL) SEGACT MLREEL ILENA(1)=L ITOTO=1 SEGDES MLREEL 2800 CONTINUE GOTO 1098 C *****************************MLENTI*************************** 6019 CONTINUE DO 2900 IEL=IDEB,IMAX1 MLENTI=ITLAC(IEL) SEGACT MLENTI L=LECT(/1) ILENA(1)=L ITOTO=1 SEGDES MLENTI 2900 CONTINUE GOTO 1098 C ****************************MCHARG***************************** 6020 CONTINUE NN=0 NM=0 NM2=0 SEGINI ITBBM1,itbbc1 SEGINI ITBBM2,itbbc3 SEGINI ITBBM3,itbbc4 SEGINI ITBBM4,itbbc5 SEGINI ITBBE1 SEGINI ITBBE2,itbbc2 DO 3000 IEL=IDEB,IMAX1 IF(IONIVE.LE.6) THEN MCHARG=ITLAC(IEL) SEGACT MCHARG*mod N=KCHARG(/1) ILENA(1)=N ITOTO=1 NM=2*N SEGADJ ITBBM1,itbbc1 NN=3*N SEGADJ ITBBE1 DO 3001 I=1,N ICHARG=KCHARG(I) SEGACT ICHARG*mod IF(CHATYP.NE.'CHPOINT ') THEN *---- cas du nouveau chargement . Incompatible avec niveau 6 ---- GOTO 1099 ENDIF I3=3*I if (ichar(chanat(i)(1:1)).eq.0) chanat(i)=' ' itabc1(i2-1)=chanat(i)(1:4) ITABE1(I3-2)=ICHPO1 ITABE1(I3-1)=ICHPO2 ITABE1(I3 )=ICHPO3 SEGDES ICHARG 3001 CONTINUE if (iform.eq.2) then ios=IXDRSTRING( ixdrw, itabc1(1)(1:nm*4)) dimatt = dimatt + nm endif SEGDES MCHARG ELSE IF(IONIVE.GE.7.AND.IONIVE.LE.10) THEN MCHARG=ITLAC(IEL) SEGACT MCHARG*mod N=KCHARG(/1) ILENA(1)=N ITOTO=1 c CALL ECDIFM(IOSAU,NM,CHANAT,IFORM) c CALL ECDIFM(IOSAU,N ,CHANOM,IFORM) NN=2*N SEGADJ ITBBE2,itbbc2 NM=2*N SEGADJ ITBBM1,itbbc1 NM2=N SEGADJ ITBBM2,itbbc3 NN=3*N SEGADJ ITBBE1 DO 3002 I=1,N ICHARG=KCHARG(I) SEGACT ICHARG*mod I3=3*I if (ichar(chatyp(1:1)).eq.0) chatyp=' ' itabc1(i2-1)=chatyp(1:4) if (ichar(chanat(i)(1:1)).eq.0) chanat(i)=' ' itabc2(i2-1)=chanat(i)(1:4) if (ichar(chanom(i)(1:1)).eq.0) chanom(i)=' ' READ (CHANOM(I),FMT='(1A4)') ITABM2(I) itabc3(i)=chanom(i) ITABE1(I3-2)=ICHPO1 ITABE1(I3-1)=ICHPO2 ITABE1(I3)=ICHPO3 SEGDES ICHARG 3002 CONTINUE if (iform.eq.2)ios=IXDRSTRING( ixdrw, itabc2(1)(1:4*2*n)) if (iform.eq.2) ios=IXDRSTRING( ixdrw, itabc3(1)(1:4*n)) if (iform.eq.2) ios=IXDRSTRING( ixdrw, itabc1(1)(1:4*nm)) dimatt = dimatt + (3*n) +nm SEGDES MCHARG ELSE MCHARG=ITLAC(IEL) SEGACT MCHARG*mod N=KCHARG(/1) ILENA(1)=N ITOTO=1 NN=2*N SEGADJ ITBBE2,itbbc2 NM=2*N SEGADJ ITBBM1,itbbc1 NM2=N SEGADJ ITBBM2,itbbc3 SEGADJ ITBBM3,itbbc4 SEGADJ ITBBM4,itbbc5 NN=7*N SEGADJ ITBBE1 DO 3003 I=1,N ICHARG=KCHARG(I) SEGACT ICHARG*mod I3=7*I if (ichar(chatyp(1:1)).eq.0) chatyp=' ' itabc1(i2-1)=chatyp(1:4) if (ichar(chanat(i)(1:1)).eq.0) chanat(i)=' ' itabc2(i2-1)=chanat(i)(1:4) if (ichar(chanom(i)(1:1)).eq.0) chanom(i)=' ' READ (CHANOM(I),FMT='(1A4)') ITABM2(I) itabc3(i)=chanom(i) if (ichar(chamob(i)(1:1)).eq.0) chamob(i)=' ' READ (CHAMOB(I),FMT='(1A4)') ITABM3(I) itabc4(i)=chamob(i) if (ichar(chalie(i)(1:1)).eq.0) chalie(i)=' ' READ (CHALIE(I),FMT='(1A4)') ITABM4(I) itabc5(i)=chalie(i) ITABE1(I3-6)=ICHPO1 ITABE1(I3-5)=ICHPO2 ITABE1(I3-4)=ICHPO3 ITABE1(I3-3)=ICHPO4 ITABE1(I3-2)=ICHPO5 ITABE1(I3-1)=ICHPO6 ITABE1(I3) =ICHPO7 SEGDES ICHARG 3003 CONTINUE if (iform.eq.2)ios=IXDRSTRING( ixdrw, itabc2(1)(1:4*2*n)) if (iform.eq.2) ios=IXDRSTRING( ixdrw,itabc3(1)(1:4*n)) if (iform.eq.2) ios=IXDRSTRING( ixdrw,itabc4(1)(1:4*n)) if (iform.eq.2) ios=IXDRSTRING( ixdrw,itabc5(1)(1:4*n)) if (iform.eq.2) ios=IXDRSTRING( ixdrw,itabc1(1)(1:4*nm)) dimatt = dimatt + (5*n) +nm SEGDES MCHARG ENDIF 3000 CONTINUE SEGSUP ITBBE1,ITBBM1,itbbc1,ITBBE2,itbbc2,ITBBM2,itbbc3, > ITBBM3,itbbc4,ITBBM4,itbbc5 GOTO 1098 C **************************** ************************** 6021 CONTINUE GOTO 1098 C *****************************MEVOLL*************************** 6022 CONTINUE NN=0 NM=0 NM2=20 SEGINI ITBBM2,itbbc3 SEGINI ITBBE2,itbbc2 SEGINI ITBBE1,ITBBM1,itbbc1 LDECA=7 IF(IONIVE.GE.3) LDECA=11 LDECA2=18 DO 3200 IEL=IDEB,IMAX1 MEVOLL=ITLAC(IEL) SEGACT MEVOLL*mod N=IEVOLL(/1) ILENA(1)=N ITOTO=1 NM2=20 SEGADJ ITBBM2,itbbc3 READ (ITYEVO,FMT='(2A4)') ITABM2(1),ITABM2(2) itabc3(1)=ityevo(1:4) itabc3(2)=ityevo(5:8) if (ichar(ievtex(1:1)).eq.0) ievtex=' ' READ (IEVTEX,FMT='(18A4)') (ITABM2(2+JPV),JPV=1,18) do jpv=1,18 itabc3(2+jpv)=ievtex(1+(jpv-1)*4:jpv*4) enddo if (iform.eq.2) then ios=IXDRSTRING( ixdrw,itabc3(1)(1:4*nm2)) dimatt = dimatt + nm2 endif IF (IONIVE.GE.25) THEN NN=6*N ELSE NN=3*N ENDIF SEGADJ ITBBE1 NM=LDECA*N SEGADJ ITBBM1,itbbc1 NM2=LDECA2*N SEGADJ ITBBM2,itbbc3 C LOOP SUR LES KEVOL- DO 3201 IN=1,N KEVOLL=IEVOLL(IN) SEGACT KEVOLL*mod IF (IONIVE.GE.25) THEN I4=6*IN ITABE1(I4-5)= IPROGX ITABE1(I4-4)= IPROGY ITABE1(I4-3)= NUMEVX ITABE1(I4-2)= LSTYL ITABE1(I4-1)= MMARQ ITABE1(I4 )= KTAIL ELSE I4=3*IN ITABE1(I4-2)= IPROGX ITABE1(I4-1)= IPROGY ITABE1(I4 )= NUMEVX ENDIF I7=LDECA*(IN-1) I8=LDECA2*(IN-1) if (ichar(nomevx(1:1)).eq.0) nomevx=' ' READ (NOMEVX,FMT='(3A4)') (ITABM1(I7+I),I=1,3) itabc1(i7+1)=nomevx(1:4) itabc1(i7+2)=nomevx(5:8) itabc1(i7+3)=nomevx(9:12) if (ichar(nomevy(1:1)).eq.0) nomevy=' ' READ (NOMEVY,FMT='(3A4)') (ITABM1(I7+I+3),I=1,3) itabc1(i7+3+1)=nomevy(1:4) itabc1(i7+3+2)=nomevy(5:8) itabc1(i7+3+3)=nomevy(9:12) if (ichar(numevy(1:1)).eq.0) numevy=' ' READ (NUMEVY,FMT='(A4)') ITABM1(I7 +7) itabc1(i7+7)=numevy IF(IONIVE.GE.3) THEN if (ichar(typx(1:1)).eq.0) typx=' ' READ (TYPX,FMT='(2A4)') (ITABM1(I7+7+I),I=1,2) itabc1(i7+7+1)=typx(1:4) itabc1(i7+7+2)=typx(5:8) if (ichar(typy(1:1)).eq.0) typy=' ' READ (TYPY,FMT='(2A4)') (ITABM1(I7+9+I),I=1,2) itabc1(i7+9+1)=typy(1:4) itabc1(i7+9+2)=typy(5:8) if (ichar(kevtex(1:1)).eq.0) kevtex=' ' READ(KEVTEX,FMT='(18A4)')(ITABM2(I8+JPV),JPV=1,18) do jpv=1,18 itabc3(i8+jpv)=kevtex(1+(jpv-1)*4:4*jpv) enddo ENDIF SEGDES KEVOLL 3201 CONTINUE SEGDES MEVOLL IF (IONIVE.GE.25) THEN NN=6*N ELSE NN=3*N ENDIF NN=LDECA*N if (iform.eq.2) then ios=IXDRSTRING( ixdrw,itabc1(1)(1:4*nn)) dimatt = dimatt + nn endif IF(IONIVE.GE.3) then if (iform.eq.2) then ios=IXDRSTRING( ixdrw,itabc3(1)(1:4*nm2)) dimatt = dimatt + nm2 endif endif 3200 CONTINUE SEGSUP ITBBM2,itbbc3 SEGSUP ITBBE2,itbbc2 SEGSUP ITBBE1,ITBBM1,itbbc1 GOTO 1098 C **********************SUPERELE************************************ 6023 CONTINUE NTOTO=6 ITOTO=1 DO 230 IEL=IDEB,IMAX1 MSUPER=ITLAC(IEL) SEGACT MSUPER ILENA(1)=NTOTO ILENA(1)=MRIGTO ILENA(2)=MSUPEL ILENA(3)=MSURAI ILENA(4)=MBLOQU ILENA(5)=MSUMAS C *** On ecrit MCROUT pour memoire mais il ne sera pas sauve (MMATRI) ILENA(6)=MCROUT SEGDES MSUPER 230 CONTINUE GOTO 1098 C ************************* LOGIQUE *************************** 6024 CONTINUE ITOTO=1 IVLON=IMAX1-IDEB+1 ILENA(1)=IVLON NN=IVLON SEGINI ITBBE1 DO 240 I=1,IVLON IVA=ITLAC(I+IDEB-1) IF(LIRA)ITOTO=1 IF(.NOT.LIRA)ITOTO=0 ITABE1(I)=ITOTO 240 CONTINUE SEGSUP ITBBE1 GOTO 1098 C ************************* FLOTTANT *************************** 6025 CONTINUE ITOTO=1 IVLON=IMAX1-IDEB+1 ILENA(1)=IVLON L=IVLON SEGINI ITABR1 DO 250 I=1,IVLON IVA=ITLAC(I+IDEB-1) TABR1(I)=XRA 250 CONTINUE SEGSUP ITABR1 GOTO 1098 C **************************** ENTIER*************************** 6026 CONTINUE IVLON=IMAX1-IDEB+1 ILENA(1)=IVLON ITOTO=1 NN=IVLON SEGINI ITBBE1 * write (6,*) ' wrpil ideb ivlon itlacc ',ideb,ivlon,itlacc DO 260 I=1,IVLON IVA=ITLAC(I+IDEB-1) ITABE1(I)=IVALIN 260 CONTINUE * write (6,*) ' wrpil entiers ',(itabe1(i),i=1,ivlon) GOTO 1098 C **************************** MOT *************************** 6027 CONTINUE NN=0 NNN=0 SEGINI ITAMOT IVLON=IMAX1-IDEB+1 DO 270 I=1,IVLON IVA=ITLAC(I+IDEB-1) C CHA1 EST UNE CHAINE DE 512 CARACTERES NN1=NN NN=NN+IVALIN NNN=NNN+1 SEGADJ ITAMOT ICOTA(NNN)=NN ITAMO(1+NN1:IVALIN+NN1)=CHA1(1:IVALIN) 270 CONTINUE ILENA(1)=NN ITOTO=2 ILENA(2)=IVLON SEGSUP ITAMOT GOTO 1098 C ****************************TEXTE ************************* 6028 CONTINUE DO 2928 IEL=IDEB,IMAX1 MTEXTE=ITLAC(IEL) SEGACT MTEXTE CCCC L =(NCART+3)/4 L=NCART ITOTO=1 ILENA(1)=L SEGDES MTEXTE 2928 CONTINUE GOTO 1098 C ****************************LISTMOTS ************************* 6029 CONTINUE DO 2929 IEL=IDEB,IMAX1 MLMOTS=ITLAC(IEL) SEGACT MLMOTS ITOTO=2 NNA=ILENA(1) NNN = 0 NN = ILENA(1)*ILENA(2) SEGINI ITAMOT DO 2930 IMM=1,ILENA(2) 2930 CONTINUE SEGDES MLMOTS SEGSUP ITAMOT 2929 CONTINUE GOTO 1098 C **************************** VECTEUR************************** 6030 CONTINUE DO 300 IEL=IDEB,IMAX1 MVECTE =ITLAC(IEL) 300 CONTINUE GOTO 1098 C ************************* VECTD *************************** 6031 CONTINUE DO 310 IEL=IDEB,IMAX1 MVECTD=ITLAC(IEL) SEGACT MVECTD INC=VECTBB(/1) ILENA(1)=INC ITOTO=1 SEGDES MVECTD 310 CONTINUE GOTO 1098 C ************************* POINT *************************** 6032 CONTINUE * on sauve tout le itlac car numerotation a pu changer ILENA(1)=IMAX1 ITOTO=1 GOTO 1098 C ************************* CONFIG *************************** 6033 CONTINUE GOTO 1098 C ******************* MLCHPO ************************************ 6034 CONTINUE DO 340 IEL=IDEB,IMAX1 MLCHPO=ITLAC(IEL) SEGACT MLCHPO N1=ICHPOI(/1) ILENA(1)=N1 ITOTO=1 SEGDES MLCHPO 340 CONTINUE GOTO 1098 C ****************************MBASEM***************************** 6035 CONTINUE NN=0 DO 3500 IEL=IDEB,IMAX1 MBASEM=ITLAC(IEL) SEGACT MBASEM N=LISBAS(/1) ILENA(1)=N ITOTO=1 ITOTO=1 DO 3501 I=1,N MSOBAS=LISBAS(I) SEGACT MSOBAS NIBST=IBSTRM(/1) ILENA(1)=NIBST SEGDES MSOBAS 3501 CONTINUE SEGDES MBASEM 3500 CONTINUE GOTO 1098 C **********************PROCEDUR************************************ 6036 CONTINUE GOTO 1098 C **********************BLOC**************************************** 6037 CONTINUE GOTO 1098 C *********************** MODELE MMODEL **************************** 6038 CONTINUE GOTO 1098 C *********************** MCHAML *********************************** 6039 CONTINUE GOTO 1098 C ************************** MINTE ******************************* 6040 CONTINUE DO 2840 IEL=IDEB,IMAX1 MINTE=ITLAC(IEL) SEGACT MINTE NBPGAU=SHPTOT(/3) ILENA(2)= NBPGAU ITOTO=2 SEGINI ITABR1 I=0 DO 2841 IC=1,NBPGAU I=I+1 TABR1(I)=POIGAU(IC) I=I+1 TABR1(I)=QSIGAU(IC) I=I+1 TABR1(I)=ETAGAU(IC) I=I+1 TABR1(I)=DZEGAU(IC) DO 2843 IA=1,6 I=I+1 TABR1(I)=SHPTOT(IA,IB,IC) 2843 CONTINUE 2842 CONTINUE 2841 CONTINUE SEGSUP ITABR1 SEGDES MINTE 2840 CONTINUE GOTO 1098 C *********************** NUAGE *************************** 6041 CONTINUE GOTO 1098 C ********************** MATRAK ********************************* 6042 CONTINUE GOTO 1098 C ********************** MATRIK ********************************* 6043 CONTINUE GOTO 1098 C *****************************METHODE ********************* 6045 CONTINUE IVLON=IMAX1-IDEB+1 C APPELE PAR WRPI ILENA(1)=IVLON ITOTO=1 GOTO 1098 C **************************************************************** C *********************** IELVAL *********************************** 6048 CONTINUE if (ionive.ge.20) GOTO 1098 C *********************** ANNOTATI ********************************* 6049 CONTINUE GOTO 1098 C *********************** LISTOBJE********************************** 6050 CONTINUE DO 550 IEL=IDEB,IMAX1 MLOBJE=ITLAC(IEL) IF (MLOBJE.EQ.0) GOTO 550 SEGACT, MLOBJE N1=LISOBJ(/1) ITYPO = TYPOBJ C write(6,*) '**** ITYPO=',ITYPO ILENA(1)=N1 ITOTO=1 NM2 = 2 SEGINI, ITBBM2,itbbc3 READ (ITYPO,FMT='(2A4)') ITABM2(1),ITABM2(2) itabc3(1)=TYPOBJ(1:4) itabc3(2)=TYPOBJ(5:8) C write(6,*) '**** ITABM2=',ITABM2(1),ITABM2(2) if (iform.eq.2) then ios=IXDRSTRING( ixdrw,itabc3(1)(1:4*nm2)) dimatt = dimatt + nm2 endif C write(6,*) '**** LISOBJ(1)=',LISOBJ(1) SEGDES, MLOBJE 550 CONTINUE GOTO 1098 C ****************************************************************** 1098 CONTINUE C ********************** Fin de boucle IFILE ********************** 1099 CONTINUE C C **********************MSOLUT: TRAITE EN DERNIER***************** C IFILE=8 ITLACC=KCOLA(IFILE) IMAX1=ITLAC(/1) IDEB=1 IF(IPSAUV.NE.0) IDEB=KCOLAC(IFILE)+1 IF(IMAX1.LT.IDEB) GOTO 2099 ITYPE=' ' WRITE(IOIMP,801)IFILE,IMAX1,ITYPE IP1=ICOLA(IFILE) ITLACC=KCOLA(IFILE) C DO 1800 IEL=IDEB,IMAX1 MSOLUT=ITLAC(IEL) C* IF (IONIVE.LE.2) CALL SOSOLF(ICOLAC,MSOLUT,IFORM) 1800 CONTINUE C ***************************************************************** 2099 CONTINUE C IQUOI=5 if (iform.eq.2) then dimatt = dimatt + 18 else * sur certaines machines, la fermeture du fichier pouvait poser * probleme (buffer non ecrit avant de sortir de castem) CALL FLUSH(IOSAU) endif MOTERR=LABEL 772 FORMAT(A72) SEGDES ICOLAC RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales