INICIAL
ANEXO 1 ANEXO 1
93
94
95
96
97
98
99
100
101
DIAGRAMA DE PRECIPITACIÓN DEL HIERRO, COBRE, ZINC Y MANGANESO
102
ANEXO 2
PROGRAMA EN FORTRAN POWER STATION PARA LA DETERMINACIÓN DE LA ALTURA DE SEDIMENTO
103
C ************************************************************************
C RECUPERACION DE LOS METALES PESADOS PRESENTES EN EL DRENAJE ACIDO DE MINA C MEDIANTE LA PRECIPITACION SELECTIVA PARA SU POSTERIOR UTILIZACION
C MODELAMIENTO DE ESPESADOR CONTINUO C DETERMINACION DE LA ALTURA DEL SEDIMENTO
C REFERENCIA: DAMASCENO J.J.R. LIRA J.R., ARAUCA F.O. OLIVERA-LOPES L.C.
C MODELING OF THE HEIGT OF SEDIMENT IN A CONTIUNUOUS THICKENER C MATERIALS SCIENCE FURUM PAG. 1812-1817
C***********************************************************************
C========================================================================
C DEFINICION DE VARIABLES Y PARAMETROS
C RL = ALTURA DEL SEDIMENTO
C M
C C0 = FRACCION VOLUMETRICA DEL SOLIDO EN LA ALIMENTACION
C = M**3 DE SOLIDO/M**3 TOTALES
C CU = FRACCION VOLUMETRICA DEL SOLIDO EN EL LODO
C = M**3 DE SOLIDO/M**3 TOTALES
C QS = FLUJO VOLUMETRICO DEL SOLIDO POR AREA TRANSVERSAL
C M**3 DE SOLIDO/(M**2 DE SUPERFICIE * SEG)
C DRO = DIFERENCIA DE DENSIDAD DEL SOLIDO MENOS EL FLUIDO
C KG/M**3
C G = ACELERACION DE LA GRAVEDAD
C M/SEG**2
C VISC = VISCOSIDAD DEL FLUIDO
C KG/(M*SEG)
C
C PSU = PRESION EN EL SOLIDO
C KG/(M*SEG**2)
C PA = CONSTANTE PARA LA DETERMINACION DE PSU
C KG/(M*SEG**2)
C BETA = CONSTANTE PARA LA DETERMINACION DE PSU
C PK = PERMEABILIDAD DEL MEDIO POROSO
C M**2
C PKO = CONSTANTE PARA LA DETERMINACION DE PK
C M**2
C DELTA = CONSTANTE PARA LA DETERMINACION DE PK
C=======================================================================
PROGRAM ESPECON
IMPLICIT DOUBLE PRECISION (A-H,O-Z) PARAMETER(ND = 20)
DIMENSION PESO(ND),Y(ND),ROOT(ND) DIMENSION DIF1(ND),DIF2(ND),DIF3(ND) COMMON /AREA1/ QS,DRO,G,VISC,CU,PSU COMMON /AREA2/ C0,PK0,BETA,DELTA,PA WRITE(*,*)
WRITE(*,*) 'PARAMETROS OPERACIONALES' DRO=2120
G=9.81 VISC=0.001
WRITE(*,2)DRO, G, VISC 2 FORMAT(8X,'DATOS'//
& 8X,'densidad del solido - densidad del liquido (kg/m3): ',F7.0//
& 8X,'aceleracion de la gravedad (m/s2) : ',F7.3//
& 8X,'Viscosdiad del liquido (kg/m.s) : ',F7.4) WRITE(*,*)
WRITE(*,*) 'PARAMETROS CONSTITUTIVOS' C0=4.8e-5
PK0= 1.15E-12 BETA= 0.55 DELTA = 4.1 PA = 7.0
WRITE(*,4)C0,PK0,BETA,DELTA,PA 4 FORMAT(8X,'DATOS'//
& 8X,'fraccion volumetrica del solido en la aliment. : ',F10.6//
& 8X,'pk0 (m2) : ',E12.3//
& 8X,'Beta : ',F7.4//
& 8X,'Delta : ',F7.1//
& 8X,'Pa (kg/m.s2) : ',F7.1) WRITE(*,*)
QS=0.04E-10
104
WRITE(*,5)QS
5 FORMAT (8X 'flujo del solido (m/s) :'E12.3) CU=1.6e-4
WRITE(*,6)CU
6 FORMAT (8X, 'concentracion de lodo :'F10.4) WRITE(*,*)
PSU = PA*((CU/C0)**(1./BETA)-1.) N = 4
N0 = 1 N1 = 1
NT = N + N0 + N1
CALL JCOBI(NT,N,N0,N1,1.D0,1.D0,DIF1,DIF2,DIF3,ROOT) DO 50 I = 1,NT
CALL FUNCION(ROOT(I),Y(I))
50 CONTINUE
CALL RADAU(NT,N,N0,N1,3,0.,0.,ROOT,DIF1,PESO) RL = 0.D0
DO 80 I = 1,NT
RL = RL + PESO(I)*Y(I)
80 CONTINUE
RL=PSU*RL QU = QS/CU WRITE(*,*) WRITE(*,*)
WRITE(*,3) QS, QU, CU, RL
3 FORMAT(8X,'RESULTADOS DA QUADRATURA DE LOBATTO'//
& 8X,'Fluxo de solidos (m/s) : ',E10.3/
& 8X,'Fluxo de lama (m/s) : ',E10.3/
& 8X,'Concentracao de lama : ',F7.4/
& 8X,'Altura do sedimento (m) : ',F7.4) WRITE(*,*)
WRITE(*,*) WRITE(*,*) WRITE(*,*) CLOSE(1) CLOSE(2) STOP END
C***********************************************************************
C SUBRUTINA PARA EL CALCULO DE LA ALTURA DEL SEDIMENTO C***********************************************************************
SUBROUTINE FUNCION(X,Y)
IMPLICIT DOUBLE PRECISION (A-H,O-Z) COMMON /AREA1/ QS,DRO,G,VISC,CU,PSU COMMON /AREA2/ C0,PK0,BETA,DELTA,PA PS=PSU*X
CC=(1.+PS/PA)**BETA C=C0*CC
DC=C0*BETA/PA*(1.+PS/PA)**(BETA-1.) PK=PK0*(CC)**(-DELTA)
Y=(1.-(DRO+1000.)*(QS/C)**2*DC)/(DRO*G*C-VISC*QS/PK*(1./C-1./CU)) RETURN
END
C***********************************************************************
C SUBRUTINA POLINOMIAL DE JACOBI
C***********************************************************************
SUBROUTINE JCOBI (ND, N, N0, N1, ALPHA, BETA, DIF1, DIF2, DIF3, ROOT) INTEGER ND, N, N0, N1
DOUBLE PRECISION ALPHA, BETA, DIF1(ND), DIF2(ND), DIF3(ND), ROOT(ND) C***********************************************************************
C JACOBI
INTEGER I,J,NT,IER
DOUBLE PRECISION AB,AD,AP,Z1,Z,Y,X,XD,XN,XD1,XN1,XP,XP1,ZC DOUBLE PRECISION ZERO,ONE,TWO
LOGICAL LSTOP
PARAMETER ( ZERO = 0.0D+00, ONE = 1.0D+00, TWO = 2.0D+00 ) IF ((N0 .NE. 0) .AND. (N0 .NE. 1)) THEN
IER = 1 LSTOP = .TRUE.
CALL VILERR(IER,LSTOP)
105
ELSE END IF
IF ((N1 .NE. 0) .AND. (N1 .NE. 1)) THEN IER = 2
LSTOP = .TRUE.
CALL VILERR(IER,LSTOP) ELSE
END IF
IF (ND .LT. (N + N0 + N1)) THEN IER = 3
LSTOP = .TRUE.
CALL VILERR(IER,LSTOP) ELSE
END IF
IF ((N + N0 + N1) .LT. 1) THEN IER = 7
LSTOP = .TRUE.
CALL VILERR(IER,LSTOP) ELSE
END IF
C – EVALUACION DEL COEFICIENTE AB = ALPHA + BETA
AD = BETA - ALPHA AP = BETA*ALPHA
DIF1(1) = (AD/(AB + TWO) + ONE)/TWO DIF2(1) = ZERO
IF(N .GE. 2) THEN DO 10 I = 2,N
Z1 = DBLE(I) - ONE Z = AB + 2*Z1
DIF1(I) = (AB*AD/Z/(Z + TWO) + ONE)/TWO IF (I .EQ. 2) THEN
DIF2(I) = (AB + AP + Z1)/Z/Z/(Z + ONE) ELSE
Z = Z*Z
Y = Z1*(AB + Z1) Y = Y*(AP + Y) DIF2(I) = Y/Z/(Z - ONE) END IF
10 CONTINUE ELSE END IF
C – DETERMINACION DE LA RAIZ POR EL METODO DE NEWTON X = ZERO
DO 20 I = 1,N 25 CONTINUE XD = ZERO XN = ONE XD1 = ZERO XN1 = ZERO DO 30 J = 1,N
XP = (DIF1(J) - X)*XN - DIF2(J)*XD XP1 = (DIF1(J) - X)*XN1 - DIF2(J)*XD1 - XN XD = XN
XD1 = XN1 XN = XP XN1 = XP1 30 CONTINUE ZC = ONE Z = XN/XN1 IF (I .NE. 1) THEN DO 22 J = 2,I
ZC = ZC - Z/(X - ROOT(J-1)) 22 CONTINUE
ELSE END IF Z = Z/ZC X = X - Z
IF (DABS(Z) .GT. 1.D-09) THEN GO TO 25
106
ELSE END IF ROOT(I) = X X = X + 0.0001D0 20 CONTINUE NT = N + N0 + N1 IF (N0 .NE. 0) THEN DO 31 I = 1,N J = N + 1 - I
ROOT(J+1) = ROOT(J) 31 CONTINUE
ROOT(1) = ZERO ELSE
END IF
IF (N1 .EQ. 1) THEN ROOT(NT) = ONE ELSE
END IF
CALL DIF ( NT, ROOT, DIF1, DIF2, DIF3 ) RETURN
END
SUBROUTINE DIF ( NT, ROOT, DIF1, DIF2, DIF3 ) INTEGER NT
DOUBLE PRECISION ROOT(NT), DIF1(NT), DIF2(NT), DIF3(NT) C***********************************************************************
C SUBROUTINE DIF
C***********************************************************************
INTEGER I,J,IER DOUBLE PRECISION X,Y
DOUBLE PRECISION ZERO,ONE,TWO,THREE LOGICAL LSTOP
PARAMETER ( ZERO = 0.0D+00, ONE = 1.0D+00,TWO = 2.0D+00, THREE = 3.0D+00 ) IF (NT .LT. 1) THEN
IER = 7 LSTOP = .TRUE.
CALL VILERR(IER,LSTOP) ELSE
END IF
C – EVALUACION DE LA DERIVADA DO 40 I = 1,NT
X = ROOT(I) DIF1(I) = ONE DIF2(I) = ZERO DIF3(I) = ZERO DO 30 J = 1,NT IF (J .NE. I) THEN Y = X - ROOT(J)
DIF3(I) = Y*DIF3(I) + THREE*DIF2(I) DIF2(I) = Y*DIF2(I) + TWO *DIF1(I) DIF1(I) = Y*DIF1(I)
ELSE END IF 30 CONTINUE 40 CONTINUE RETURN END
SUBROUTINE VILERR ( IER, LSTOP ) INTEGER IER
LOGICAL LSTOP
C***********************************************************************
WRITE(*,*) '** VILERR : VALOR NO CORRECTO N0 ' ELSE IF ( IER .EQ. 2) THEN
WRITE(*,*) '** VILERR : VALOR NO CORRECTO N1 ' ELSE IF ( IER .EQ. 3 ) THEN
WRITE(*,*) '** VILERR : DIMENSION INSUFICIENTE ' ELSE IF ( IER .EQ. 4 ) THEN
WRITE(*,*) '** VILERR : INDICE, DFOPR ' ELSE IF ( IER .EQ. 5 ) THEN
WRITE(*,*) '** VILERR : NTOTAL in DFOPR '
107
ELSE IF ( IER .EQ. 6 ) THEN
WRITE(*,*) '** VILERR : VALOR NO CORRECTO ID in DFOPR ' ELSE IF ( IER .EQ. 7 ) THEN
WRITE(*,*) '** VILERR : PUNTOS DE INTERPOLACION ' WRITE(*,*) ' less than 1 '
ELSE IF ( IER .EQ. 8 ) THEN
WRITE(*,*) '** VILERR : VALOR NO CORRECTO ID EN RADAU ' ELSE IF ( IER .EQ. 9 ) THEN
WRITE(*,*) '** VILERR : ID = 1 EN RADAU ' ELSE IF ( IER .EQ. 10 ) THEN
WRITE(*,*) '** VILERR : ID = 2 EN RADAU ' ELSE IF ( IER .EQ. 11 ) THEN
WRITE(*,*) '** VILERR : ID = 3 '
WRITE(*,*) ' N1 NO IGUAL A 1 EN RADAU ' ELSE
WRITE(*,*) 'VALOR NO RECONOCIDO PARA VILERR ' END IF
IF ( LSTOP ) THEN C -- PROGRAM EJECUTADO CCCC CALL XSTOPX (' ') ELSE
END IF RETURN END
C***********************************************************************
C SUBRUTINA CUADRATURA DE GAUSS - LOBATTO C***********************************************************************
SUBROUTINE RADAU + (
+ ND, N, N0, N1, ID, ALPHA, BETA, ROOT, DIF1, VECT + )
INTEGER ND, N, N0, N1, ID
DOUBLE PRECISION ALPHA, BETA, ROOT(ND), DIF1(ND), VECT(ND) C***********************************************************************
C RADAU OR LOBATTO QUADRATURE
C VILLADSEN AND MICHELSEN, PAGES 133-135, 419 INTEGER I,NT,IER
DOUBLE PRECISION AX,S,X DOUBLE PRECISION ZERO,ONE LOGICAL LSTOP
PARAMETER ( ZERO = 0.0D+00, ONE = 1.0D+00 ) C -- ERROR
IF ((N0 .NE. 0) .AND. (N0 .NE. 1)) THEN IER = 1
LSTOP = .TRUE.
CALL VILERR(IER,LSTOP) ELSE
END IF
IF ((N1 .NE. 0) .AND. (N1 .NE. 1)) THEN IER = 2
LSTOP = .TRUE.
CALL VILERR(IER,LSTOP) ELSE
END IF
IF (ND .LT. (N + N0 + N1)) THEN IER = 3
LSTOP = .TRUE.
CALL VILERR(IER,LSTOP) ELSE
END IF
IF ((N + N0 + N1) .LT. 1) THEN IER = 7
LSTOP = .TRUE.
CALL VILERR(IER,LSTOP) ELSE
END IF
IF ((ID .NE. 1) .AND. (ID.NE. 2) .AND. (ID .NE. 3)) THEN IER = 8
LSTOP = .TRUE.
CALL VILERR(IER,LSTOP)
108
ELSE END IF
IF ((ID .EQ. 1) .AND. (N1 .NE. 1)) THEN IER = 9
LSTOP = .TRUE.
CALL VILERR(IER,LSTOP) ELSE
END IF
IF ((ID .EQ. 2) .AND. (N0 .NE. 1)) THEN IER = 10
LSTOP = .TRUE.
CALL VILERR(IER,LSTOP) ELSE
END IF
IF ((ID .EQ. 3) .AND. ((N0 .NE. 1) .OR. (N1 .NE. 1))) THEN IER = 11
LSTOP = .TRUE.
CALL VILERR(IER,LSTOP) ELSE
END IF
C – EVALUACION DE RADAU S = ZERO
NT = N + N0 + N1 DO 40 I = 1,NT X = ROOT(I)
IF (ID .EQ. 1) THEN AX = X
IF (N0 .EQ. 0) THEN AX = ONE/AX ELSE END IF
ELSE IF (ID .EQ. 2) THEN AX = ONE - X
IF (N1 .EQ. 0) THEN AX = ONE/AX ELSE END IF
ELSE IF (ID .EQ. 3) THEN AX = ONE
ELSE END IF
VECT(I) = AX/DIF1(I)**2 40 CONTINUE
IF (ID .NE. 2) THEN
VECT(NT) = VECT(NT)/(ONE + ALPHA) ELSE
END IF
IF (ID .GT. 1) THEN
VECT(1) = VECT( 1)/(ONE + BETA) ELSE
END IF DO 50 I = 1,NT S = S + VECT(I) 50 CONTINUE DO 60 I = 1,NT VECT(I) = VECT(I)/S 60 CONTINUE
RETURN END
109
ANEXO 3
CONSTANCIA DE ANALISIS
110
111
112
ANEXO 4
ESPECTROSCOPÍA DE INFRARROJOS CON TRANSFORMADA DE FOURIER
113
114
115