menag2
C MENAG2 SOURCE PV090527 24/06/12 21:15:09 11940 C SUPPRIMER LES SEGMENTS INDESIRABLES C DESACTIVER LES AUTRES C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) C======================================================================= C TABLEAU KCOLA: VOIR SIGNIFICATION DANS SOUS-PROGRAMME TYPFIL C======================================================================= CHARACTER*8 MODYN SEGMENT ISLIS(NP) SEGMENT IBLIS(ISLIS(/1)) * SEGMENT BIDON POUR REMPLACER LES TROP NOMBREUSES * DECLARATION SEGMENT ISEG(0) * integer ooolen -INC PPARAM -INC CCOPTIO -INC SMCOORD -INC TMCOLAC *-INC SMCOORD *-INC SMELEME -INC SMCHPOI -INC SMRIGID *-INC SMCLSTR *-INC SMELSTR -INC SMSTRUC *-INC SMTABLE -INC SMINTE -INC SMATTAC -INC SMMATRI -INC SMSOLUT *-INC SMSUPER -INC SMTEXTE *-INC SMDEFOR -INC CCASSIS -INC TMVECRIG -INC SILICRE MODYN='DYNAMIQU' ILISSE=ILISSG NP=ILISEG(/1) SEGINI ISLIS * A TOUT HASARD SAUVER LA CONFIGURATION COURANTE ISLIS((MCOORD-1)/npgcd)=1 SEGACT ICOLAC * * CAS DES MELEME * ITLACC=KCOLA(1) IF (ITLAC(/1).EQ.0) GOTO 20 DO 12 I=1,ITLAC(/1) ISEG=ITLAC(I) IF (ISEG.NE.0) THEN ISLIS((ISEG-1)/npgcd)=1 * ne pas desactiver si trop grand car boucle menage automatique if (ooolen(iseg).lt.10000000) then SEGDES ISEG else SEGact ISEG endif ENDIF 12 CONTINUE 20 CONTINUE * * CAS DES CHPOINT * ITLACC=KCOLA(2) IF (ITLAC(/1).EQ.0) GOTO 30 DO 21 I=1,ITLAC(/1) MCHPOI=ITLAC(I) IF (MCHPOI.EQ.0) GOTO 21 ISLIS((MCHPOI-1)/npgcd)=1 SEGACT MCHPOI if (ipchp(/1).gt.1000.or.ipchp(/1).lt.0) then write (6,*) ' menag2 chpo incorrect ', > mchpoi,j,ipchp(/1),msoupo goto 21 endif DO 22 J=1,IPCHP(/1) MSOUPO=IPCHP(J) if (msoupo.eq.0) goto 22 if (msoupo.le.100) then write (6,*) ' menag2 chpo incorrect ', > mchpoi,j,ipchp(/1),msoupo goto 21 endif ISLIS((MSOUPO-1)/npgcd)=1 SEGACT MSOUPO MPOVAL=IPOVAL C C BIZARRE : DANS UN ATTACH, ON TROUVE UN CHPOI SANS MPOVAL ? IF(MPOVAL.NE.0) THEN ISLIS((MPOVAL-1)/npgcd)=1 SEGDES MPOVAL ENDIF SEGDES MSOUPO 22 CONTINUE SEGDES MCHPOI 21 CONTINUE 30 CONTINUE * * CAS DES MRIGID (ON REMPLIT MMATRI CAR CA N'A PAS L'AIR FAIT DANS * FILLPO * ITLACC=KCOLA(3) ITLAC1=KCOLA(16) IF (ITLAC(/1).EQ.0) GOTO 40 DO 31 I=1,ITLAC(/1) MRIGID=ITLAC(I) ISLIS((MRIGID-1)/npgcd)=1 SEGACT MRIGID * IF (ICHOLE.NE.0) ITLAC1.ITLAC(**)=ICHOLE IMGEOD=IMGEO1 IF (IMGEOD.NE.0) THEN ISLIS((IMGEOD-1)/npgcd)=1 SEGDES IMGEOD ENDIF IF(IVECRI.NE.0) then ISLIS((IVECRI-1)/npgcd)=1 MVECRI=IVECRI SEGDES MVECRI ENDIF DO 32 J=1,IRIGEL(/2) DESCR=IRIGEL(3,J) ISLIS((DESCR-1)/npgcd)=1 SEGDES DESCR * maintenant fait dans la pile imatri *** xmatri=irigel(4,j) *** islis((xmatri-1)/npgcd)=1 *** segdes xmatri 32 CONTINUE SEGDES MRIGID 31 CONTINUE 40 CONTINUE * * CAS DES BLOQ STRUC * ITLACC=KCOLA(6) IF (ITLAC(/1).EQ.0) GOTO 70 DO 61 I=1,ITLAC(/1) * MCLSTR=ITLAC(I) * ISLIS((MCLSTR-1)/npgcd)=1 * SEGDES MCLSTR ISEG=ITLAC(I) ISLIS((ISEG-1)/npgcd)=1 SEGDES ISEG 61 CONTINUE 70 CONTINUE * * CAS DES ELEM STRUC * ITLACC=KCOLA(7) IF (ITLAC(/1).EQ.0) GOTO 80 DO 71 I=1,ITLAC(/1) * MELSTR=ITLAC(I) * ISLIS((MELSTR-1)/npgcd)=1 * SEGDES MELSTR ISEG=ITLAC(I) ISLIS((ISEG-1)/npgcd)=1 SEGDES ISEG 71 CONTINUE 80 CONTINUE * * CAS DES MSOLUT * ITLACC=KCOLA(8) SEGACT ITLACC IF (ITLAC(/1).EQ.0) GOTO 90 DO 81 I=1,ITLAC(/1) MSOLUT=ITLAC(I) ISLIS((MSOLUT-1)/npgcd)=1 SEGACT MSOLUT C C ZONE COMMUNE PAS SI COMMUNE QUE CA | C IF(ITYSOL.EQ.MODYN) THEN MSOLRE=MSOLIS(1) ISLIS((MSOLRE-1)/npgcd)=1 SEGDES MSOLRE MSOLEN=MSOLIS(2) IF(MSOLEN.NE.0) THEN ISLIS((MSOLEN-1)/npgcd)=1 SEGDES MSOLEN ENDIF ENDIF ISEG=MSOLIS(3) IF(ISEG.NE.0) THEN ISLIS((ISEG-1)/npgcd)=1 SEGDES ISEG ENDIF MSOLEN=MSOLIS(4) IF(MSOLEN.NE.0) THEN ISLIS((MSOLEN-1)/npgcd)=1 SEGACT MSOLEN DO 82 NS=1,ISOLEN(/1) MMODE=ISOLEN(NS) ISLIS((MMODE-1)/npgcd)=1 SEGDES MMODE 82 CONTINUE SEGDES MSOLEN ENDIF C NIPO=MSOLIS(/1) DO 83 J=5,NIPO MSOLEN=MSOLIS(J) IF(MSOLEN.NE.0) THEN ISLIS((MSOLEN-1)/npgcd)=1 SEGDES MSOLEN ENDIF 83 CONTINUE SEGDES MSOLUT 81 CONTINUE 90 CONTINUE * * CAS DES MSTRUC * ITLACC=KCOLA(9) IF (ITLAC(/1).EQ.0) GOTO 100 DO 91 I=1,ITLAC(/1) MSTRUC=ITLAC(I) ISLIS((MSTRUC-1)/npgcd)=1 SEGDES MSTRUC 91 CONTINUE 100 CONTINUE * * CAS DES MTABLE * ITLACC=KCOLA(10) IF (ITLAC(/1).EQ.0) GOTO 110 DO 101 I=1,ITLAC(/1) * MTABLE=ITLAC(I) * ISLIS((**-1)/npgcd)=MTABLE * SEGDES MTABLE ISEG=ITLAC(I) ISLIS((ISEG-1)/npgcd)=1 SEGDES ISEG 101 CONTINUE 110 CONTINUE * * CAS DES MSOSTU * ITLACC=KCOLA(12) IF (ITLAC(/1).EQ.0) GOTO 130 DO 121 I=1,ITLAC(/1) MSOSTU=ITLAC(I) ISLIS((MSOSTU-1)/npgcd)=1 SEGDES MSOSTU 121 CONTINUE 130 CONTINUE * * CAS DES IMATRI * ITLACC=KCOLA(13) IF (ITLAC(/1).EQ.0) GOTO 140 DO 131 I=1,ITLAC(/1) IMATRI=ITLAC(I) ISLIS((IMATRI-1)/npgcd)=1 131 CONTINUE 140 CONTINUE * * CAS DES MJONCT * ITLACC=KCOLA(14) IF (ITLAC(/1).EQ.0) GOTO 150 DO 141 I=1,ITLAC(/1) MJONCT=ITLAC(I) ISLIS((MJONCT-1)/npgcd)=1 SEGDES MJONCT 141 CONTINUE 150 CONTINUE * * CAS DES MATTAC * ITLACC=KCOLA(15) SEGACT ITLACC IF (ITLAC(/1).EQ.0) GOTO 160 DO 151 I=1,ITLAC(/1) MATTAC=ITLAC(I) SEGACT MATTAC ISLIS((MATTAC-1)/npgcd)=1 DO 152 NM=1,LISATT(/1) MSOUMA=LISATT(NM) if (MSOUMA.gt.0) then ISLIS((MSOUMA-1)/npgcd)=1 SEGACT MSOUMA MPHYCH=IPHYCH if (MPHYCH.gt.0) then ISLIS((MPHYCH-1)/npgcd)=1 SEGDES MPHYCH endif MGEOCH=IGEOCH if (MGEOCH.gt.0) then ISLIS((MGEOCH-1)/npgcd)=1 SEGDES MGEOCH endif DO 153 NATR=1,IATREL(/1) MJONCT=IATREL(NATR) ISLIS((MJONCT-1)/npgcd)=1 C SEGDES MJONCT 153 CONTINUE SEGDES MSOUMA endif 152 CONTINUE SEGDES MATTAC 151 CONTINUE 160 CONTINUE * * CAS DES MMATRI : LES MMATRI N'ETANT PAS REMPLI DANS LE PROCESSUS * NORMAL : FILLPO ON LES REMPLI AU NIVEAU DE MRIGID * ON EST EGALEMENT CONTRAINT DE SAUVER IGEOMA (MELEME) CAR CE N'EST * PAS FAIT AUTOMATIQUEMENT * ITLACC=KCOLA(16) IF (ITLAC(/1).EQ.0) GOTO 170 DO 161 I=1,ITLAC(/1) MMATRI=ITLAC(I) ISLIS((MMATRI-1)/npgcd)=1 SEGACT MMATRI ISEG=IGEOMA ISLIS((ISEG-1)/npgcd)=1 SEGDES ISEG MDIAG=IDIAG ISLIS((MDIAG-1)/npgcd)=1 SEGDES MDIAG MINCPO=IINCPO ISLIS((MINCPO-1)/npgcd)=1 SEGDES MINCPO IF(IDUAPO.GT.0) THEN MINCPO=IDUAPO ISLIS((MINCPO-1)/npgcd)=1 SEGDES MINCPO ENDIF MIDUA=IIDUA ISLIS((MIDUA-1)/npgcd)=1 SEGDES MIDUA MIMIK=IIMIK ISLIS((MIMIK-1)/npgcd)=1 SEGDES MIMIK MDNOR=IDNORM ISLIS((MDNOR-1)/npgcd)=1 SEGDES MDNOR MHARK=IHARK ISLIS((MHARK-1)/npgcd)=1 SEGDES MHARK IF(IHARDU.GT.0) THEN MHARK=IHARDU ISLIS((MHARK-1)/npgcd)=1 SEGDES MHARK ENDIF IF(IDNORD.GT.0) THEN MDNO1=IDNORD ISLIS((MDNO1-1)/npgcd)=1 SEGDES MDNO1 ENDIF IF (JLICRE.NE.0) then ISLIS((JLICRE-1)/npgcd)=1 ILICRE=JLICRE SEGACT ILICRE ligcre=ligcrp ISLIS((LIGCRE-1)/npgcd)=1 segdes ligcre,ilicre ENDIF MILIGN=IILIGN ISLIS((MILIGN-1)/npgcd)=1 SEGACT MILIGN DO 162 J=1,ILIGN(/1) ISLIS((LIGN-1)/npgcd)=1 SEGDES LIGN 162 CONTINUE SEGDES MILIGN IF(IILIGS.NE.0) THEN MILIGN=IILIGS ISLIS((MILIGN-1)/npgcd)=1 SEGACT MILIGN DO 163 J=1,ILIGN(/1) ISLIS((LIGN-1)/npgcd)=1 SEGDES LIGN 163 CONTINUE SEGDES MILIGN ENDIF IF(IASLIG.NE.0) THEN ISLIS((IASLIG-1)/npgcd)=1 MILIGN=IASLIG SEGACT MILIGN DO 164 J=1,ILIGN(/1) ISLIS((LIGN-1)/npgcd)=1 SEGDES LIGN 164 CONTINUE SEGDES MILIGN MDIAG=IASDIA ISLIS((MDIAG-1)/npgcd)=1 SEGDES MDIAG ENDIF SEGDES MMATRI 161 CONTINUE 170 CONTINUE * * CAS DES MDEFOR * ITLACC=KCOLA(17) IF (ITLAC(/1).EQ.0) GOTO 180 DO 171 I=1,ITLAC(/1) * MDEFOR=ITLAC(I) * ISLIS((MDEFOR-1)/npgcd)=1 * SEGDES MDEFOR ISEG=ITLAC(I) ISLIS((ISEG-1)/npgcd)=1 SEGDES ISEG 171 CONTINUE 180 CONTINUE * * LA SUITE EST DANS MENAG6 * * * ORDONNER LES SEGMENTS * NP=0 DO 11 I=1,ISLIS(/1) IF( ISLIS(I).NE.0) THEN NP=NP+1 ISLIS(NP)=I*npgcd+1 ENDIF 11 CONTINUE SEGADJ ISLIS * SEGINI IBLIS * CALL TRIENT(ISLIS(1),IBLIS(1),ISLIS(/1)) * SEGSUP IBLIS RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales