kops
C KOPS SOURCE PV090527 24/08/21 16:15:42 11985 C Retour à la version de Stéphane C KOPS SOURCE GOUNAND 11/05/25 21:15:20 6980 SUBROUTINE KOPS C************************************************************************* C C cet operateur effectue des operations speciales entre les CHPOINT-TRIO C C C C C************************************************************************* IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMTABLE -INC SMLMOTS -INC SMLENTI -INC SMELEME POINTEUR MELEMC.MELEME -INC SMCOORD -INC SMMATRIK POINTEUR MAT1.MATRIK,MAT2.MATRIK,MAT3.MATRIK,IMAT1.IMATRI * * OBJET RIGIDITE * SEGMENT STCOUP INTEGER MCOUP(nicd,nicp) ENDSEGMENT * -INC SMRIGID * Un peu dangereux si le segmet MRIGID evolue ? SEGMENT MRIGID CHARACTER*8 MTYMAT REAL*8 COERIG(NRIGEL) INTEGER JRIGEL(8,NRIGEL) INTEGER ICHOLE,IMGEO1,IMGEO2,IFORIG INTEGER ISUPEQ,JRCOND,JRDEPP,JRDEPD INTEGER JRELIM,JRGARD,JRTOT,IMLAG INTEGER JRSUP,IVECRI INTEGER MCRCNF ENDSEGMENT -INC SMCHPOI DIMENSION XVEC(3),ITINC(100) INTEGER JMOTS CHARACTER*8 TYPE,TYPC,TYPE1,TYPE2 PARAMETER (NBOP=32) CHARACTER*4 NOMTOT(10) CHARACTER*(LOCOMP) MOCOMP,NOMI CHARACTER*8 NOMKP,NOMKD CHARACTER*8 BLAN DATA BLAN/' '/ DATA LOPER/'MULT ','DIVI ','........','........','ET ', & '* ','/ ','+ ','- ','** ', & '|< ','>| ','GRAD ','ROT ','CLIM ', & 'INV ','MATRAK ','MATRIK ','VNIMP ','VTIMP ', & 'MTABX ','CMCTSPLT','MATIDE ','RIGIDITE','GRADS ', & 'EXTRCOMP','EXTRMASS','EXTRPREC','CHANINCO','TRANSPOS', & 'MATDIAGO','EXTRCOUP'/ C*** segact mcoord JMOTS =0 NAG =0 NBMAT =0 IKASS =0 MCHPO1=0 MCHPO2=0 MCHPOI=0 MPOVA1=0 MPOVA2=0 XVAL1 =0. XVAL2 =0. NFLOT =0 MTABD =0 C ******************************************** C * La premiere partie de cette routine * C * consiste a recuperer les arguments de * C * l operateur KOPS afin de pouvoir leurs * C * attribuer le traitement correspondant * C ******************************************** 10 CONTINUE C On saisit le premier objet de la pile C ************************************* IF(IRET.EQ.0)GO TO 9 C write(6,*)' KOPS nag=',NAG,' MTYP=',MTYP C ============================================ C Cas : Objet = MOT C ============================================ IF(MTYP.EQ.'MOT')THEN JMOTS=1 C? CALL LIRCHA(MMOP,1,NBC) C? CALL OPTLI(KOP,LOPER,MMOP,NBOP) c* if (kop.eq.0) write(6,*)' KOPS ',KOP,' pas d operateur' c* if (kop.ne.0) write(6,*)' KOPS ',KOP,LOPER(KOP) IF(KOP.EQ.0)THEN IF(IRET.EQ.0)RETURN WRITE(6,*)' Opérateur KOPS :',KOP WRITE(6,*)' Operation inconnue ' RETURN ENDIF C Cas tres tres particulier(s) C CAS KOP=17 IF(KOP.EQ.17)THEN NRIGE=8 NMATRI=0 NKID =9 NKMT =7 SEGINI MATRIK SEGDES MATRIK RETURN ENDIF C CAS KOP=18 IF(KOP.EQ.18)THEN NRIGE=7 NMATRI=0 NKID =9 NKMT =7 SEGINI MATRIK SEGDES MATRIK NAT=2 NSOUPO=0 SEGINI MCHPOI MTYPOI = ' ' MOCHDE = ' ' JATTRI(1)=2 IFOPOI = IFOUR SEGDES MCHPOI RETURN ENDIF C CAS KOP=19 IF(KOP.EQ.19)THEN CALL VNIMP RETURN ENDIF C CAS KOP=20 IF(KOP.EQ.20)THEN CALL VTIMP RETURN ENDIF C CAS KOP=21 MTABX IF(KOP.EQ.21)THEN IF(IRET.EQ.0)RETURN IF(IRET.EQ.0)RETURN KKIZG=0 TYPE=' ' IF(KIZG.NE.0)THEN TYPE=' ' IF(MLMOTS.EQ.0)RETURN SEGACT MLMOTS DO 36476 I=1,NBMOT TYPE=' ' IF(TYPE.NE.'CHPOINT')GO TO 36476 SEGACT MCHPOI NSOUPO=IPCHP(/1) IF(NSOUPO.NE.1)RETURN MSOUPO=IPCHP(1) SEGACT MSOUPO NC=NOCOMP(/2) DO 36477 J=1,NC IF(NC.NE.1.AND.NC.LT.10)THEN WRITE(MOCOMP,FMT='(I1,A7)')J,NOMI(1:LOCOMP-1) ELSEIF(NC.EQ.1)THEN WRITE(MOCOMP,FMT='(A8)')NOMI ELSE RETURN ENDIF NOCOMP(J)=MOCOMP 36477 CONTINUE KKIZG=1 CALL OPERMU 36476 CONTINUE ENDIF IF(KKIZG.NE.0)THEN CALL OPERMU ENDIF TYPE=' ' IF(TYPE.EQ.'CHPOINT')THEN ELSE ENDIF RETURN ENDIF C CAS KOP=22 IF(KOP.EQ.22)THEN CALL SPLTCC RETURN ENDIF C KAS KOP=23 ('MATIDE') IF(KOP .EQ. 23)THEN CALL KOPSID RETURN ENDIF C CAS KOP=24 IF(KOP.EQ.24)THEN NRIGE=8 NRIGEL=0 SEGINI MRIGID MTYMAT=' ' IFORIG=IFOUR SEGDES MRIGID NAT=2 NSOUPO=0 SEGINI MCHPOI MTYPOI = ' ' MOCHDE = ' ' JATTRI(1)=2 IFOPOI = IFOUR SEGDES MCHPOI RETURN ENDIF C C CAS KOP=25 'GRADS' IF(KOP.EQ.25)THEN GO TO 10 ENDIF C C CAS KOP=26 'EXTRCOMP' IF(KOP.EQ.26)THEN IF(IRET.EQ.0)RETURN IF(IRET.EQ.0)RETURN SEGACT MAT1 NRIGE =MAT1.IRIGEL(/1) NMATRI=MAT1.IRIGEL(/2) NMATRI=0 NKID =MAT1.KIDMAT(/1) NKMT =MAT1.KKMMT(/1) SEGINI MATRIK mincp= MAT1.KMINC if(mincp.ne.0)then segact mincp nbi= mincp.LISINC(/2) npt= mincp.NPOS(/1)-1 segini minc lisinc(1)=NOMK if(nbi.ne.1)then write(6,*)' Gross Pb NBI=',nbi write(6,*)(mincp.lisinc(ii),ii=1,nbi) endif KMINC = minc KMINCP= minc KMINCD= minc endif KIZM = MAT1.KIZM KISPGT= MAT1.KISPGT KISPGP= MAT1.KISPGP KISPGD= MAT1.KISPGD KNTTT = MAT1.KNTTT KNTTP = MAT1.KNTTP KNTTD = MAT1.KNTTD NMATR1=MAT1.IRIGEL(/2) c write(6,*)'NMATR1=',NMATR1 do 6432 lm=1, NMATR1 IMAT1=MAT1.irigel(4,lm) segact imat1 c write(6,*)' NBMF=',nbmf do 6433 lmf=1,nbmf NOMKP=NOMK NOMKD=NOMK & .AND.LXNM.NE.IMAT1.LISDUA(lmf))then return endif if(LXNM.eq.IMAT1.LISDUA(lmf))NOMKD='LX'//NOMK(1:2) NMATRI=NMATRI+1 segadj MATRIK do 6434 i7=1,7 irigel(i7,nmatri)=mat1.irigel(i7,lm) 6434 continue nbme=1 nbsous=IMAT1.lizafm(/1) segini IMATRI irigel(4,nmatri)=IMATRI KSPGP=IMAT1.KSPGP KSPGD=IMAT1.KSPGD LISDUA(1)=NOMKD do 6435 is=1,nbsous LIZAFM(is,1)=IMAT1. LIZAFM(is,lmf) 6435 continue endif 6433 continue 6432 continue SEGDES MATRIK RETURN ENDIF C C C CAS KOP=32 'EXTRCOUP' IF(KOP.EQ.32)THEN IF(IRET.EQ.0)RETURN CALL EXTIPD SEGACT MLMOT1 SEGACT MLMOT2 SEGINI STCOUP * write(6,*)(MLMOT1.MOTS(ii),ii=1,nicp) * write(6,*)(MLMOT2.MOTS(ii),ii=1,nicd) SEGACT MAT1 NMATR1=MAT1.IRIGEL(/2) do 7432 lm=1, NMATR1 IMAT1=MAT1.irigel(4,lm) segact imat1 do 7433 lmf=1,nbmf NOMKD=IMAT1.LISDUA(lmf) c write(6,*)NOMKP,'----',NOMKD MCOUP(IP2,IP1)=1 7433 continue 7432 continue c write(6,*)' MCOUP ',nicp,nicd c do 7400 k=1,nicp c write(6,*)(MCOUP(k,i),i=1,nicd) c7400 continue IF(nicp.NE.nicd)THEN write(6,*)' ERREUR nicp ne nicd ',nicp,nicd return ENDIF npart=0 do 7401 k=1,nicp JGN=LOCOMP JGM=0 segini MLMOT3 I0=MCOUP(k,k) IF(I0.EQ.0)THEN write(6,*)' ERREUR : La diagonale est nule' return ENDIF IF(I0.EQ.-1)GO TO 7401 JGM=JGM+1 SEGADJ MLMOT3 MCOUP(k,k)=-1 it=0 do 7402 m=1,nicd I1=MCOUP(k,m) IF(I1.EQ.1)THEN it=it+1 itinc(it)=i1 JGM=JGM+1 SEGADJ MLMOT3 MCOUP(k,m)=-1 MCOUP(m,m)=-1 ENDIF 7402 continue 7405 continue itp=0 do j=1,it il=itinc(j) do m=1,nicd I1=MCOUP(k,m) IF(I1.EQ.1)THEN itp=itp+1 itinc(itp)=i1 JGM=JGM+1 SEGADJ MLMOT3 MCOUP(il,m)=-1 ENDIF enddo enddo do 7404 m=1,itp itinc(m)=itinc(m+it) 7404 continue it=itp IF(ITP.NE.0)go to 7405 npart=npart+1 segdes MLMOT3 1 'LISTMOTS',0,0.D0,BLAN,.TRUE.,MLMOT3) 7401 continue SEGSUP STCOUP SEGDES MTABLE,MLMOT3 RETURN ENDIF C C C CAS KOP=27 'EXTRMASS' ou 'EXTRPREC' IF(KOP.EQ.27.OR.KOP.EQ.28)THEN IF(IRET.EQ.0)RETURN IF(IRET.EQ.0)RETURN SEGACT MAT1 NRIGE =MAT1.IRIGEL(/1) NMATRI=MAT1.IRIGEL(/2) NMATRI=0 NKID =MAT1.KIDMAT(/1) NKMT =MAT1.KKMMT(/1) SEGINI MATRIK mincp= MAT1.KMINC if(mincp.ne.0)then segact mincp nbi= mincp.LISINC(/2) npt= mincp.NPOS(/1)-1 segini minc lisinc(1)=NOMK if(nbi.ne.1)then write(6,*)' Gross Pb NBI=',nbi write(6,*)(mincp.lisinc(ii),ii=1,nbi) endif KMINC = minc KMINCP= minc KMINCD= minc endif KIZM = MAT1.KIZM KISPGT= MAT1.KISPGT KISPGP= MAT1.KISPGP KISPGD= MAT1.KISPGD KNTTT = MAT1.KNTTT KNTTP = MAT1.KNTTP KNTTD = MAT1.KNTTD NMATR1=MAT1.IRIGEL(/2) c write(6,*)'NMATR1=',NMATR1 do 6532 lm=1, NMATR1 IMAT1=MAT1.irigel(4,lm) segact imat1 c write(6,*)' NBMF=',nbmf do 6533 lmf=1,nbmf c write(6,*)' On a perdu ', nomc,lmf return endif c write(6,*)' On a gagne ', nomc,lmf NMATRI=NMATRI+1 segadj MATRIK do 6534 i7=1,7 irigel(i7,nmatri)=mat1.irigel(i7,lm) 6534 continue nbme=1 nbsous=IMAT1.lizafm(/1) segini IMATRI irigel(4,nmatri)=IMATRI KSPGP=IMAT1.KSPGP KSPGD=IMAT1.KSPGD LISDUA(1)=NOMK do 6535 is=1,nbsous c? LIZAFM(is,1)=IMAT1. LIZAFM(is,lmf) 6535 continue endif 6533 continue 6532 continue SEGDES MATRIK RETURN ENDIF C * Option CHANINCO idem opérateur 'CHANGER' 'INCO' * mais pour les matrik et pour les rigidités y compris les multiplicateurs IF (KOP.EQ.29) THEN * MAtrik CHanger INco CALL MACHIN RETURN ENDIF C * Option TRANSPOS transpose une matrice * (matrik ou rigidité) IF (KOP.EQ.30) THEN * TRanSpose MaTrice CALL TRSMAT RETURN ENDIF C * Option MATIAGO pour créer une matrice diagonale IF (KOP .EQ. 31) THEN CALL KOPDIA RETURN ENDIF C GO TO 10 C ============================================== C Cas : Objet = FLOTTANT ou ENTIER C ============================================== ELSEIF(MTYP.EQ.'FLOTTANT'.OR.MTYP.EQ.'ENTIER')THEN NAG=NAG+1 NFLOT=NFLOT+1 IF(NAG.GT.2)GO TO 91 IF((NAG.EQ.1).OR.(NBMAT.EQ.1)) THEN XVAL1=XVAL GO TO 10 END IF XVAL2=XVAL GO TO 10 C ============================================= C Cas : Objet = CHPOINT C ============================================= ELSEIF(MTYP.EQ.'CHPOINT')THEN NAG=NAG+1 IF(NAG.GT.2)GO TO 91 IF ((NAG.EQ.1).OR.(NBMAT.EQ.1))THEN ELSE IF(KOP.NE.15)THEN ELSE GO TO 20 ENDIF ENDIF C ============================================ C Cas : Objet = TABLE C ============================================ ELSEIF(MTYP.EQ.'TABLE'.OR.MTYP.EQ.'MMODEL')THEN NAG=NAG+1 IF(NAG.GT.2)GO TO 91 C? CALL LITABS('DOMAINE ',MTABD,1,1,IRET) IF(IRET.EQ.0)RETURN C INEFMD=1 LINE =2 MACRO =3 QUADRATIQUE C ============================================ C Cas : Objet = POINT C ============================================ ELSEIF(MTYP.EQ.'POINT')THEN NAG=NAG+1 IF(NAG.GT.2)GO TO 91 IF(NAG.EQ.1)IKASS=4 IF(NAG.EQ.2)IKASS=5 XVEC(1)=XCOOR((MPOINT-1)*(IDIM+1) +1) XVEC(2)=XCOOR((MPOINT-1)*(IDIM+1) +2) IF(IDIM.EQ.3)XVEC(3)=XCOOR((MPOINT-1)*(IDIM+1)+3) C Si MPOVA1 n'est pas initialise, il peut poser C des problemes dans la partie 'operations' MPOVA1 = 0 C =========================================== C Cas Objet = MATRIK C =========================================== ELSEIF(MTYP.EQ.'MATRIK')THEN NAG=NAG+1 IF(NAG.GT.2)GO TO 91 NBMAT=NBMAT+1 IF (NBMAT.EQ.1) THEN ELSEIF (NBMAT.EQ.2) THEN END IF IF (NBMAT.EQ.1) IKASS=6 IF (NBMAT.EQ.2) IKASS=7 C =========================================== C Cas Objet non prevu C =========================================== ELSE MOTERR(1:8)=MTYP * WRITE(6,*)' Opérateur KOPS :' * WRITE(6,*)' Type d''objet :',MTYP,' non prevu' RETURN ENDIF GO TO 10 C ***************************************** C * Deuxieme partie * C * On effectue ici une batterie de tests * C * afin de determiner si on fait des * C * operations valides * C ***************************************** 9 CONTINUE IF (JMOTS.EQ.0) THEN moterr(1:8)='MOTS ' RETURN ENDIF IKAS=3 IF(MCHPO1.EQ.0)IKAS=1 IF(MCHPO2.EQ.0)IKAS=2 IF((MCHPO1.EQ.0.AND.MCHPO2.EQ.0).AND.NBMAT.EQ.0)THEN WRITE(6,*)' Opérateur KOPS :' WRITE(6,*)' Il n''y a pas de CHPOINT ?? ' RETURN ENDIF IF(IKASS.NE.0)IKAS=IKASS C write(6,*)' MCHPO1,MCHPO2=',MCHPO1,MCHPO2,IKAS,IKASS C &,' KOP=',KOP IF(IKAS.EQ.3)THEN IF(IGEOM1.NE.IGEOM2)THEN C write(6,*)' indic,nbcom=',indic,nbcom WRITE(6,*)' Opérateur KOPS :' WRITE(6,*)' Les deux champs n''ont pas le meme support ' & ,'geometrique ou pire ' WRITE(6,*)' IGEOM1=',IGEOM1,' IGEOM2=',IGEOM2 RETURN ENDIF ENDIF IF(MPOVA1.EQ.0.AND.IGEOM1.EQ.0)THEN C WRITE(6,*)'CAS OU LES CHPOINTS SONT VIDE' NC1=0 NC2=0 NS=0 ELSE NC1=MPOVA1.VPOCHA(/2) NC2=MPOVA2.VPOCHA(/2) NS =MPOVA1.VPOCHA(/1) ENDIF NC=NC1 NCK=NC IGEOM=IGEOM1 TYPE=TYPE1 IF(NC1.NE.NC2)THEN IF(NC1.EQ.1.AND.NC2.EQ.IDIM.AND.KOP.EQ.6)THEN NC=NC1 NCK=NC2 ELSE WRITE(6,*)' Opérateur KOPS :' WRITE(6,*)' Les deux champs n''ont pas le meme nombre ', & 'de composante' RETURN ENDIF ELSE IF(KOP.EQ.6)IKAS=6 ENDIF ENDIF IF(IKAS.EQ.1)THEN IF(MPOVA2.EQ.0.AND.IGEOM2.EQ.0)THEN C WRITE(6,*)'CAS OU LE CHPOINT2 EST VIDE' NS=0 NC=0 ELSE NS=MPOVA2.VPOCHA(/1) NC=MPOVA2.VPOCHA(/2) ENDIF NC2=NC NCK=NC IGEOM=IGEOM2 TYPE=TYPE2 ELSEIF(IKAS.EQ.2)THEN IF(MPOVA1.EQ.0.AND.IGEOM1.EQ.0)THEN C WRITE(6,*)'CAS OU LE CHPOINT1 EST VIDE' NS=0 NC=0 ELSE NS=MPOVA1.VPOCHA(/1) NC=MPOVA1.VPOCHA(/2) ENDIF NC2=NC NCK=NC IGEOM=IGEOM1 TYPE=TYPE1 ELSEIF(IKAS.EQ.4)THEN NS=MPOVA2.VPOCHA(/1) NC=MPOVA2.VPOCHA(/2) IF(NC.NE.1)THEN WRITE(6,*)' Opérateur KOPS :' WRITE(6,*)' Le champoint doit etre scalaire dans ce cas ' RETURN ENDIF NC2=IDIM NCK=IDIM IGEOM=IGEOM2 TYPE=TYPE2 ELSEIF(IKAS.EQ.5)THEN NS=MPOVA1.VPOCHA(/1) NC=MPOVA1.VPOCHA(/2) IF(NC.NE.1)THEN WRITE(6,*)' Opérateur KOPS :' WRITE(6,*)' Le champoint doit etre scalaire dans ce cas ' RETURN ENDIF NC2=IDIM NCK=IDIM IGEOM=IGEOM1 TYPE=TYPE1 ENDIF 20 CONTINUE IF(KOP.EQ.25)GO TO 31 GO TO (21,22,23,24,25,21,22,26,27,28,29,30,31,32,33,34),KOP C ************************************ C * Dans cette partie on effectue * C * les operations * C ************************************ C MULT 21 CONTINUE C ======================= C PRODUIT 2 OBJETS MATRIK C ======================= IF(NBMAT.EQ.2) THEN IF (IRET.NE.0) THEN WRITE(6,*) 'Pb dans ETOILE' RETURN END IF C ============================= C PRODUIT OBJET MATRIK FLOTTANT C ============================= ELSEIF ((NBMAT.EQ.1).AND.(NFLOT.EQ.1)) THEN C ============================= C PRODUIT OBJET MATRIK CHPOINT C ============================= ELSEIF ((NBMAT.EQ.1).AND.(MCHPO1.NE.0)) THEN C ============================= ELSE C CB215821 : pour eviter le plantage en compilcd lorsque MPOVA1=0 ... IF (MPOVAL .NE. 0) THEN IF (MPOVA1 .EQ. 0) MPOVA1 = MPOVAL IF(IKAS.EQ.1)THEN & XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ELSEIF(IKAS.EQ.2)THEN & XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ELSE C segact mchpoi C write(6,*)' segact ok avt kops1 ',kop & XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ENDIF ENDIF C segact mchpoi C write(6,*)' segact ok apr kops1 ' C write(6,*)' MCHPOI=',mchpoi END IF GO TO 89 C DIVI 22 CONTINUE C CB215821 : pour eviter le plantage en compilcd lorsque MPOVA1=0 ... IF (MPOVAL .NE. 0) THEN IF (MPOVA1 .EQ. 0) MPOVA1 = MPOVAL C write(6,*)' MCHPOI=',mchpoi,IKAS C write(6,*)' NC,NC2,NS=',NC,NC2,NS IF(IKAS.EQ.1)THEN $ ,XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ELSEIF(IKAS.EQ.2)THEN segact mchpoi,mchpo1,mpoval,mpova1 $ ,XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) segact mchpoi,mchpo1,mpoval,mpova1 ELSE $ ,XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ENDIF ENDIF GO TO 89 C ........ 23 CONTINUE GO TO 89 C ........ 24 CONTINUE GO TO 89 C ET 25 CONTINUE WRITE(6,*)' Opérateur KOPS :' WRITE(6,*)' ET : Non operationnel pour l''instant' GO TO 89 C '+' 26 CONTINUE IF (NBMAT.EQ.2) THEN C On effectue l addition MAT1+MAT2 et on recupere la C matrice resultante dans MAT3 en morse IF (IRET.NE.0) THEN WRITE(6,*) 'Pb dans ADDMAT' RETURN END IF ELSE C CB215821 : pour eviter le plantage en compilcd lorsque MPOVA1=0 ... IF (MPOVAL .NE. 0) THEN IF (MPOVA1 .EQ. 0) MPOVA1 = MPOVAL IF(IKAS.EQ.1)THEN & XVAL1,XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ELSEIF(IKAS.EQ.2)THEN & XVAL1,XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ELSE & XVAL1,XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ENDIF ENDIF END IF GO TO 89 C '-' 27 CONTINUE C CB215821 : pour eviter le plantage en compilcd lorsque MPOVA1=0 ... IF (MPOVAL .NE. 0) THEN IF (MPOVA1 .EQ. 0) MPOVA1 = MPOVAL IF(IKAS.EQ.1)THEN $ ,XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ELSEIF(IKAS.EQ.2)THEN $ ,XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ELSE $ ,XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ENDIF ENDIF GO TO 89 C '**' 28 CONTINUE C CB215821 : pour eviter le plantage en compilcd lorsque MPOVA1=0 ... IF (MPOVAL .NE. 0) THEN IF (MPOVA1 .EQ. 0) MPOVA1 = MPOVAL IF(IKAS.EQ.1)THEN $ ,XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ELSEIF(IKAS.EQ.2)THEN $ ,XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ELSE $ ,XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ENDIF ENDIF GO TO 89 C '|<' 29 CONTINUE C CB215821 : pour eviter le plantage en compilcd lorsque MPOVA1=0 ... IF (MPOVAL .NE. 0) THEN IF (MPOVA1 .EQ. 0) MPOVA1 = MPOVAL IF(IKAS.EQ.1)THEN $ ,XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ELSEIF(IKAS.EQ.2)THEN $ ,XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ELSE $ ,XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ENDIF ENDIF GO TO 89 C '>|' 30 CONTINUE C CB215821 : pour eviter le plantage en compilcd lorsque MPOVA1=0 ... IF (MPOVAL .NE. 0) THEN IF (MPOVA1 .EQ. 0) MPOVA1 = MPOVAL IF(IKAS.EQ.1)THEN $ ,XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ELSEIF(IKAS.EQ.2)THEN $ ,XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ELSE $ ,XVAL2,NC,NC2,NS,IKAS,KOP,XVEC) ENDIF ENDIF GO TO 89 C 'GRAD' 31 CONTINUE IF(MTABD.EQ.0)THEN RETURN ENDIF IF(KOP.EQ.25)THEN ELSE ENDIF GO TO 89 C 'ROT' 32 CONTINUE IF(MTABD.EQ.0)THEN RETURN ENDIF GO TO 89 C 'CLIM' 33 CONTINUE GO TO 89 89 CONTINUE C? IF(KOP.NE.15)THEN C? IF(MCHPOI.NE.0)SEGDES MCHPOI,MPOVAL C? IF(MCHPO1.NE.0)SEGDES MCHPO1,MPOVA1 C? IF(MCHPO2.NE.0)SEGDES MCHPO2,MPOVA2 C? ENDIF RETURN C 'INV' 34 CONTINUE IF (NBMAT.EQ.1) THEN NAG=2 ELSE WRITE(6,*) 'KOPS: On ne peut inverser qu une matrice' END IF RETURN 91 CONTINUE WRITE(6,*)' Opérateur KOPS :' WRITE(6,*)' Nombre d''argument superieur a 2 ' RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales