chiclm
C CHICLM SOURCE CHAT 05/01/12 21:56:55 5004 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C------------------------------------------------------------------ C C PRISE EN COMPTE DES CONDITIONS AUX LIMITES C IZIADR POINTEUR DE LA LISTE DES ESPECES SIMPLES DE TYPE 3 C MLENT3 POINTEUR DE LA LISTE DES ESPECES SIMPLES A RETENIR C (CONTENU DE CLIM.COMP3 ) C LIMP3 POINTEUR DE LA LISTE DES ESPECES IMPOSES EN 3 C (ON A BESOIN DE CETTE INFORMATION DANS CHIMI2) C C------------------------------------------------------------------ -INC SMTABLE -INC SMLENTI -INC PPARAM -INC CCOPTIO POINTEUR MLIDEN.MLENTI SEGMENT IDSCHI REAL*8 GK(NYDIM),AA(NYDIM,NXDIM),FF(NZDIM,NPDIM) INTEGER IDX(NXDIM),IDY(NYDIM),IDZ(NZDIM),IDP(NPDIM),NN(6) INTEGER IDECY(NYDIM),IONZ(NXDIM) CHARACTER*32 NAME(NXDIM),NAMESP(NYDIM) ENDSEGMENT SEGMENT IZIADR INTEGER IADR(NCR) ENDSEGMENT CHARACTER*8 MTYPI,CHARI,MTYPR,CHARR LOGICAL LOGRE C NCR=0 NYDIM=IDY(/1) NXDIM=IDX(/1) NZDIM=IDZ(/1) NPDIM=IDP(/1) MTAB1=ICLIM SEGACT MTAB1 IF(IZIADR.EQ.0) SEGINI IZIADR NCR=IADR(/1) LIMP3=0 NL=0 IVALI=1 XVALI=0.D0 IRETI=0 IVALR=0 XVALR=0.D0 IRETR=0 MTYPI='MOT ' MTYPR=' ' CHARR=' ' *IRETI,MTYPR,IVALR,XVALR,CHARR,LOGRE,IRETR) IF(MTYPR.NE.' ')THEN IF(MTYPR.EQ.'LISTENTI')THEN MLENT1=IRETR SEGACT MLENT1 LIMP3=MLENT1 NL=MLENT1.LECT(/1) LTYPE=3 DO 40 J=1,NL IDYT=MLENT1.LECT(J) II=0 C ON RECHERCHE LE TYPE INITIAL POUR LE CHANGER EN TYPE 3 DO 20 L=1,6 LL=L IF(NN(L).NE.0)THEN I0=II+1 II=II+NN(L) DO 10 I=I0,II IF(IDY(I).EQ.IDYT)GO TO 30 10 CONTINUE ENDIF 20 CONTINUE C WRITE(6,*) IDYT,' N EST PAS UNE ESPECE CONNUE ' INTERR(1)=IDYT RETURN 30 CONTINUE C write(6,*)' idyt ll ltype ',IDYT,LL,LTYPE 40 CONTINUE ELSE MOTERR(1:11)='CLIM TYP3 ' MOTERR(12:20)='LISTENTI' RETURN ENDIF ENDIF MLENT3=0 IVALI=1 XVALI=0.D0 IRETI=0 IVALR=0 XVALR=0.D0 IRETR=0 MTYPI='MOT ' MTYPR=' ' CHARR=' ' *IRETI,MTYPR,IVALR,XVALR,CHARR,LOGRE,IRETR) IF(MTYPR.NE.' ')THEN IF(MTYPR.EQ.'LISTENTI')THEN MLENT3=IRETR SEGACT MLENT3 NLC=MLENT3.LECT(/1) IF(NLC.NE.NL)THEN C WRITE(6,*)' COMP3 NE CORRESPOND PAS A TYP3 ' MOTERR(1:8)='COMP3 ' MOTERR(9:16)='TYP3 ' RETURN ENDIF DO 50 J=1,NLC IDXT= MLENT3.LECT(J) IDYT= MLENT1.LECT(J) IF(IDXT.NE.IDYT)THEN IF(NDX.EQ.0)THEN C WRITE(6,*) IDXT,' N EST PAS UN COMPOSANT DE', IDYT INTERR(1)=IDXT INTERR(2)=IDYT RETURN ENDIF C write(6,*)' ndx ndy aa',ndx,ndy,aa(ndy,ndx) IF(AA(NDY,NDX).EQ.0.D0)THEN C IDXT N EST PAS UNE COMPOSANTE DE IDYT C WRITE(6,*) IDXT,' N EST PAS UN COMPOSANT DE', IDYT INTERR(1)=IDXT INTERR(2)=IDYT RETURN ENDIF ELSE IF(NDY.EQ.0)THEN C IDYT N EST PAS SIMPLE IL FAUT PRECISER LE COMPOSANT IMMOBILE C WRITE(6,*) IDYT,' N EST PAS SIMPLE PRECISEZ COMP3 ' INTERR(1)=IDYT RETURN ENDIF ENDIF 50 CONTINUE SEGDES MLENT1 ELSE MOTERR(1:11)='CLIM COMP3 ' MOTERR(12:20)='LISTENTI' RETURN ENDIF ELSE IF(NL.NE.0)THEN DO 55 J=1,NL IDYT=MLENT1.LECT(J) IF(NDY.EQ.0)THEN C IDYT N EST PAS SIMPLE IL FAUT PRECISER LA COMPOSANTE IMMOBILE C WRITE(6,*) IDYT,' N EST PAS SIMPLE PRECISEZ COMP3 ' INTERR(1)=IDYT RETURN ENDIF 55 CONTINUE SEGDES MLENT1 ENDIF ENDIF IVALI=1 XVALI=0.D0 IRETI=0 IVALR=0 XVALR=0.D0 IRETR=0 MTYPI='MOT ' MTYPR=' ' CHARR=' ' *IRETI,MTYPR,IVALR,XVALR,CHARR,LOGRE,IRETR) IF(MTYPR.NE.' ')THEN IF(MTYPR.EQ.'LISTENTI')THEN MLENT2=IRETR SEGACT MLENT2 NL=MLENT2.LECT(/1) LTYPE=6 DO 90 J=1,NL IDYT=MLENT2.LECT(J) II=0 DO 70 L=1,6 LL=L IF(NN(L).NE.0)THEN I0=II+1 II=II+NN(L) DO 60 I=I0,II IF(IDY(I).EQ.IDYT)GO TO 80 60 CONTINUE ENDIF 70 CONTINUE C WRITE(6,*) IDYT,' N EST PAS UNE ESPECE CONNUE ' INTERR(1)=IDYT RETURN 80 CONTINUE C SI IADR EXISTE ON ENLEVE IDYT DE CETTE LISTE IF(IZIADR.NE.0)THEN IF(JJ.GT.0)THEN NCR=NCR-1 DO 85 KJ=JJ,NCR IADR(KJ)=IADR(KJ+1) 85 CONTINUE SEGADJ IZIADR WRITE(6,*)'chiclm type6 iziadr=',iziadr ENDIF ENDIF 90 CONTINUE SEGDES MLENT2 ELSE MOTERR(1:11)='CLIM TYP6 ' MOTERR(12:20)='LISTENTI' RETURN ENDIF ENDIF IVALI=1 XVALI=0.D0 IRETI=0 IVALR=0 XVALR=0.D0 IRETR=0 MTYPI='MOT ' MTYPR=' ' CHARR=' ' *IRETI,MTYPR,IVALR,XVALR,CHARR,LOGRE,IRETR) IF(MTYPR.NE.' ')THEN IF(MTYPR.EQ.'LISTENTI')THEN MLENT2=IRETR SEGACT MLENT2 NL=MLENT2.LECT(/1) LTYPE=4 DO 190 J=1,NL IDYT=MLENT2.LECT(J) II=0 DO 170 L=1,6 LL=L IF(NN(L).NE.0)THEN I0=II+1 II=II+NN(L) DO 160 I=I0,II IF(IDY(I).EQ.IDYT)GO TO 180 160 CONTINUE ENDIF 170 CONTINUE C WRITE(6,*) IDYT,' N EST PAS UNE ESPECE CONNUE ' INTERR(1)=IDYT RETURN 180 CONTINUE C SI IADR EXISTE ON ENLEVE IDYT DE CETTE LISTE IF(IZIADR.NE.0)THEN IF(JJ.GT.0)THEN NCR=NCR-1 DO 185 KJ=JJ,NCR IADR(KJ)=IADR(KJ+1) 185 CONTINUE SEGADJ IZIADR write(6,*)'chiclm type4 iziadr=',iziadr ENDIF ENDIF 190 CONTINUE SEGDES MLENT2 ELSE MOTERR(1:11)='CLIM TYP4 ' MOTERR(12:20)='LISTENTI' RETURN ENDIF ENDIF IVALI=1 XVALI=0.D0 IRETI=0 IVALR=0 XVALR=0.D0 IRETR=0 MTYPI='MOT ' MTYPR=' ' CHARR=' ' *IRETI,MTYPR,IVALR,XVALR,CHARR,LOGRE,IRETR) IF(MTYPR.NE.' ')THEN IF(MTYPR.EQ.'LISTENTI')THEN MLENT2=IRETR SEGACT MLENT2 NL=MLENT2.LECT(/1) LTYPE=5 DO 290 J=1,NL IDYT=MLENT2.LECT(J) II=0 DO 270 L=1,6 LL=L IF(NN(L).NE.0)THEN I0=II+1 II=II+NN(L) DO 260 I=I0,II IF(IDY(I).EQ.IDYT)GO TO 280 260 CONTINUE ENDIF 270 CONTINUE C WRITE(6,*) IDYT,' N EST PAS UNE ESPECE CONNUE ' INTERR(1)=IDYT RETURN 280 CONTINUE C SI IADR EXISTE ON ENLEVE IDYT DE CETTE LISTE IF(IZIADR.NE.0)THEN IF(JJ.GT.0)THEN NCR=NCR-1 DO 285 KJ=JJ,NCR IADR(KJ)=IADR(KJ+1) 285 CONTINUE SEGADJ IZIADR write(6,*)'chiclm type5 iziadr=',iziadr ENDIF ENDIF 290 CONTINUE SEGDES MLENT2 ELSE MOTERR(1:11)='CLIM TYP5 ' MOTERR(12:20)='LISTENTI' RETURN ENDIF ENDIF SEGDES MTAB1 RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales