prchan
C PRCHAN SOURCE GOUNAND 25/11/12 21:15:41 12399 SUBROUTINE PRCHAN C-------------------------------------------------------------------- C Ce sous programme permet : C C - De changer les elements d'un maillage C C - De convertir un MCHAML en CHPOINT (mot cle CHPO) C C - De convertir un CHPOINT en MCHAML (mot cle CHAM) C C - De changer le support d'un MCHAML C (mots cles NOEUDS, GRAVITE, RIGIDITE, MASSE et STRESSES) C C - De changer l'attribut d'un champ de points C C - De changer le nom du constituant d'un champ par element ou d un modele C C - De changer une rigidite cree par RELA en rigidite de dependence C C - Changer la casse d'un mot C-------------------------------------------------------------------- IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCNOYAU -INC CCHAMP -INC CCGEOME -INC SMELEME -INC SMLENTI -INC SMCHPOI -INC SMCHAML -INC SMRIGID -INC SMMODEL -INC SMLMOTS -INC SMCOORD PARAMETER (NTYP=31,LATRI=4,NLIG=9,NMOY=3) CHARACTER*4 LATRIB(LATRI) CHARACTER*4 LISMAT(3), LISCOM(2),LISMUL(2) CHARACTER*4 MOTLIG(NLIG), MOMOYE(NMOY) CHARACTER*72 CHAR,CHAR1 CHARACTER*8 CHAR8 CHARACTER*(LONOM) CNOM1,CNOM2 PARAMETER (LMOTL=512) CHARACTER*(LMOTL) MENT,MSOR CHARACTER*4 MOT1,MOT2,MOT3,MOT4 & 'STRESSES', 'THERMIQU', 'FACE ', 'P1CENTRE', & 'MSOMMET ', 'CHPO ', 'CHAM ', '--------', & '--------', 'TYPE ', 'ATTRIBUT', 'CONS ', & 'DEPE ', 'COND ', 'COMP ', 'INCO ', & 'TABL ', 'MINU ', 'MAJU ', 'TITR ', & 'LEGE ', 'NOMABS ', 'NOMORD ', 'STYL ', & 'MARQ ', 'TAIL ', 'COUL '/ DATA LATRIB / 'NATU', 'INDE', 'DIFF', 'DISC' / DATA LISMAT / 'SYME', 'ANTI', 'QUEL' / DATA LISCOM / 'COMP', 'REEL' / DATA LISMUL / 'MULT','DUPL' / DATA MOMOYE / 'SOMM', 'MOYE','SUPP'/ DATA MOTLIG / 'LIGN', 'LINE', 'QUAD', 'QUAF', 'MACR', 'CUBI', & 'DECL', 'LINB', 'SURF' / C On a besoin du MCOORD plus loin **** SEGACT,MCOORD ILIG=0 CNOM1 = ' ' CNOM2 = ' ' C --- Lecture des mots-clés de LISTYP --> IPLAC IF (IERR.NE.0) RETURN IF (IPLAC.NE.0) GOTO 1 C C --- Lecture des mots-clés de MOTLIG --> ILIG IF (ILIG.EQ.1) THEN CALL CHANLG RETURN ELSEIF(ILIG.EQ.2) THEN CALL CHANLI RETURN ELSEIF(ILIG.EQ.3) THEN CALL CHANQU RETURN ELSEIF(ILIG.EQ.4) THEN IF(IRET.EQ.0)RETURN IF(IKR.EQ.2)THEN CALL CHANQU ENDIF CALL C20227 RETURN ELSEIF(ILIG.EQ.5) THEN * CMACRO est buggé (position du point centre foireuse * On fait comme QUAF * CALL CMACRO * RETURN IF(IRET.EQ.0)RETURN IF(IKR.EQ.2)THEN CALL CHANQU ENDIF CALL C20227 RETURN ELSEIF(ILIG.EQ.6) THEN CALL CCUBIC RETURN ELSEIF(ILIG.EQ.7) THEN CALL CQ2L RETURN ELSEIF(ILIG.EQ.8) THEN CALL CLINB RETURN ELSEIF(ILIG.EQ.9) THEN RETURN ENDIF C C --- Lecture parmi la liste des NOMS --> ITY IF (ITY.EQ.0) ITY=ILCOUR IF (IRETOU.EQ.0) GOTO 99 C CB On ajoute la lecture d'un LISTENTIER optionnel pour indiquer C quels N-uplet de noeuds du MELEME vont constituer la connectivité C du MAILLAGE final IF (IRETOU.NE.0) THEN SEGACT,MLENTI ITYP1 = MELEME.ITYPEL IF (ITYP1 .NE. 1) THEN RETURN ENDIF NBEL1 = MELEME.NUM(/2) JG = LECT(/1) C Cas des ELEMENTS POLY et MULT IF (NOMS(ITY).EQ.'POLY' .OR. NOMS(ITY).EQ.'MULT') THEN NBNN = JG NBELEM = 1 C Cas des ELEMENTS classiques ELSE NBNN = NBNNE(ITY) NBELEM = JG/NBNN IF (MOD(JG,NBNN) .NE. 0) THEN MOTERR(1:8) =CNOM2 MOTERR(9:12)=NOMS(ITY) RETURN ENDIF ENDIF NBSOUS=0 NBREF =0 SEGINI,IPT1 IPT1.ITYPEL=ITY DO 259 IEL=1,NBELEM J=(IEL-1) * NBNN IPT1.ICOLOR(IEL)=IDCOUL DO 2591 I=1,NBNN IELEM = MLENTI.LECT(J+I) IF((IELEM .GT. NBEL1) .OR. (IELEM .LE. 0)) THEN INTERR(1) =IELEM MOTERR(1:8)=CNOM1 SEGSUP,IPT1 RETURN ENDIF IPT1.NUM(I,IEL)=MELEME.NUM(1,IELEM) 2591 CONTINUE 259 CONTINUE MELEME = IPT1 ELSE IF (IERR.NE.0) RETURN ENDIF RETURN C PAS D OPERANDE CORRECTE TROUVE --> ERREUR 99 CONTINUE IF (IRETOU.NE.0) THEN ELSE ENDIF RETURN C C OPERANDE CORRECTE TROUVE dans LISTYP : on aiguille C 1 CONTINUE GOTO (300, 300, 300, 300, 300, 300, 300, 300, 300, 100, & 800, 400, 600,1200,1300,1400,1500,1500,1600,1700, & 2100,2200,2200,3000,3000,3000,3000,3000,3000,3000,3000),IPLAC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C CHANGEMENT D'UN MCHAML EN CHPOINT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC IF(IMOY.EQ.0) IMOY=2 IMOY=IMOY-1 c MOYENNE(par defaut) : IMOY=1 SOMME : IMOY=0 GAUSS:IMOY=2 C Tente la lecture optionnelle d'un CHPOINT IF(IERR.NE.0) RETURN IF(IRETO3.EQ.1) THEN C Tente la lecture optionnelle d'un MMODEL IF(IERR.NE.0) RETURN C L'OBJET fourni etait deja un CHPOINT on crée un CHPOINT dupliqué MCHPOI=IPOI2 SEGINI,MCHPO1=MCHPOI SEGACT,MCHPO1*NOMOD IF(IERR.NE.0) RETURN RETURN ENDIF C Tente la lecture obligatoire d'un MMODEL IF(IERR.NE.0) RETURN C Tente la lecture obligatoire d'un MCHAML IF(IERR.NE.0) RETURN IF (IRET .EQ. 0) THEN IF(IERR .NE. 0) RETURN ELSE IPOI2 = IPOI3 ENDIF cbp, 2018-03-26 : option SUPPORT pour sortir un chpoint defini aux points c de Gauss sans changer de support (but : tracer) IF(IMOY.EQ.2) THEN * Lecture éventuelle d'un CHAMELEM de caractéristiques IPCARA=0 * Appel a la SUBROUTINE de travail RETURN ENDIF IF(IRT2.NE.0) THEN RETURN ENDIF C A PRIORI LE CHPO EST DE NATURE DIFFUSE MCHPOI = IPOI4 SEGACT MCHPOI*MOD JATTRI(1) = 1 RETURN 400 CONTINUE 600 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C CHANGEMENT D'UN CHPOINT EN MCHAML A PARTIR D'UN MODELE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C Lecture éventuelle d'un lieu support IF (IERR.NE.0) RETURN IPLAC = ISUP C Par defaut, le support est aux noeuds IF (IPLAC.EQ.0) IPLAC = 1 C Tente la lecture optionnelle d'un MCHAML IF (IERR.NE.0) RETURN IF (IRETOU.NE.0) THEN CALL REFUS GOTO 300 ENDIF IF (IERR.NE.0) RETURN IF (IRETOU.EQ.0) GOTO 900 IF(IERR.NE.0) RETURN LONS=0 MMODEL=IPOI1 N1=KMODEL(/1) DO 41 L=1,N1 IMODEL=KMODEL(L) IF (FORMOD(1).EQ.'NAVIER_STOKES') LONS=LONS+1 41 CONTINUE IF(LONS.EQ.0) THEN C C Tente la lecture optionnelle du Sous_Type IF (IERR.NE.0) RETURN IF (IRETOU.EQ.0) THEN CHAR=' ' IRETOU=1 ENDIF IF (IERR.NE.0) RETURN ELSEIF(LONS.EQ.N1) THEN C Traitement specifique dans le cas d'un objet modele de C type Navier-Stokes IF (IERR.NE.0) RETURN IF (ISUP.NE.0) THEN IF (IERR.NE.0) RETURN IPOI3=IPOI4 ENDIF ENDIF RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C CHANGEMENT DE CHPOINT EN MCHAML A PARTIR D'UN MAILLAGE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C Tente la lecture obligatoire d'un MAILLAGE IF(IERR.NE.0) RETURN C Tente la lecture obligatoire d'un CHPOINT IF(IERR.NE.0) RETURN C Tente la lecture optionnelle du Sous_Type IF(IERR.NE.0) RETURN C IF (IRETOU.EQ.0) THEN CHAR ='SCALAIRE' IRETOU=8 ENDIF C IF(IERR.NE.0) RETURN RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C CHANGEMENT DE SUPPORT D'UN MCHAML CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC IF (IERR.NE.0) RETURN IF(IERR.NE.0) RETURN LONS=0 MMODEL=IPOI1 N1=KMODEL(/1) DO 42 L=1,N1 IMODEL=KMODEL(L) IF(FORMOD(1).EQ.'NAVIER_STOKES') LONS=LONS+1 42 CONTINUE MCHELM =IPOI2 IF(LONS.EQ.0) THEN C cas normal C On procède au REDUAF IF (IRET .EQ. 0) THEN IF (IERR .NE. 0) RETURN ENDIF IPOI2 = IPOI3 IF(IRT2.NE.0) THEN RETURN ENDIF ELSEIF(LONS.EQ.N1) THEN C Traitement specifique dans le cas d'un objet modele de C type Navier-Stokes IF (IERR.NE.0) RETURN ENDIF C Tente la lecture optionnelle du Sous_Type IF(IERR.NE.0) RETURN IF (IRETOU .NE.0) THEN IPOI1=IPOI3 GOTO 1201 ELSE C On remet le TITCHE du champ d'entree SEGACT MCHELM L1=TITCHE(/1) MCHEL1 = IPOI3 SEGACT MCHEL1*MOD N1=MCHEL1.INFCHE(/1) N3=MCHEL1.INFCHE(/2) SEGADJ,MCHEL1 MCHEL1.TITCHE=MCHELM.TITCHE ENDIF C RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C CHANGEMENT DE TITRE (mot clé 'TYPE') D'UN MCHAML CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC c mot clé 'TYPE' aussi utilisé pour RIGIDITE IF(IRETOU.EQ.0) GOTO 1250 IF(IERR.NE.0) RETURN RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C CHANGEMENT DU TYPE D'UNE RIGIDITE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC IF (IERR.NE.0) RETURN RI1 = IRIG SEGINI,MRIGID=RI1 IF(IERR.NE.0) RETURN MTYMAT = CHAR8 SEGDES,MRIGID RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C CHANGEMENT DE L'ATTRIBUT D'UN CHAMP DE POINTS CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 1300 CONTINUE C IF (IERR.NE.0) RETURN IF (IERR.NE.0) RETURN MCHPOI = IPOI1 C CHANGEMENT DE NATURE IF ( IPLAC .EQ. 1 ) THEN IPLAC = IPLAC - 2 SEGINI, MCHPO1=MCHPOI DO iou=1,mchpo1.ipchp(/1) msoupo=mchpo1.ipchp(iou) segini,msoup1=msoupo mchpo1.ipchp(iou)=msoup1 ENDDO IPOI2 = MCHPO1 MCHPO1.JATTRI(1) = IPLAC ELSE MOTERR(1:4)='NATU' RETURN ENDIF RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C CHANGEMENT DE CONSTITUANT D'UN MCHAML ou d'un MMODEL CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC IF (IERR.NE.0) RETURN IF (iretou.eq.1) THEN MCHELM = IPOI1 SEGINI , MCHEL1 = MCHELM IF (IERR.NE.0) RETURN N1 = MCHEL1.CONCHE(/2) CHAR1 = MCHEL1.CONCHE(1) DO 1410 I=1,N1 IF ( MCHEL1.CONCHE(I) .NE. CHAR1) THEN SEGSUP MCHEL1 RETURN ENDIF 1410 CONTINUE DO 1420 I=1,N1 MCHEL1.CONCHE(I) = CHAR 1420 CONTINUE IPOI1 = MCHEL1 RETURN ELSE IF (ierr.ne.0) RETURN mmode1 = ipoi1 n1 = mmode1.kmodel(/1) imode1 = mmode1.kmodel(1) char1(1:LCONMO) = imode1.conmod IF (n1.gt.1) THEN DO ikmo = 2,n1 imode2 = mmode1.kmodel(ikmo) IF (char1(1:LCONMO).ne.imode2.conmod(1:LCONMO)) THEN RETURN ENDIF ENDDO ENDIF segini,mmodel = mmode1 IF (IERR.NE.0) RETURN DO ikmo = 1,n1 imode1 = kmodel(ikmo) segini,imodel = imode1 NFOR=FORMOD(/2) C CAS DARCY OU NAVIER ON OUBLIE LA TABLE DE PRECONDITIONNEMENT IF((IDARC.NE.0).OR.(INAVI.NE.0).OR.(IEULE.NE.0)) INFMOD(2)=0 kmodel(ikmo) = imodel conmod = char ENDDO ipoi1 = mmodel RETURN ENDIF CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C CHANGEMENT D UNE RIGIDITE CREE PAR RELATION C EN MATRICE DE DEPENDANCE OU DE CONDENSATION CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC IF (IERR.NE.0) RETURN C verification que la rigidité ne contient que des relation C c'est à dire n'est supportée que par des maillage de type 22 C MRIGID = IRIG SEGACT, MRIGID*NOMOD DO 1510 I=1,IRIGEL(/2) MELEME = IRIGEL(1,I) SEGACT , MELEME*NOMOD IF (ITYPEL.NE.22) THEN RETURN ENDIF 1510 CONTINUE C C matrice de depedence MRIGID = IRIG SEGACT MRIGID segini , ri1=MRIGID iri1 = ri1 C nrige=8 nrigel=irigel(/2) segadj ri1 DO 1520 i=1,nrigel ri1.irigel(8,i)=1 1520 CONTINUE segdes mrigid,ri1 C IF(iplac.eq.17) THEN ELSE ENDIF RETURN c RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C CHANGEMENT DE NOM D'INCONNUES PRIMALE ET DUALE D'UNE MATRICE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 1700 CONTINUE IF (IRETOU.NE.0) THEN CALL REFUS CALL MACHIN RETURN ENDIF C lecture du mot cle COMPLEXE ou REEL ou rien IF( ierr.ne.0) RETURN IF(IIMPI.ge.3) write(IOIMP,*) '>>> CHAN INCO de ',RI1,' <<<' c ---Cas de 4 LISTMOTS ou 4 MOT --- IF(IVAL.EQ.0 )THEN IF (ilmots.eq.0) then IF( ierr.ne.0) RETURN IF( ierr.ne.0) RETURN IF( ierr.ne.0) RETURN IF( ierr.ne.0) RETURN JGN=4 JGM=1 segini mlmot1,mlmot2,mlmot3,mlmot4 ELSE IF( ierr.ne.0) RETURN IF( ierr.ne.0) RETURN IF( ierr.ne.0) RETURN ENDIF C lecture de la nature SYME ANTI ... IPLAMA=0 C Par defaut : 'NON SYMETRIQUE' IF (IPLAMA.EQ.0) IPLAMA=3 C lecture du mot cle MULT ou DUPL (ou rien) C segact mlmot1,mlmot2,mlmot3,mlmot4 IF(il1.ne.il2.or.il3.ne.il4) THEN *dbg write(ioimp,*) 'il1,il2,il3,il4=',il1,il2,il3,il4 RETURN ENDIF IF(IIMPI.ge.3) write(IOIMP,*) $ 'cas de 4 LISTMOTS ou 4 MOTS fournis ' c ---Cas COMPLEXE/REEL--- ELSE JGN=4 JGM=lnomdd segini mlmot1,mlmot2,mlmot3,mlmot4 DO jkl=1,lnomdd ENDDO IF(IIMPI.ge.3) write(IOIMP,*) 'cas COMPLEXE/REEL' ENDIF C Creation du MRIGID de sortie = presque copie de l entree segini,mrigid=ri1 ichole=0 imgeo1=0 imgeo2=0 isupeq=0 jrcond=0 jrdepp=0 jrdepd=0 jrelim=0 jrgard=0 jrtot=0 DO 1701 k=1,irigel(/2) irigel(7,k) = IPLAMA-1 C creation des XMATRI (avec la symetrie identique a MRIGID.irigel(4,k)) XMATR1=irigel(4,k) segini,XMATRI=XMATR1 irigel(4,k)=XMATRI XMATRI.SYMRE=irigel(7,k) XMATRI.SYMVER=0 c creation et modif du DESCR des1=irigel(3,k) segini,descr=des1 irigel(3,k)=descr nbdua=lisdua(/2) IF(lisinc(ka).EQ.'LX '.and.iplmul.eq.0) go to 1702 DO 1703 kb=1,il1 go to 1702 ENDIF 1703 CONTINUE 1702 CONTINUE DO 1704 ka=1,nbdua IF( lisdua(ka).eq.'FLX '.and.iplmul.eq.0) go to 1704 DO 1705 kb=1,il3 go to 1704 ENDIF 1705 CONTINUE 1704 CONTINUE C on teste si c'est un LX : si oui, on crée un nouveau noeud C rem : on suppose qu'il n y a qu'1 LX par matrice et a une C position quelconque kap kap=0 * write(ioimp,*) 'k,ka,lisinc(ka),lisdua(ka)=',k,ka,lisinc(ka) * $ ,lisdua(ka) if (lisinc(ka).eq.'LX ') THEN kap=ka if (lisdua(ka).ne.'FLX ') THEN * SG 2025/04/28 Si uniquement l'un des deux est LX ou FLX, on * considere ceci comme une erreur RETURN endif goto 1706 endif 1707 continue 1706 continue if (kap.ne.0) THEN if (iplmul.eq.2) then IF(IIMPI.ge.3) write(IOIMP,*) $ 'creation de nouveaux noeuds LX' c IF(IIMPI.ge.3) THEN c write(IOIMP,*) 'mlmot1=',(mlmot1.mots(iou),iou=1,il1) c write(IOIMP,*) 'mlmot2=',(mlmot2.mots(iou),iou=1,il2) c write(IOIMP,*) 'mlmot3=',(mlmot3.mots(iou),iou=1,il3) c write(IOIMP,*) 'mlmot4=',(mlmot4.mots(iou),iou=1,il4) c write(IOIMP,*) 'lisinc=',(lisinc(iou),iou=1,nbinc) c write(IOIMP,*) 'lisdua=',(lisdua(iou),iou=1,nbdua) c ENDIF ipt1=irigel(1,k) segini,meleme=ipt1 * SG 2025/04/28 Dans les cas ou une inconnues est LX-FLX, on force * le type du MELEME a 22 (SIMPle) multiplicateur sinon, ca se passe * mal dans RESO itypel=22 irigel(1,k)=meleme segact,MCOORD*MOD inp=NOELEP(kap) DO 1708 iel=1,num(/2) NBPTS=NBPTS + 1 num(inp,iel)=NBPTS 1708 CONTINUE segadj,MCOORD segdes,mcoord else ipt1=irigel(1,k) segact ipt1 if (ipt1.itypel.ne.22) then segini,meleme=ipt1 itypel=22 irigel(1,k)=meleme endif endif else * SG 2025/04/28 Si ce ne sont pas des LX, pas de type 22 mais POLY (32) ipt1=irigel(1,k) segact ipt1 if (ipt1.itypel.eq.22) then segini,meleme=ipt1 itypel=32 irigel(1,k)=meleme endif endif * ipt1=irigel(1,k) * segact ipt1 * write(ioimp,*) 'itypel=',ipt1.itypel 1701 CONTINUE IF(ival.eq.0) THEN if (ilmots.eq.0) then segsup mlmot1,mlmot2,mlmot3,mlmot4 endif ELSE segsup mlmot1,mlmot2,mlmot3,mlmot4 ENDIF RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C changement de presentation d'un chargement C mise sous forme table de chpoint (plus rapide pour l'opérateur TIRE) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C Changement de la casse d'un mot CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 2200 CONTINUE ICASS=IPLAC-22 IF (IERR.NE.0) RETURN RETURN 3000 CONTINUE IF (CHAR8.NE.'CHPOINT'.AND.CHAR8.NE.'EVOLUTIO') THEN MOTERR(1:16)='CHPOINT EVOLUTIO' RETURN ENDIF CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C Changement de titre d'un CHPOINT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC IF (CHAR8.EQ.'CHPOINT ') THEN IF (IERR.NE.0) RETURN MCHPO1=IP1 SEGINI,MCHPOI=MCHPO1 MOCHDE=CHAR1 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C Changement des noms d'une evolution CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC ELSEIF (CHAR8.EQ.'EVOLUTIO') THEN IF (IERR.NE.0) RETURN IFOIS = 0 4000 CONTINUE ITIT1=IPLAC-23 IENT1=0 K=0 char1 = ' ' IF (ITIT1.LT.5) THEN IF (IERR.NE.0) RETURN IF (IPLAC.NE.0) THEN RETURN ENDIF ELSE IF (ITIT1.EQ.5) THEN IF (IPLAC.NE.0) THEN CALL REFUS IRETOU = 0 ENDIF IF (IRETOU.EQ.0) THEN IF (IERR.NE.0) RETURN IF (IENT1.EQ.0) IENT1 = -1 ENDIF ELSE IF (ITIT1.EQ.6) THEN IF (IPLAC.NE.0) THEN CALL REFUS IRETOU = 0 ENDIF IF (IRETOU.EQ.0) THEN IF (IERR.NE.0) RETURN IF (IENT1.EQ.0) IENT1 = -1 ENDIF ELSE IF (ITIT1.EQ.7) THEN IF (IPLAC.NE.0) THEN CALL REFUS IRETOU = 0 ENDIF IF (IRETOU.EQ.0) THEN IF (IERR.NE.0) RETURN IF (IENT1.EQ.0) IENT1 = -1 ENDIF ELSE IF (ITIT1.EQ.8) THEN IF (IPLAC.NE.0) THEN CALL REFUS IRETOU = 0 ENDIF IF (IRETOU.EQ.0) THEN IF (IERR.NE.0) RETURN IF (IENT1.EQ.0) IENT1 = -1 ENDIF ENDIF C write(6,*) 'prchan:itit1,ient1,K,char1=',itit1,ient1,K,char1 IF (IPLAC.GT.23) THEN IEV1 = IEV2 IFOIS = IFOIS+1 GOTO 4000 ENDIF ENDIF END
© Cast3M 2003 - Tous droits réservés.
Mentions légales