en otra ventana

Anuncio
APÉNDICE D
El código del SEPDCA es el siguiente:
'Declaración de Variables y contadores públicos
Public constanten2 As Double
Public x As Currency
Public yinc As Currency
Public zinc As Currency
Public zinc2 As Currency
Public xinc As Currency
Public cinc As Currency
Public i As Currency
Public deltadelaaltura As Double
Public deltaaltura1 As Double
Public a As Double
Public c As Double
Public de As Double
Public f As Double
Public a1 As Double
Public c1 As Double
Public de1 As Double
Public f1 As Double
Public Valordm As Double
Public ValorQ As Double
Public ValorU As Double
Public Valorh As Double
Public Valory As Double
Public contadorcolumnafinal As Integer
Public numeromaximo2 As Integer
Public Sub Q()
Dim Valor1 As Double
Valor1 = txtdatos(1)
If cbounidades(1).ListIndex = 0 Then
q2 = Valor1 * 1 'no se requiere hacer conversion
ElseIf cbounidades(1).ListIndex = 1 Then
q2 = Valor1 * 0.016666 'conversion de g/min a g/s
ElseIf cbounidades(1).ListIndex = 2 Then
q2 = Valor1 * 1000 'conversion de Kg/s a g/s
ElseIf cbounidades(1).ListIndex = 3 Then
q2 = Valor1 * 16.6666 'conversion de Kg/min a g/s
ElseIf cbounidades(1).ListIndex = 4 Then
q2 = Valor1 * 0.2777 'conversion de Kg/hr a g/s
ElseIf cbounidades(1).ListIndex = 5 Then
82
q2 = Valor1 * 253.5923 'conversion de lb/s a g/s
ElseIf cbounidades(1).ListIndex = 6 Then
q2 = Valor1 * 7.5598 'conversion de lb/min a g/s
Else: q2 = Valor1 * 0.126 'conversion de lb/hr a g/s
End If
ValorQ = q2
End Sub
Public Sub optclave1_Click()
Dim frm As Dialog2
Set frm = New Dialog2
frm.Show
If optelevacion1.Value = 1 Then
Dialog2.Visible = True
Else
Dialog2.Visible = False
End If
End Sub
Public Sub optclave2_DblClick() 'muestra el cuadro de dialogo con un click
Dim frm As Dialog1
Set frm = New Dialog1
frm.Show
If optclave2.Value = 1 Then
Dialog1.Visible = True
Else
Dialog1.Visible = False
End If
End Sub
Private Sub realizarcalculo_Click()
respuesta = MsgBox("Se procesará la información", vbDefaultButton5, " ")
Call Genera
End Sub
Private Sub realizarcalculo2_Click()
Call Generaiso
End Sub
Public Function sigmaz(x, a, c, de, f) As Double 'a, c, d y f se calculan con la función
'anterior
sigmaz = (c * x ^ de) + f
End Function
Public Function sigmay(x, a, c, de, f) As Double 'a, c, d y f se calculan con la función
'anterior
sigmay = a * (x ^ 0.894)
End Function
83
Public Function fy(yinc, sigmay) As Double
fy = Exp(-0.5 * (yinc / sigmay) ^ 2)
End Function
Public Function Hfinal(Valorh, deltaaltura1) As Currency
Hfinal = Valorh + deltaaltura1
End Function
Public Function Velsuelo(Hfinal, constanten2, ValorU) As Double 'funcion para
determinar la velocidad corregida
Velsuelo = ValorU * ((Hfinal / 10) ^ constanten2) '10 m se refiere a la altura del
‘anemómetro
End Function
Public Sub constanten()
clavefinal2 = CStr(txtclavedefinitiva.Text)
If clavefinal2 = "A" And cbosuelo.ListIndex = 1 Then
constanten1 = 0.1
ElseIf clavefinal2 = "B" And cbosuelo.ListIndex = 1 Then
constanten1 = 0.15
ElseIf clavefinal2 = "C" And cbosuelo.ListIndex = 1 Then
constanten1 = 0.2
ElseIf clavefinal2 = "D" And cbosuelo.ListIndex = 1 Then
constanten1 = 0.25
ElseIf clavefinal2 = "E" And cbosuelo.ListIndex = 1 Then
constanten1 = 0.25
ElseIf clavefinal2 = "F" And cbosuelo.ListIndex = 1 Then
constanten1 = 0.3
ElseIf clavefinal2 = "A" And cbosuelo.ListIndex = 2 Then
constanten1 = 0.15
ElseIf clavefinal2 = "B" And cbosuelo.ListIndex = 2 Then
constanten1 = 0.15
ElseIf clavefinal2 = "C" And cbosuelo.ListIndex = 2 Then
constanten1 = 0
ElseIf clavefinal2 = "D" And cbosuelo.ListIndex = 2 Then
constanten1 = 0.25
ElseIf clavefinal2 = "E" And cbosuelo.ListIndex = 2 Then
constanten1 = 0.4
ElseIf clavefinal2 = "F" And cbosuelo.ListIndex = 2 Then
constanten1 = 0.6
Else: constanten1 = 0 'considera el caso en el que no se quiere hacer corrección del
suelo
End If
constanten2 = constanten1
End Sub
Public Sub deltah()
84
If Form1.optelevacion2.Value = True Then ' considera que no se quiere calcular la
elevacion de la pluma
deltaaltura = 0
Else:
deltaaltura = deltadelaaltura 'se calcula la elevacion de la pluma
End If
deltaaltura1 = deltaaltura
End Sub
Public Function zmenosh(sigmaz, Hfinal, zinc) As Double
zmenosh = Exp(-0.5 * (((zinc - Hfinal) / sigmaz) ^ 2))
End Function
Public Function zmash(sigmaz, Hfinal, zinc) As Double
zmash = Exp(-0.5 * (((zinc + Hfinal) / sigmaz) ^ 2))
End Function
Public Function cmax(sigmay, sigmaz, Velsuelo, ValorQ) As Double
cmax = ((ValorQ / (2 * 3.14159265 * sigmay * sigmaz * Velsuelo))) * 1000000
End Function
Public Function zmenoshis(sigmaz2, Hfinal, zinc) As Double
zmenoshis = Exp(-0.5 * (((zinc - Hfinal) / sigmaz2) ^ 2))
End Function
Public Function zmashis(sigmaz2, Hfinal, zinc) As Double
zmashis = Exp(-0.5 * (((zinc + Hfinal) / sigmaz2) ^ 2))
End Function
Public Function cmaxis(sigmay2, sigmaz2, Velsuelo, ValorQ) As Double
cmaxis = ((ValorQ / (2 * 3.14159265 * sigmay2 * sigmaz2 * Velsuelo))) * 1000000
End Function
Public Function valorfinal(cmax, zmenosh, zmash, fy) As Double
valorfinal = cmax * fy * (zmenosh + zmash)
End Function
Public Function ycalculada(cmaxis, zmenoshis, zmashis, sigmay2, maximo) As
Double
If zmashis = 0 Or zmenoshis = 0 Then
ycalculada = -1
Else:
ycalculada = -2 * (sigmay2 * sigmay2) * ((Log((maximo) / ((zmashis + zmenoshis)
* (cmaxis)))) / (Log(2.718281828)))
End If
End Function
Public Sub Generaiso()
85
Dim f As Integer, c As Integer 'contadores para el msflexgrid pasarlo a texto
'-----Dim contadorfila As Integer
Dim contadorcolumna As Integer
Dim contadormaximo As Integer
'------Call dm
Call Q
Call U
Call H
Call y
Call deltah
Call constanten
Call contadorcolumnasfinales
'------------------------Dim cadena As String
Dim cadena1 As String
Dim cadena2 As String
Dim cadena3 As String
Open "C:\valoresx.txt" For Output As #1
Open "C:\valoresy.txt" For Output As #2
Open "C:\valoresz.txt" For Output As #3
'-----------------------Hfinal2 = Hfinal(Valorh, deltaaltura1)
clavefinal = CStr(txtclavedefinitiva.Text)
renglon = 0
isoconcdusuario = CDbl(isoconcusuario(0).Text)
'---contadorcolumna = 0 'inicializo el contador a cero para los valores de z
'--------For zinc = 0 To (2 * Hfinal2) Step (2 * Hfinal2 / 20)
'-------contadorfila = 0 'inicializo el contador a cero para cada valor de z
contadorcolumna = contadorcolumna + 1
contadorcolumna2 = contadorcolumna2 + 1
'-------For xinc = 0.1 To Valordm Step ((Valordm - 0.1) / 500)
If clavefinal = "A" And xinc <= 1 Then
a1 = 213
c1 = 440.8
de1 = 1.941
86
f1 = 9.27
ElseIf clavefinal = "B" And xinc <= 1 Then
a1 = 156
c1 = 106.6
de1 = 1.149
f1 = 3.3
ElseIf clavefinal = "C" And xinc <= 1 Then
a1 = 104
c1 = 61
de1 = 0.911
f1 = 0
ElseIf clavefinal = "D" And xinc <= 1 Then
a1 = 68
c1 = 33.2
de1 = 0.725
f1 = -1.7
ElseIf clavefinal = "E" And xinc <= 1 Then
a1 = 50.5
c1 = 22.8
de1 = 0.678
f1 = -1.3
ElseIf clavefinal = "F" And xinc <= 1 Then
a1 = 34
c1 = 14.35
de1 = 0.74
f1 = -0.35
ElseIf clavefinal = "A" And xinc > 1 Then
a1 = 213
c1 = 459.7
de1 = 2.094
f1 = -9.6
ElseIf clavefinal = "B" And xinc > 1 Then
a1 = 156
c1 = 108.2
de1 = 1.098
f1 = 2
ElseIf clavefinal = "C" And xinc > 1 Then
a1 = 104
c1 = 61
de1 = 0.911
f1 = 0
ElseIf clavefinal = "D" And xinc > 1 Then
a1 = 68
c1 = 44.5
de1 = 0.516
f1 = -13
ElseIf clavefinal = "E" And xinc > 1 Then
a1 = 50.5
87
c1 = 55.4
de1 = 0.305
f1 = -34
Else: a1 = 34
c1 = 62.6
de1 = 0.18
f1 = -48.6
End If
SY2 = sigmay2(xinc, a1, c1, de1, f1)
SZ2 = sigmaz2(xinc, a1, c1, de1, f1)
Hfinal3 = Hfinal(Valorh, deltaaltura1)
zmenosh3 = zmenoshis(SZ2, Hfinal3, zinc)
zmash3 = zmashis(SZ2, Hfinal3, zinc)
Velsuelo3 = Velsuelo(Hfinal3, constanten2, ValorU)
cmax3 = cmaxis(SY2, SZ2, Velsuelo3, ValorQ)
ycalculada3 = ycalculadausuario(cmax3, zmenosh3, zmash3, SY2,
isoconcdusuario)
If ycalculada3 < 0 Then
ycalc2 = 0
Else: ycalc2 = Sqr(ycalculada3)
'--contadorfila = contadorfila + 1 'si existe el valor de y el contador aumenta una
unidad
'-------------renglon = renglon + 1
Me.MSFlexGrid1(2).Col = 1 ' Posiciona el cursor en la columna 1
Me.MSFlexGrid1(2).Row = renglon ' Posiciona el cursor en el renglón x
Me.MSFlexGrid1(2).Text = xinc ' Escribe 'xinc' en la columna 3 y renglon x
Me.MSFlexGrid1(2).CellAlignment = flexAlignCenterCenter 'centra el
contenido de la celda
Me.MSFlexGrid1(2).Col = 2 ' Posiciona el cursor en la columna 2
Me.MSFlexGrid1(2).Row = renglon ' Posiciona el cursor en el renglón
Me.MSFlexGrid1(2).Text = ycalc2 ' Escribe el valor de 'ycalculada2'
Me.MSFlexGrid1(2).CellAlignment = flexAlignCenterCenter 'centra el
contenido de la celda
Me.MSFlexGrid1(2).Col = 3 ' Posiciona el cursor en la columna 1
Me.MSFlexGrid1(2).Row = renglon ' Posiciona el cursor en el renglón
Me.MSFlexGrid1(2).Text = zinc ' Escribe 'zinc2' en la columna 3 y renglon x
Me.MSFlexGrid1(2).CellAlignment = flexAlignCenterCenter 'centra el
contenido de la celda
Me.MSFlexGrid1(2).Col = 4 ' Posiciona el cursor en la columna 1
Me.MSFlexGrid1(2).Row = renglon ' Posiciona el cursor en el renglón x
Me.MSFlexGrid1(2).Text = isoconcdusuario ' Escribe 'maximo' en la
columna 3 y renglon x
Me.MSFlexGrid1(2).CellAlignment = flexAlignCenterCenter 'centra el
contenido de la celda
'----
88
Me.MSFlexGrid4.Col = contadorcolumna ' Posiciona el cursor en la columna
Me.MSFlexGrid4.Row = contadorfila ' Posiciona el cursor en el renglón x
Me.MSFlexGrid4.Text = xinc ' Escribe 'zinc' en la columna 3 y renglon
'----Me.MSFlexGrid5.Col = contadorcolumna ' Posiciona el cursor en la columna
Me.MSFlexGrid5.Row = contadorfila ' Posiciona el cursor en el renglón x
Me.MSFlexGrid5.Text = ycalc2 ' Escribe 'zinc' en la columna 3 y renglon
'----Me.MSFlexGrid6.Col = contadorcolumna ' Posiciona el cursor en la columna
Me.MSFlexGrid6.Row = contadorfila ' Posiciona el cursor en el renglón x
Me.MSFlexGrid6.Text = zinc ' Escribe 'zinc' en la columna 3 y renglon
End If
Next xinc
ReDim Preserve columnas(contadorcolumna)
columnas(contadorcolumna) = contadorfila
Next zinc
Call rellenar
For f = 1 To MSFlexGrid4.Rows - 1
cadena = "" 'esto es para estar seguro que cadena queda en blanco
For c = 1 To MSFlexGrid4.Cols - 1
cadena = cadena & " " & MSFlexGrid4.TextMatrix(f, c)
Next c
Print #1, cadena
Next f
Close #1
For f = 1 To MSFlexGrid5.Rows - 1
cadena1 = "" 'esto es para estar seguro que cadena queda en blanco
For c = 1 To MSFlexGrid5.Cols - 1
cadena1 = cadena1 & " " & MSFlexGrid5.TextMatrix(f, c)
Next c
Print #2, cadena1
Next f
Close #2
For f = 1 To MSFlexGrid6.Rows - 1
cadena2 = "" 'esto es para estar seguro que cadena queda en blanco
For c = 1 To MSFlexGrid6.Cols - 1
cadena2 = cadena2 & " " & MSFlexGrid6.TextMatrix(f, c)
Next c
Print #3, cadena2
Next f
Close #3
89
respuesta1 = MsgBox("Los cálculos se han realizado satisfactoriamente",
vbDefaultButton5, " ")
End Sub
Public Function ycalculadausuario(cmaxis, zmenoshis, zmashis, sigmay2,
isoconcdusuario) As Double
If zmashis = 0 Or zmenoshis = 0 Then
ycalculadausuario = -1
Else:
ycalculadausuario = -2 * (sigmay2 * sigmay2) * ((Log((isoconcdusuario) / ((zmashis
+ zmenoshis) * (cmaxis)))) / (Log(2.718281828)))
End If
End Function
Private Sub CancelButton_Click()
Unload Me
End Sub
Public Sub OKButton_Click()
Dim claveopt1 As String
If cboclave.ListIndex = 0 Then
claveopt1 = "A"
ElseIf cboclave.ListIndex = 1 Then
claveopt1 = "B"
ElseIf cboclave.ListIndex = 2 Then
claveopt1 = "C"
ElseIf cboclave.ListIndex = 3 Then
claveopt1 = "D"
ElseIf cboclave.ListIndex = 4 Then
claveopt1 = "E"
Else: claveopt1 = "F"
End If
Form1.txtclavedefinitiva = claveopt1
Unload Me
End Sub
Public Index As Integer
Public categoria1 As String
Public condiciones As String
Private Sub CancelButton_Click()
' esto no ejecuta ninguna validación
90
Unload Me
End Sub
Public Sub Condicion()
If optDía.Value = True And cbocondiciones(0).ListIndex = 0 Then
Valores = "aa" 'se selecciona la opción:Día, Fuerte
ElseIf optDía.Value = True And cbocondiciones(0).ListIndex = 1 Then
Valores = "bb" 'se selecciona la opcion:Día, Moderada
ElseIf optDía.Value = True And cbocondiciones(0).ListIndex = 2 Then
Valores = "cc" 'se selecciona la opción: Día, Ligera
ElseIf optNoche.Value = True And cbocondiciones(1).ListIndex = 0 Then
Valores = "dd" 'se selecciona la opcion: Noche, en su mayoria nublado
Else: Valores = "ee" 'se selecciona: Noche, despejado
End If
condiciones = Valores
End Sub
Public Sub Rangovel()
Call Form1.U
If Form1.ValorU <= 2 Then
Index1 = 0
ElseIf Form1.ValorU > 2 And Form1.ValorU <= 3 Then
Index1 = 1
ElseIf Form1.ValorU > 3 And Form1.ValorU <= 5 Then
Index1 = 2
ElseIf Form1.ValorU > 5 And Form1.ValorU <= 6 Then
Index1 = 3
Else:
Index1 = 4
End If
Index = Index1
End Sub
Public Sub Categorias()
Call Rangovel
Call Condicion
If Index = 0 And condiciones = "aa" Then
categoria = "A"
ElseIf Index = 1 And condiciones = "aa" Then
categoria = "A"
ElseIf Index = 2 And condiciones = "aa" Then
categoria = "B"
ElseIf Index = 3 And condiciones = "aa" Then
categoria = "C"
ElseIf Index = 4 And condiciones = "aa" Then
categoria = "C"
ElseIf Index = 0 And condiciones = "bb" Then
categoria = "A"
ElseIf Index = 1 And condiciones = "bb" Then
91
categoria = "B"
ElseIf Index = 2 And condiciones = "bb" Then
categoria = "B"
ElseIf Index = 3 And condiciones = "bb" Then
categoria = "C"
ElseIf Index = 4 And condiciones = "bb" Then
categoria = "D"
ElseIf Index = 0 And condiciones = "cc" Then
categoria = "B"
ElseIf Index = 1 And condiciones = "cc" Then
categoria = "C"
ElseIf Index = 2 And condiciones = "cc" Then
categoria = "C"
ElseIf Index = 3 And condiciones = "cc" Then
categoria = "D"
ElseIf Index = 4 And condiciones = "cc" Then
categoria = "D"
ElseIf Index = 0 And condiciones = "dd" Then
categoria = "E"
ElseIf Index = 1 And condiciones = "dd" Then
categoria = "E"
ElseIf Index = 2 And condiciones = "dd" Then
categoria = "D"
ElseIf Index = 3 And condiciones = "dd" Then
categoria = "D"
ElseIf Index = 4 And condiciones = "dd" Then
categoria = "D"
ElseIf Index = 0 And condiciones = "ee" Then
categoria = "F"
ElseIf Index = 1 And condiciones = "ee" Then
categoria = "F"
ElseIf Index = 2 And condiciones = "ee" Then
categoria = "E"
ElseIf Index = 3 And condiciones = "ee" Then
categoria = "D"
Else:
categoria = "D"
End If
categoria1 = categoria
End Sub
Public Sub OKButton_Click()
Call Categorias
Form1.txtclavedefinitiva = categoria1
Unload Me
End Sub
92
Public Sub optDía_Click()
cbocondiciones(0).Enabled = True 'activa el combo correspondiente a la opcion de
dia
cbocondiciones(1).Enabled = False 'desactiva el combo correspondiente a la opción
de noche
End Sub
Public Sub optNoche_Click()
cbocondiciones(1).Enabled = True 'activa el combo correspondiente a la opcion de
noche
cbocondiciones(0).Enabled = False 'desactiva el combo correspondiente a la opcion
de día
End Sub
Public ValorVs As Double
Public ValorD As Double
Public ValorTs As Double
Public ValorTa As Double
Public ValorP As Double
Public Sub Vs()
Dim param As Double
param = txtdatos2(0)
If cbounidades2(0).ListIndex = 0 Then
Vs2 = param * 1 'no se requiere hacer conversion
ElseIf cbounidades2(0).ListIndex = 1 Then
Vs2 = param * 0.0254 'conversion de in/s a m/s
ElseIf cbounidades2(0).ListIndex = 2 Then
Vs2 = param * 0.00042333 'conversion de in/min a m/s
ElseIf cbounidades2(0).ListIndex = 3 Then
Vs2 = param * 0.0000070555 'conversion de in/hr a m/s
ElseIf cbounidades2(0).ListIndex = 4 Then
Vs2 = param * 0.3048 'conversion de ft/s a m/s
ElseIf cbounidades2(0).ListIndex = 5 Then
Vs2 = param * 0.00508 'conversion de ft/min a m/s
ElseIf cbounidades2(0).ListIndex = 6 Then
Vs2 = param * 0.000084666 'conversion de ft/hr a m/s
ElseIf cbounidades2(0).ListIndex = 7 Then
Vs2 = param * 1000 'conversion de Km/s a m/s
ElseIf cbounidades2(0).ListIndex = 8 Then
Vs2 = param * 16.666 'conversion de Km/min a m/s
ElseIf cbounidades2(0).ListIndex = 9 Then
Vs2 = param * 0.2777 'conversion de Km/hr a m/s
Else: Vs2 = param * 2 'conversion de MPH a m/s
End If
ValorVs = Vs2
End Sub
93
Public Function capacidad(ValorTs, ValorTa) As Double
capacidad = ((28.11 * (ValorTs - ValorTa)) + (0.0009835 * ((ValorTs ^ 2) (ValorTa ^ 2))) + (0.00000160066 * ((ValorTs ^ 3) - (ValorTa ^ 3))) (0.0000000004915 * ((ValorTs ^ 4) - (ValorTa ^ 4)))) / 28.97
End Function
Public Function flujo(ValorD, ValorVs, ValorP, ValorTs) As Double
flujo = (3.141592 * (ValorD ^ 2) * ValorVs * ValorP) / (4 * 0.287 * ValorTs)
End Function
Public Function calor(capacidad, flujo) As Double
calor = flujo * capacidad
End Function
Public Function elevacion(ValorVs, ValorP, ValorD, ValorU, ValorTs, ValorTa,
calor) As Double
If cbocorrelacion.ListIndex = 0 Then
elevacion = ((-0.029 * ValorVs * ValorD) / Form1.ValorU) + (2.62 * ((calor ^ (1 /
2)) / Form1.ValorU)) 'calculo para carson y moses
ElseIf cbocorrelacion.ListIndex = 1 Then
elevacion = (ValorVs * ValorD / Form1.ValorU) * (1.5 + ((0.0096 * calor) /
(ValorVs * ValorD))) 'calculo para holland
Else:
elevacion = 4.71 * (calor ^ 0.444) / (Form1.ValorU ^ 0.694) 'calculo para
Concawe
End If
End Function
Public Sub ApplyBottom_Click()
Call Ts
Call Ta
Call D
Call Vs
Call P
Call Form1.U
capacidad2 = capacidad(ValorTs, ValorTa)
flujo2 = flujo(ValorD, ValorVs, ValorP, ValorTs)
calor2 = calor(capacidad2, flujo2)
elevacion2 = elevacion(ValorVs, ValorP, ValorD, ValorU, ValorTs, ValorTa, calor2)
txtdatos2(7) = capacidad2
txtdatos2(6) = flujo2
txtdatos2(5) = calor2
txtelevacion(11) = elevacion2
End Sub
94
Descargar