chired
C CHIRED SOURCE CHAT 05/01/12 21:57:59 5004 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C------------------------------------------------------------------ C C CHARGEMENT DES TABLES IDEN ET REDOX C MTAB1 = POINTEUR TABLE IDEN C MTAB2 = POINTEUR TABLE REDOX C = 0 EN ENTREE C MLENT3= POINTEUR DES COMPOSANTS IMMOBILES POUR C LES CONDITIONS AUX LIMITES DES TYPE 3 C ( LU ET VERIFIE DANS CHICLM ,PEUT ETRE NUL) C LIMP3 = POINTEUR DE LA LISTE DES ESPECES MISES EN C TYP3 PAR CLIM ( TAB1.CLIM.TYP3) C C------------------------------------------------------------------ -INC SMTABLE -INC SMLENTI -INC SMLREEL -INC SMLMOTS -INC PPARAM -INC CCOPTIO 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 SEGMENT IZRED INTEGER ITAB(NCR,2) REAL*8 ATAB(NCR,2) ENDSEGMENT SEGMENT IZREDI INTEGER IRCR(MCR),ICR(LCR) ENDSEGMENT SEGMENT IZIMM INTEGER IADE(NCE),IADC(NCC),IMM(NIMM) ENDSEGMENT SEGMENT IZRIAD INTEGER IRAD(NIRA),ICONS(NXDIM) ENDSEGMENT SEGMENT IZSS INTEGER ISOLU(NYDIM),ISURF(NYDIM) ENDSEGMENT CHARACTER*8 MTYPI,CHARI,MTYPR,CHARR C C CHITRI1 CREE ET CHARGE IZIADR et IADH IZRED=0 IZREDI=0 IF(IZIADR.NE.0)THEN C CHITRI CREE ET CHARGE IZRED ENDIF NXDIM=IDX(/1) NYDIM=IDY(/1) NZDIM=IDZ(/1) NPDIM=IDP(/1) JSOH=0 NCE=NN(3) NCC=NN(3) NIRA=NXDIM NIMM=NXDIM SEGINI IZIMM ,IZRIAD C ON VA METTRE DANS IRAD UN INDICE POUR CHAQUE C COMPOSANT 3=IMMOBILE 2=REACTIFS 1=CONSERVATIF C TRI RELATION TYP3 NCE=0 NCC=0 JI=NN(1)+NN(2)+1 JM= NN(1)+NN(2)+NN(3) DO 20 JJ=JI,JM DO 10 J=1,NXDIM IF (IDX(J).EQ.IDY(JJ)) THEN NCE =NCE+1 IADE(NCE)=IDX(J) IRAD(J)=3 GO TO 16 ENDIF 10 CONTINUE NCC =NCC+1 IADC(NCC)=IDY(JJ) 16 CONTINUE 20 CONTINUE C------------------------------------------------------------- C RECHERCHE DES COMPOSANTS NON TRANSPORTES NIMM=0 IF(IADH.NE.0)THEN NIMM=NIMM+1 IMM(NIMM)=60 IRAD(III)=3 ENDIF IF(IZRED.NE.0)THEN MCR=IRCR(/1) NIMM=NIMM+MCR DO 25 J=1,MCR JJ=IRCR(J) IRAD(III)=3 25 CONTINUE ENDIF IF(NCE.NE.0)THEN NIMM=NIMM+NCE ENDIF JN=NN(1)+NN(2)+NN(3)+NN(4)+NN(5)+1 JK=NN(1)+NN(2)+NN(3)+NN(4)+NN(5)+NN(6) NADSORB=0 DO 40 J=1,NXDIM IF(IDX(J).EQ.80) NADSORB=NADSORB+1 C /TEST SUR LES SITES DE SURFACES/ IF (IDX(J).GE.90.AND.IDX(J).LE.96) THEN C NADSORB=NADSORB+1 NIMM=NIMM+1 IMM(NIMM)=IDX(J) IRAD(J)=3 ENDIF C /TEST SUR LES COMPOSANTS DE TYPE 6/ DO 30 JJ=JN,JK IF (IDX(J).EQ.IDY(JJ)) THEN IF ( IDX(J).NE.99) THEN NIMM=NIMM+1 IMM(NIMM)=IDX(J) IRAD(J)=3 ENDIF ENDIF 30 CONTINUE 40 CONTINUE C PRISE EN COMPTE DES COMPOSANTS IMMOBILES DE CLIM TYP3 C ON A DEJA VERIFIE LEUR EXISTANCE IF(MLENT3.GT.0)THEN NL=MLENT3.LECT(/1) MLENT1=LIMP3 SEGACT MLENT1 DO 35 J=1,NL IDXT=MLENT3.LECT(J) IDYT= MLENT1.LECT(J) IF(IDXT.NE.IDYT)THEN C ON VERIFIE QUE IDXT N'EST PAS DEJA IMMOBILE IF(III.EQ.0)THEN NIMM=NIMM+1 IMM(NIMM)=IDXT IRAD(JJ)=3 ELSE C WRITE(6,*) ' LE COMPOSANT ',IDXT,' EST DEJA IMMOBILE' INTERR(1)=IDXT RETURN ENDIF ENDIF 35 CONTINUE SEGDES MLENT1 ENDIF C ---------------------------------------------------- C C RECHERCHE DU NOMBRE DE COMPOSANTS CONSERVATIFS: NCONS NCONS=0 C TEST DE LA PRESENCE D'UN COMPOSANT DANS UNE ESPECE ADSORBEE IJ=NN(1)+1 IK=NN(1)+NN(2)+NN(3)+NN(4) DO 65 J=1,NXDIM IF(JSOH.GT.0) THEN DO 45 I=IJ,IK IF (AA(I,JSOH).GT.0.D0.AND.ABS(AA(I,J)).GT.0.D0) GOTO 60 45 CONTINUE ENDIF C/ TEST DE LA PRESENCE D'UN COMPOSANT DANS UNE ESPECE SOLIDE C DE TYPE 3, 4 OU 5. JI=NN(1)+NN(2)+1 IM=NN(1)+NN(2)+NN(3)+NN(4)+NN(5) DO 50 I=JI,IM IF (ABS(AA(I,J)).GT.0.D0) THEN * WRITE(6,*) ' SOLIDE ',IDX(J) GO TO 60 ENDIF 50 CONTINUE ** ESPECE ECHANGEE DO 55 I = IJ,IK IF (ABS(AA(I,J)).GT.0.D0) THEN IF(IDECY(I).NE.0) THEN C WRITE(6,*) ' ECHANGE',IDX(J) GO TO 60 ENDIF ENDIF 55 CONTINUE IF(IRAD(J).NE.3)THEN NCONS=NCONS+1 ICONS(NCONS)=IDX(J) IRAD(J)=1 C WRITE(6,*) 'ICONS(',N,'): ',IDX(J) ENDIF 60 CONTINUE 65 CONTINUE C -------------------------------------------------------- SEGACT MTAB1 IVALI=0 XVALI=0.D0 IRETI=0 IVALR=0 XVALR=0.D0 MTYPI='MOT ' IF(NIMM.NE.0)THEN JG=NIMM SEGINI MLENTI IRETR=MLENTI MTYPR='LISTENTI' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLENTI ENDIF IF(NCONS.NE.0)THEN JG=NCONS SEGINI MLENTI IRETR=MLENTI MTYPR='LISTENTI' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLENTI ENDIF C COMPOSANTS REACTIFS JJG=NXDIM-NCONS-NIMM IF(JJG.NE.0)THEN JG=JJG SEGINI MLENTI I=0 DO 70 J=1,NXDIM IF(IRAD(J).EQ.2)THEN I=I+1 LECT(I)=IDX(J) ENDIF 70 CONTINUE IRETR=MLENTI MTYPR='LISTENTI' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLENTI ENDIF IF(NN(6).NE.0)THEN C TYP6 JG=NN(6) SEGINI MLENTI JN=NN(1)+NN(2)+NN(3)+NN(4)+NN(5)+1 IRETR=MLENTI MTYPR='LISTENTI' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLENTI JGN=4 JGM=JG SEGINI MLMOTS DO 71 I=1,JG NLL=JN-1+I 71 CONTINUE IRETR=MLMOTS MTYPR='LISTMOTS' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLMOTS ENDIF C TYP3 IF(NN(3).NE.0)THEN JG=NN(3) SEGINI MLENTI JN=NN(1)+NN(2)+1 IRETR=MLENTI MTYPR='LISTENTI' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLENTI JGN=4 JGM=JG SEGINI MLMOTS DO 72 I=1,JG NLL=JN-1+I 72 CONTINUE IRETR=MLMOTS MTYPR='LISTMOTS' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLMOTS IF(LIMP3.NE.0) THEN IRETR=LIMP3 MTYPR='LISTENTI' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) ENDIF ENDIF C PRECIPITES POTENTIELS JJG=NN(4)+NN(5) IF(JJG.NE.0)THEN JG=JJG SEGINI MLENTI JN=NN(1)+NN(2)+NN(3)+1 IRETR=MLENTI MTYPR='LISTENTI' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLENTI JGN=4 JGM=JG SEGINI MLMOTS DO 75 I=1,JG NLL=JN-1+I 75 CONTINUE IRETR=MLMOTS MTYPR='LISTMOTS' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLMOTS ENDIF C SOLUTIONS SOLIDES IF(NZDIM.NE.0)THEN JG=NN(4)+NN(5)+NN(6) SEGINI MLENTI KS=0 JN=NN(1)+NN(2)+NN(3)+1 DO L=1,JG NII=JN-1+L IDYNI=IDY(NII) IF(IDNI.NE.0)THEN KS=KS+1 LECT(KS)=IDYNI ENDIF END DO JG=KS SEGADJ MLENTI IRETR=MLENTI MTYPR='LISTENTI' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLENTI JGN=4 JGM=NN(4)+NN(5)+NN(6) SEGINI MLMOTS KM=0 DO I=1,JGM NLL=JN-1+I IDYNL=IDY(NLL) IF(IDNL.NE.0)THEN KM=KM+1 ENDIF END DO JGM=KM SEGADJ MLMOTS IRETR=MLMOTS MTYPR='LISTMOTS' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLMOTS ENDIF C POLES DE SOLUTIONS SOLIDES IF(NZDIM.NE.0)THEN IF(NPDIM.NE.0)THEN JG=NN(6) SEGINI MLENTI KL=0 JN=NN(1)+NN(2)+NN(3)+NN(4)+NN(5)+1 DO L=1,NN(6) NII=JN-1+L IDYNI=IDY(NII) IF(IDNI.NE.0)THEN DO K=1,NZDIM IF(FF(K,IDNI).NE.0.D0)THEN KL=KL+1 LECT(KL)=IDYNI ENDIF END DO ENDIF END DO JG=KL SEGADJ MLENTI IRETR=MLENTI MTYPR='LISTENTI' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLENTI JGN=4 JGM=NN(6) SEGINI MLMOTS KM=0 DO I=1,NN(6) NLL=JN-1+I IDYNL=IDY(NLL) IF(IDNL.NE.0)THEN DO K=1,NZDIM IF(FF(K,IDNL).NE.0.D0)THEN KM=KM+1 ENDIF END DO ENDIF END DO JGM=KM SEGADJ MLMOTS IRETR=MLMOTS MTYPR='LISTMOTS' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLMOTS ENDIF ENDIF C TABLEAU IRAD JG=NXDIM SEGINI MLENTI IRETR=MLENTI MTYPR='LISTENTI' CHARR=' ' *IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLENTI SEGSUP IZIMM ,IZRIAD C ESPECES SOLUBLES C ET ESPECES DE SURFACE C A COMPLETER POUR LES ESPECES DE SURFACE SEGINI IZSS N1=0 N3=0 JK=NN(1)+NN(2) DO 85 I=1,JK IF(IDECY(I).NE.0)THEN N3=N3+1 ISURF(N3)=IDY(I) GO TO 82 ENDIF N1=N1+1 ISOLU(N1)=IDY(I) 82 CONTINUE 85 CONTINUE IF ( N1.LT.1)THEN C WRITE(6,*)' IL N Y A PAS D ESPECE EN SOLUTION ' RETURN ENDIF DO 88 I=1,NXDIM IF(IDX(I).EQ.99)THEN IF( J.GT.NN(1)+NN(2)+NN(3))THEN N1=N1+1 ISOLU(N1)=99 ENDIF GO TO 90 ENDIF 88 CONTINUE 90 CONTINUE C ESPECES EN SOLUTION JG=N1 SEGINI MLENTI IRETR=MLENTI MTYPR='LISTENTI' CHARR=' ' *IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLENTI JGN=4 JGM=JG SEGINI MLMOTS DO 92 I=1,JG 92 CONTINUE IRETR=MLMOTS MTYPR='LISTMOTS' CHARR=' ' *IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLMOTS C ESPECES DE SURFACE IF(N3.NE.0)THEN JG=N3 SEGINI MLENTI IRETR=MLENTI MTYPR='LISTENTI' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLENTI JGN=4 JGM=JG SEGINI MLMOTS DO 93 I=1,JG 93 CONTINUE IRETR=MLMOTS MTYPR='LISTMOTS' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLMOTS ENDIF SEGSUP IZSS C DESCRIPTION DES REDOX IF(IZRED.NE.0)THEN NCR=ITAB(/1) JG=NCR SEGINI MLENTI IRETR=MLENTI MTYPR='LISTENTI' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLENTI SEGINI MLENTI IRETR=MLENTI MTYPR='LISTENTI' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLENTI SEGINI MLREEL IRETR=MLREEL MTYPR='LISTREEL' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLREEL SEGINI MLREEL IRETR=MLREEL MTYPR='LISTREEL' CHARR=' ' * IRETI,MTYPR,IVALR,XVALR,CHARR,.TRUE.,IRETR) SEGDES MLREEL SEGSUP IZIADR, IZRED,IZREDI ENDIF 110 FORMAT('W',I3.3) RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales