excit1
C EXCIT1 SOURCE MB234859 23/12/08 21:15:03 11806 & ipt8,ITYP) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) * modif : declarer inactifs les blocages redondants s'ils sont dans * ipt8. Si celui-ci est non vide, on enleve les blocages inclus * dedans et on s'en tient la. -INC PPARAM -INC CCOPTIO -INC CCREEL -INC CCGEOME -INC SMRIGID -INC SMCHPOI -INC SMELEME -INC SMCOORD -INC SMLENTI save icntr,icnts DATA ICNTR/0/ DATA ICNTS/0/ SEGMENT SNOMIN CHARACTER*(LOCOMP) NOMIN(0) ENDSEGMENT SEGMENT ISOU(IRIGEL(/2)) SEGMENT ICPR(nbpts) SEGMENT JCPR(nbpts) SEGMENT KCPR(nbpts) SEGMENT YCPR(nbpts) SEGMENT ITRAV real*8 DVAL(NIN,NPO),DIN(NPO) integer IEXI(NIN,NPO) endsegment SEGMENT IPASS(ITEMP) segment trav1 integer iav(nbo) real*8 viol(nbo) endsegment C C *** ICPR REFERENCIE DVAL C *** NOMIN CONTIENT LES INCONNUES REFERENCES PAR LES RELATIONS C *** DVAL CONTIENT LE RESULTAT DES DEPLACEMENTS ET DES LAMBDA C *** DIN CONTIENT LES VALEURS INITIALES DU SECOND MEMBRE C logical indic,iclred C idimp1 = idim+1 segact,mcoord C XMCRIT = xpetit/xzprec YMCRIT = xpetit/xzprec icpr=0 jcpr=0 ycpr=0 kcpr=0 itrav=0 * on a un maillage de relation(s) a enlever if (ipt8.ne.0) then segact,ipt8 if (ipt8.itypel.ne.1) then return endif if (ipt8.num(/2).ne.0) then segini,kcpr do i=1,ipt8.num(/2) kcpr(ipt8.num(1,i))=1 enddo endif endif * * mchpo3 est le champ des LX sorti de excfro jcpr donne existence * et ycpr donne valeur * write (ioimp,*) ' mchpo3 dans excit1 ',mchpo3 if (mchpo3.ne.0) then segini,jcpr,ycpr segact,mchpo3 do 100 isoupo=1,mchpo3.ipchp(/1) msoupo=mchpo3.ipchp(isoupo) segact,msoupo do 110 ic=1,nocomp(/2) if (nocomp(ic).eq.'LX ') goto 120 110 continue goto 140 120 continue ipt2=igeoc mpoval=ipoval segact,ipt2,mpoval do 130 iel=1,ipt2.num(/2) impt=ipt2.num(1,iel) jcpr(impt)=1 ycpr(impt)=ycpr(impt)+vpocha(iel,ic) 130 continue 140 continue 100 continue endif C C** INITIALISATION DE NOMIN ET ICPR icpr repere les points appartenant C** a la matrice de blocage mini maxi ou ? C SEGINI,SNOMIN,ICPR NOMIN(**)='LX ' NPO=0 NBO=0 * SEGACT,MRIGID DO 1 I=1,IRIGEL(/2) ITY=IRIGEL(6,I) IF (ITY.EQ.0) GO TO 1 * cas du frottement : petite verification if (ity.eq.2 .and. mchpo3.eq.0) then return endif MELEME=IRIGEL(1,I) SEGACT,MELEME NBO=NBO+NUM(/2) IF(IIMPI.EQ.528) WRITE(IOIMP,3765) NBO 3765 FORMAT(' NBO ',I5) DO J=1,NUM(/2) DO K=1,NUM(/1) impt=NUM(K,J) IF (ICPR(impt).EQ.0) THEN NPO=NPO+1 ICPR(impt)=NPO ENDIF enddo enddo DESCR=IRIGEL(3,I) SEGACT,DESCR DO 3 J=1,LISINC(/2) DO 4 K=1,NOMIN(/2) IF (NOMIN(K).EQ.LISINC(J)) GO TO 3 4 CONTINUE NOMIN(**)=LISINC(J) 3 CONTINUE SEGDES,DESCR 1 CONTINUE NIN=NOMIN(/2) * IF(IIMPI.EQ.528) THEN WRITE(ioimp,90) NPO WRITE(IOIMP,9876)( NOMIN(i),i=1,NIN) 90 FORMAT(' ON VIENT DE PASSER LA BOUCLE 1 NPO ',I5) 9876 FORMAT(' NOMIN ' ,10(A8,1X)) ENDIF C C **** ON REMPLIT DVAL AVEC LES VALEURS DE MCHPO2 C mchpo2 est le champ de deplacement propose par RESOU C dval(j,icpr(i)) est la j eme composante du deplacement du point i C et iexi(j,icpr(i))=1 C SEGINI,ITRAV c MCHPOI=MCHPO2 SEGACT,MCHPOI DO 5 I=1,IPCHP(/1) MSOUPO=IPCHP(I) SEGACT,MSOUPO MELEME=IGEOC SEGACT,MELEME ITEMP=NOCOMP(/2) SEGINI,IPASS DO 6 K=1,ITEMP DO 7 J=1,NIN IF (NOMIN(J).EQ.NOCOMP(K)) THEN IPASS(K)=J GO TO 6 ENDIF 7 CONTINUE 6 CONTINUE IF (IIMPI.EQ.528) WRITE(IOIMP,1555) (IPASS(KHU),KHU=1,ITEMP) 1555 FORMAT(' IPASS ' ,9I10) MPOVAL=IPOVAL SEGACT,MPOVAL III=0 DO 8 J=1,ITEMP K=IPASS(J) IF (K.EQ.0) GO TO 8 DO 9 L=1,NUM(/2) IP=ICPR(NUM(1,L)) IF (IP.EQ.0) GO TO 9 * if (k.eq.1.and.vpocha(l,j).eq.0.d0 ) then * write (6,*) 'LX nul dans excit1' * goto 9 * endif DVAL(K,IP)=dval(k,ip)+VPOCHA(L,J) IEXI(K,IP)=1 III=III+1 9 CONTINUE 8 CONTINUE SEGSUP,IPASS 5 CONTINUE * IF (IIMPI.EQ.528) then WRITE(IOIMP,1556)III,(DVAL(1,i),i=1,NPO) WRITE(IOIMP,101) 1556 FORMAT(' III DVAL ',I6,/,(1X,10E12.5)) 101 FORMAT(' ON VIENT DE PASSER LA BOUCLE 5') endif C C **** ON REMPLIT DIN PAR LES VALEURS DE MCHPO1 POUR LES LAMBDAS C mchpo1 est le vecteur initial FLX ( deplacement initial) C din (icpr(i)) est le deplacement (FLX) initial du point i C MCHPOI=MCHPO1 SEGACT,MCHPOI DO 10 i=1,IPCHP(/1) MSOUPO=IPCHP(I) SEGACT,MSOUPO MELEME=IGEOC SEGACT,MELEME MPOVAL=IPOVAL SEGACT,MPOVAL DO 11 J=1,NOCOMP(/2) IF (NOCOMP(J).NE.'FLX ') GO TO 11 DO 12 K=1,NUM(/2) IP=ICPR(NUM(1,K)) IF (IP.EQ.0) GO TO 12 DIN(IP)=VPOCHA(K,J) 12 CONTINUE 11 CONTINUE 10 CONTINUE * IF (IIMPI.EQ.528) then WRITE(IOIMP,102) WRITE(IOIMP,666) (DIN(i),i=1,NPO) 102 FORMAT(' ON VIENT DE PASSER LA BOUCLE 10') 666 FORMAT(' DIN ',/,(1X,10E12.5)) ENDIF C C **** ON BOUCLE SUR LES RIGIDITE ET ON TESTE: C **** SI LE MULTI EXISTE DANS DVAL SON SIGNE PAR RAPPORT A IRIGEL(6,I) C **** SINON ON TESTE LA RELATION ELLE MEME A L'AIDE DES COEFF C **** DE LA MATRICE ET DE LA VALEUR DU LAMBDA INI (DANS DIN) C **** ON CREE UN TABLEAU CONTENANT LE NUMERO DES MATRICES A GARDER ET C **** LE NUMERO DE LA SOUS RIGIDITE IPA=0 JG=NBO SEGINI,MLENTI,trav1 DO 313 I=1,IRIGEL(/2) ITY=IRIGEL(6,I) IF (ITY.EQ.0) GO TO 313 MELEME=IRIGEL(1,I) SEGACT,MELEME DESCR=IRIGEL(3,I) SEGACT,DESCR DO 314 J=1,LISINC(/2) IF(LISINC(J).EQ.'LX ') GO TO 315 314 CONTINUE RETURN 315 CONTINUE xmatri=irigel(4,i) segact,xmatri JJ=NOELEP(J) ITEMP=LISINC(/2) SEGINI,IPASS DO 316 J=1,ITEMP DO 317 K=1,NIN IF(LISINC(J).NE.NOMIN(K)) GO TO 317 IPASS(J)=K GO TO 316 317 CONTINUE RETURN 316 CONTINUE * RECHERCHE DU MAX DES LAMDAS POUR LE CRITERE DE DECOLLEMENT D'APPUI * RECHERCHE DU MAX DES DEPLACEMENT POUR LE CRITERE DE TRAVERSEE D'APPUI * ymcrit est le deplacement maxi de tous les points en relation unilateral * xmcrit est le maxi des multiplicateurs existant dans le chpoin de depla * remarque : ce chpoint de depla contient les multiplicateurs de contact * (pression) DO 30 J=1,NUM(/2) iel=j IP=ICPR(NUM(JJ,J)) DO 31 K=1,ITEMP IF(LISINC(K).EQ.'LX ') GO TO 31 IPPP=NUM(NOELEP(K),J) IPP=ICPR(IPPP) * deplacement YMCRIT=MAX(YMCRIT,ABS(DVAL(IPASS(K),IPP))) 31 CONTINUE * jeu YMCRIT=MAX(YMCRIT,ABS(DIN(IP))) IF (IEXI(1,IP).EQ.0) GOTO 30 XMCRIT=MAX(XMCRIT,ABS(DVAL(1,IP))) 30 CONTINUE * write (6,*) ' xmcrit ymcrit apres 30 ',xmcrit,ymcrit SEGSUP,IPASS * on rajoute dans ymcrit la dimension de l'element ** write (6,*) ' avant 32 ymcrit num(/2) ',ymcrit,num(/2),num(/1), ** > re(/1),re(/3) ** uniquement si on travaille sur les deplacements if (lisinc(2)(1:1).EQ.'U') then idim1=idim+1 xcr=0.d0 do 32 iel=1,num(/2) do 33 k=2,num(/1)-1 * le noeud 1 est le multiplicateur de lagrange ip1=num(k,iel) ip2=num(k+1,iel) xp1=xcoor((ip1-1)*idim1+1) yp1=xcoor((ip1-1)*idim1+2) zp1=0.d0 if(idim.eq.3) zp1=xcoor((ip1-1)*idim1+3) xp2=xcoor((ip2-1)*idim1+1) yp2=xcoor((ip2-1)*idim1+2) zp2=0.d0 if(idim.eq.3) zp2=xcoor((ip2-1)*idim1+3) xcr=max(xcr,(xp2-xp1)**2+(yp2-yp1)**2+(zp2-zp1)**2) 33 continue 32 continue ymcrit=max(ymcrit,sqrt(xcr)) endif 313 CONTINUE * if (mchpo3.ne.0) then * write (6,*) ' excit1 xmcrit avant ',xmcrit do ip=1,ycpr(/1) **** xmcrit=max(xmcrit,abs(ycpr(ip))) enddo * write (6,*) ' excit1 xmcrit apres ',xmcrit endif XMCRIT=1D-9 *XMCRIT YMCRIT=1D-9 *YMCRIT * write (6,*) ' xmcrit ymcrit ',xmcrit,ymcrit * Critere en cas de frottement yfcrit = YMCRIT * Strategie lente plus laxiste if (ityp.eq.3) then xmcrit = xmcrit * 1d3 ymcrit = ymcrit * 1d3 yfcrit = yfcrit * 1d3 endif * DO 13 I=1,IRIGEL(/2) coer=coerig(i) ITY=IRIGEL(6,I) IF (ITY.EQ.0) GO TO 13 MELEME=IRIGEL(1,I) SEGACT,MELEME DESCR=IRIGEL(3,I) SEGACT,DESCR xMATRI=IRIGEL(4,I) SEGACT,xMATRI ITEMP=LISINC(/2) SEGINI,IPASS DO 14 J=1,ITEMP IF (LISINC(J).EQ.'LX ') GO TO 15 14 CONTINUE RETURN 15 CONTINUE JJ=NOELEP(J) DO 16 J=1,ITEMP DO 17 K=1,NIN IF(LISINC(J).NE.NOMIN(K)) GO TO 17 IPASS(J)=K GO TO 16 17 CONTINUE RETURN 16 CONTINUE DO 18 J=1,NUM(/2) IPA=IPA+1 IPT=NUM(JJ,J) IP=ICPR(IPT) ityz=0 * eliminer condition redondantes pour le pas d'apres iclred = .false. if (kcpr.ne.0) then if (kcpr(num(noelep(1),j)).ne.0) then * la condition redondante ayant ete augmentee on pourrait faire comme si elle n'etait pas presente * mais en fait les criteres en reaction et en deplacement sont equivalents dans ce cas if(iexi(1,ip).ne.0) iav(ipa)=2 iclred = .true. ******** iexi(1,ip)=0 * write(6,*) 'condition redondante',ipa endif endif * SS=0.D0 remax=0.d0 r_z=0.d0 DO 19 K=2,ITEMP *** IF (LISINC(K).EQ.'LX ') GO TO 19 if (ipass(k).eq.0) goto 19 IPPP=NUM(NOELEP(K),J) IPP=ICPR(IPPP) if (ipp.eq.0) goto 19 * write (6,*) ' k dval re ss',dval(ipass(k),ipp), * > re(1,k,j),ss remax=max(remax,abs(re(1,k,j)*coer)) Sinc = DVAL(IPASS(K),IPP) * RE(1,k,j) * coer r_z=max(r_z,abs(sinc)) SS = Sinc + SS 19 CONTINUE IF (IIMPI.EQ.528) WRITE(IOIMP,529) IPPP,SS 529 FORMAT( ' LIBRE ',I5,2X,E12.5) r_z = max(ABS(din(ip)),r_z)*1d-10 * write (6,*) 'r_z ymcrit ss',r_z,ymcrit,remax,ss r_p1 = DIN(IP) + r_z r_m1 = DIN(IP) - r_z viol(ipa)=ss-din(ip) C C ** CAS OU LE BLOQUAGE N'ETAIT PAS SOLLICITE C IF (IEXI(1,IP).EQ.0.or.iclred) THEN CC * cas du frottement if (ity.eq.2) then ityz=jcpr(ipt) * write(ioimp,*) 'ipt jcpr ycpr ',ipt,jcpr(ipt),ycpr(ipt) if (ityz.ne.0) ityz=sign(1.1D0,ycpr(ipt)) * if (ityz.eq.0) write (6,*) ' frottement -1 tyz ',ityz * write(ioimp,*) '1 dans excite ityz ',ityz * apparamment il faut etre plus laxiste pour le frottement * peut etre pas finalement if (ityz.eq.0) goto 20 IF (ITYz.EQ. 1.AND.SS.LE.r_p1+yfcrit*remax) GOTO 20 IF (ITYz.EQ.-1.AND.SS.GE.r_m1-yfcrit*remax) GOTO 20 endif IF (ITY.EQ. 1.AND.SS.LE.r_p1+YMCRIT*remax) GOTO 20 IF (ITY.EQ.-1.AND.SS.GE.r_m1-YMCRIT*remax) GOTO 20 LECT(IPA)=ITY IF(ity.eq.2) lect(ipa)=ityz*2 if (iimpi.eq.1967) > write (6,*) ' ss din ymcrit nouveau blocage ' $ ,ss,din(ip),ymcrit,ipa,viol(ipa),ipt,ityz,ityp * on a un (1) nouveau blocage on arrete 20 CONTINUE C C ** CAS OU LE BLOQUAGE ETAIT SOLLICITE PETIT PROBLEME DE TEST DE C PRECISION SUR LA VALEUR DE LA REACTION C ELSE iav(ipa)=1 SS=DVAL(1,IP) viol(ipa)=ss * write (6,*) ' ss xmcrit ',ss,xmcrit IF(IIMPI.EQ.528) WRITE(IOIMP,530) NUM(JJ,J),SS 530 FORMAT(' BLOQUER ' ,I5,2X,E12.5) * cas du frottement if (ity.eq.2) then ityz=jcpr(ipt) if (ityz.ne.0) ityz=sign(1.1D0,ycpr(ipt)) * if (ityz.eq.0) write (6,*) ' frottement -2 ityz ',ityz * apparamment il faut etre plus laxiste pour le frottement * peut etre pas finalement if (ityz.eq.0) goto 21 IF(ITYz.EQ.1.AND.SS.LT. -XMCRIT) GO TO 21 IF(ITYz.EQ.-1.AND.SS.GT.+XMCRIT) GO TO 21 endif IF(ITY.EQ.1.AND.SS.LT. -XMCRIT) GO TO 21 IF(ITY.EQ.-1.AND.SS.GT.+XMCRIT) GO TO 21 LECT(IPA)=ITY IF(ity.eq.2) lect(ipa)=ityz*2 goto 18 21 CONTINUE C write (6,*) ' ss xmcrit ',ss,xmcrit,ityz,i,ipa, C > num(3,j),num(4,j),num(5,j) if (iimpi.eq.1967) > write (6,*) ' appui disparait ' $ ,ss,din(ip),ymcrit,ipa,viol(ipa),ipt,ityz,ityp ENDIF 18 CONTINUE SEGSUP,IPASS SEGDES,DESCR,xMATRI 13 CONTINUE IF(IIMPI.EQ.528) WRITE(IOIMP,*) 'ON VIENT DE PASSER LA BOUCLE 13' C C **** DANS LECT ON DIT SI LA JEEME RIGI ELEMTAIRE EST A CONSERVER C * on prevoit la place pour mettre a la fin les conditions redondantes NRIGEL=IRIGEL(/2)*2 SEGINI,RI2 RI2.MTYMAT=mrigid.MTYMAT RI2.IFORIG=mrigid.IFORIG C C **** CAS OU IL N'Y A RIEN A GARDER ON CREE UNE RIGIDITE VIDE C **** POUR POUVOIR CONTINUER D'ITERER SI IL Y A LIEU C IF (NRIGEL.EQ.0) THEN IF (IIMPI.EQ.528) WRITE(IOIMP,*) ' IL N''Y A RIEN A CREER' GO TO 50 ENDIF * *** ne garder que ce qui viole de plus de xcrot du max * desactive pour le moment * * recherche du max violmf=-1. violmd=-1. imf=0 imd=0 do 40 i=1,nbo violm=abs(viol(i)) if (iav(i).eq.0.and.lect(i).ne.0) then if (violm.gt.violmd) then violmd=violm imd=i endif else if (iav(i).ne.0.and.lect(i).eq.0) then if (violm.gt.violmf) then violmf=violm imf=i endif endif 40 continue rvd = 0.30*violmd rvf = 0.90*violmf if (ityp.eq.3) then rvd = 0.9999*violmd rvf = 0.9999*violmf endif do 41 i=1,nbo violm=abs(viol(i)) if (iav(i).eq.0.and.lect(i).ne.0.and.violm.lt.rvd) > lect(i)=0 41 continue * passe d'introduction de bruit en cas de conditions redondantes: * on en elimine une en changeant laquelle a chaque appel *** if(ityp.eq.3) then if(kcpr.ne.0) then icntr=mod(icntr,nbo)+1 icnt=0 do i=1,nbo if (lect(i).ne.0) then icnt=icnt+1 if (icnt.eq.icntr) then lect(i)=sign(4,lect(i)) iav(i)=1 *** write(6,*) ' condition relachee pour ',i goto 60 endif endif enddo 60 continue icnts=mod(icnts,nbo)+1 icns=0 do i=1,nbo if (lect(i).ne.0.and.iav(i).eq.2) then icns=icns+1 if (icns.eq.icnts) then lect(i)=sign(4,lect(i)) iav(i)=1 *** write(6,*) ' condition redondante relachee pour ',i goto 62 endif endif enddo 62 continue endif C C ** IL FAUT CREER UNE RIGIDITE C IPA= 0 IRI=0 * premiere passe pour mettre les conditions redondantes * en tete DO 25 I =1,IRIGEL(/2) IF(IRIGEL(6,I).EQ.0) GO TO 25 MELEME=IRIGEL(1,I) SEGACT,MELEME nbelei=num(/2) NELRIG=0 DO 27 J=1,nbelei IF(LECT(IPA+J).EQ.0) goto 27 IF(abs(LECT(IPA+J)).EQ.4) goto 27 if (kcpr.eq.0) goto 27 if (kcpr(num(1,j)).eq.0) goto 27 NELRIG=NELRIG+1 27 CONTINUE if (nelrig.eq.0) goto 26 ** write(6,*) ' nelrig redondant ',nelrig IRI=IRI+1 xMATRI=IRIGEL(4,I) SEGACT,xMATRI nligrp=re(/2) nligrd=re(/1) SEGINI,xMATR1 RI2.IRIGEL(4,IRI)=xMATR1 RI2.IRIGEL(3,IRI)=IRIGEL(3,I) RI2.IRIGEL(5,IRI)=IRIGEL(5,I) RI2.IRIGEL(6,IRI)=IRIGEL(6,I) RI2.IRIGEL(7,IRI)=IRIGEL(7,I) xmatr1.symre=ri2.irigel(7,iri) RI2.COERIG(IRI)=COERIG(I) NBNN =NUM(/1) NBELEM=NELRIG NBSOUS=0 NBREF =0 SEGINI,IPT1 IPT1.ITYPEL=ITYPEL RI2.IRIGEL(1,IRI)=IPT1 DO 28 J=1,nbelei IF(LECT(IPA+J).EQ.0) goto 28 IF(abs(LECT(IPA+J)).EQ.4) goto 28 if (kcpr.eq.0) goto 28 if (kcpr(num(1,j)).eq.0) goto 28 DO 29 K=1,NUM(/1) 29 CONTINUE do io=1,nligrp do iu=1,nligrd enddo enddo ** write (6,*) ' excit1 augmentation ',ipa+j ** xmatr1.re(1,1,i2)=-0.5 ** endif 28 CONTINUE SEGDES,xMATR1 26 CONTINUE IPA=IPA+nbelei 25 CONTINUE * deuxieme passe pour mettre les conditions non redondantes * en tete nrige = irigel(/2) ipa=0 do 125 ir=nrige+1,2*nrige i=ir-nrige IF(IRIGEL(6,I).EQ.0) GO TO 125 MELEME=IRIGEL(1,I) SEGACT,MELEME nbelei=num(/2) NELRIG=0 DO 127 J=1,nbelei IF(LECT(IPA+J).EQ.0) goto 127 IF(abs(LECT(IPA+J)).EQ.4) goto 127 if (kcpr.ne.0) then if (kcpr(num(1,j)).ne.0) then goto 127 endif endif NELRIG=NELRIG+1 127 CONTINUE ** if(nelrig.ne.0) write(6,*)'excit1 ',nelrig,'matrices deplacees' if (nelrig.eq.0) goto 126 IRI=IRI+1 xMATRI=IRIGEL(4,I) SEGACT,xMATRI nligrp=re(/2) nligrd=re(/1) SEGINI,xMATR1 RI2.IRIGEL(4,IRI)=xMATR1 RI2.IRIGEL(3,IRI)=IRIGEL(3,I) RI2.IRIGEL(5,IRI)=IRIGEL(5,I) RI2.IRIGEL(6,IRI)=IRIGEL(6,I) RI2.IRIGEL(7,IRI)=IRIGEL(7,I) xmatr1.symre=ri2.irigel(7,iri) RI2.COERIG(IRI)=COERIG(I) NBNN =NUM(/1) NBELEM=NELRIG NBSOUS=0 NBREF =0 SEGINI,IPT1 IPT1.ITYPEL=ITYPEL RI2.IRIGEL(1,IRI)=IPT1 DO 128 J=1,nbelei IF(LECT(IPA+J).EQ.0) GO TO 128 IF(abs(LECT(IPA+J)).EQ.4) GO TO 128 if (kcpr.ne.0) then if (kcpr(num(1,j)).ne.0) then goto 128 endif endif DO K=1,NUM(/1) ENDDO do io=1,nligrp do iu=1,nligrd enddo enddo 128 CONTINUE SEGDES,xMATR1,xMATRI 126 CONTINUE IPA=IPA+nbelei 125 CONTINUE * if (iri.ne.ri2.irigel(/2)) then nrigel=iri segadj,ri2 endif 50 CONTINUE SEGDES,RI2,MRIGID * indice de retour do 55 i = 1, nbo 55 continue * do il=1,lect(/1),5 * write (6,*)' mlenti ',(lect(ill),ill=il,min(lect(/1),il+4)) * enddo ** do il=1,lect(/1),5 ** write (6,*)' viol ',(viol(ill),ill=il,min(lect(/1),il+4)) ** enddo SEGSUP,SNOMIN,ICPR,ITRAV,trav1 if (mchpo3.ne.0) segsup,jcpr,ycpr if (kcpr.ne.0) segsup,kcpr END
© Cast3M 2003 - Tous droits réservés.
Mentions légales