S volgrain1,SIGMA,VOLM,ALN,BLN,VLN,VLIMLN) S #FTRANS#DEBPREL#DT NT2=NT(TEMPS,DUREEPREL,NUMERO,TIMEDEB, S volgrain1,SIGMA,VOLM,ALN,BLN,VLN,VLIMLN) C 1 - Calcul de la taille des grains C Dans bassine: On suppose que tous profitent de l'apport d'Ag C et qu ensuite une partie est transferee dans bassine C volume ajoute a chaque grain en um'3 volpargr=nmolag#magbr/dagbr/NBRGR1#1.D12 C en um'3 volgrain2=volgrain1+voipargr RTRANS=PSIREF#VOLPARGR C ------------------------- C BOUCLE SOR CONVERGENCE PSI 4 ANNEXE I:Fortran Software C------------------------ 3000 FINE=0 C en litres volprel=VOLDEDEB(QPREL,DT) C calcul debit sel pour que VAg=cte CALL VOLUMESEL(VOLSEL,VOLTOT ,VOLAG ,VOLPREL ,FION ,GEL ,NBB,VAGI) C type *,'VOLUMESEL= ',VOLSEL C QSEL en ml/min qsel=DEBDEVOL(volsel,dt) C volume bassine annexe volpreltot2=volpreltot1+volprel C 2 - Calcul du nombre de grains C nbre de grains transferes dans bassine annexe avec le volume volgrain2 PSI2=NBRGR1*VOLDEDEB(QPREL,DT)/VOLTOT/VOLPARGR ntrans2=NBRGR1*VOLDEDEB(QPREL,DT)/VOLTOT IF ((QPREL.NE.O.DO).AND.(PSIREF.NE.O.DO))THEN ECART=DABS((PSI2-PSIREF)/PSIREF)IF IF (ECART.LT1.1.D-O)8 FINE=1 IF (FINE.eq.O) QPREL=QPREL*PSIREF/PSI2 ELSE FINH=1 ENDIF C TYPE *,'FINE=',FINE IF (FINE.EQ.O) GOTO 3000 C-------------------------------------- C FIN DE BOUCLE SUR CONVERGENCE PSI C ------------ C nbre de grains total dans bassine annexe C (On en transfère autant que l'on en perd) 3100 np2=np1+ntrans2 C nbre de grains restant dans bassine principale C.N.B..Ils sont "homodisperses" NBRGR2=NERGR1-NTRANS C Diametre des grains transferes (microns) tail2=taille(volgrain2) C STOCKAGE DES RESULTATS DU CALCUL IF (DFLOAT(j)*dt/dts.EQ.DINT(DFLOAT(j)*dt/dts)) THEN WRITE (2,2011) PSI2,VOLPARGRAINCUM,NTRANSCUM,NBRGR2 S , NP2,VOLGRAIN,TAIL2 2011 FORMAT(7(1X,E9.3)) 2012 FORMAT(4(1X,E9.3)) 2013 FORMAT(2(1X,E9.3)) WRITE (3,2012) QAG, QSEL, QPREL, TEMPS WRITE (5,2013) VOLTOT, VOLPRELTOT2 IF (BATCH.EQ.O) THEN TYPE *,ESC//'(6;1H' WRITE (*,5001) FTRANS 5001 FORMAT ('FTRANS :',E11.5) WRITE (*,5022) Ntrans2 5002 FORMAT ('Nbre grains transferes pdt 1 s :',E11.5) WRITE (*,5022) NT2 5022 FORMAT (' NT ::',E11.5) WRITE (*,5003) PSI2 5003 FORMAT (' Densite #/volume dans classe :',E11.5) WRITE (*,5004) NBRGR2 5004 FORMAT ('Nbre grains restant dans B1 :',E11.5) WRITE (*,5005) NP2 5005 FORMAT ('Nbre grains dans B2 :',E11.5) WRITE (*,5006) VOLGRAIN2 5006 FORMAT ('Volume des grains (um^3) :',E11.5) WRITE (*,5007) TAIL2 5007 FORMAT ('Diametre des grains (um) :',E11.5) WRITE (*,5008) QAG 5008 FORMAT ('Debit Ag (ml/min) :',E11.5) WRITE (*,5009) QSEL 5009 FORMAT ('Debit Sel (ml/min) :',E11.5) WRITE (*,5010) QPREL 5010 FORMAT ('Debit prelevement(ml/min) :',E11.5) 5 ANNEXE I:Fortran Software WRITE (#,5011) VOLTOT 5011 FORMAT (' Volume bassine 1 (litre) : ',E11.5) WRITE (#,5012) VOLPRELTOT2 5012 FORMAT (' Volume bassine 2 (litre) : ',E11.5) WRITE (#,5013) TEMPS 5013 FORMAT (' Temps (sec) : ',E9.3) END IF j=1 VOLPARGRAINCOM=VOLPARGR NTRANSCUM=NTRANS2 ELSE j=j+1 VOLPARGRAINCUM=VOLPARGR+VOLPARGRAINCOM NTRANSCUM=NTRANSCUM+NTRANS2 ENDIF C REAFFECTATION (valeurs initiales (t+dt)=valeurs finales (t)) NBRGR1=NBRGR2 NP1=NP2 VOLGRAIN1=VOLGRAN2 VOLI=VOLTOT VOLPRELTOT1=VOLPRELTOT2 GELI=GEL FIONI=FION NBI=NBB I=I+1 C CRITERE DE SORTIE DE BOUCLE C LIMITE INFERIEURE SUR VOLUME BASSINE IF (VOLTOT.LT.3.DO) THEN ISORTIE=1 ENDIF C SORTIE SUR TEMPS (NORMALE !!!) IF (TEMPS.GT.DUREEC) THEN IF(OPTIM.EQ.1) THEN ISORTIE=2 ELSE ISORTIE=4 ENDIF ENDIF C LIMITE SUPERIEURE SUR DEBIT PRELEVEMENT IF (QPREL.GT.QLIMITE) THEN ISORTIE=3 ENDIF IF (ISORTIE.EQ.O) GOTO 5000 C ---------------------------------- C FIN BOUCLE CALCUL PRINCIPAL C ---------------------------------- 999 CLOSE (UNIT=2) CLOSE (UNIT=3) CLOSE (UNIT=4) CLOSE (UNIT=5) C FIN PROGRAMME GOTO (1200,1210,1200,1230), ISORTIE 1200 FTRANS=FTRANS#TEMPS/DUREEC FINBOUCL=0 goto 1300 C CRITERE DE CONVERGENCE C volume B1 souhaite: entre 3 et 5 litres 1210 IF (VOLTOT.GT.VOLLIMOP) THEN FTRANS=FTRANS#VOLTOT/VOLLIMUP FINBOUCL=0 ELSE C FIN PROGRAMME FINBOUCL=1 ENDIF gotO 1300 1220 goto 1300 1230 FINBOUCL=1 1300 continue ANNEXE I: Fortran Software IF (FINBOUCL.EQ.O) GOTO 1000 END C ------------------------------------------------------ SUBRUTINE VOLUMESEL (VOLSEL, VOLTOT, VOLAG, VOLPREL, S FION, GEL, NBB, VAGI) C ------------------------------------------------------ C RETOUR Routine:VOLSEL, VOLTOT IMPLICIT REAL*8 (A-Z) INTEGER BORNHS COMMON /DONNPRG/ MBR,MAG,MSEL,MNO3 COMMON /DONNVAG/ TEMP, PH, GELI, FIONI, NBI, VOLI C VALEURS DEMARRAGE DES BORNES VBR = MAG*VOLAG/MBR VBR1I= .1 VBR3=VBR3I VBR1=VBR1I C BOUCLE EXTERNE 10 BORHNS=0 C BOUCLE INTERNE VBR2=(VBR1+VBR3)/2.DO VOLTOT=VOLI+VOLAG+VBR-VOLPREL CALL CNV( NBB, GEL, FION, VOLTOT, VBR1, VOLAG) CALL VAG( VAG1, FION, NBB, GEL) VOLTOT=VOLI+VOLAG+VBR3-VLPREL CALL CNV( NBB, GEL, FION, VOLTOT, VBR3, VOLAG) CALL VAG( VAG3, FION, NBB, GEL) VOLTOT=VOLI+VOLAG+VBR2-VLPREL CALL CNV( NBB, GEL, FION, VOLTOT, VBR2, VOLAG) CALL VAG( VAG2, FION, NBB, GEL) IF ((VAG1-VAGI)*(VAG2-VAGI).LT.0.DO) THEN VBR3=VBR2 ELSE IF ((vag1-vagi)*(vag3-vagi).GT.0.DO) then BORHNS=1 ELSE VBR1=VBR2 ENDIF ENDIF XX=DABS(VAGI-VAG2) IF (BORHNS:EQ::1) THEN VBR3=VBR3I/10.DO VBR1=VBR1I*10.DO ENDIF IF (XX.GT.1.D-05) BORNHS=1 IF (BORNHS.EQ.1) GOTO != VOLSEL=VBR2 RETURN END C------------------------------------------------------ SUBROUTINE ( NBB, GEL, FION, VOLTOT, VolBR, VOLAG) C ----------------------------------------------------- C RETOUR Routine:NBB, GEL, FION IMPLICIT REAL*8 (A-Z) COMMON /DONNPRG/ MBR, MAG, MSEL, MN03 COMMON /DONNVAG/ TEMP, PH, GELI, FIONI, NBI, VOLI NBBNBI=NBI*VOLI/VOLTOT+(MBR*VOLBR-MAG*VOLG)*MSEL/VOLTOT GEL=GELI*VOLI/VOLTOT FION=(FIONI*VOLI+MAG*VOLAG*MN03)/VOLTOT RETURN END FUNCTION DEEVOL( VOLUME, DT) C REAL*8 DEBDEVOL, VOLUME, DT DEBDEVOL=VOLUME/dt*60.*1.D3 C volume en litres C debit en ml/min C dt en sec RETURN 7 ANNEXE I Fortran Software END FUNCTION VOLDEDEB (DEBIT,DT) C -------------------------- REAL#B DEBIT,VOLDEDEB,DT VOLDEDEB=DEBIT#dt/60.#1.D-3 C volume en litres C debit en ml/min C dt en sec RETURN END FUNCTION taille(volumegrain) C --------------------------- REAL#B TAILLE,VOLOMEGRAIN COMMON /CTE/ PI taille=2.#(3. #volumegrain/4./pi)##(1./3.) RETURN END FUNCTION volume(taille) C ---------------------- REAL#B TAILLE,VOLUME COMMON /CTE/ PI volume=4./3.#PI#((taille/2.)##3) RETURN END FUNCTION DEBIT(A,B,ALPHA,Time) C ----------------------------- C Time en SEC REAL#8 A,B, TIME,ALPHA,DEBIT debit=A+B#(Time/60.)##ALPHA RETURN END FUNTION NT(Time,duree,NUMERO,TIMEDEB,vol,SIGMA, S VOLM,ALN,BLN,VLN,VLIMLR) C -------------------------------------------------- C FONCTION DETERMINANT LA FORME DE LA DISTRIBUTION DANS LA BASSINE 2 C NT=ADIMENSIONNE. SERA MULTIPLIR PAR LE FACTEUR FIRANS DANS LE C CALCUL C H.B.: SELECTIONNER LE CRITERE ADEQUAT IMPLICIT REAL#8 (A-Z) COMMON /CTE/ PI INTEGER NOMERO GOTO (10,20,30,40,50,55), NUMERO C 1 - CRENEAU 10 NT=1.