Sunteți pe pagina 1din 288

UNIVERSIDAD SIMN BOLVAR

Decanato de Estudios Profesionales


Coordinacin de Ingeniera Mecnica

ELABORACIN DE UN PROGRAMA DE CLCULO DE CARGAS TRMICAS


PARA EDIFICIOS DE OFICINAS

Por
Ricardo Gonzlez Perna
Sartenejas, octubre de 2006

UNIVERSIDAD SIMN BOLVAR


Decanato de Estudios Profesionales
Coordinacin de Ingeniera Mecnica

ELABORACIN DE UN PROGRAMA DE CLCULO DE CARGAS TRMICAS


PARA EDIFICIOS DE OFICINAS

Por
Ricardo Gonzlez Perna
Realizado con la Asesora de
Alfonso Quiroga

PROYECTO DE GRADO
Presentado ante la Ilustre Universidad Simn Bolvar
como requisito parcial para optar al ttulo de
Ingeniero Mecnico
Sartenejas, octubre de 2006

UNIVERSIDAD SIMN BOLVAR


Decanato de Estudios Profesionales
Coordinacin de Ingeniera Mecnica

ELABORACIN DE UN PROGRAMA DE CLCULO DE CARGAS TRMICAS


PARA EDIFICIOS DE OFICINAS
PROYECTO DE GRADO presentado por
Ricardo Gonzlez Perna

REALIZADO CON LA ASESORA DE Alfonso Quiroga


RESUMEN
La elaboracin de un programa de clculo de cargas trmicas parti de la
investigacin intensiva del funcionamiento de un programa existente que se esquematiz
para identificar acciones de mejora y elementos de utilidad.
Se desarroll el programa en Visual Basic 6.0, para poder establecer una interfaz en
entorno de Windows que permitiera una fcil introduccin y correccin de los datos y que
reportara los datos de modo global y visible tanto en pantalla como en un archivo que
respalde el clculo. Se trabajo con rutinas de almacenamiento de listas de datos y
procedimientos de clculo iterativos basados en el procedimiento de las Diferencias de
Temperaturas Totales Equivalentes segn las normas ASHRAE 1997.
Se obtuvo de este modo un programa en ambiente de Windows que permite realizar el
ingreso de los datos de unidades de manejo de aire, de ambientes y de cargas en funcin de
las necesidades del usuario y no siempre de modo directamente dependiente, que realiza los
clculos en una mayor velocidad y permite obtener un archivo de resultados fcil de
consultar.

PALABRAS CLAVES
Programa de Clculo, Cargas Trmicas, normas ASHRAE

Aprobado con mencin:_____


Postulado para el premio:_____
Sartenejas, octubre de 2006

Dedicatoria:
A mi madre, quien me ha
enseado con el ejemplo que la
constancia y el esfuerzo siempre
reportan como premio los buenos
resultados en la vida.

"El secreto de la existencia humana no solo est en vivir, sino tambin en saber para qu se vive."
- Fedor Dostoievski -

AGRADECIMIENTOS

Al Profesor Alfonso Quiroga, por el apoyo constante e incentivo a seguir


ambicionando con un mayor desarrollo del programa
A mi hermana, por ser mi constante ayuda, apoyo y editora de la estructura del
trabajo.
A mi madre por sus constantes incentivos y conversaciones tranquilizantes, que me
dieron las herramientas para soportar la presin del trabajo.
A mi familia por el seguimiento, apoyo y ayuda brindados durante este perodo final
de trabajo del proyecto.
A la profesora Nathaly Moreno, por haberme puesto en contacto con el profesor
Quiroga y motivarme a hacer el proyecto de programacin en Visual Basic.
A Luis Luque por su aporte prestndome el libro de mayor referencia para la
programacin en Visual Basic durante todo el perodo.
A la Universidad Simn Bolvar por todo el aporte que ha dado a mi cultura como
futuro ingeniero y como actual ciudadano de un pas en crisis.
A Dios sobre todas las cosas por ser mi gua espiritual en los momentos de mayor
dificultad.
A los muchachos de Vanguardia Universitaria USB, porque a pesar de siempre
hacerme ocupar mi tiempo en otras cosas distintas al proyecto, lograban que despejara mi
mente y no rebosara los niveles de estrs.

1. NDICE GENERAL

1. NDICE GENERAL ..........................................................................................................i


1.2. ndice de Tablas y Figuras..........................................................................................iv
1.2.1. Tablas ..................................................................................................................iv
1.2.2. Figuras .................................................................................................................iv
Abreviaturas ......................................................................................................................... 1
2. INTRODUCCIN ............................................................................................................ 4
3. OBJETIVOS ..................................................................................................................... 5
3.1. Objetivo General ......................................................................................................... 5
3.2. Objetivos Especficos .................................................................................................. 5
4. FUNDAMENTOS TERICOS....................................................................................... 6
4.1. Antecedentes................................................................................................................ 6
4.2. Conceptos Termodinmicos ........................................................................................ 9
4.2.1. Psicrometra .......................................................................................................... 9
4.2.2. Temperatura del aire........................................................................................... 10
4.2.3. Humedad............................................................................................................. 11
4.2.4. Propiedades del aire hmedo.............................................................................. 12
4.2.5. Calor Sensible y Latente..................................................................................... 14
4.3. Cargas de Enfriamiento ............................................................................................. 15
4.4. Tcnicas del Clculo de Cargas de Enfriamiento de Espacios cerrados ................... 18
4.4.1. Fundamentos del Balance................................................................................... 18
4.4.2. Mtodo de las Diferencias de Temperaturas Totales Equivalentes (DTTE) ...... 22
4.4.3. Mtodo de la Funcin de Transferencia (MFT) ................................................. 22
4.4.4. Mtodo de la Diferencia de Temperaturas de las Cargas de Refrigeracin
(DTCR)......................................................................................................................... 24
5. MTODOS Y PROCEDIMIENTOS ........................................................................... 25
5.1. Procedimientos de Clculo ........................................................................................ 25
5.1.1. Ganancias de Calor Externas.............................................................................. 26
5.1.2. Ganancias de Calor Internas ............................................................................... 33
5.1.3. Cargas de Enfriamiento ...................................................................................... 38
5.2. Obtencin de las Tablas Regionalizadas................................................................ 38
6. DESARROLLO .............................................................................................................. 40
6.1. Procedimiento............................................................................................................ 40

6.2. Desarrollo del programa ............................................................................................ 42


6.3. El Programa ............................................................................................................... 49
6.4. Avances en el Procedimiento de Clculo del Programa............................................ 50
6.5. Avances en el Procedimiento de Almacenamiento y Correccin de Datos .............. 55
6.6. Secuencia de Funcionamiento del Programa............................................................. 56
6.6.1. Estructura del Programa ..................................................................................... 59
7. RESULTADOS ............................................................................................................... 69
8. CONCLUSIONES Y RECOMENDACIONES ........................................................... 71
9. BIBLIOGRAFA ............................................................................................................ 72
Referencias ....................................................................................................................... 72
10. APNDICES ................................................................................................................. 73
Apndice A. Tablas .......................................................................................................... 73
Apndice A1.................................................................................................................. 73
Apndice A2 ................................................................................................................. 76
Apndice A3 ................................................................................................................. 77
Apndice A4 ................................................................................................................. 82
Apndice A5 ................................................................................................................. 86
Apndice A6 ................................................................................................................. 88
Apndice B. Imgenes de una corrida del programa........................................................ 89
Apndice C ....................................................................................................................... 94
Apndice D. Conceptos Bsicos de Programacin ........................................................ 109
D.1. Trminos de programacin ................................................................................. 109
D.2. Mtodos de Almacenamiento de Datos .............................................................. 112
Apndice E. ....................................................................................................................... 114
E.1. Conceptos de Clculo de Ganancia de Calor .......................................................... 114
E.1.1. Ganancia de Calor a travs de reas Ventanales............................................. 114
E.1.2. Ganancia de Calor a travs de Superficies Exteriores ..................................... 114
E.1.3. Temperatura Sol-Aire....................................................................................... 114
E.1.4. Ganancia de Calor a Travs de las Superficies ................................................ 121
E.1.5. Fuentes de Calor en los Espacios Refrigerados ............................................... 122
E.1.6. Ganancias de Calor por Infiltracin y Ventilacin .......................................... 128
E.1.7. Principios de las Cargas de Calefaccin .......................................................... 129
E.2. El Mtodo................................................................................................................ 131
E.2.1. Procedimiento de Clculo de Diferencias de Temperaturas Totales Equivalentes
en un Promedio de Tiempo (DTTE/PT) ..................................................................... 131
E.2.2. Ganancia de Calor a travs de Ventanas Exteriores......................................... 131
E.2.3. Ganancia de Calor Sensible ............................................................................. 132
E.2.4. Coeficientes de Funcin de Transferencia para Conduccin........................... 133
E.2.5. Ganancia de Calor a travs de Superficies Interiores, Espacios Adyacentes y
Pisos............................................................................................................................ 134
ii

E.2.6. Ganancia de calor desde espacios adyacentes.................................................. 134


E.2.7. Ganancia de Calor a travs de infiltraciones y ventilacin. ............................. 135
E.2.8. Tratamiento de la Ganancia de Calor y la Carga de Refrigeracin.
Procedimientos de Conversin. .................................................................................. 135
E.2.9. Ganancia de Calor a travs de las Paredes y Techos Exteriores ...................... 136
E.2.10. La Diferencia de Temperatura Total Equivalente como una funcin de los
factores de decremento y retrasos temporales. ........................................................... 137
E.3. Promedio Temporal de la Carga de Refrigeracin.................................................. 138

iii

1.2. ndice de Tablas y Figuras

1.2.1. Tablas
Tabla 5.1. Porcentaje de Rango Diario
27
Tabla 5.2. Irradiacin Solar Extraterrestre y Datos Relacionados
28
Tabla 5.3. Coeficientes para vidrios DSA, para clculos de Transmitancia y Absorbancia28
Tabla A1.1 de requerimientos de aire por ventilacin
73
Tabla A1.2 de requerimientos de aire por ventilacin
74
Tabla A1.3 de requerimientos de aire por ventilacin
75
Tabla A2.1 Nmero mnimo de cambios de aire por hora requeridos por las normas del
M.S.A.S segn uso del local
76
Tabla A3.1. Irradiacin Solar y Coeficiente de Ganancia de Calor para Latitud 16 N 77
78
Tabla A3.2. Reflectividad de superficies exteriores
2
Tabla A3.3. Factores U para varios elementos con vidrios en W/(m *K)
79
Tabla A3.4. Factores U para varios elementos con vidrios en W/(m2*K) (cont.)
80
Tabla A3.5 Transmisin Visible (VT) y Coeficientes de Sombra (SC) para vidrios solos y
aislados
81
82
Tabla A4.1. Coeficiente de funcin de transferencia para Techos
Tabla A4.2 Coeficiente de funcin de transferencia para Paredes
83
Tabla A4.3 Tasa de Ganancia de Calor de los Ocupantes
84
Tabla A4.4. Porcentajes Convectivos y de Radiacin del total de Calor Sensible
84
Tabla A4.5. Ganancia de Calor de Motores Elctricos Comunes
85
Tabla A5.1 Tabla de propiedades trmicas para materiales comunes de edificios y aislantes
86
Tabla A5.2 Conductancia y Resistencias del Aire en Superficies
87
Tabla A6.1. Datos Climticos de las Ciudades ms importantes de Venezuela
88
117
Tabla E.1. Temperaturas soleadas para Julio 21, 40 N de Latitud
Tabla E.2. Ganancias de Calor de los ocupantes de un espacio refrigerado
123

1.2.2. Figuras
Figura 4.1. Escalas comunes de temperatura
10
Figura 6.1. Cdigo de almacenamiento de las unidades de manejo de aire
43
Figura 6.2. Cdigo principal de la subrutina de cargar el mdulo de las unidades de manejo
de aire
44
Figura 6.3. Comando ejecutado con el botn de Crear el entorno para guardar los datos y
resultados
45
Figura 6.4. Cdigo de la creacin y despliegue de la lista de ambientes disponibles
46
Figura 6.5. Extracto del cdigo de seleccin especfica de las caractersticas de una carga
47
Figura 6.6. Procedimiento de almacenamiento de las correcciones de datos en las unidades
de manejo de aire
47
iv

49
Figura 6.7. Estracto del anlisis de las cargas por oficinas
Figura 6.8. Cdigo particularizado para el clculo de las cargas de Equipos de Potencia 53
Figura 6.9. Esquema del procedimiento de clculo del programa
55
56
Figura 6.10. Imagen del programa en la Carga de Personas
Figura 6.11. Imagen de la carga de personas cuando se selecciona una lista de datos
57
Figura 6.12. Esquema de funcionamiento del programa, parte 1 de 2
58
Figura 6.13. Esquema de funcionamiento del programa, parte 2 de 2
59
Figura E.1. Balance de Calor en un instante para material cristalino expuesto al sol. 119
Figura E.2. Balance de Calor de un Retorno por Plnum
126

Abreviaturas
A
A

aj

rea
Constante de Evidencia Solar
Absorbancia de la superficie a la radiacin solar
Coeficientes de Absorcin de Vidrios

CGCS
C
C
Cp

Absortancia de vidrios DSA


American Society of Heating Refrigerant and Air-Conditioning Engineers
Coeficiente de Extincin Atmosfrica
Altitud Solar
Coeficiente de ganancia de calor solar
Factor de Difusin del Cielo
Grados Celsius
Calor especfico a una presin constante

Cpd
C ps

Calor especfico del aire a presin constante


Calor especfico del vapor de agua

Declinacin
Diferencia entre la radiacin incidente en la superficie desde el cielo y los
alrededores y, la radiacin emitida por los cuerpos negros a la temperatura
del aire exterior, W/m2

ASHRAE
B

DSA
DTCR
DTTE
E

ea
Ed
ED
EDN
Edg

Eds
F
FCR
FS
Fsa
FTC
Ful

g ij
h
ha

Diferencia de Temperaturas de las Cargas de Refrigeracin


Diferencias de Temperaturas Totales Equivalentes
Energa transmitida
Emitancia hemisfrica de la superficie
Promediado en el tiempo
Irradiacin Difusa
Irradiacin Directa
Irradiacin Normal Directa
Irradiacin Reflejada del Suelo
Irradiacin Difusa al Cielo
Grados Fahrenheit
Factores de Carga de Refrigeracin
Factor de sombra
Factor de balasto de iluminacin
Funcin de Transferencia para Conduccin
Factor de uso de iluminacin
Acimut Superficie-Sol
Factor de radiacin entre la superficie i y la superficie interior j
Entalpa
Entalpa especfica del aire

hci
hg 0

Coeficiente convectivo de calor en la superficie interior i


Entalpa especfica del vapor de agua

ho

psia
PT
pw
q
qi ,

Coeficiente de transferencia de calor por radiacin y por conveccin externa


a la superficie, W/(m2 K)
Entalpa especfica del vapor de agua. [kJ/kg]
ngulo de hora
Humedad relativa
Incidencia total de radiacin solar a la superficie, W/m2
Grados Kelvin
Kilo joules
Kilogramos
Latitud
Masa de aire
Mtodo de la Funcin de Transferencia
Masa de vapor
Nmero moles de aire seco.
Fraccin de radiacin absorbida
Nmero de moles de vapor de agua en una muestra de aire hmedo.
Nmero de moles de vapor de agua por partes de aire con vapor saturado.
Pascal
Presin de aire seco
Acimut Superficial
Libras por pulgada cuadrada atmosfrica
Promedio en el Tiempo
Presin de vapor
Calor
Calor de conduccin de una superficie interna en un instante

R
Ra
REi ,

Grados Ranking
Constante de gases de aire seco
Tasa de calor irradiado por los equipos y ocupantes, que es absorbida por la

superficie i en el instante
Capacidad de reflejar del Suelo

RLi ,

Tasa de calor irradiado por las luces y absorbido por la superficie i en el

RS i ,

instante
Tasa de energa Solar que incide por las ventanas y es absorbida por la

hw
H
Hr.
It
K
kJ
kg
L
ma
MFT
mw
na
Ni
nw
nws
Pa.
pa

Rw
T

Ta ,

D
Ti ,

superficie i en el instante
Constante de gases del agua
Temperatura
ngulo de Incidencia
Temperatura del aire interno en el instante
Transmitancia de vidrios DSA
Temperatura promedio de la superficie interior i en el instante

tj

Coeficientes de Transmisin de Vidrios

T j ,

Temperatura promedio de la superficie interior j en el instante

TVidrio
V
U
UMA
w
W
Xw
Xws
Y

Total de Vidrio
Volumen
Factor de resistencia trmico del cristal
Unidad de Manejo de Aire
Grado de humedad
Vatios
Fraccin molar del vapor de agua en aire hmedo
Fraccin molar de vapor saturado en aire
Tasa de difusin vertical/horizontal del cielo
Inclinacin de Superficie
Acimut Solar

2. INTRODUCCIN
El presente trabajo se fundamenta en la elaboracin de un programa de clculo de
cargas trmicas, que cumple los principios termodinmicos bsicos y considera los
mltiples factores que pueden afectar los resultados de stos, estructurndolo de un modo
que simplifica la comprensin de las variables y detalla los resultados en las distintas etapas
dentro del sistema de espacios que conforma a una edificacin.

Partiendo de un programa realizado en la dcada de los ochenta por un grupo de


ingenieros y estudiantes de ingeniera, se desarrolla un nuevo sistema adaptado a los
mtodos de clculo actuales, aadiendo caractersticas que simplifican el trabajo para
Venezuela, permitiendo a su vez que se pueda adaptar a otras latitudes donde se utilicen los
mtodos de ASHRAE.

Se disea de este modo un programa de clculo de cargas trmicas funcional, rpido


y preciso en su obtencin de resultados, que a su vez trabaja en una interfaz diseada para
un entorno de Windows y entre las particularidades importantes del mismo estn, la
inclusin de tablas de datos para Venezuela y la inclusin de la normativa nacional.

3. OBJETIVOS
3.1. Objetivo General
-

Desarrollar un programa que compile los procedimientos de recoleccin de datos y


clculo de cargas bajo los nuevos esquemas del procedimiento de Diferencias de
Temperaturas Totales Equivalentes segn las normas ASHRAE 1997 en el lenguaje
de programacin Visual Basic 6.

3.2. Objetivos Especficos


-

Modernizar los procedimientos de clculo del programa existente introduciendo los


cambios que ha incorporado ASHRAE en sus metodologas de clculo.

Incorporar datos climticos de Venezuela para obtener un perfil de carga diario


ajustado a nuestras necesidades especficas.

Desarrollar un programa que funcione en una interfaz compatible con Windows.

Mejorar la entrada de datos facilitando su modificacin y correccin.

4. FUNDAMENTOS TERICOS
4.1. Antecedentes
Previo a la elaboracin del programa de clculo de cargas trmicas que resultante de
este proyecto, se examinaron los software de clculo ms comunes en el mercado, en base a
lo cual se lleg a las siguientes premisas.
Todos los programas existentes estn basados en mtodos similares, algunos parten
del uso de bases de datos en forma de tablas y otros de las listas simples de datos. Los
conocimientos de termodinmica para el clculo del calor son los mismos, para cualquier
latitud, sin embargo las peculiaridades de la zona deben de tenerse en cuenta si se desea
facilitar y simplificar el proceso de clculo para usuarios locales.
Las diferencias fundamentales que se pueden conseguir entre diversos programas
son: El sistema de unidades utilizado, el formato de introduccin de datos, el desarrollo del
estudio psicromtrico posterior al clculo de cargas, el clculo por unidades de
enfriamiento y de manejo de aire.
A continuacin se menciona una breve descripcin de algunos programas que se
conocieron y observaron previo al desarrollo del proyecto:

Aire: Programa de clculo de cargas trmicas y psicrometra desarrollado


por estudiantes y profesores de la Universidad Simn Bolvar en la dcada
de los ochenta. Evala todas las cargas fundamentalmente en funcin de
tablas adaptadas a la regin venezolana, entre latitudes de 8 y 10N.

Climaver:

Programa desarrollado por la Universidad Politcnica de

Valencia en conjunto con Cristalera Espaola S.A., que por ser de cdigo
cerrado (requiere licencia) no permite conocer el mtodo de clculo, se basa
en el uso de una base de datos sencilla que no requiere la instalacin de
servidores o libreras adicionales. Su interfaz es en monitor completo a tres
colores. Muy similar al entorno de trabajo del programa Aire. Su desventaja
es que se basa en las normas Europeas y que su base de datos de ciudades
est conformada nicamente por ciudades de Espaa.

CoolPack:

Programa desarrollado por el Departamento de Ingeniera

Mecnica de la Universidad de Dinamarca en 1997. Es un programa ms


diverso porque adems de calcular los requerimientos de carga de los
ambientes, puede servir de soporte para el diseo del circuito de
enfriamiento y de ciclos de calor. Su desventaja principal es que slo
permite calcular un espacio refrigerado a la vez.

Dpclima:

Programa

desarrollado

por

el

Departamento

de

Termodinmica Aplicada de la Universidad Politcnica de Valencia


(Espaa). Entre los programas analizados es el ms completo, se fundamenta
en el uso de bases de datos complementarias al programa. Requiere de una
licencia de uso. Se maneja en el entorno de Windows, con una interfaz
grfica que permite la visualizacin de lo que se va introduciendo como
datos. Su principal problema es que est basado en las normas europeas y
espaolas y su base de datos la conforman nicamente ciudades de Espaa.

Algunos otros programas de clculo de cargas trmicas, populares en el entorno de


los expertos en aire acondicionado, pero inapropiados para fines acadmicos, debido a que
no son abiertos.

Carrier E53: Un programa muy amigable para la introduccin de carga,


rpido y eficiente, aunque tiene como desventajas el que no permite salvar
datos, ni permite zonificar el edificio.

Carrier E20: Programa que se destaca por su organizacin en pantalla, de


fcil manejo, relativa precisin debido al uso del mtodo Carrier y permite
zonificar el edificio. Tiene como desventajas que no permite elegir entre
espacios simples o complejos y no permite fraccionar las cargas sino en el
ambiente especfico, no en el edificio.

Saunier Duval:

Es de muy fcil manejo, se requiere introducir pocos

datos y estima de modo rpido las cargas. Su desventaja es que desglosa los
datos de carga nicamente en la hora pico y no considera los fenmenos de
acumulacin de calor

Carrier HAP:

Programa que se maneja en entorno de Windows,

posee libreras de cada uno de los elementos a insertar, se estiman las cargas
en cada hora del da, permite la zonificacin del edificio y da la posibilidad
de simular el consumo energtico del sistema. Sus desventajas son que
desglosa las cargas slo en los espacios, no en el edificio completo y la
interpretacin de los resultados es compleja.

Trace (Trane): Programa muy verstil en la etapa de carga de datos,


permite desglosar las cargas de varios modos, permite la zonificacin y
reporta una alta precisin de resultados. Como desventaja, tiene pantallas
labernticas y su base climtica no es modificable.

4.2. Conceptos Termodinmicos


4.2.1. Psicrometra
Es el estudio de las propiedades termodinmicas del aire hmedo. Se utiliza para
ilustrar y analizar las caractersticas de los diversos procesos y ciclos de los sistemas de aire
acondicionado.

Aire hmedo.
La superficie de la tierra se encuentra rodeada de una capa de aire que es llamada
atmsfera o aire atmosfrico. Desde el punto de vista de la psicrometra, la atmsfera baja
es una mezcla de aire seco (incluyendo algunos agentes contaminantes) y vapor de agua,
mejor conocido como humedad.
La composicin del aire seco es comparativamente estable. Vara sigilosamente de
acuerdo a la ubicacin geogrfica y de acuerdo al tiempo. La composicin del aire seco en
porcentajes de volumen de sus elementos ms comunes es la siguiente:
Nitrgeno

78,08

Oxgeno

20,95

Argn

0,93

Dixido de Carbono

0,03

Otros gases

0,01

La cantidad de vapor presente en el aire seco a una temperatura entre un rango de 17,8 a 37,8 C vara desde 0,05 a 3 por ciento de la masa. Esto tiene una influencia
significativa en las caractersticas del aire seco.
El vapor de agua es ms ligero que el aire. Una nube en el cielo est compuesta por
microscpicas partculas de agua condensada que est rodeada de una delgada capa de
vapor de agua. Estas capas son las que le dan a las nubes la capacidad de flotar en el aire.
9

4.2.2. Temperatura del aire


Temperatura y escalas de temperatura. La temperatura de una sustancia es la medida
de cun fra o caliente se encuentra sta. Se dice que dos cuerpos se encuentran a una
misma temperatura si no se observa ningn cambio en sus caractersticas trmicas al
ponerlos en contacto. Existen varias escalas usadas comnmente para medir la temperatura
de varias sustancias. En la figura 4.1 se observan de modo grfico sus equivalencias.

Figura 4.1. Escalas comunes de temperatura

En el sistema internacional, a una presin atmosfrica estndar de 101,325 Pa


(14,697 psia), la escala Celsius tiene un punto de solidificacin a 0 C (32 F), y un punto
de evaporacin a 100 C (212 F). Para el punto triple, con una presin de 611,2 Pa
(0,08864 psia), la magnitud de la escala Celsius es de 0,01 C (32,018 F). La conversin de
la escala Celsius a la escala Fahrenheit se realiza de la siguiente manera:

F = 1,8( C ) + 32

(1)

10

4.2.3. Humedad
Grado de humedad.
El grado de humedad del aire w es la relacin que hay entre la masa de vapor mw y
la masa del aire seco ma contenida en la mezcla de aire hmedo. Puede ser calculado de la
forma:

w=

mw
ma

(2)

En vista que tanto el aire como el vapor ocupan el mismo volumen y estn a la
misma temperatura, se pueden aplicar a esta expresin las ecuaciones de gas ideal y leyes
de Dalton para cada uno de los distintos componentes y as se vuelve a escribir la relacin
de la siguiente forma:
w=

mw pwVRaTR Ra
pw
=
=
m a paVRwTR Rw pat pw

53,352 pw
pw
=
= 0,62198
85,778 pat pw
pat pw

(3)

donde Ra y Rw son las constantes de los gases para el aire seco y agua
respectivamente en [J/(kgK)].

Humedad relativa.
La humedad relativa del aire, o Hr., se define como la relacin de la fraccin
molar del vapor de agua Xw en una muestra de aire hmedo, con la fraccin molar del
vapor de agua en una muestra de aire con vapor saturado Xws a la misma presin y
temperatura. Esta relacin se puede escribir como:

w
ws

T ,p

(4)

11

Y por definicin, las siguientes expresiones se pueden escribir de la forma:

w =

nw
na + nw

(5)

ws =

nws
na + nws

(6)

donde
na

= nmero moles de aire seco, mol

nw

= nmero de moles de vapor de agua en una muestra de aire hmedo, mol

nws

= nmero de moles de vapor de agua por partes de aire con vapor saturado,
mol

El aire hmedo es una mezcla de aire seco y vapor de agua; en tal sentido se
consigui que la suma de las fracciones molares de vapor de agua y de aire seco da como
resultado uno, lo que implica:

a + w = 1

(7)

4.2.4. Propiedades del aire hmedo

Entalpa.
La diferencia especfica de entalpa h para un gas ideal en KJ/kg, a una presin
constante se define por:

h = C p (T2 T1 )

(8)

donde

Cp

= Calor especfico a una presin constante, kJ/(kgK)

T1 , T2 = Temperatura del gas ideal en las etapas 1 y 2, C

12

Como el aire hmedo es prcticamente una mezcla binaria de aire seco y vapor de
agua, la entalpa del vapor de agua puede ser considerada como

h = ha + H w

(9)

donde ha y H w son, respectivamente las entalpas del aire seco y del vapor de agua
en (kJ/kg). Las siguientes afirmaciones se realizan para calcular la entalpa del aire
hmedo:
1. Las ecuaciones de gas ideal y las leyes de Gibas-Dalton son vlidas
2. La entalla del aire seco es igual a cero a -17,8C
3. Todo el vapor de agua contenido en el aire hmedo se vaporiza a -17,8 C
4. La entalpa del vapor saturado a -17,8 C es 2468 kJ/kg
5. Para la conveniencia de clculo, se puede considerar la entalpa del aire hmedo
como una mezcla de aire seco y vapor de agua en donde la cantidad de aire seco es
exactamente 0,454 kg (1 lb).
En base a estas consideraciones, la entalpa del aire hmedo

h = ha + whw

(10)

donde hw = entalpa especfica del vapor de agua, kJ/kg. En un rango de


temperatura entre -17,8 a 37,8 C el valor del calor especfico para el aire seco es de 1,005
kJ/(kgK). Entonces la entalpa especfica del aire seco ha se puede escribir como:

ha = C pd T = 1,005 T

(11)

donde

Cpd

= calor especfico del aire seco a presin constante, (kJ/kgK)

= temperatura del aire seco, C

13

La entalpa especfica del vapor de agua hw, a una presin constante es


aproximadamente:

hw = hg 0 + C psT

(12)

donde

hg 0

= entalpa especfica del vapor de agua a -17,8 C, se puede asumir este valor
como 2468 kJ/kg

C ps

= calor especfico del vapor de agua a presin constante, (kJ/kgK)

Dentro de un rango de temperatura comprendido entre -17,8 y 37,8 C se puede


considerar que el valor de esta entalpa es de 1,859 kJ/kgK. Con lo cual la entalpa del aire
hmedo se puede escribir como:

h = C pd T + w(hg 0 + C psT )

(13)

h = 1,005 T + w (2468 + 1,859 T )

(14)

La unidad de trabajo que se considera se escribe como kJ/kg

aire seco,

pero por

simplificacin se denota simplemente como kJ/kg.

4.2.5. Calor Sensible y Latente


El Calor Sensible es la energa asociada con el cambio de temperatura del aire. En la
ecuacin (13), la entalpa del aire hmedo en un estado definido a -17,8C puede dividirse
en dos partes:

h = (C pd + wC ps )T + whg 0

(15)

El primer trmino del lado derecho de la ecuacin (15) denota el calor sensible.
El Calor Latente hfg es la energa calrica asociada con el cambio de estado del
vapor de agua. El calor Latente de la vaporizacin denota los requerimientos del calor

14

latente para vaporizar agua lquida a su estado gaseoso. De esta forma, el Calor Latente en
la condensacin indica el calor que debe ser removido del vapor de agua para condensarlo y
hacerlo lquido. Cuando se aumenta o disminuye la humedad de un espacio o proceso, una
cantidad de Calor Latente correspondiente deber actuar, para vaporizarla o condensarla.
En la ecuacin (15) el segundo trmino del lado derecho de la expresin whg 0 ,
denota al Calor Latente. Ambos calores, sensible y latente, se expresan en trminos de
kJ/kg de aire seco.

4.3. Cargas de Enfriamiento


Las variables que afectan los clculos de cargas de enfriamiento son numerosas,
frecuentemente difciles de precisar y siempre intrnsecamente relacionadas entre s.
Muchos componentes de las cargas de enfriamiento varan en un amplio rango de magnitud
durante un perodo de 24 horas. Como estos cambios cclicos de los distintos componentes
a tomar en cuenta, generalmente ocurren desfasados entre s, cada uno debe ser analizado
individualmente para establecer una resultante de carga de enfriamiento mxima para cada
edificio o zona del mismo. Un sistema zonificado (un sistema cuyos equipos de aire
acondicionado sirvan para distintas reas independientes, cada una con su propio control de
temperatura) no necesita reconocer grandes capacidades de cargas de enfriamiento ms que
sumatoria total de las cargas simultneas de las distintas zonas a lo largo de las horas del
da de diseo; sin embargo, debe manejar el pico de carga de enfriamiento para cada zona
en el lapso especfico de mximo registro. A ciertas horas del da durante temporadas
calurosas o intermedias, algunas zonas requerirn calefaccin mientras que otras,
refrigeracin.

Ganancia de Calor del Espacio.

Esta tasa instantnea de ganancia de calor es el modo en el cual el calor entra y/o es
generado dentro de un espacio para un instante dado. La ganancia de calor se clasifica por

15

a) las formas de ganancia de calor al espacio y b) Si es una ganancia de calor sensible o


latente.

Formas de ganancia de calor al espacio.

Los modos en que puede ocurrir ganancia de calor son a) Radiacin solar a travs de
superficies transparentes; b) Conduccin de calor a travs de paredes y techos exteriores; c)
Conduccin de calor a travs de particiones internas, aislamientos y suelos; d) Calor
generado en el espacio por los ocupantes, luces y equipos; e) Energa transferida como
resultado de la ventilacin o la infiltracin de aire externo; o f) Ganancias varias de calor.

Ganancia de Calor Sensible y Latente.

La ganancia de calor Sensible se suma directamente al espacio acondicionado por


conduccin, conveccin y/o radiacin. La ganancia de Calor Latente ocurre cuando la
humedad aumenta en el ambiente (Ej., del vapor emitido por los ocupantes y equipos). Para
mantener una humedad constante, el exceso de vapor debe ser condensado en los aparatos
de refrigeracin a una tasa igual a la que entra en el espacio. La cantidad de energa
requerida para compensar la ganancia de calor latente esencialmente es igual al producto de
la tasa de condensacin y al calor latente de condensacin. En la seleccin de aparatos de
enfriamiento, es necesario distinguir entre la ganancia de calor sensible y latente. Cada
aparato de enfriamiento tiene un mximo de capacidad para extraer calor sensible y un
mximo para el calor latente segn las condiciones de operacin particulares.

Carga de refrigeracin del espacio.

Esta es la tasa a la cual el calor debe ser removido del espacio para mantener
constantes las condiciones de temperatura del aire. La sumatoria de cada una de las
ganancias de calor en cada instante no es necesariamente igual a la carga de refrigeracin
del espacio para el mismo instante.

16

Ganancia de Calor por Radiacin.

La ganancia de calor por radiacin del espacio, no se convierte de un modo


instantneo en una carga de enfriamiento. La energa de Radiacin debe ser primero
absorbida por las superficies que encierran el espacio (paredes, pisos y cerramientos) y los
objetos en el espacio (mobiliario, adornos, etc.). Tan pronto como estas superficies y
objetos se calientan ms que el aire del espacio, parte del calor absorbido es transferido al
aire por conveccin. La capacidad de almacenar calor de estas superficies y objetos
determinar la tasa a la cual incrementar la temperatura superficial de ellos al someterse a
procesos de radiacin, y de este modo ocurre la interaccin entre la porcin de calor por
radiacin y su correspondencia con parte de la carga de enfriamiento del espacio. Del
efecto de almacenamiento trmico es de quien depende la diferenciacin entre los instantes
de ganancia de calor y de carga de enfriamiento para un instante dado.

Tasa de Extraccin de Calor del Espacio.

La tasa en que el calor es removido del espacio acondicionado equipara a la carga


de enfriamiento del mismo, en la medida que la temperatura de aire del espacio se
mantenga constante.

Carga del Cooling Coil.

La tasa a la cual se remueve la energa en el Cooling Coil que sirve a uno o ms


espacios acondicionados equipara a la suma de las cargas instantneas de enfriamiento de
cada espacio (o la tasa de extraccin de calor del espacio si se considera que la temperatura
de la zona no vara) para todos los espacios que atiende el ste, junto a cualquier otra carga
externa adicional. Entre tales cargas externas se incluyen las ganancias de calor en el
sistema de distribucin entre los espacios individuales y la unidad de enfriamiento, y el
calor del aire y la humedad que se insertan en los sistemas de distribucin a travs de la
unidad de enfriamiento.

17

4.4. Tcnicas del Clculo de Cargas de Enfriamiento de Espacios cerrados


4.4.1. Fundamentos del Balance.
La estimacin de la carga de enfriamiento para un espacio cerrado involucra
calcular la ganancia de calor por conduccin, conveccin y radiacin para cada pared del
espacio y el balance de calor convectivo para el flujo de aire.
Para calcular la carga de enfriamiento del espacio mediante procedimientos de
balance de calor requieren de una laboriosa solucin a las ecuaciones de balance de energa
que involucran el aire del espacio, las paredes y ventanas que lo encierran, el aire de
infiltracin y de ventilacin, y las fuentes internas de energa. Para demostrar el principio
de clculo, se considera un cuarto encerrado por cuatro paredes, con cielo raso, un suelo,
con aire de infiltracin y ventilacin y con fuentes de energa interna. El clculo que rige el
intercambio de energa para cada superficie en un instante dado es:

qi , = hci (Ta , Ti , ) +

j =1, j i

ij

(T j , Ti , ) Ai + RS i , + RLi , + REi ,

(16)

para i = 1,2,3,4,5,6
dnde:
m=

Cantidad de superficies en el espacio

qi , = Tasa de calor conducido a la superficie i a la superficie interna en el


instante

Ai =

rea de la superficie i

hci =

Coeficiente convectivo de calor en la superficie interior i

g ij =

Factor de radiacin entre la superficie i y la superficie interior j

Ta , = Temperatura del aire interno en el instante

18

Ti , = Temperatura promedio de la superficie interior i en el instante


T j , = Temperatura promedio de la superficie interior j en el instante
RSi , = Tasa de energa Solar que incide por las ventanas y es absorbida por
la superficie i en el instante

RLi , = Tasa de calor irradiado por las luces y absorbido por la superficie i
en el instante

REi , = Tasa de calor irradiado por los equipos y ocupantes, que es absorbida
por la superficie i en el instante

Funciones de transferencia de conduccin.

Las ecuaciones que gobiernan la conduccin a travs de las seis superficies no


pueden ser resueltas de un modo independiente a la ecuacin (16), una vez que los
intercambios energticos ocurren dentro de la habitacin, afectan las condiciones de las
superficies interiores, afectando de este modo la conduccin interna. En consecuencia, se
deben resolver las seis formulaciones arriba mencionadas de la ecuacin (16) de modo
simultneo con la ecuacin que gobierna la conduccin a travs de las seis superficies, con
el fin de calcular la carga de enfriamiento del espacio. Tpicamente, estas ecuaciones estn
formuladas como funciones de transferencia conductivas, de la forma:

m =1

m =1

m =1

qin , = Yk ,mto , m +1 Z k ,mtin , m +1 + Fm qin , m

(17)

donde:

q = tasa de calor de conduccin en una superficie especfica a una hora


especfica.

in = superficie interna.
k = orden de la funcin de transferencia por conduccin.

m = ndice de la variable temporal.

19

M = nmero de valores de CTF no nulos.


o = superficie externa

= temperatura

= tiempo
x = valor exterior de CTF

= valor transversal de CTF

= valor interior de CTF

Fm = coeficientes histricos de flujo (tasa de flujo de calor)


Balance de energa en el aire del espacio. Ntese que las temperaturas de la
superficie interior ti , en la ecuacin (1) y tin , en la ecuacin (17), requieren soluciones
simultneas. De igual modo, la ecuacin (18) representa un balance de energa en el aire del
espacio, que debe ser resuelto de modo simultneo tambin.
m

QL , = hci (t i , t a , ) Ai + CV L , (t o , t a , )
i =1

+ CVv , (t v , t a , ) + RS a , + RLa , + RE a ,

(18)

dnde

= densidad del aire

= calor especfico del aire

VL ,

= flujo volumtrico de infiltracin externa de aire a la habitacin para el


instante

to ,

= temperatura externa del aire para el instante

Vv ,

= flujo volumtrico de ventilacin para el instante

tv ,

= temperatura del aire de ventilacin en el instante

RS a , = tasa de calor solar a travs de las ventanas y de conveccin al aire de la


habitacin en el instante

RLa , = flujo de calor convectivo de las luces hacia el aire en el instante

20

REa , = flujo convectivo de calor de los equipos y ocupantes hacia el aire de la


habitacin en el instante
Ntese que el componente del aire de ventilacin en la ecuacin (18) se asume
entrando directamente al espacio refrigerado, en vez de ser a travs de un aparato asociado
al sistema de refrigeracin. Vase tambin que la temperatura del aire del espacio puede ser
variable. Fijando la temperatura del aire del espacio, la carga de enfriamiento no necesita
ser determinada simultneamente.
Esta rigurosa aproximacin de clculo de cargas de enfriamiento es imprctica sin la
rapidez a la que pueden procesar datos algunas de las modernas computadoras digitales.
Los programas computarizados conocidos en donde se calcula la carga de enfriamiento
instantnea de esta manera estn orientados para usos de clculo energtico sobre perodos
de tiempo prolongados, ya que las temperaturas externas estn normalizadas de modo
incremental, en vez de utilizar picos de perfiles de temperatura.
El concepto de la funcin de transferencia es una simplificacin del procedimiento
estricto de clculo del balance de calor. Para este concepto, algunos autores evaluaron el
uso de factores de respuesta trmica de los cuartos. En este procedimiento, se calculan
inicialmente las temperaturas de las superficies y la carga de enfriamiento mediante
mtodos rigurosos de clculo antes descritos, para una diversidad de construcciones
representativas como oficinas, colegios y viviendas de construccin robusta, media o ligera.
En estos clculos se consideran y simulan como pulsos unitarios los componentes de la
carga tales como la ganancia solar, la ganancia por conduccin o la ganancia de calor de las
luces, equipos y ocupantes. La funcin de transferencia se calcula de modo numrico con
varias constantes que representan la carga de enfriamiento correspondiente al pulso de
excitacin de entrada que se introduzca. Una vez que estas funciones de transferencia son
determinadas para construcciones tpicas, se asumen independientes del pulso de entrada,
permitiendo as determinar las cargas de enfriamiento sin muchos clculos rigurosos. Sin
embargo, el clculo requiere de multiplicaciones sencillas de las funciones de transferencia
por representaciones de series en el tiempo de la ganancia de calor y la subsiguiente suma

21

de dichos productos, los cuales pueden llevarse en una pequea computadora. Los mismos
conceptos de funcin de transferencia pueden ser aplicados para calcular la ganancia de
calor de los componentes en total.

4.4.2. Mtodo de las Diferencias de Temperaturas Totales Equivalentes (DTTE)


En el mtodo de la Diferencia de Temperaturas Totales Equivalentes (DTTE), la
tcnica del factor de respuesta es utilizada para un nmero representativo de tipos de
paredes y techos con lo cual se deriva en factores como funciones de la temperatura del aire
ambiental y la temperatura mantenida en la habitacin. Varios de los componentes de la
ganancia de calor en el espacio se calculan asociando valores de Diferencias de
Temperatura Totales Equivalente, y los resultados se aaden a las ganancias internas de
cada elemento para obtener el total de la ganancia instantnea de calor en el espacio. Esta
ganancia se convierte en una carga instantnea de enfriamiento del espacio por tcnicas de
promedio en el tiempo de las porciones de carga de ganancia de calor por radiacin del
instante de diseo, con los valores relacionados de un perodo apropiado de horas
inmediatamente precedentes. Esta tcnica provee un significado racional al manejo
cuantitativo de los fenmenos de almacenamiento trmico, pero es mejor que sean resueltos
por computadores, debido a su complejidad. La debilidad fundamental es que utilizar un
simple promedio de los componentes de carga por radiacin es una pobre aproximacin a
los fenmenos fsicos envueltos y, elegir utilizar un promedio ms apropiado es subjetivo y
depende de la pericia de quien lo evale.

4.4.3. Mtodo de la Funcin de Transferencia (MFT)


Aunque en principio resulta similar al Mtodo de las Diferencias de Temperaturas
Totales Equivalentes Promediados en el Tiempo (DTTE/PT), el mtodo de la Funcin de
Transferencia (MFT) aplica una serie de factores significativos, o coeficientes de factores
de transferencia para conduccin (FTC) a superficies opacas exteriores y a diferencias entre
la temperatura ambiental y la temperatura interna para determinar la ganancia de calor con
22

una inercia trmica reflectiva apropiada de las superficies respectivas. La ganancia de calor
solar a travs de los vidrios y las variadas formas de ganancia de calor internas se calculan
directamente de la carga horaria de inters. A continuacin el mtodo aplica una segunda
serie de factores significativos o coeficientes de funcin de transferencia de la habitacin
(FTH), a la ganancia de calor y los valores de carga de refrigeracin de todos los elementos
de carga que tienen componentes radiantes, para considerar los efectos de almacenamiento
trmicos en la conversin de ganancias de calor en cargas de refrigeracin. Ambas series de
evaluacin consideran datos de varias horas previas as como la de evaluacin. Los
coeficientes de funcin de transferencia de la habitacin se relacionan especficamente a la
geometra espacial, la configuracin, la masa y otras caractersticas del espacio as como un
reflejo de las variaciones de almacenamiento trmico que sean significativas en tiempos
especficos por encima de los efectos observados en un promedio especfico de tiempo.

Funciones de Transferencia.

Son coeficientes que se relacionan a una funcin de salida a un instante dado y a un


perodo estimado de tiempo precedente a ste. Los factores de funcin de transferencia por
conduccin son obtenidos de modo similar a la obtencin de valores especficos de
comportamiento de respuesta trmica de algunos elementos de construccin, mientras que
los factores de funcin de transferencia de la habitacin se obtienen de los componentes de
las cargas de enfriamiento. Siempre que el mtodo de funciones de transferencia sea
cientficamente apropiada para un anlisis especfico de cargas de refrigeracin, muchos de
los perodos de 24-h inmediatamente previos se asumirn iguales a la carga de la hora de
inters. De cualquier modo, se requerir de un computador para la aplicacin efectiva de un
diseo comercial del entorno.

23

4.4.4. Mtodo de la Diferencia de Temperaturas de las Cargas de Refrigeracin


(DTCR)
De la comparacin de los mtodos de la Funcin de Transferencia y de la Diferencia
de Temperaturas Totales Equivalentes, utilizando datos representativos de diversas
aplicaciones del MFT, se obtienen los coeficientes de la Diferencia de Temperaturas de las
Cargas de Refrigeracin, para clculos en una etapa de cargas de refrigeracin por
ganancias de calor por conduccin a travs de paredes y techos expuestos al sol y
conduccin a travs de vidrios expuestos tambin al sol. Los Factores de Carga de
Refrigeracin (FCR) para un clculo similar en una sola etapa de la carga solar a travs de
los vidrios y para cargas internas, tambin han sido desarrollados. Todos estos factores
incluyen los efectos de a) el retardo temporal en la ganancia por conduccin a travs de
superficies opacas externas y b) el retraso temporal que implica el almacenamiento trmico
para la conversin de la ganancia de calor por radiacin en carga de enfriamiento. Esta
simplificacin permite calcular manualmente las cargas de enfriamiento; siempre y cuando
los datos estn disponibles y se usen apropiadamente, los resultados sern consistentes con
los obtenidos por el Mtodo de la Funcin de Transferencia; por esto el mtodo se hace
popular para la enseanza.

24

5. MTODOS Y PROCEDIMIENTOS
El programa de clculo de Cargas Trmicas que se desarrolla a partir de la
investigacin realizada, se fundamenta en el mtodo de la Diferencia de Temperatura Total
Equivalente promediada en el tiempo que se encuentra descrito en el Manual ASHRAE

Fundamentals 1997 que es un procedimiento que generalmente se realiza de modo manual


y que requiere de muchos clculos para llegar a un resultado muy semejante al de los otros
mtodos descritos.
Es uno de los mtodos ms fciles de comprobar de modo manual, ya que se
fundamenta en tablas estandarizadas de caractersticas, de las cuales se obtienen
coeficientes de comportamiento o valores relevantes del clculo. Adems su seleccin se
fundamenta en la investigacin comparativa realizada entre los distintos mtodos de clculo
de cargas que se presentan en el captulo 28 del manual ASHRAE Fundamentals 1997,
dnde se comprueba la validez de los resultados por ste mtodo a pesar de la
simplificacin de clculos.

5.1. Procedimientos de Clculo


El mtodo tiene consideraciones de comportamiento de la ganancia de calor en el
espacio que si bien no intentan ser exactas a la realidad, se aproximan en un modo muy
adecuado. Por ejemplo, la ganancia por radiacin de una persona no se calcula de modo
directo cuando esta ingresa al espacio refrigerado, sino que se comienza a promediar en un
tiempo de 5 horas, tiempo en el cul esta va incrementando hasta alcanzar el mximo
posible; posterior a eso, una vez que la persona abandona el espacio refrigerado, se hace
una consideracin semejante para la disminucin de la carga en un promedio semejante de
tiempo. Esto se debe considerar ya que la ganancia de calor por radiacin no es instantnea
y considerarlas de este modo errneo puede derivar en una mala estimacin de algn pico
de carga de los clculos.

25

Se considera para cada tipo de ganancia de calor externa, interna, de ventilacin e


infiltracin, los procedimientos adecuados que se recomiendan para el mtodo de clculo
que se aplica.

5.1.1. Ganancias de Calor Externas


Partiendo de la ecuacin (21) Te = To + I t / ho R / ho y la ecuacin (22)
Tea = Toa +

I DT R

, se obtiene el clculo de las ganancias de calor en techos,

ho 24 ho

paredes y vidrios externos de los ambientes, los cuales permitirn una ganancia de calor del
ambiente a travs de ellas, por la accin de la energa solar.
Las variables de estas ecuaciones son y se obtienen de acuerdo a como se explica a
continuacin:

Te . La temperatura sol-aire
To . La temperatura de cada hora, considerada en funcin de la temperatura mxima
y corregida para las dems horas segn el rango de temperatura de bulbo seco de la regin,
que para Venezuela se identifica como 7 C. Para el caso de esta investigacin se cuenta
con datos de temperaturas medias Tm de las ciudades importantes de Venezuela, por lo que
se considerar la temperatura mxima TMax a la suma de la promedio ms 3,5 C. Esta
correccin para ser ms precisa se debe especificar junto con el rango especfico de
variacin de temperaturas de cada una de las ciudades.
Se calcula adems la temperatura en cada hora asumiendo la hora de temperatura
mxima como las 15:00, y a partir de ese dato comienza a restarse a la variacin el rango
multiplicado por un factor porcentual de disminucin indicado a continuacin en la tabla de
Porcentaje de Rango Diario.

26

Tabla 5.1. Porcentaje de Rango Diario


Hora %
Hora %
Hora %
1
87
9
71
17
10
2
92
10
56
18
21
3
96
11
39
19
34
4
99
12
23
20
47
5
100
13
11
21
58
6
98
14
3
22
68
7
93
15
0
23
76
8
84
16
3
24
82
Fuente: ASHRAE Fundamentals 1997

/ ho . El factor de superficie, cuyo valor es 0,026 para superficies claras y 0,052


para superficies oscuras.

I t . La Carga Solar Incidente Total. I t = 1,15 ( FGCS )

R / ho . El factor de radiacin = -3,9 C para superficies horizontales y 0 C para


superficies verticales.
FGCS . Factor de Ganancia de Calor Solar.
Tea . La temperatura soleada promediada en las 24 horas del da.
Toa . La temperatura de Bulbo seco promediada en las 24 horas del da.
I DT . Ganancia de Calor Solar total del da.

Factor de Ganancia de Calor Solar

Existen en la actualidad muchos mtodos para calcular el Factor de Ganancia de


Calor Solar, pero el utilizado en el desarrollo de este programa no se fundamenta en tablas
sino en el clculo de cada uno de los factores de ganancia de calor a partir de un
procedimiento computarizado que se describe a continuacin, teniendo en cuenta que el
acimut solar y el acimut superficial son medidos en ngulos desde el sur; ngulos al
este del sur, son negativos y ngulos al oeste del sur son positivos.

27

Variables a usar:

H , L , , , , , , , , A , B , C , EDN , ED , Y , Eds , g , Edg , Ed , t j ,


a j , Ni , D , y D .

Tabla 5.2. Irradiacin Solar Extraterrestre y Datos Relacionados


Io,
W/m2
Enero
Febrero
Marzo
Abril
Mayo
Junio
Julio
Agosto
Septiembre
Octubre
Noviembre
Diciembre

Ecuacin
de tiempo,

Declinacin,

min

1416
1401
1381
1356
1336
1336
1336
1338
1359
1380
1405
1417

grados

-11,2
-13,9
-7,5
1,1
3,3
-1,4
-6,2
-2,4
7,5
15,4
13,8
1,6

W/m

-20,0
-10,8
0,0
11,6
20,0
23,45
20,6
12,3
0,0
-10,5
-19,8
-23,45

0,142
0,144
0,156
0,180
0,196
0,205
0,207
0,201
0,201
0,177
0,149
0,142

0,058
0,060
0,071
0,097
0,121
0,134
0,136
0,122
0,092
0,073
0,063
0,057

1230
1215
1186
1136
1104
1088
1085
1107
1151
1192
1221
1233

Fuente: ASHRAE Fundamentals 1997

Los valores mostrados en la de Coeficientes para vidrios DSA, para clculo de


Transmitancia y Absorbancia (tabla 5.3) fueron calculados para el 21o da de cada mes. El
resto de los valores para das distintos se obtienen por mtodos de interpolacin lineal.

Tabla 5.3. Coeficientes para vidrios DSA,


para clculos de Transmitancia y
Absorbancia

aj

tj

0
1
2
3
4
5

0,01154
0,77674
-3,94657
8,57881
-8,38135
3,01188

-0,00885
2,71235
-0,62062
-7,07329
9,75995
-3,89922

Fuente: ASHRAE Fundamentals 1997

28

La absorcin y transmisin de la radiacin solar incidente de modo directo son:


5

D = a j cos j

(47)

j =0
5

D = t j cos j

(48)

j =0

Como consideraciones especiales para el clculo de los factores de FGCS se


considerar un factor de g de 0,2 valor que resulta promedio de los valores tabulados para
los distintos materiales y ngulos que se han tabulado (ver Apndice A3, Tabla A3.2 ),
tambin se deber considerar un factor de ho = 17 W/(m2K) que es el coeficiente de
transferencia externo que es ms utilizado, para calcular el factor N i que proviene de la
ecuacin (29). A partir de esto, se pueden calcular los factores que permitirn el clculo del
FGCS.
ngulo de hora,
grados H

Altitud Solar
Acimut Solar

H = 0,25 (minutos al medioda)

(49)

sin = cos L cos cos H + sin sin

(50)

cos =

sin sin L sin


cos cos L

(51)

donde se obtiene de la tabla (tabla 4).


Acimut SuperficieSol
ngulo de Incidencia

Irradiacin Normal
Directa EDN

(52)

cos = cos cos sin + sin cos

(53)

E DN = A exp( B / sin )

(54)

Irradiacin Directa

ED = EDN cos

si cos > 0

ED

ED = 0

en otro caso

(55)

29

Tasa de difusin del


cielo en superficies

Si cos > 0,2

verticales y en

Y = 0,55 + 0,437 cos + 0,313 cos 2

superficies

en otro caso, Y = 0,45

(56)

horizontales Y
Irradiacin Difusa Ed

(57)

Ed = Eds + Edg

donde,
Superficies
Verticales
Otras que no son
Verticales

Eds = C Y EDN

(58)

1 + cos
Eds = C EDN

(59)

1 cos
Edg = EDN (C sin ) g

y,

(60)

Ganancia de Calor
Solar

Componente
Transmitida
Componente
Absorbida
Factor de Ganancia
de Calor

j =0

j =0

j =0

j =0

= ED t j cos j + 2 Ed
= ED a j cos j + 2 Ed

tj
j+2
aj
j+2

FGCS = Energa transmitida + N i (Energa absorbida)

(61)
(62)
(63)

Ganancia de Calor en Techos y Paredes Externas

Una vez que se obtiene el valor del factor de ganancia de calor solar correspondiente
a una hora y mes determinado se procede a calcular la carga solar incidente total I t ,
multiplicando al factor por 1,15 tal y como se indica anteriormente.

30

Con estos datos resultantes, la temperatura ambiental To correspondiente a cada


hora y el valor de factor de radiacin R / ho que sea pertinente al caso, se obtienen las
temperaturas soleadas Te para cada uno de los instantes requeridos, de acuerdo a como se
indica en la ecuacin (21).
Posterior a esto y con los datos que sean necesarios, se hace el clculo
correspondiente a la temperatura soleada promedio Tea tal y como se indica en la frmula
representada en la ecuacin (22).
Con las temperaturas soleadas de cada hora y su promedio en las 24 horas de
estudio ya calculadas, se procede a buscar, de la tabla de Coeficientes de Funcin de

Transferencia de Conduccin para Techos (ver Apndice, tabla A4.1) o de la tabla de


Coeficientes de Funcin de Transferencia de Conduccin para Paredes (ver Apndice,
tabla A4.2) de acuerdo a lo que se le va a calcular la ganancia de calor, el factor de
decremento . Con estos datos y la temperatura interior de diseo del espacio refrigerado,
se obtiene el diferencial de temperatura total equivalente DTTE (ver ecuacin (46)).
Con los valores de DTTE de cada hora se calcula la ganancia de calor en cada
momento de paredes y techos, segn sea correspondiente y necesario siguiendo la ecuacin
(45), para la cul se deber hallar el coeficiente de transferencia U en las tablas de

Coeficientes de Funcin de Transferencia de Conduccin (ver Apndice, tabla A4.1 y tabla


A4.2) que corresponda al techo o pared especfica que sea objeto de clculo.

Ganancia de Calor en Ventanas y Superficies de Vidrio

Para el clculo de las ganancias de calor en ventanas y superficies de vidrio se


consideran los dos tipos de fenmenos por los cuales se transfiere calor en mayor medida
hacia el ambiente, que son el fenmeno de conveccin y de radiacin, por efecto del
calentamiento del ambiente exterior y de la luz del sol.

31

El Calor por conveccin se calcula segn se indica en la ecuacin (37),


considerando el coeficiente de transferencia de calor del vidrio de los valores disponibles
en la de Factores U para varios Elementos con Vidrios (ver Apndice A3, tablas A3.3 y
A3.4) que considera los diversos valores para las diferentes configuraciones de cristales que
comnmente se consiguen en las ventanas.
Mientras que el calor por el efecto de radiacin solar, ser considerado segn se
indica en la ecuacin (38), para lo cul se har necesario determinar el factor de sombra
correspondiente, que se obtiene de la tabla respectiva al caso (ver Apndice A3, tabla
A3.5), y el valor de FGCS calculado previamente para cada hora del da.
La ganancia total de Calor a travs de superficies de vidrio al espacio es el resultado
de sumar ambos resultados o se puede obtener directamente de calcularla segn:

qTVidrio = U A (To Ti ) + A FS FGCS

(64)

Ganancia de Calor a travs de paredes de Particin, Cielo Raso y Suelos

Estas divisiones de espacios, que no se encuentran expuestas al sol, pero que


delimitan un ambiente u oficina especfico permiten el flujo de ganancia de calor al espacio
refrigerado cada vez que del otro lado de la separacin exista una temperatura externa
distinta a la del espacio refrigerado; de ser superior la ganancia ser positiva y de lo
contrario, ser negativa.
El procedimiento para calcular estas cargas se realiza estableciendo las temperaturas
internas ti y de los espacios adyacentes tb a cada ambiente, determinando el coeficiente de
transferencia de calor U en funcin de las resistencias de cada uno de los materiales que
compongan la divisin y estableciendo el rea A de la superficie, para calcular la carga en
funcin de lo expresado en la ecuacin (30).

32

El clculo del coeficiente de transferencia de calor en funcin de las resistencias, se


realiza obteniendo la resistencia de cada material que compone la divisin en la tabla de

Propiedades Trmicas Tpicas para Edificios Comunes (Apndice A5, tabla A5.1), para
luego sumarlos a los coeficientes interno hi y externo ho respectivamente, los cuales se
obtienen de la tabla de Resistencias al Aire en Superficies (Apndice A5, tabla A5.2), y
obtener el inverso de esa sumatoria.

U=

1
n

hi + R j + ho

(65)

j =0

5.1.2. Ganancias de Calor Internas


Dentro de los ambientes se generan ganancias de calor que se producen con el
ingreso de personas o con el encendido de distintos aparatos elctricos o que producen
calor, los cuales aportan ms energa al ambiente que el sistema de aire acondicionado debe
extraer.

Ganancia de Calor de Personas

El clculo de la ganancia de calor de personas se recomienda hacer basndose en los


valores de ganancia de calor sensible y latente promedio que generan las personas en unas
actividades cotidianas que se encuentra en la tabla de Tasas de Ganancia de Calor de los

Ocupantes (Apndice A4, tabla A4.3).

qsensible = N Ganancia de Calor Sensible

(66)

qlatente = N Ganancia de Calor Latente

(67)

= El nmero de personas dentro del ambiente.

33

Para el caso de la ganancia de Calor Sensible, se diferencian dos fenmenos


relevantes para el anlisis de los picos energticos del ambiente completo, ya que la
transferencia de calor ocurre de las personas hacia el ambiente de un modo convectivo y
por radiacin. Segn se expresa en la tabla (Apndice A4, tabla A4.4) existe un promedio
establecido en el cual se divide la contribucin de cada uno de los fenmenos, que indica
que un 67% del calor sensible ser convectivo y el restante 33% ser por radiacin.
La contribucin por radiacin, a diferencia de las dems ganancias de calor, no se
estima que ocurra de modo instantneo, sino de un modo incremental en un lapso de cinco
horas a partir del momento en que la o las personas ingresan al espacio refrigerado
incrementndose un 20% de la carga de radiacin por hora en el primer perodo, 40% en el
segundo, 60% en el tercero, 80% en el cuarto y finalmente para el quinto se contar con el
100% de la contribucin por radiacin. Una vez que la o las personas abandonan el espacio
refrigerado, el decremento se realizar de un modo similar pero inverso al de la
contribucin por radiacin con la entrada al ambiente, 80%, 60%, 40%, 20% y finalmente
0%.

Ganancia de Calor por Luces

Las cargas de luces, a menos que no sean alimentadas por energa elctrica,
producen nicamente ganancia de calor sensible. Dicha ganancia se produce tambin a
travs de los fenmenos de radiacin y conveccin, y variar el porcentaje de contribucin
de cada uno de stos de acuerdo a la temperatura en que trabaje la lmpara, a mayor
temperatura superficial, mayor es la contribucin por radiacin.
El calor generado por las lmparas se obtiene, segn se observa en la ecuacin (31),
de la potencia nominal W del conjunto de lmparas, del factor de uso Ful , que es la
proporcin en que el total de lmparas se encuentran encendidas y el factor de balasto Fsa ,
que es un elemento de contribucin del tipo de luces al ambiente. Fsa =1 para luces
incandescentes y Fsa =1,2 para luces fluorescentes.
34

Se considera, segn la tabla (Apndice A4, Tabla A4.4), que la contribucin por
radiacin de las luces incandescentes es de un 80% del calor generado, mientras que para
las luces fluorescentes el aporte ser de 50%. La distribucin en el tiempo de la
contribucin se realiza de modo similar a como se indica anteriormente en la Ganancia de

Calor de Personas, de modo gradual en un perodo de cinco horas una vez que comience a
actuar la carga en el ambiente refrigerado y de modo decreciente en un lapso similar de
tiempo una vez que sea desactivada la carga.

Ganancia de Calor de Equipos de Potencia

Los equipos de potencia, que son motores que accionan a otros dispositivos,
generan mayor o menor calor al ambiente de acuerdo al modo en que sean colocados. Un
motor puede estar dentro o fuera del espacio refrigerado, as como el dispositivo al cual est
accionando. La combinacin de estas configuraciones, nos da cuatro colocaciones posibles
del sistema motor-equipo. Las contribuciones que stas aportan al ambiente, se encuentran
representadas en la tabla de Ganancias de Calor de Motores Elctricos Comunes (Apndice
A4, Tabla A4.5) o pueden estimarse en funcin de lo que indique el fabricante del motor en
la placa.
El calor sensible total que aporta un equipo de potencia al ambiente refrigerado,
puede calcularse del modo siguiente:

q p = P EF

(68)

donde

= potencia del equipo, [W]

EF

= factores de eficiencia y de configuracin en el ambiente.

Una vez calculada la ganancia de calor total, se debe establecer la contribucin de


los efectos de radiacin y conveccin, que variarn correspectivamente entre 20 y 80% de

35

acuerdo a la temperatura superficial del equipo. Si trabaja a temperatura cercana a la


temperatura ambiente, la radiacin aportar tan slo un 20% del total, mientras que si el
equipo trabaja a altas temperaturas, podr aportar un 80% de la ganancia de calor sensible.
De igual modo, el aporte en cada hora de la ganancia de calor por radiacin, se
estimar de un modo gradual una vez que sea accionado el equipo, durante un lapso de
cinco horas, tal y como se explica en la Ganancia de Calor de Personas.

Ganancia de Calor de Aparatos

Los aparatos, dentro de los cuales se encuentran muchos equipos de oficina y de


cocina, son calculados de modo que su ganancia de calor total es instantnea, ya que a pesar
de tener tambin contribuciones por efecto de radiacin y conveccin, su superficie por lo
general tiende a calentarse de modo instantneo, de modo tal que las cargas entran al
sistema una vez que son encendidos.
Se ha listado una diversidad de aparatos, algunos de cocina y otros de oficina, que
generalmente se consiguen en edificaciones de tipo industrial. Existen aparatos que
necesitan de modo imperativo la instalacin de una campana de extraccin de aire encima
de ellos, para que extraiga vapores y parte importante del calor que se genera. Por lo tanto,
cuando un aparato tiene un extractor sobre l, no aportar calor latente al espacio, sino calor
sensible, significativamente a travs del fenmeno de radiacin, pero como ya se coment,
ser de modo instantneo.
Para los casos en que no se ha listado la ganancia de calor sensible y latente segn
sea el caso de existencia o no de campana, se debe usar la ecuacin:

qsensible = qentrada FU FR

(69)

donde

qentrada = la energa consumida por el aparato segn especificaciones, W

36

FU

= factor de uso

FR

= factor de Radiacin

El calor latente, por su parte se obtiene de la diferencia del calor sensible y el calor
de entrada del aparato. Estas formulas se usan para aquellos aparatos que no indiquen en su
placa de especificaciones o se les haya borrado la informacin de ganancias de calor
respectivas.

Ganancia de Calor por Ventilacin e Infiltracin de Aire

El aire de refrigeracin requiere de renovacin de aire, por lo que es necesario


incluir una ventilacin externa y la diferencia de temperaturas entre el aire exterior y el
interior, as como el diferencial existente entre las humedades relativas de ambos
ambientes, va a aadir ms calor al ambiente como se explica en el principio de

Psicrometra, que el sistema de refrigeracin deber retirar para mantener la temperatura


deseada en el ambiente interior.
Las ganancias de calor a travs de la ventilacin y las infiltraciones sern
proporcionales al flujo de cada una de las cantidades de aire. La carga sensible ser
proporcional tambin a la diferencia de temperaturas entre el exterior y el ambiente
refrigerado, mientras que, la de calor latente ser proporcional a la diferencia entre las
humedades relativas entre ambos. A continuacin se describe como seran las ecuaciones
respectivas a cada una de las ganancias de calor:

qsensible = 1,23 Q (to ti )

(43)

qlatente = 3010 Q (Wo Wi )

(44)

donde,

= flujo de aire kg/m3

t o , ti

= temperatura externa e interna, C

37

Wo ,Wi = humedad relativa externa e interna, kg(agua)/kg(aire seco)

5.1.3. Cargas de Enfriamiento


Las cargas de enfriamiento deben ser equivalentes a la ganancia de calor total, para
as lograr la extraccin total de la energa trmica que ingresa y se va acumulando en el
espacio. Por lo tanto, se considera que el total de la carga de enfriamiento de una
edificacin estudiada bajo este procedimiento, ser la suma de los calores latente y sensible
que se produzcan.
El total de calor sensible ser la suma de las ganancias por radiacin y conveccin
de todos los elementos que induzcan el incremento de cargas en el ambiente refrigerado y
el calor latente ser la suma de las ganancias de calor latente de los mismos. De este modo,
se obtiene el total de cargas del ambiente por horas.
Una vez que se tiene el total de cargas por horas, se comprueba cul es la hora con
mayor carga, siendo ste el pico de carga en funcin del cul se recomienda la seleccin del
equipo de aire acondicionado correspondiente para la edificacin o zona de oficinas.

5.2. Obtencin de las Tablas Regionalizadas


Para la realizacin de los clculos segn el procedimiento descrito en el manual
ASHRAE Fundamentals 1997, se recomienda el uso de unas tablas de temperatura
fundamentadas nicamente en la ciudad de Caracas-Venezuela, hecho que hara una
aproximacin de rango imprevisible de considerar otras ciudades con humedades y
temperaturas muy distintas a la ciudad capital. En tal sentido, se propuso la bsqueda de los
datos climticos de varias ciudades importantes de Venezuela como lo son Caracas,
Maracaibo, Puerto Cabello, Barcelona y Puerto Ayacucho entre otros, donde en funcin de

38

su latitud, altura sobre el nivel del mar, temperaturas mximas promedio mensuales y
anuales y, las humedades relativas promedio mensuales y anuales.
Estos datos, que fueron en parte proporcionados por el personal del Observatorio
Cagigal en Caracas y en otra parte del portal del clima TuTiempo.com
(http://www.tutiempo.net/clima/Venezuela/VE.html), en el cul se complementan los datos
proporcionados por la entidad Oficial del clima en Caracas.
Partiendo de estos datos caractersticos de las ciudades y sus respectivos climas, se
realizan los clculos recomendados del factor de ganancia de calor solar, el cual permite
despus obtener los datos requeridos de temperaturas soleadas de cada una de las
orientaciones de elementos (Norte, Sur, Este y Oeste). Estos procedimientos se realizan del
modo expuesto en el Factor de Ganancia de Calor Solar dentro de las Ganancias de Calor

Externas.
Como los datos de las tablas son requeridos para el clculo de las ganancias de calor
externas, pero no son de relevancia para el conocimiento del usuario, no se exhiben en
ningn momento, pero s son calculadas las filas requeridas en funcin de las condiciones y
orientaciones que se coloquen como datos al programa.
De ser necesario calcular las condiciones para otras ciudades que no se encuentren
en la tabla de Datos Climticos de las Ciudades ms Importantes de Venezuela (Apndice
A6, tabla A6.1) se requerir por parte del usuario proporcionar los datos de latitud, altura,
temperatura mxima y humedad mensual y/o anual y la variacin estndar de temperatura
en el da. En caso que se proporcione nicamente el promedio anual para las temperaturas,
se requiere adicionalmente que se indique el mes ms caliente y la variacin estndar entre
los meses, para poder establecer un patrn de comportamiento mensual y as estimar
posteriormente el comportamiento diario dentro de cada mes.

39

6. DESARROLLO
El fundamento de este trabajo de investigacin es desarrollar un programa
computarizado de clculo de cargas trmicas que se apalanque en el procedimiento
programable ms actualizado, eficaz y eficiente que pueda proporcionar un perfil diario de
ganancia de calor, para establecer los requerimientos mnimos que debe cumplir un sistema
de aire acondicionado para mantener la temperatura de diseo dentro de un ambiente a
refrigerar.
Se requiere que el programa realice de modo automtico los procedimientos
establecidos en las normas ASHRAE de ventilacin y aires acondicionados, que
simplifique el trabajo del usuario reducindole la necesidad de clculos manuales previos,
que permita el aprendizaje al usuario del mismo y a su vez, que permita un ahorro
significativo del tiempo en que se realicen los clculos respectivos.

6.1. Procedimiento
En el proceso de investigacin y desarrollo del programa que se obtiene como
resultado de este trabajo, se parti de un programa de clculo de cargas trmicas y
psicrometra realizado por estudiantes y profesores de la Universidad Simn Bolvar en la
dcada de los ochenta y que an en da lo utilizan para comprobar condiciones de cargas
para edificios de estudio.
Al hacerse necesario renovar el funcionamiento del mismo, se propuso el uso de un
programa elaborado en una plataforma de Visual Studio, ya que su interfaz grafica se
mimetiza con el sistema operativo de Windows y hace ms interactivo cualquier software.
Se parte entonces con el estudio del programa anterior, realizado en lenguaje Basic,
y se determinan las rutinas de clculo que estn divididas en 20 subrutinas, 10 de ellas de

40

clculo de factores de cargas. Se maneja como una compilacin de subprogramas que a su


vez, arrojaba 3 subproductos, los cuales no son de acceso fcil al usuario comn.
La interfaz del programa anterior es, debido al programa de alta data que es Basic,
bajo plataforma DOS, lo cual dificulta la correccin de datos en tiempo de ejecucin.
Fundamentalmente para corregir un dato en operacin, se debe reiniciar el subprograma de
carga de datos completo o, corregir el archivo de datos con ayuda del editor de texto de
Windows.
Se dificulta mucho por esta razn identificar un error en la insercin de datos, ya
que el programa no permite patrones de comparacin con aquellos que s estn bien
introducidos. Por esta razn requiere ser operado por personas diestras en la materia de
aires acondicionados y con un alto conocimiento del funcionamiento del programa de
clculo.
Adems, la velocidad de clculo se limita mucho debido a que son procesos dentro
de otros y la falta de linealidad complica muchas veces el desenvolvimiento de las etapas.
Por esta razn se hace necesario elaborar un nuevo programa que permita tomar
algunos procedimientos adecuados del anterior, pero que permita ser ms dinmico y que
pueda servir para la enseanza del tema de clculo de cargas trmicas o del diseo de aires
acondicionados.
De este modo se desarrolla un esquema de trabajo que sea lineal, donde no exista
sino un nico programa que realice las operaciones de clculo de modo sencillo y que
permita al usuario del mismo involucrarse ms con los datos y resultados que el programa
muestra.
Se incluye adems la innovacin del mtodo de clculo, que sufri mejoras con el
pasar de los aos y simplifica en muchos casos tanto la introduccin de datos como el
clculo de cargas y coeficientes.

41

6.2. Desarrollo del cdigo


Para desarrollar el mtodo de almacenamiento de datos, se procedi a la seleccin
de un procedimiento que fuese de utilidad de diversos programas de cdigo abierto que
permitieran las opciones de adquisicin, almacenamiento y presentacin de los datos en
pantalla. La bsqueda de los mencionados programas se realiz en el portal web Planeta

Source Code (http://www.planetsourcecode.com/) donde se encuentra disponible una


diversidad de programas sencillos o procedimientos complejos que son elaborados por
desarrolladores informticos alrededor del mundo. El uso de los cdigos all encontrados se
supedita a un uso no comercial de los mismos sin el consentimiento del autor.
De la revisin de procedimientos de varios autores sobre el modo de
almacenamiento por los procedimientos de base de datos y de lista de datos, se determina
que el desarrollo del sistema deba ser elaborado bajo una plataforma que no obligase al
usuario a requerir trabajar con algn programa determinado que le fuese de apoyo, ya que
se requiere en muchos casos de licencias y permisos especiales de uso.
Se halla un programa de Agenda Telefnica1 desarrollado por un autor espaol
registrado bajo el pseudnimo de Javi P.D. el cual da la idea de partida para el desarrollo
del almacenamiento, revisin, modificacin y uso de los datos para el programa a
desarrollar de clculo de cargas trmicas. La agenda permite ingresar para una persona su
nombre, apellido, direccin, telfono, celular y algn comentario adicional que se requiera.
Permite la visualizacin de de los nombres y nmeros de telfono segn el nombre, por
pestaas para cada letra del alfabeto. Permite seleccionar el nombre para ver los datos
completos del mismo y a su vez se puede modificar alguno de ellos o agregar cualquiera
que haga falta. A su vez, se permite la bsqueda de los elementos almacenados segn
algunos criterios presentados en el mismo.
La agenda telefnica aporta para el desarrollo de nuestro programa las cualidades de
almacenamiento por listas de datos, donde se pueda asociar a un nombre varios datos o
1

Javi P.D., Agenda Telefnica, http://www.Planet-Source-Code.com/vb/scripts/ShowCode.asp?txtCodeId=51498&lngWId=1, 2004

42

caractersticas pertinentes; tambin permite asimilar las rutinas para lograr la presentacin
de las diferentes listas de datos en pantalla, para poder observar las caractersticas de cada
variable, que en nuestro caso ser una unidad de manejo de aire, un ambiente o un elemento
de carga.
Private Sub CargUMA_Click()
If txtnombuma.Text = "" Or txtcantumaigual.Text = "" Or txtTextd.Text = "" Or txtHrext.Text = "" Or txtTintd.Text = "" Or
txtTme.Text = "" Or txtHintd.Text = "" Or txtBpf.Text = "" Or txtChmin.Text = "" Then
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else
Dim n_uma As Long
n_uma = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt")
If n_uma - 1 = 0 Then n_uma = n_uma + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random As #1 Len = Len(datos)
Get #1, n_uma, datos
Close #1
If n_uma > 2 Then
MsgBox " No se pueden agregar ms de dos (2) Unidades de Manejo de Aire para esta versin del programa"
Else
datos.TVar = "UMA"
datos.Uma = "UMA"
datos.nombuma = txtnombuma.Text
datos.cantumaig = txtcantumaigual.Text
datos.Tmext = txtTme.Text
datos.Textd = txtTextd.Text
datos.Hrext = txtHrext.Text
datos.Tintd = txtTintd.Text
datos.Hrint = txtHintd.Text
datos.bpf = txtBpf.Text
datos.chmin = txtChmin.Text
datos.retorno = cboRetorno.Text
datos.Flujo = cboFlujo.Text
datos.Agua = cboAgua.Text
datos.borrado = 1
datos.id = datos.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random As #1 Len = Len(datos)
Put #1, n_uma, datos
Close #1
txtnombuma.Text = ""
txtcantumaigual.Text = ""
txtTintd.Text = ""
txtHintd.Text = ""
txtBpf.Text = ""
txtChmin.Text = ""
End If
End If
Call Form_Load
End Sub

Figura 6.1. Cdigo de almacenamiento de las unidades de manejo de aire

En la figura 6.1 se extrae el cdigo de la instruccin del programa que permite crear
y/o almacenar las caractersticas de cada unidad de manejo de aire en el archivo
correspondiente para tal fin. Este procedimiento se ejecuta una vez que se hace clic en el
botn de Cargar Uma de la seccin respectiva y como se observa en sus lneas, slo
proceder a almacenar los datos s existen datos introducidos en cada una de las casillas,

43

para evitar as que se introduzcan datos incompletos para las unidades de manejo de aire.
De igual modo se realiza para las caractersticas de oficinas y para las caractersticas de
cargas de ganancia de calor.
Private Sub Form_Load()
Directorio = DatosGenerales.txtTituloProyecto.Text
TabStrip1.Tabs.Item(4).Selected = True
'Encabezados Lista UMAs
ListView1.ColumnHeaders.Clear
ListView1.ColumnHeaders.Add , "ID", "ID", 0
ListView1.ColumnHeaders.Add , "PK", "PK", 0
ListView1.ColumnHeaders.Add , "Nomb", "Nombre UMA", 2300, 2
ListView1.ColumnHeaders.Add , "tempm", "Temp. Ext. Med.", 1500, 2
ListView1.ColumnHeaders.Add , "temp", "Temp. Ext.", 1000, 2
ListView1.ColumnHeaders.Add , "Hrext", "Hr Ext.", 700, 2
ListView1.ColumnHeaders.Add , "tint", "Temp. Int.", 1000, 2
ListView1.ColumnHeaders.Add , "hrint", "Hr Int.", 700, 2
ListView1.ColumnHeaders.Add , "agua", "Agua", 700, 2
ListView1.ColumnHeaders.Add , "bpf", "By Pass", 800, 2
ListView1.ColumnHeaders.Add , "flujo", "Flujo", 700, 2
ListView1.ColumnHeaders.Add , "reto", "Retorno", 800, 2
'Actualiza la tabla de UMAs
ListView1.ListItems.Clear
Dim itmX As ListItem
i=0
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random Access Read As #1 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
i=i+1
If UCase(Left(datos.Uma, 1)) = "U" And datos.borrado = 1 Then
Set itmX = ListView1.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.nombuma)
itmX.SubItems(3) = Trim(datos.Tmext)
itmX.SubItems(4) = Trim(datos.Textd)
itmX.SubItems(5) = Trim(datos.Hrext)
itmX.SubItems(6) = Trim(datos.Tintd)
itmX.SubItems(7) = Trim(datos.Hrint)
itmX.SubItems(8) = Trim(datos.Agua)
itmX.SubItems(9) = Trim(datos.bpf)
itmX.SubItems(10) = Trim(datos.Flujo)
itmX.SubItems(11) = Trim(datos.retorno)
Set itmX = Nothing
End If
Loop
Close #1
txtTextd.Text = CondicionesExteriores.txtTexts.Text
txtHrext.Text = CondicionesExteriores.txtHrextg.Text
txtTme.Text = CondicionesExteriores.txtTextpromg.Text
End Sub

Figura 6.2. Cdigo principal de la subrutina de cargar el mdulo de las unidades de manejo de
aire

La impresin en pantalla de los datos insertados para poder observar la vinculacin


de cada unidad de manejo de aire con sus respectivas caractersticas, que se consideran
principales en el desarrollo del programa para el clculo de cargas trmicas objeto de este
trabajo, debe actualizarse constantemente. En la figura 6.2 se observa el extracto del cdigo
que se invoca cuando se carga el mdulo de las caractersticas de las unidades de manejo de
44

aire. Esta subrutina es tambin invocada cada vez que se realiza otra de las acciones del
mdulo, de modo que se mantenga actualizada la visualizacin de los datos como se puede
ver al final de la figura 6.1, donde est la instruccin Call Form_Load. Se observa en el
cdigo que se asocia directamente a la carpeta cuyo nombre sea igual al ttulo del proyecto,
ya que al asignarle el ttulo al proyecto se crea la carpeta donde se almacenan los archivos
de resultados y de datos de cada uno de los casos estudiados mediante el programa.
La opcin de creacin de la carpeta donde se almacenarn los datos respectivos de
cada uno de los proyectos que sean analizados con el programa desarrollado en este trabajo,
requiere que se analice primero la existencia o no un nombre similar al proyecto, de modo
de permitir que sean borrados los datos anteriores o simplemente que se cree la carpeta
nueva. Esto se logra con un procedimiento verifique inicialmente si existe alguna carpeta
con el nombre que se introduce como ttulo del proyecto y que en caso de no existir, la cree
y se cree una carpeta de resultados en su interior. Este procedimiento se observa en el
cdigo descrito dentro de la figura 6.3.
Private Sub Command1_Click()
On Error Resume Next
Dim datos As techo
Dim Directorio As String
Directorio = txtTituloProyecto.Text
If ExisteDir(App.Path & "/" & Trim(Directorio)) = True Then
DlgReemplazar.Show
Else
MkDir (App.Path & "/" & Trim(Directorio))
MkDir (App.Path & "/" & Trim(Directorio) & "/Datos")
MkDir (App.Path & "/" & Trim(Directorio) & "/Resultados")
n_proc = lenfile(App.Path & "/Tablas/InfoGeneral.dat")
Open App.Path & "/Tablas/InfoGeneral.dat" For Random As #1 Len = Len(datos)
Get #1, n_proc, datos
Close #1
datos.Titulo = txtTituloProyecto.Text
datos.Nombre = txtNombreEmpresa.Text
datos.Encargado = txtEncargadoProyecto.Text
datos.Fecha = txtFecha.Text
datos.id = datos.id + 1
datos.O = "N"
datos.salto = vbCrLf
Open App.Path & "/Tablas/InfoGeneral.dat" For Random As #1 Len = Len(datos)
Put #1, n_proc, datos
Close #1
TabStrip1.Enabled = True
End If
End Sub

Figura 6.3. Comando ejecutado con el botn de Crear el entorno para guardar los datos y
resultados

45

La instruccin MkDir de Visual Basic 6.0 permite la creacin de una carpeta en


la ubicacin que se especifique, con el nombre que se indique; por esa razn se da la
instruccin que le de el nombre del ttulo del proyecto y que se cree en el directorio
parentesco, para que sea de fcil ubicacin por el usuario.
Para la vinculacin directa de una carga con un ambiente respectivo o de ste con
una unidad de manejo de aire, se requiere que el usuario no nombre arbitrariamente la
correspondencia, sino que seleccione de una lista vinculada al archivo correspondiente de
las unidades de manejo de aire o ambientes disponibles, segn sea el caso. De este modo se
garantiza que la correspondencia exista con elementos existentes, evitando errores al
totalizar los datos. La rutina que se observa en la figura 6.4 realiza la bsqueda de todos los
nombres
Private Sub cboEquiposCorr_dropdown()
cboEquiposCorr.Clear
i=0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
i=i+1
If UCase(Left(datos.TVar, 1)) = "O" Then
cboEquiposCorr.AddItem (datos.nombamb)
End If
Loop
Close #1
End Sub

Figura 6.4. Cdigo de la creacin y despliegue de la lista de ambientes disponibles

Ya se garantiza que se agreguen las caractersticas completas a todas las unidades de


manejo de aire, ambientes y oficinas, de modo que se puedan realizar sin problemas los
clculos posteriores de los elementos de ganancia de calor.
La posibilidad de modificacin de los datos, en caso de ser necesario, se hace
imposible de realizar directamente en los archivos de datos, ya que la codificacin en que
se imprimen los datos no es del tipo de cadena, sino de variables numricas; cuando Visual
Basic 6.0 codifica en un archivo de datos las de este tipo, lo realiza a travs de secuencias
de smbolos y espacios que slo el programa que lo codific y no un editor de texto, podr
interpretarlo del modo adecuado.

46

Para lograr la modificacin de los datos parciales o totales de una lista completa,
debe ser seleccionada la misma en pantalla y hacer doble clic en ella. Una vez que se haga
esto, se tomar del archivo la lista correspondiente al elemento seleccionado y se colocarn
todas sus caractersticas en las casillas pertinentes dentro del entorno del programa. El
cdigo de seleccin de la lista de caractersticas se ejemplifica en la figura 6.5 a
continuacin, dnde se extrae el comando de esta operacin para las cargas.
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Binary Access Read As #1 Len = Len(datos)
Get #1, (ListView3.SelectedItem.SubItems(1) * Len(datos)) + 1, datos
Close #1

Figura 6.5. Extracto del cdigo de seleccin especfica de las carctersticas de una carga

La seleccin de este modo de los datos especficos de una lista de datos, permite a
su vez guardarla en el espacio espefco que se reservaba para ella, de modo que el archivo
no incrementa su tamao ni se modifica su orden. Se aade tambin la opcin de suprimir
un elemento, evento que si modifica el tamao del archivo, ya que se elimina un espacio
reservado para datos y se reordenan los datos que seguirn en existencia. Esta opcin se
logra asignndole un valor de verificacin que ser 1 si el dato debe permanecer y 0 si el
dato debe ser eliminado. Al momento de almacenar un dato corregido o eliminado se corre
una subrutina variada del almacenamiento de datos, donde se crea un archivo virtual con
los datos que permanecern y luego sustituye al archivo original, tal como se puede
observar en la figura 6.6, que es el extracto de esta rutina para el caso de la modificacin de
los datos de unidades de manejo de aire.
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random Access Read As #1 Len = Len(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/nUMAs.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_uma = n_uma + 1
datos.id = n_uma
Put #2, n_uma, datos
End If
Loop
Close #1
Close #2
On Error Resume Next
Kill App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt"
FileCopy App.Path & "/" & Trim(Directorio) & "/Datos/nUMAs.txt", App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt"
Kill App.Path & "/" & Trim(Directorio) & "/Datos/nUMAs.txt"

Figura 6.6. Procedimiento de almacenamiento de las correcciones de


datos en las unidades de manejo de aire.

47

Una vez que se desarrollan los procedimientos de adquisicin y almacenamiento de


datos, se hace necesaria la utilizacin de los mismos para los procedimientos de clculo
respectivos. El lenguaje Visual Basic 6.0 permite el manejo de las operaciones algebraicas
sin ningn problema ms all de la correspondencia entre el tipo de variable que se utiliza,
que para efectos de precisin de los calculos se utiliza del tipo double para todos los
procedimientos intermedios y del tipo long para los datos finales, ya que estos deben ser
nmeros enteros en la mayora de los casos.
El llamado de los datos, debe hacerse en correspondencia con los ambientes y
unidades de manejo de aire existentes y debe calcularse los efectos totales de los elementos
contenidos en cada uno. Primero se calculan los elementos que pertenecen a los ambientes
en un procedimiento de bucle que evale la totalidad de cargas que correspondan al
espacio, luego se procede a evaluar el ambiente siguiente y se obtiene la totalizacin de los
elementos de carga que influyan en su interior. Cmo se observa en la figura 6.7, se hace
necesario aplicar un doble bucle, para poder realizar los anlisis respectivos que se
ejecutarn si se cumplen las condiciones que indiquen la dependencia de carga y ambiente.
For nOfi = 1 To n_ofi
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
i=i+1
If Ofi((nOfi - 1)) = datos.Ofcorr Then
(Procedimiento de clculo de acuerdo al tipo de carga que se analice)
End If
Loop
Next nOfi

Figura 6.7. Estracto del anlisis de las cargas por oficinas

Algunos procedimientos, cmo el clculo de las tablas regionalizadas de ganancia


de calor solar se efectan slo cuando es requerida una latitud que no haya sido
previamente calculada, por lo cual se debe evitar complicar la compilacin del cdigo de
programacin y se hace por medio de una subrutina que slo se efecta cuando se hace
necesario. De igual modo se realiza con la impresin de los resultados en pantalla y en el
archivo de resultados, que son procedimientos que se ejecutan en subrutinas distintas a la

48

rutina normal de clculo, con la finalidad de agilizar los procedimientos y evitar que se
haga pesada la ejecucin de los procedimientos.

6.3. El Programa
El programa se desarrolla en el lenguaje Visual Basic 6.0 soportado en interfaces de
Visual Studio 6.0, lo cual permite la utilizacin de una interfaz grfica que no distorsiona

con el funcionamiento de una plataforma de Windows.


Se fundamenta en un programa con soporte en Archivos de Datos, de los cuales
puede leer y/o imprimir variables de inters. A diferencia del manejo de Base de Datos, la
lista no requiere de programas de soporte alterno, slo requiere de la existencia de los
archivos necesarios para poder funcionar correctamente. En caso de alterarse o borrarse los
archivos necesarios para el programa como lo son las Tablas, el programa incurrir en una
accin de error y probablemente deje de operar.
El principio de funcionamiento se basa en invocar a un archivo dentro de la carpeta
de Tablas, Cargas o Resultados (segn sea el caso) en funcin del directorio parentesco y
de la lectura de los datos ah contenidos el programa determina por asignacin y segn las
especificaciones de variables contenidas, cules son los datos que se haban guardado en
esos archivos. Es por esta razn que no se debe modificar un archivo directamente desde la
interfaz de Windows con un programa de procesamiento de texto, ya que los caracteres que
se introduzcan sern incompatibles con la asignacin que se le ha dado desde el programa.
Un directorio parentesco es un directorio donde se aloja el programa en ejecucin y
que reconoce automticamente para a partir de ah llegar segn cdigos programados a
guardar o abrir archivos y carpetas.
Se garantiza el funcionamiento del programa en una computadora con por lo menos
un Sistema Operativo Windows Xp, Procesador de 2.60GHz (o superior), Memoria RAM
256Mb (o superior) y Capacidad de Disco Duro (libre) de 10Mb (o superior). No se
49

requiere de la instalacin de programas ni libreras adicionales, slo se requiere de la


especificacin de una carpeta matriz en donde se almacene el programa y sus carpetas hijas.
El funcionamiento del programa es sencillo y fcil de comprender para cualquier
usuario, pero le ser ms fcil el uso y comprensin a alguien que conozca del clculo de
cargas trmicas y ganancias de calor.

6.4. Avances en el Procedimiento de Clculo del Programa


Debido a que se parte de un programa ya elaborado como base, el desarrollo del
nuevo programa se sustenta en el modo de funcionamiento del mismo para desarrollar un
nuevo software que mejore significativamente aquellas funciones que sean susceptibles de
mejoras y se continuar haciendo un proceso similar en aquellas caractersticas que
convenga an usar el mtodo tradicional.
El programa que sirve de base para el desarrollo del programa de este proyecto, no
tiene la posibilidad de almacenar en memoria virtual los datos de clculo por un perodo
prolongado de tiempo, y hacer ese proceso limitaba mucho la velocidad de funcionamiento
del mismo, se debe almacenar por etapas en archivos de datos que slo son de escritura o
lectura, un funcionamiento simultneo de estas opciones se dificulta debido a que el
procedimiento de lectura y escritura de datos se realiza bit a bit, es decir de acuerdo a cada
instruccin de impresin que se le proporcione al programa ste ocupar el espacio.
La lectura de datos de archivos en Basic, se realiza del mismo modo, con la
peculiaridad que identifica un fin de comando al encontrar una coma, por eso se pueden
crear listas de datos que puedan ser ledas y separar los datos con una coma del siguiente,
para realizar una lectura de los mismos de acuerdo a lo que sea requerido.
El procedimiento de manejo de lista de datos en Visual Basic, por su parte, tiene la
opcin de realizarse byte a byte o segn el procedimiento denominado Random. Este

50

procedimiento de escritura y lectura de datos permite el almacenar lneas completas de


datos de acuerdo a la instruccin que se le proporcione al ser programado el llenado de las
tablas.
Con esta caracterstica, se almacena en una nica lnea de datos toda una serie de
variables que pueden ser caractersticas de una en especfico. Por ejemplo, en el programa
de clculo desarrollado, cuando se almacena un Ambiente Tipo, se almacena una lnea
completa de datos que incluye toda la informacin suministrada y que al ser leda se puede
discriminar en funcin de cualquiera de las variables de toda la lista, para compararlas entre
ellas.
Por esta razn es que se puede hacer el llamado de los ambientes para realizar las
correcciones necesarias en cualquiera de los datos especficos de ellas y de este modo
corregirlos y almacenarlos de nuevo. Tambin, permite bsquedas aleatorias en las filas de
datos, que de ah proviene el nombre del modo de almacenamiento.
Gracias a la ventaja que permite este mtodo de almacenamiento de los datos, se
simplifica considerablemente el procedimiento de clculo, ya que el programa no debe
tener diseada la funcin de bsqueda en un lugar especfico del archivo de datos, sino que
busca por criterios.
La desventaja mayor de este sistema, es que los usuarios finales no podrn hacer
modificaciones de los archivos fuera de tiempo de ejecucin del programa, ya que el
caracter que se introduce utilizando un programa de edicin de texto no es el mismo que el
que se encuentra programado en la raz del procedimiento de almacenamiento automtico
de datos del programa desarrollado. Por lo tanto, si se abre un archivo y se le modifica en
aunque sea un caracter, a partir de ese punto del archivo, poseer informacin que es
incomprensible para el software de clculo.
El procedimiento de clculo, se realiza en una etapa cclica nica, donde se correr
por cada ambiente, las diferentes cargas que pertenezcan a sta en el lapso indicado, 24

51

veces nada ms si el tipo de anlisis es de un solo mes o 288 veces (24x12), si la opcin de
clculo seleccionada as lo requiere.

For nOfi = 1 to cantofi

Se realiza el proceso tantas veces como ambientes existan

Open App.Path & "/Datos/Cargas.txt" For Random Access Read As #1 Len = Len(datos)
Do While Not EOF(1)

Mientras existan cargas, continuar avanzando

Get #1, , datos


If Ofi((nOfi - 1)) = datos.Ofcorr Then 'Revisar que pasa aqui con el id del dato
If UCase(Left(datos.tcarga, 13)) = "EQUIPOTENCIA " Then
qequi = Trim(datos.Tcolocacion)
ini = Trim(datos.Inicio)
dur = Trim(datos.duracion)
Canteq = Trim(datos.IgEquipos)
uso = Trim(datos.uso)
ini = ini * 1
dur = dur * 1 - 1
fin = ini + dur
qequi = qequi * 1
For j = 1 To 24
If j < ini Then

Accin para las cargas antes de ser encendidas

Qequipos(0, j) = 0 + Qequipos(0, j)
End If
If j >= ini And j <= fin Then

Perodo de consumo de energa

Qequipos(0, j) = qequi * uso * Canteq + Qequipos(0, j)


End If
If j > fin Then

Una vez que se apaga el equipo

Qequipos(0, j) = 0 + Qequipos(0, j)
End If
totalEq = totalEq + Qequipos(0, j)

Actualizacin del total de ganancia

Next j
End If
End If
Loop
Close #1
Next nOfi

Figura 6.8. Cdigo particularizado para el clculo de las cargas de


Equipos de Potencia

En el extracto del cdigo de programacin para el clculo de la ganancia por


equipos de potencia (Figura 6.8) se observa cmo en principio se hace la carga del archivo
con la instruccin de abrir como proceso de lectura aleatoria. Se procede a la carga de datos

52

con el comando Get y la vinculacin al archivo abierto #1, no se especifica lnea de


trabajo y se especifica el protocolo en que debi ser almacenado, en este caso se denomina
datos al esquema de almacenamiento para el tipo de cargas dentro de cada ambiente.
Una vez que el programa apertura el archivo para leerlo empieza de modo aleatorio
a tomar todos y cada uno de los datos contenidos y comienza la comparacin de variables,
en este caso existe un vector de nombres de ambientes llamado Ofi (ver apndice C,
Seccin Resultados) que ha sido llenado en funcin de la matriz de espacios disponibles del
archivo Oficinas que se crea cuando stas son almacenadas.
Se comparan los datos del archivo de Cargas segn la correspondencia de ambiente
y se procede al clculo de todas las ganancias de cada una de los distintos elementos
contenidos en ese ambiente y son almacenados en los resultados segn la correspondencia
inicial. As cada total de ambiente se va realizando de modo similar al indicado en la figura
6.8, pero todos simultneos, ya que mientras no se termine el archivo de cargas, va a
comparar todas ellas para calcular las ganancias.
Una vez que estos datos son calculados se almacenan en un archivo con el nombre
correspondiente a cada ambiente refrigerado, para que puedan ser de fcil lectura para el
usuario final. A su vez almacena los resultados en otro tipo de archivo que es ledo en la
etapa siguiente del programa y busca las asociaciones de UMAs que tengan cada uno de
estos resultados de carga para poder hacer las consideraciones globales de cada una de ellas
y poder dar los totales de carga que correspondan.
De igual modo se almacenan los resultados de cargas totales de las unidades de
manejo de aire, los cuales son de la dimensin correspondiente del tipo de anlisis
realizado, 24x1 o 24x12, se procede a buscar los valores picos de cada una de las opciones
de lista en caso que el anlisis sea anual, para poder proporcionar el pico de carga y su
correspondiente mes.

53

Figura 6.9. Esquema del procedimiento de clculo del programa

La suma de los totales por unidades de manejo de aire, multiplicados por la cantidad
de ellas que sea pertinente realizar, proporcionar el aporte que se requiere de la unidad
enfriadora por parte de cada una y la suma de todas, ser el resultado global de calor que se
debe extraer del edificio en total, por lo que el sistema de aire acondicionado se
confecciona de acuerdo a ello. El esquema simplificado el procedimiento es el reseado en
la figura 6.9.
Bajo el mismo principio, se realiza el procedimiento de clculo psicromtrico por
cada una de las unidades de manejo de aire, para obtener as los requerimientos de
recalentamiento o no de la unidad.
El principio de secuencia de los clculos y determinacin del recalentamiento, si
fuere necesario, se realiza de un modo similar al que se obtiene del programa Cargas
realizado en Basic, con la ventaja que ahora los datos se leen por lista completa y no dato
por dato, resultando ms dinmico y simplificando la etapa de llenado de datos en memoria
dinmica del computador, como lo realiza el programa de la dcada de los ochenta.
54

6.5. Avances en el Procedimiento de Almacenamiento y Correccin de Datos


El programa de partida para el desarrollo del presente proyecto, tiene como una de
sus desventajas principales el hecho que los datos no pueden ser modificados durante la
ejecucin del programa, lo cual obliga al usuario del mismo a ser muy diestro en el manejo
de los datos y a no cometer error alguno, porque significara que el programa no correr en
absoluto.
Esta dificultad fue una opcin para el desarrollo de un nuevo sistema que permitiera
al usuario equivocarse y tener la opcin de corregir de un modo dinmico los datos que se
estuvieran introduciendo. Permitiendo adems un trabajo con los datos siempre en pantalla,
para que puedan ser de referencia para algunos datos subsecuentes que se requiera insertar.
Este desarrollo se logra hacer gracias a la existencia del sistema de trabajo por lista
de datos que fue explicado con anterioridad. Se permite de este modo al caracterizar
cualquier tipo de carga, por ejemplo de Personas, tener visibles las dems cargas de
personas que se han insertado, para as comprobar si es necesario o no incluirla y si se
parece a la de algn otro ambiente, copiar los datos de una de las que estn listadas, como
se muestra en la Figura 6.10.

Figura 6.10. Imagen del programa en la Carga de Personas

55

En caso de observarse algn error en alguno de los datos listados, el programa est
en la capacidad de permitir al usuario hacer el llamado de los datos de la lnea especfica de
carga para as ver los datos en las casillas de texto correspondientes a cada elemento y
corregir aquel error que existiere, almacenndolo una vez corregido.
Tambin se incluye la opcin de borrar alguna carga, unidad de manejo de aire u
ambiente si fuere necesario, ya que en las listas de datos se abre entre las variables una
opcin invisible para el usuario de validacin para borrar, como se puede observar en la
Figura 6.11. Una vez que el usuario hace el llamado desde la tabla a alguna lista de datos,
selecciona la opcin borrar y acepta, la presente carga queda eliminada permanentemente
de los datos.

Figura 6.11. Imagen de la carga de personas,


cuando se selecciona una lista de datos

6.6. Secuencia de Funcionamiento del Programa


Una vez comenzado el programa, el usuario debe comenzar por colocar los datos
generales del proyecto, ya que con el nombre que coloque se crear una carpeta donde se

56

almacenar los datos y lista de resultados pertenecientes al proyecto que se elabore, para
posteriormente poder acceder a ellos si as fuese requerido.
Posterior a que se ha asignado un nombre al proyecto y se ha creado la carpeta para
guardar los resultados, los siguientes procedimientos de guardado sern automticos, salvo
que el usuario decida tomar la opcin de Guardar y Salir presente en la pantalla del
programa.
A Pesar que se encuentran en un mismo nivel aparente la inclusin de datos de las
Unidades de Manejo de Aire, las de Oficina o Ambiente y las Cargas, teniendo un carcter
de dependencia entre ellas, se da la opcin al usuario de colocar a qu Ambiente pertenece
la Carga que se introduzca, as como se indica a qu Unidad de Manejo de Aire pertenece
cada uno de los Ambientes. Para poder establecer la correspondencia y requerimientos de
enfriamiento de cada uno de los ambientes por las Unidades de Manejo de Aire que deban
atenderlos. Un diagrama ideal de funcionamiento del programa es el que se observa entre
los siguientes esquemas (Figura 6.12 y Figura 6.13)

Figura 6.12. Esquema de funcionamiento del programa, parte 1 de 2

57

Figura 6.13. Esquema de funcionamiento del programa, parte 2 de 2

El usuario slo puede asignar por cada tipo de ambiente una UMA que ya haya sido
caracterizada previamente, para as evitar incongruencias en la lectura de los datos.
Igualmente ocurre para las cargas, que slo podrn compatibilizarse con un ambiente que
haya sido previamente descrito en el segmento respectivo.
Las cargas, se introducen por tipo, seleccionando inicialmente el tipo de carga que
se quiere aadir y luego especificando tanto las condiciones como el ambiente al que
pertenecen.
Una vez que el usuario ha introducido las respectivas unidades de manejo de aire,
ambientes refrigerados y cargas con todas sus caractersticas, se puede revisar cada una o ir
a la opcin de ver el listado completo, donde se especifica la correspondencia de cada una
de las UMAs, los ambientes y las cargas dentro de ellas.
Una vez que se ha comprobado que las cargas corresponden a los ambientes
respectivas y a su vez, stos corresponden a las UMAs pertinentes, el usuario puede
solicitar el clculo de las cargas.
El procedimiento de clculo en que se fundamenta el programa se rige bajo el
esquema planteado en los Procedimientos de Clculo explicados en el captulo de Mtodos
58

y Procedimientos. Permitiendo que se generen los clculos para cada una de las 24 horas de
operacin en el rango anual o mensual que haya sido seleccionado para el clculo
respectivo.
Automticamente una vez que se realiza el clculo de las ganancias de calor de cada
carga, se almacenan en un archivo de texto que puede ser fcil de consultar por cualquier
usuario y simultneamente se imprime en pantalla el mismo listado de las cargas por horas
de acuerdo a cada ambiente y tambin el clculo global por UMAs.
Se hace imperativo que el programa sea alimentado con nmero de acuerdo al
estndar numrico de cada regin (uso de comas en Latinoamrica para separar los
decimales) de modo que no ocurra error en el clculo de las cargas.

6.6.1. Estructura del Programa


El programa de clculo posee una interfaz con el usuario que permite la correccin
de los datos que son insertados por el usuario y permite aadir o borrar cualquiera de los
datos insertados. Opera dentro de una estructura de botones o pestaas que indican la etapa
del programa en que se encuentra trabajando.

Inicio

En la seccin de Inicio se da la bienvenida al programa y adems se explica el


carcter acadmico del mismo, ya que es un programa realizado como requisito para la
obtencin del ttulo de grado de un bachiller.

59

Datos Generales

Esta seccin es importante ya que se debe identificar el proyecto, la empresa para la


cual va a realizarse el trabajo de estudio de cargas trmicas, se especifica el responsable del
proyecto y se determina la fecha de realizacin del mismo.
Al momento de terminar de indicar el nombre, se le indica al usuario, en caso de ya
existir un proyecto con ese nombre, si desea sustituir el anterior o cambiar su seleccin de
nombre.

Condiciones Exteriores

Es en las condiciones exteriores donde se selecciona, o se crean los datos de, la


ciudad de ubicacin, se especifica si la ciudad no estaba previamente especificada, la altura
de ubicacin, la latitud, la temperatura de bulbo seco en el exterior, la humedad relativa, y
la temperatura promedio en el exterior. Adicional a eso, se debe especificar el tipo de
anlisis que se va a realizar, eligiendo de un desplegable las opciones entre un anlisis
mensual especfico o un anlisis anual.
Al hacer clic sobre el botn Base de Datos de Ciudades se abre una nueva
ventana donde se muestra la lista de datos climatolgicos de algunas ciudades de
Venezuela, pero a su vez est la opcin de agregar una nueva ciudad agregando los datos
completos de temperaturas mximas por mes o el promedio de mximas anual, la diferencia
estndar de temperaturas por da. Las ciudades que se agreguen, estarn disponibles
siempre. Aunque slo en el computador en que se ha agregado.

Condiciones de la(s) UMA(s)

Ingresar las condiciones de UMAs es necesario para poder crear un ambiente


vlido, ya que es a travs de la unidad de manejo de aire que se controla el confort del
ambiente acondicionado. Las variables de temperatura, temperatura promedio y humedad

60

exterior sern las mismas que las que se introducen en la seccin de Condiciones

Exteriores, para garantizar que se llenen todos los datos.


Los valores que se introducen de las UMAs pueden verificarse en la lista que se
despliega debajo y puede seleccionarse haciendo doble clic sobre cualquiera de las lneas
de datos, que representan una unidad.
Para la introduccin de los cambios de aire por hora mnimos, se agreg una seccin
de Normas, que se despliega al hacer clic sobre el botn y contiene el listado de cambios
de aire mnimos por hora que recomiendan las normas segn el Ministerio de Sanidad
Venezolano, destinado a cierta cantidad de locales comunes en el pas.
Se permite escoger al usuario el tipo de flujo (si tiene o no derivacin), si es
enfriado por agua o no, y escoger entre el tipo de retorno del aire (Con retorno, Sin retorno,
Con retorno Parcial), para el clculo psicromtrico de las UMAs.

Condiciones de Ambiente(s)

Cada ambiente debe ser dependiente de una UMA, por lo tanto se exige que se
especifique una de las que han sido previamente guardadas en la seccin correspondiente
para poder contar con datos de temperatura y humedad interior. Se obliga de este modo a
que la temperatura de todas los espacios refrigerados correspondientes a una unidad de
manejo de aire sea igual, aunque en la realidad se pueden hacer variaciones de temperatura
por control de flujo de salida del aire, pero son suposiciones que no se pueden estimar de un
modo sencillo.
Se permite insertar los datos del nombre con que se identifica al ambiente,
seleccionar la unidad de manejo de aire, la cantidad de ambientes con similares condiciones
(de carga inclusive), el rea superficial, la altura global de pared (al techo o cielo raso) y el
nmero mximo de personas que se estime habr en el local en un instante determinado.

61

Se presentar de modo automtico la proporcin de personas por rea del ambiente,


y se permite seleccionar la cantidad de ventilacin e infiltraciones correspondientes al
ambiente segn las normas del estndar 62 de ASHRAE, para los usos tpicos de los
espacios.
De igual modo que ocurre con las UMAs, los ambientes guardados se presentan en
una lista general en la parte inferior de la pantalla y permiten al usuario seleccionar
cualquiera haciendo doble clic, para verificar, modificar o borrar los datos almacenados.

Cargas

La seccin de Cargas dentro del programa es dnde se debe determinar cunta


energa requieren o producen los distintos elementos que delimitan y conforman un
ambiente, los cuales provocarn un incremento de calor que el sistema de refrigeracin
deber extraer a lo largo del perodo del da si el espacio es refrigerado.
Las cargas que influyen en un ambiente estn caracterizadas, al menos las ms
representativas, y se presentan las diez cargas en un formato de pestaas desplegables, que
el usuario selecciona en funcin de lo que deba introducir como datos. A continuacin se
detalla lo que se debe realizar en cada una de las cargas para que sean vlidos los datos.

Techos

La carga de techos es particularmente sencilla se debe hacer clic sobre el


recuadro del coeficiente de transferencia de calor donde se puede identificar el tipo
de techo directamente de la lista de techos comunes establecida o, en funcin de
alguno de los materiales listados y la resistencia trmica total del techo, se accede al
mdulo de estimacin del comportamiento del mismo.

62

Luego de eso, se especifica el rea de techo, el coeficiente por color del


techo (claro = 0,026 u oscuro = 0,052) y se indica si posee o no cielo raso el espacio
de estudio. El programa presenta adems el tipo de techo caracterstico que es o se
asemeja al de estudio.

Pared

El ingreso de datos para paredes exteriores, es similar al que se realiza para


los techos exteriores, al hacer clic sobre el cuadro de texto del coeficiente de
transferencia de calor, se despliega una ventana que permite calcular los coeficientes
de pared en funcin de similitudes con las preestablecidas o seleccionar
directamente una pared de las existentes para tomar sus valores como datos de la
carga de pared en cuestin.

Es importante en este caso indicar la orientacin en que se encuentra la cara


externa de la pared, ya que de la orientacin depender el posterior clculo de la
ganancia de calor solar que se obtenga a travs de esa seccin de la estructura total.

El color de pared, al igual que el de techo, se limita a las opciones de claro y


oscuro, pero el usuario puede indicar un coeficiente de color distinto. Se indica
tambin si existen ms paredes similares dentro del mismo ambiente y el rea
superficial que se expone al sol.

Vidrio

La carga de vidrio debe ser introducida especificando para este caso el


coeficiente de transferencia de calor del vidrio, que puede ser obtenido de las tablas
del fabricante o de algn manual especfico de vidrios. Slo se debe incluir este

63

factor, el rea, la orientacin el coeficiente de sombreado (segn fabricante) y la


cantidad de vidrios iguales en el ambiente.

Es en el factor de sombreado, donde se involucra la relevancia de existencia


o no de material que evite el paso de luz a travs de los cristales, como lo son
persianas o material reflectante en la superficie del cristal, es por eso que se
recomienda acudir a los manuales de fabricantes o estimar el valor de algn modo
cientfico.

Piso, Particin, Techo Interno

El manejo de estas cargas de ganancia se realiza de un modo similar, ya que


su procedimiento de clculo ocurre bajo el mismo principio, la transferencia de
calor entre espacios adyacentes de temperaturas distintas.

Se requiere que el usuario seleccione de la lista de materiales de


construccin, que se le presenta al hacer clic sobre el cuadro de texto del coeficiente
de transferencia de calor, la configuracin de la estructura o que la especifique
segn los estimados de resistencia de cada material, para que segn la funcin se
obtenga el resultado del factor U necesario para el clculo de la ganancia.

Se debe especificar la temperatura del ambiente contiguo, y para obtener la


temperatura interna, se debe seleccionar un ambiente vlido, ya que slo de este
modo se activar el cuadro de texto correspondiente.

64

Luces

La carga de luces depende del total instalado por cada tipo de luz,
incandescente o fluorescente, en el ambiente ya que se requieren slo el total de
potencia nominal instalada y la especificacin del tipo de luces, adems del tiempo
en que permanecen encendidas y la hora de inicio.

Al reconocer el tipo de luces, incandescentes para las luces que trabajan a


altas temperaturas, generalmente de color amarillo, o fluorescente para las luces que
trabajan a una menor temperatura, generalmente luz blanca, se indica el factor de
balasto, que es un factor que incrementa la influencia de la radiacin en la ganancia
de calor que se genera al espacio refrigerado.

Aparatos

Para dar los valores requeridos de ganancias de calor sensible y latente de los
aparatos, es imperativo hacer clic sobre el cuadro de texto de alguna de ellas y as
acceder a una ventana donde se ofrecen cuatro listas distintas de aparatos comunes
que sirvan de referencia para establecer segn ellas los valores respectivos de
cargas. Se debe indicar en este momento si el aparato se encuentra en un sistema
con o sin campana de extraccin, ya que ste es un factor que reduce la ganancia de
calor latente en su totalidad y parcialmente la sensible.

Es necesario indicar tambin la hora en que se encienden los aparatos,


cunto tiempo permanecen encendidos y cuntos de ellos hay en el ambiente
refrigerado al que pertenecen.

65

Equipos de Potencia

Los equipos de potencia son motores que impulsan a algn elemento de


carga, bien puede ser un ventilador industrial, una bomba de agua, un generador
elctrico, entre otros. Son equipos de mayor complejidad que los aparatos y que su
principal efecto de transferencia de calor es en la produccin y transmisin de
energa, no tanto en la generacin de calor por temperatura, por eso se deben
diferenciar.

Se listan, para comodidad del usuario los motores elctricos ms comunes


que se pueden conseguir en industrias y edificios. Los motores a combustible no son
frecuentemente instalados en espacios refrigerados porque al concentrar vapores
combustibles y emitir gases contaminantes, estn regulados por normas que
generalmente hacen que sean instalados en espacios abiertos o ventilados lo ms
naturalmente posible, por eso no se encuentran como opcin en la lista de
posibilidades.

Otro factor significativo de esta carga es la colocacin del equipo, ya que


segn fabricantes de motores, la energa que se transfiere al espacio vara si el
equipo y el activado se encuentran dentro del espacio refrigerado o si tan slo uno
de ellos es el que se encuentra dentro. No especificar este factor, podra generar un
error de juicio al considerar la ganancia de calor que genera el equipo.

Personas

Para la carga de personas, al igual que para los equipos de potencia, se


requiere que el usuario haga clic en la ganancia de calor sensible o latente, para que
se despliegue una ventana con varios ejemplos tpicos referenciales de calor
producido por una persona estndar en unas condiciones de local y actividad

66

especficas. El usuario puede seleccionar alguna de las opciones de la lista y ser


asumida como datos ingresados en el formulario de la carga o simplemente podr
tomar alguno como referencia para considerar otra ganancia.

En particular no se requiere ms que indicar el nmero de personas que


permanecern en el ambiente, en promedio, realizando dicha actividad. As como
indicar la hora de entrada de las mismas y su tiempo de permanencia en el espacio
refrigerado.

Lista Total de Datos

En esta seccin del programa se presenta una lista resumida de los datos
introducidos anteriormente. Se muestra una recopilacin simplificada de los nombres de
unidad de manejo de aire, de ambiente y de tipo de carga, en una estructura similar a la de
un rbol, donde se establecen y comprueban los vnculos precisos de las cargas respecto a
las UMAs.
Los datos sern recopilados en un archivo *.dat, que puede ser de fcil acceso por
cualquier usuario, pero no debe ser modificado directamente en el archivo, porque no deja
de ser comprendido por el programa; por lo tanto, se permite que el programa cargue en
esta etapa el archivo compilado de cargas, unidades de manejo de aire, ambientes y
condiciones iniciales, permitiendo que sean modificadas cada una de ellas por el usuario de
un modo simple, pero dentro de la ejecucin del Software.

Resultados

La ventana de resultados se visualiza cuando el usuario manda a calcular al


programa, hecho que ocurre nicamente en la ventana de Lista Total de Datos, donde ser
responsabilidad del usuario la revisin de correspondencia de los datos ingresados al

67

programa para la efectiva determinacin de cargas por espacio y por unidad de manejo de
aire en el tiempo que sea indicado el anlisis.
Se presenta una lista de datos general, para indicar las condiciones de temperatura
soleada que se necesit calcular, los factores de ganancia de calor requeridos por el estudio
y los coeficientes de temperatura total equivalente TETD en cada direccin necesaria.
Luego una opcin de pestaas donde se presentan los resultados por cada ambiente,
que se muestran en tres listas de datos, una para indicar las Ganancias de Calor Sensible de
los ambientes, otra para indicar las Ganancias de Calor Latente y la tercera para indicar las
Ganancias Totales de cada carga presente.
En la misma opcin de pestaas se permite ver tambin los resultados por UMAs
donde se listan las cargas totales de las mismas en cada mes, si corresponde el tipo de
anlisis y en la parte inferior de la seccin de pestaas, para este caso, se observa la
determinacin del pico de carga.
Como general se presenta en la parte inferior de la ventana un resumen de la unidad
de enfriamiento que indica las cargas en el punto ms desfavorable de energa y la potencia
de un equipo de refrigeracin mnima para cubrir las necesidades del ambiente.
De forma simultnea que se van realizando los clculos y obteniendo los resultados,
el programa almacena de un modo tabulado los mismos, para que sean de fcil acceso para
documentacin de proyectos relativos al clculo de las cargas de refrigeracin.

68

7. RESULTADOS
El programa de clculo de cargas de refrigeracin para edificios realizado permite, a
diferencia de muchos otros, considerar la situacin geogrfica especfica de Venezuela sin
tener que invocar a aproximaciones en funcin de tablas que no corresponden de modo
preciso a las latitudes presentes en este espacio geogrfico.
Tambin est en capacidad de soportar latitudes de todo el hemisferio norte, ya que
se fundamenta en ecuaciones y convenciones de signos que as lo garantizan. Su uso en el
hemisferio sur requiere de modificaciones que no se consideraron en el caso de este
proyecto ya que el punto focal era elaborar un sistema automatizado de clculo para
Venezuela y los datos de comparacin disponibles para comprobar la efectividad del
clculo estn todos basados en el hemisferio norte.
Se evita finalmente la dependencia de tablas de factores de ganancia que son
calculados y aproximados por terceras personas, que a su vez pueden tener muchos detalles
al transcribirse, tanto en la publicacin de los mtodos, como en la elaboracin de las
referencias programadas de un software. En este programa slo se hace referencias a tablas
de caractersticas, que pueden ser aceptadas por el usuario as como puede tener algunas
consideraciones que disten de lo incorporado en el mismo.
La precisin de de los clculos se considera aceptable al compararla con datos
especficos de cargas de los ejemplos del manual ASHRAE Fundamentals 1997, ya que no
realiza redondeos de variables sino al final, cuando se hace la conversin del tipo de
variable numrica a un formato de cadena de caracteres, que es el formato impreso en los
archivos de resultados y que se visualiza en las listas de la seccin correspondiente.
El trabajo con listas de datos en vez de con base de datos, libera al programador y al
usuario final de tener que cancelar usos de licencias para el soporte de las mismas, ya que el
uso de stas requiere de libreras y software adicional, que hace ms pesado el programa de

69

clculo y requiere un costo adicional. Al realizarlo de este modo, se permite que sea
aplicable como proyecto de investigacin y no como proyecto de lucro.
Adems el trabajo con listas en Visual Basic, permite la asociacin de las variables
completas de una carga, ambiente o unidad de manejo de aire, permitiendo as el manejo
ms dinmico de los procedimientos de bsqueda datos y posterior clculo de resultados, a
diferencia de cmo ocurra con el programa en Basic, que se deba prever la disposicin de
los datos para considerar su lectura del archivo.
La compatibilidad del programa con cualquier mquina que cumpla los
requerimientos mnimos indicados, est comprobada y su velocidad de clculo incrementa
con la velocidad del procesador del computador en que sea utilizado el programa. Esto es
debido a que fue probado el programa en varias mquinas que cumplan las
especificaciones indicadas y sin necesidad de tener instalado el programa base de
programacin, corri sin problemas y arroj los resultados esperados. Esto se realiz
aunque no era requisito de la investigacin.
Se consigue un programa que bajo elementos de carga que no superen los 100 tipos
de ambientes y las 50 unidades de manejo de aire, correr en un tiempo prudencial para el
sentir humano, cuya interfaz permite la correccin dinmica de los datos que se van
aadiendo y el cual a su vez, aporta muchas de las listas de materiales y cargas que se
consiguen en las oficinas e instalaciones industriales. Esto debido a que no se realizan
tantos saltos en la lnea de operacin de los clculos.
La interfaz adems, permite la comprensin de las situaciones que requiere el
clculo para aquellas personas que no se encuentran totalmente familiarizadas con el
proceso de clculo de cargas trmicas para dimensionar algn sistema de aire
acondicionado, ya que va exigiendo variables importantes y proporcionando otras que
quizs alguien con poca experiencia pueda pasar por alto en muchos casos.

70

8. CONCLUSIONES Y RECOMENDACIONES
1.

El clculo de cargas trmicas mediante programas de computadoras, simplifica la

obtencin de resultados e incrementa la velocidad con que se desarrollan los proyectos. La


automatizacin de los clculos, a su vez permite seguir desarrollando sistemas que
adaptados a mecanismos de control electrnicos permitan un clculo contnuo de la relacin
de energa requerida versus la consumida, proporcionando as medidas de control que
contribuyan con el ahorro energtico que demanda el mundo actual en vas de expansin
del consumo con recursos limitados.
2.

La regionalizacin de los clculos es un paso relevante, a pesar que no se tenga

regulado el diseo de aires acondicionados en Venezuela. Poseer un programa que permita


calcular los requerimientos trmicos y energticos de un sistema de refrigeracin, favorece
la obtencin de un diseo adaptado a las necesidades y costos de nuestras industrias.
Adems, se enaltece la estima por lo nacional al ver entre las primeras opciones de ciudades
a las del pas donde se naci.
3.

El mtodo de la Diferencia Total de Temperaturas Exteriores promediadas en el

tiempo (TETD/TA), es una herramienta muy verstil para el clculo de cargas trmicas. Se
complementa de los dems mtodos de clculo de cargas, y se obtienen resultados
similares, en un proceso que requiere un menor nmero de consideraciones y clculos.
4.

Finalmente, el programa desarrollado en este proyecto puede ser objeto de mejoras

en las rutinas de clculo y programacin, ya que a pesar de lograr los objetivos previstos,
siempre existen mtodos de reduccin de lneas de programacin que el autor pudo haber
omitido durante el desarrollo. La reduccin de instrucciones incrementa la velocidad de
proceso y por lo tanto mejora el rendimiento del programa.

71

9. BIBLIOGRAFA
Referencias
ASHRAE. 1999 Ventilation for Aceptable Indoor Air Quality. ANSI/ASHRAE Standard
62-1999
ASHRAE Fundamentals 1981 Psychrometrics, Chapter 6. American Society of Heating,
Refrigerant and Air-Conditioning Engineers, Inc., Atlanta, 1981
ASHRAE Fundamentals 1989 Psychrometrics, Chapter 6. American Society of Heating,
Refrigerant and Air-Conditioning Engineers, Inc., Atlanta, 1989
ASHRAE Fundamentals 1997. Climatic Design Information, Chapter 26. American
Society of Heating, Refrigerant and Air-Conditioning Engineers, Inc., Atlanta, 1997
ASHRAE Fundamentals 1997. Fenestration, Chapter 29. American Society of Heating,
Refrigerant and Air-Conditioning Engineers, Inc., Atlanta, 1997
ASHRAE Fundamentals 1997. Nonresidential Cooling and Heating Load Calculations,
Chapter 28. American Society of Heating, Refrigerant and Air-Conditioning Engineers,
Inc., Atlanta, 1997
ASHRAE Fundamentals 1997. Thermal and Water Vapor Transmission Data, Chapter
24. American Society of Heating, Refrigerant and Air-Conditioning Engineers, Inc.,
Atlanta, 1997
ASHRAE Fundamentals 1997. Ventilation and Infiltration, Chapter 25. American
Society of Heating, Refrigerant and Air-Conditioning Engineers, Inc., Atlanta, 1997
Balena, F, Programacin avanzada con Microsoft Visual Basic 6.0, McGraw Hill, 1
edicin en espaol, Madrid, 2000, pp.200-1155.
Carrier Corporation 1960, Load Estimating, Carrier Air Conditioning Company,
Siracusa, Nueva York, 1972, pp 160
Lpez, M, Apuntes de clase de Instalaciones Mecnicas USB, Caracas, 2006, 1-36
Rey F.J., J.A. Franco, E. Velasco, F. Varela, M.J. Molina y J.M. Bartolom, Estudio
comparativo de mtodos de clculo de cargas trmicas en edificios, Energa,
Climatizacin pp.99-108 (S.F.)

72

10. APNDICES
Apndice A. Tablas
Apndice A1
Tabla A1.1 de requerimientos de aire por ventilacin.2

ASHRAE 62-1999. Pg. 7.

73

Apndice A1(Cont)
Tabla A1.2 de requerimientos de aire por ventilacin.3

ASHRAE 62-1999. Pg. 8.

74

Apndice A1 (Cont.)
Tabla A1.3 de requerimientos de aire por ventilacin.4

ASHRAE 62-1999. Pg. 9.

75

Apndice A2
Tabla A2.1 Nmero mnimo de cambios de aire por hora requeridos por las
normas del M.S.A.S segn uso del local5

Lpez, Milton. Apuntes. P-6

76

Apndice A3
Tabla A3.1. Irradiacin Solar y Coeficiente de Ganancia de Calor para Latitud 16 N6

ASHRAE Fundamentals 1997. Page 29.29

77

Apndice A3(Cont.)
Tabla A3.2. Reflectividad de superficies exteriores

78

Apndice A3 (Cont.)
Tabla A3.3. Factores U para varios elementos con vidrios en W/(m2*K)

79

Apndice A3 (Cont.)
Tabla A3.4. Factores U para varios elementos con vidrios en W/(m2*K) (cont.)

80

Apndice A3 (Cont.)
Tabla A3.5 Transmisin Visible (VT) y Coeficientes
de Sombra (SC) para vidrios solos y aislados

81

Apndice A4
Tabla A4.1. Coeficiente de funcin de transferencia para Techos

82

Apndice A4 (Cont.)
Tabla A4.2 Coeficiente de funcin de transferencia para Paredes

83

Apndice A4 (Cont.)

Tabla A4.3 Tasa de Ganancia de Calor de los Ocupantes

Tabla A4.4. Porcentajes Convectivos y de Radiacin del total de Calor Sensible

84

Apndice A4 (Cont.)

Tabla A4.5. Ganancia de Calor de Motores Elctricos Comunes

85

Apndice A5
Tabla A5.1 Tabla de propiedades trmicas para materiales comunes de edificios y aislantes

86

Apndice A5 (Cont.)

Tabla A5.2 Conductancia y Resistencias del Aire en Superficies

87

Apndice A6
Tabla A6.1. Datos Climticos de las Ciudades ms importantes de Venezuela

88

Apndice B. Imgenes de una corrida del programa

Figura B1. Ventana de Inicio del programa

Figura B2. Ventana de Datos Generales

89

Figura B3. Ventana de Condiciones Exteriores

Figura B4. Ventana de Condiciones de las UMAs

90

Figura B5. Ventana de Condiciones de Ambientes

Figura B6. Ventana de Cargas de Personas

91

Figura B7. Ventana de Resultados

Figura B8. Esquema de Funcionamiento del Programa (1 de 2)

92

Figura B9. Esquema de Funcionamiento del Programa (2 de 2)

Figura B10. Esquema del procedimiento de clculo del programa

93

Apndice C
Resultados.

Cdigos de Procedimiento:
'Dimensionamiento de Matrices para el clculo de cargas
Dim i As Integer
Dim Qtecho(11, 23) As Long
Dim Qpared(11, 23) As Long
Dim Qvidrio(11, 23) As Long
Dim Qluces(0, 24), QCluces(0, 24) As Long
Dim QRluces(0, 24) As Long
Dim Qpersonas(0, 24) As Long
Dim QLpersonas(0, 24), QSRpersonas(0, 24) As Long
Dim QSpersonas(0, 24), QSCpersonas(0, 24) As Long
Dim Qequipos(0, 24) As Long
Dim Qaparatos(0, 24), QLaparatos(0, 24), QSaparatos(0, 24) As Long
Dim CargaTotalUE(12, 24), SensibleUE(12, 24), LatenteUE(12, 24) As Long
Dim TotalUMA(12, 24, 100), LatenteUMA(12, 24, 100), SensibleUMA(12, 24, 100) As Long
Dim TotalSensible(11, 23), TotalLatente(11, 23) As Long
Dim n_ofi As Long
Dim Ofi(1000) As String
Dim Uma(100) As String
Dim result As Resulta2
Private Sub Form_Load()
'MkDir App.Path & "/Nombre de proyecto?"
'Clculo de Cargas de personas
Dim datos As techo
Dim lhg, shg, ini, dur, cantp, fin As Double
Dim k, l, m, n, nOfi As Integer
Dim Tabs As Integer
i=0
k=0
u=0
Open App.Path & "/Datos/UMAs.text" For Random Access Read As #1 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
i=i+1
If UCase(Left(datos.TVar, 1)) = "U" Then
Uma(u) = datos.nombuma
u=u+1
End If
Loop
n_uma = u
Close #1

'DETERMINACIN DE CANTIDAD Y NOMBRE DE OFICINAS


i=0
k=0
Open App.Path & "/Datos/Oficinas.txt" For Random Access Read As #1 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
'i = i + 1
If UCase(Left(datos.TVar, 1)) = "O" Then
Ofi(k) = datos.nombamb
k=k+1
End If
Loop

94

n_ofi = k
Close #1
'DETERMINACIN DE CANTIDAD Y NOMBRE DE OFICINAS^^
'CALCULO DE LAS CARGAS POR Oficinas>>
i=0
m=0
n=0
l=0
For nOfi = 1 To n_ofi
For A = 1 To 24
QSpersonas(0, A) = 0
QLpersonas(0, A) = 0
QSCpersonas(0, A) = 0
QSRpersonas(0, A) = 0
Qequipos(0, A) = 0
QRluces(0, A) = 0
QCluces(0, A) = 0
Qluces(0, A) = 0
QLaparatos(0, A) = 0
QSaparatos(0, A) = 0
Qaparatos(0, A) = 0
Next A
particion = 0: Tparticion = 0: Piso = 0: Tpiso = 0: TechoInt = 0: TTechoInt = 0
totalS = 0: totalL = 0: totalSc = 0: totalSr = 0
totalEq = 0
totalapara = 0: totallapara = 0: totalsapara = 0
totalluces = 0: totalrluc = 0: totalcluc = 0
Open App.Path & "/Datos/Cargas.txt" For Random Access Read As #1 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
i=i+1
If Ofi((nOfi - 1)) = datos.Ofcorr Then 'Revisar que pasa aqui con el id del dato
If UCase(Left(datos.tcarga, 13)) = "PERSONAS " Then
lhg = Trim(datos.lhg)
'Personas
shg = Trim(datos.shg)
'Personas
ini = Trim(datos.Inicio)
'Personas
dur = Trim(datos.duracion)
'Personas
cantp = Trim(datos.cantpersonas)
'Personas
ini = ini * 1
'Personas
dur = dur * 1 - 1
'Personas
fin = ini + dur
For j = 1 To 24
If j < ini Then
QSpersonas(0, j) = 0 + QSpersonas(0, j)
QLpersonas(0, j) = 0 + QLpersonas(0, j)
QSCpersonas(0, j) = 0 + QSCpersonas(0, j)
QSRpersonas(0, j) = 0 + QSRpersonas(0, j)
n=n+1
End If
If j >= ini And j <= fin Then
QSpersonas(0, j) = shg * cantp + QSpersonas(0, j)
QLpersonas(0, j) = lhg * cantp + QLpersonas(0, j)
QSCpersonas(0, j) = shg * cantp * 0.67 + QSCpersonas(0, j)
'QSRpersonas(0, j) = shg * cantp * 0.33 + QSRpersonas(0, j)
m=m+1
End If
If j >= ini + 4 And j <= fin Then
QSRpersonas(0, j) = shg * cantp * 0.33 + QSRpersonas(0, j)
End If
If j > fin Then
QSpersonas(0, j) = 0 + QSpersonas(0, j)
QLpersonas(0, j) = 0 + QLpersonas(0, j)
QSCpersonas(0, j) = 0 + QSCpersonas(0, j)
QSRpersonas(0, j) = 0 + QSRpersonas(0, j)
l=l+1
End If
If j = ini Then QSRpersonas(0, j) = QSRpersonas(0, j) + 0.2 * 0.33 * shg * cantp
If j = ini + 1 Then QSRpersonas(0, j) = QSRpersonas(0, j) + 0.4 * 0.33 * shg * cantp
If j = ini + 2 Then QSRpersonas(0, j) = QSRpersonas(0, j) + 0.6 * 0.33 * shg * cantp
If j = ini + 3 Then QSRpersonas(0, j) = QSRpersonas(0, j) + 0.8 * 0.33 * shg * cantp

95

If j = fin Then QSRpersonas(0, j) = 0.8 * 0.33 * shg * cantp + QSRpersonas(0, j)


If j = fin + 1 Then QSRpersonas(0, j) = 0.6 * 0.33 * shg * cantp + QSRpersonas(0, j)
If j = fin + 2 Then QSRpersonas(0, j) = 0.4 * 0.33 * shg * cantp + QSRpersonas(0, j)
If j = fin + 3 Then QSRpersonas(0, j) = 0.2 * 0.33 * shg * cantp + QSRpersonas(0, j)
totalS = totalS + QSpersonas(0, j)
totalL = totalL + QLpersonas(0, j)
totalSc = totalSc + QSCpersonas(0, j)
totalSr = totalSr + QSRpersonas(0, j)
Next j
End If
If UCase(Left(datos.tcarga, 13)) = "EQUIPOTENCIA " Then
qequi = Trim(datos.Tcolocacion)
'Equipos
ini = Trim(datos.Inicio)
'Equipos
dur = Trim(datos.duracion)
'Equipos
Canteq = Trim(datos.IgEquipos)
'Equipos
uso = Trim(datos.uso)
'Equipos
ini = ini * 1
'Equipos
dur = dur * 1 - 1
'Equipos
fin = ini + dur
qequi = qequi * 1
For j = 1 To 24
If j < ini Then
Qequipos(0, j) = 0 + Qequipos(0, j)
n=n+1
End If
If j >= ini And j <= fin Then
Qequipos(0, j) = qequi * uso * Canteq + Qequipos(0, j)
m=m+1
End If
If j > fin Then
Qequipos(0, j) = 0 + Qequipos(0, j)
l=l+1
End If
totalEq = totalEq + Qequipos(0, j)
Next j
End If
If UCase(Left(datos.tcarga, 13)) = "LUCES
" Then
Facuso = Trim(datos.uso)
'Luces
poten = Trim(datos.Potluces)
'Luces
Facbal = Trim(datos.coefdis)
'Luces
ini = Trim(datos.Inicio)
'Luces
dur = Trim(datos.duracion)
'Luces
kind = Trim(datos.tipoluces)
'Luces
ini = ini * 1
dur = dur * 1 - 1
fin = ini + dur
q=0
m=0
l=0
n=0
For j = 1 To 24
If j < ini Then
QRluces(0, j) = 0 + QRluces(0, j)
QCluces(0, j) = 0 + QCluces(0, j)
q=q+1
End If
If j >= ini And j <= fin Then
If kind = "Fluorescente" Then
QRluces(0, j) = QRluces(0, j) + (poten * (Facuso / 100) * Facbal * 0.5)
QCluces(0, j) = QCluces(0, j) + (poten * (Facuso / 100) * Facbal * 0.5)
m=m+1
Else
QRluces(0, j) = QRluces(0, j) + (poten * (Facuso / 100) * Facbal * 0.8)
QCluces(0, j) = QCluces(0, j) + (poten * (Facuso / 100) * Facbal * 0.2)
l=l+1
End If
End If
If j > fin Then
QRluces(0, j) = 0 + QRluces(0, j)
QCluces(0, j) = 0 + QCluces(0, j)

96

n=n+1
End If
totalrluc = totalrluc + QRluces(0, j)
totalcluc = totalcluc + QCluces(0, j)
Qluces(0, j) = QRluces(0, j) + QCluces(0, j)
Next j
totalluces = totalrluc + totalcluc
End If
If UCase(Left(datos.tcarga, 13)) = "APARATOS " Then
sensible = Trim(datos.shg)
'Aparatos
Latente = Trim(datos.lhg)
'Aparatos
Ig = Trim(datos.Igaparatos)
'Aparatos
Campana = Trim(datos.Campana)
'Aparatos
ini = Trim(datos.Inicio)
'Aparatos
dur = Trim(datos.duracion)
'Aparatos
ini = ini * 1
dur = dur * 1 - 1
fin = ini + dur
For j = 1 To 24
If j < ini Then
QLaparatos(0, j) = 0 + QLaparatos(0, j)
QSaparatos(0, j) = 0 + QSaparatos(0, j)
q=q+1
End If
If j >= ini And j <= fin Then
QSaparatos(0, j) = sensible * 1 + QSaparatos(0, j)
If Campana = "SIN" Then
QLaparatos(0, j) = QLaparatos(0, j) + Latente * 1
m=m+1
Else
QLaparatos(0, j) = 0 + QLaparatos(0, j)
l=l+1
End If
End If
If j > fin Then
QLaparatos(0, j) = 0 + QLaparatos(0, j)
QSaparatos(0, j) = 0 + QSaparatos(0, j)
n=n+1
End If
totallapara = totallapara + QLaparatos(0, j)
totalsapara = totalsapara + QSaparatos(0, j)
Qaparatos(0, j) = QLaparatos(0, j) + QSaparatos(0, j)
Next j
totalapara = totallapara + totalsapara
End If
If UCase(Left(datos.tcarga, 13)) = "PARTICION
" Or UCase(Left(datos.tcarga, 13)) = "TECHO INTERNO" Or
UCase(Left(datos.tcarga, 13)) = "PISO
" Then
Nombre = Trim(datos.tcarga)
'Particion,Piso,Techo Interno
Ucoef = Trim(datos.Ucoef)
'Particion,Piso,Techo Interno
area = Trim(datos.area)
'Particion,Piso,Techo Interno
tady = Trim(datos.TAdyacente)
'Particion,Piso,Techo Interno
tofi = Trim(datos.Tso)
'Particion,Piso,Techo Interno
iguales = Trim(datos.IgPart)
If Nombre = "PARTICION" Then
particion = iguales * area * Ucoef * (tady * 1 - tofi * 1)
Tparticion = particion * 24
q=q+1
End If
If Nombre = "PISO" Then
Piso = iguales * area * Ucoef * (tady * 1 - tofi * 1)
Tpiso = Piso * 24
End If
If Nombre = "TECHO INTERNO" Then
TechoInt = iguales * area * Ucoef * (tady * 1 - tofi * 1)
TTechoInt = TechoInt * 24
n=n+1
End If
End If
End If
Loop

97

Close #1
'CLCULO DE LAS CARGAS DE PERSONAS^^
'Intento por hacer el archivo de resultados>>
Dim n_carg As Long
Dim nombrearchivo As String
nombrearchivo = App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst"
If ExisteArch(nombrearchivo) = True Then Kill App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst"
n_carg = lenfile4(App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst")
Open App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst" For Random As #1 Len = Len(result)
Get #1, n_carg, result
Close #1
result.Comp = "T"
result.Nombre = "Sensible Personas"
result.t1 = QSpersonas(0, 1)
result.t2 = QSpersonas(0, 2)
result.t3 = QSpersonas(0, 3)
result.t4 = QSpersonas(0, 4)
result.t5 = QSpersonas(0, 5)
result.t6 = QSpersonas(0, 6)
result.t7 = QSpersonas(0, 7)
result.t8 = QSpersonas(0, 8)
result.t9 = QSpersonas(0, 9)
result.t10 = QSpersonas(0, 10)
result.t11 = QSpersonas(0, 11)
result.t12 = QSpersonas(0, 12)
result.t13 = QSpersonas(0, 13)
result.t14 = QSpersonas(0, 14)
result.t15 = QSpersonas(0, 15)
result.t16 = QSpersonas(0, 16)
result.t17 = QSpersonas(0, 17)
result.t18 = QSpersonas(0, 18)
result.t19 = QSpersonas(0, 19)
result.t20 = QSpersonas(0, 20)
result.t21 = QSpersonas(0, 21)
result.t22 = QSpersonas(0, 22)
result.t23 = QSpersonas(0, 23)
result.t24 = QSpersonas(0, 24)
result.tTotal = totalS
result.salto = vbCrLf
result.id = 0
Open App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst")
result.Comp = "L"
result.Nombre = "Latente Personas"
result.t1 = QLpersonas(0, 1)
result.t2 = QLpersonas(0, 2)
result.t3 = QLpersonas(0, 3)
result.t4 = QLpersonas(0, 4)
result.t5 = QLpersonas(0, 5)
result.t6 = QLpersonas(0, 6)
result.t7 = QLpersonas(0, 7)
result.t8 = QLpersonas(0, 8)
result.t9 = QLpersonas(0, 9)
result.t10 = QLpersonas(0, 10)
result.t11 = QLpersonas(0, 11)
result.t12 = QLpersonas(0, 12)
result.t13 = QLpersonas(0, 13)
result.t14 = QLpersonas(0, 14)
result.t15 = QLpersonas(0, 15)
result.t16 = QLpersonas(0, 16)
result.t17 = QLpersonas(0, 17)
result.t18 = QLpersonas(0, 18)
result.t19 = QLpersonas(0, 19)
result.t20 = QLpersonas(0, 20)
result.t21 = QLpersonas(0, 21)
result.t22 = QLpersonas(0, 22)
result.t23 = QLpersonas(0, 23)

98

result.t24 = QLpersonas(0, 24)


result.tTotal = totalL
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst")
result.Comp = "S"
result.Nombre = "Sensible Convectiva Personas"
result.t1 = QSCpersonas(0, 1)
result.t2 = QSCpersonas(0, 2)
result.t3 = QSCpersonas(0, 3)
result.t4 = QSCpersonas(0, 4)
result.t5 = QSCpersonas(0, 5)
result.t6 = QSCpersonas(0, 6)
result.t7 = QSCpersonas(0, 7)
result.t8 = QSCpersonas(0, 8)
result.t9 = QSCpersonas(0, 9)
result.t10 = QSCpersonas(0, 10)
result.t11 = QSCpersonas(0, 11)
result.t12 = QSCpersonas(0, 12)
result.t13 = QSCpersonas(0, 13)
result.t14 = QSCpersonas(0, 14)
result.t15 = QSCpersonas(0, 15)
result.t16 = QSCpersonas(0, 16)
result.t17 = QSCpersonas(0, 17)
result.t18 = QSCpersonas(0, 18)
result.t19 = QSCpersonas(0, 19)
result.t20 = QSCpersonas(0, 20)
result.t21 = QSCpersonas(0, 21)
result.t22 = QSCpersonas(0, 22)
result.t23 = QSCpersonas(0, 23)
result.t24 = QSCpersonas(0, 24)
result.tTotal = totalSc
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst")
result.Comp = "S"
result.Nombre = "Sensible Radiacin Personas"
result.t1 = QSRpersonas(0, 1)
result.t2 = QSRpersonas(0, 2)
result.t3 = QSRpersonas(0, 3)
result.t4 = QSRpersonas(0, 4)
result.t5 = QSRpersonas(0, 5)
result.t6 = QSRpersonas(0, 6)
result.t7 = QSRpersonas(0, 7)
result.t8 = QSRpersonas(0, 8)
result.t9 = QSRpersonas(0, 9)
result.t10 = QSRpersonas(0, 10)
result.t11 = QSRpersonas(0, 11)
result.t12 = QSRpersonas(0, 12)
result.t13 = QSRpersonas(0, 13)
result.t14 = QSRpersonas(0, 14)
result.t15 = QSRpersonas(0, 15)
result.t16 = QSRpersonas(0, 16)
result.t17 = QSRpersonas(0, 17)
result.t18 = QSRpersonas(0, 18)
result.t19 = QSRpersonas(0, 19)
result.t20 = QSRpersonas(0, 20)
result.t21 = QSRpersonas(0, 21)
result.t22 = QSRpersonas(0, 22)
result.t23 = QSRpersonas(0, 23)
result.t24 = QSRpersonas(0, 24)
result.tTotal = totalSr
result.salto = vbCrLf
result.id = result.id + 1

99

Open App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst")
result.Comp = "S"
result.Nombre = "Equipos de Potencia"
result.t1 = Qequipos(0, 1)
result.t2 = Qequipos(0, 2)
result.t3 = Qequipos(0, 3)
result.t4 = Qequipos(0, 4)
result.t5 = Qequipos(0, 5)
result.t6 = Qequipos(0, 6)
result.t7 = Qequipos(0, 7)
result.t8 = Qequipos(0, 8)
result.t9 = Qequipos(0, 9)
result.t10 = Qequipos(0, 10)
result.t11 = Qequipos(0, 11)
result.t12 = Qequipos(0, 12)
result.t13 = Qequipos(0, 13)
result.t14 = Qequipos(0, 14)
result.t15 = Qequipos(0, 15)
result.t16 = Qequipos(0, 16)
result.t17 = Qequipos(0, 17)
result.t18 = Qequipos(0, 18)
result.t19 = Qequipos(0, 19)
result.t20 = Qequipos(0, 20)
result.t21 = Qequipos(0, 21)
result.t22 = Qequipos(0, 22)
result.t23 = Qequipos(0, 23)
result.t24 = Qequipos(0, 24)
result.tTotal = totalEq
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst")
result.Comp = "S"
result.Nombre = "Luces Convectivas"
result.t1 = QCluces(0, 1)
result.t2 = QCluces(0, 2)
result.t3 = QCluces(0, 3)
result.t4 = QCluces(0, 4)
result.t5 = QCluces(0, 5)
result.t6 = QCluces(0, 6)
result.t7 = QCluces(0, 7)
result.t8 = QCluces(0, 8)
result.t9 = QCluces(0, 9)
result.t10 = QCluces(0, 10)
result.t11 = QCluces(0, 11)
result.t12 = QCluces(0, 12)
result.t13 = QCluces(0, 13)
result.t14 = QCluces(0, 14)
result.t15 = QCluces(0, 15)
result.t16 = QCluces(0, 16)
result.t17 = QCluces(0, 17)
result.t18 = QCluces(0, 18)
result.t19 = QCluces(0, 19)
result.t20 = QCluces(0, 20)
result.t21 = QCluces(0, 21)
result.t22 = QCluces(0, 22)
result.t23 = QCluces(0, 23)
result.t24 = QCluces(0, 24)
result.tTotal = totalcluc
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst")

100

result.Comp = "S"
result.Nombre = "Luces-Radiacin"
result.t1 = QRluces(0, 1)
result.t2 = QRluces(0, 2)
result.t3 = QRluces(0, 3)
result.t4 = QRluces(0, 4)
result.t5 = QRluces(0, 5)
result.t6 = QRluces(0, 6)
result.t7 = QRluces(0, 7)
result.t8 = QRluces(0, 8)
result.t9 = QRluces(0, 9)
result.t10 = QRluces(0, 10)
result.t11 = QRluces(0, 11)
result.t12 = QRluces(0, 12)
result.t13 = QRluces(0, 13)
result.t14 = QRluces(0, 14)
result.t15 = QRluces(0, 15)
result.t16 = QRluces(0, 16)
result.t17 = QRluces(0, 17)
result.t18 = QRluces(0, 18)
result.t19 = QRluces(0, 19)
result.t20 = QRluces(0, 20)
result.t21 = QRluces(0, 21)
result.t22 = QRluces(0, 22)
result.t23 = QRluces(0, 23)
result.t24 = QRluces(0, 24)
result.tTotal = totalrluc
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst")
result.Comp = "T"
result.Nombre = "Luces"
result.t1 = Qluces(0, 1)
result.t2 = Qluces(0, 2)
result.t3 = Qluces(0, 3)
result.t4 = Qluces(0, 4)
result.t5 = Qluces(0, 5)
result.t6 = Qluces(0, 6)
result.t7 = Qluces(0, 7)
result.t8 = Qluces(0, 8)
result.t9 = Qluces(0, 9)
result.t10 = Qluces(0, 10)
result.t11 = Qluces(0, 11)
result.t12 = Qluces(0, 12)
result.t13 = Qluces(0, 13)
result.t14 = Qluces(0, 14)
result.t15 = Qluces(0, 15)
result.t16 = Qluces(0, 16)
result.t17 = Qluces(0, 17)
result.t18 = Qluces(0, 18)
result.t19 = Qluces(0, 19)
result.t20 = Qluces(0, 20)
result.t21 = Qluces(0, 21)
result.t22 = Qluces(0, 22)
result.t23 = Qluces(0, 23)
result.t24 = Qluces(0, 24)
result.tTotal = totalluces
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst")
result.Comp = "L"
result.Nombre = "Aparatos-Latente"
result.t1 = QLaparatos(0, 1)
result.t2 = QLaparatos(0, 2)

101

result.t3 = QLaparatos(0, 3)
result.t4 = QLaparatos(0, 4)
result.t5 = QLaparatos(0, 5)
result.t6 = QLaparatos(0, 6)
result.t7 = QLaparatos(0, 7)
result.t8 = QLaparatos(0, 8)
result.t9 = QLaparatos(0, 9)
result.t10 = QLaparatos(0, 10)
result.t11 = QLaparatos(0, 11)
result.t12 = QLaparatos(0, 12)
result.t13 = QLaparatos(0, 13)
result.t14 = QLaparatos(0, 14)
result.t15 = QLaparatos(0, 15)
result.t16 = QLaparatos(0, 16)
result.t17 = QLaparatos(0, 17)
result.t18 = QLaparatos(0, 18)
result.t19 = QLaparatos(0, 19)
result.t20 = QLaparatos(0, 20)
result.t21 = QLaparatos(0, 21)
result.t22 = QLaparatos(0, 22)
result.t23 = QLaparatos(0, 23)
result.t24 = QLaparatos(0, 24)
result.tTotal = totallapara
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst")
result.Comp = "S"
result.Nombre = "Aparatos-Sensible"
result.t1 = QSaparatos(0, 1)
result.t2 = QSaparatos(0, 2)
result.t3 = QSaparatos(0, 3)
result.t4 = QSaparatos(0, 4)
result.t5 = QSaparatos(0, 5)
result.t6 = QSaparatos(0, 6)
result.t7 = QSaparatos(0, 7)
result.t8 = QSaparatos(0, 8)
result.t9 = QSaparatos(0, 9)
result.t10 = QSaparatos(0, 10)
result.t11 = QSaparatos(0, 11)
result.t12 = QSaparatos(0, 12)
result.t13 = QSaparatos(0, 13)
result.t14 = QSaparatos(0, 14)
result.t15 = QSaparatos(0, 15)
result.t16 = QSaparatos(0, 16)
result.t17 = QSaparatos(0, 17)
result.t18 = QSaparatos(0, 18)
result.t19 = QSaparatos(0, 19)
result.t20 = QSaparatos(0, 20)
result.t21 = QSaparatos(0, 21)
result.t22 = QSaparatos(0, 22)
result.t23 = QSaparatos(0, 23)
result.t24 = QSaparatos(0, 24)
result.tTotal = totalsapara
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst")
result.Comp = "T"
result.Nombre = "Aparatos-Total"
result.t1 = Qaparatos(0, 1)
result.t2 = Qaparatos(0, 2)
result.t3 = Qaparatos(0, 3)
result.t4 = Qaparatos(0, 4)
result.t5 = Qaparatos(0, 5)
result.t6 = Qaparatos(0, 6)

102

result.t7 = Qaparatos(0, 7)
result.t8 = Qaparatos(0, 8)
result.t9 = Qaparatos(0, 9)
result.t10 = Qaparatos(0, 10)
result.t11 = Qaparatos(0, 11)
result.t12 = Qaparatos(0, 12)
result.t13 = Qaparatos(0, 13)
result.t14 = Qaparatos(0, 14)
result.t15 = Qaparatos(0, 15)
result.t16 = Qaparatos(0, 16)
result.t17 = Qaparatos(0, 17)
result.t18 = Qaparatos(0, 18)
result.t19 = Qaparatos(0, 19)
result.t20 = Qaparatos(0, 20)
result.t21 = Qaparatos(0, 21)
result.t22 = Qaparatos(0, 22)
result.t23 = Qaparatos(0, 23)
result.t24 = Qaparatos(0, 24)
result.tTotal = totalapara
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst")
result.Comp = "S"
result.Nombre = "Sensible-Particin"
result.t1 = particion
result.t2 = particion
result.t3 = particion
result.t4 = particion
result.t5 = particion
result.t6 = particion
result.t7 = particion
result.t8 = particion
result.t9 = particion
result.t10 = particion
result.t11 = particion
result.t12 = particion
result.t13 = particion
result.t14 = particion
result.t15 = particion
result.t16 = particion
result.t17 = particion
result.t18 = particion
result.t19 = particion
result.t20 = particion
result.t21 = particion
result.t22 = particion
result.t23 = particion
result.t24 = particion
result.tTotal = Tparticion
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst")
result.Comp = "S"
result.Nombre = "Sensible-Piso"
result.t1 = Piso
result.t2 = Piso
result.t3 = Piso
result.t4 = Piso
result.t5 = Piso
result.t6 = Piso
result.t7 = Piso
result.t8 = Piso
result.t9 = Piso
result.t10 = Piso

103

result.t11 = Piso
result.t12 = Piso
result.t13 = Piso
result.t14 = Piso
result.t15 = Piso
result.t16 = Piso
result.t17 = Piso
result.t18 = Piso
result.t19 = Piso
result.t20 = Piso
result.t21 = Piso
result.t22 = Piso
result.t23 = Piso
result.t24 = Piso
result.tTotal = Tpiso
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst")
result.Comp = "S"
result.Nombre = "Sensible-TechoInterno"
result.t1 = TechoInt
result.t2 = TechoInt
result.t3 = TechoInt
result.t4 = TechoInt
result.t5 = TechoInt
result.t6 = TechoInt
result.t7 = TechoInt
result.t8 = TechoInt
result.t9 = TechoInt
result.t10 = TechoInt
result.t11 = TechoInt
result.t12 = TechoInt
result.t13 = TechoInt
result.t14 = TechoInt
result.t15 = TechoInt
result.t16 = TechoInt
result.t17 = TechoInt
result.t18 = TechoInt
result.t19 = TechoInt
result.t20 = TechoInt
result.t21 = TechoInt
result.t22 = TechoInt
result.t23 = TechoInt
result.t24 = TechoInt
result.tTotal = TTechoInt
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
Next nOfi
'FIN DE "ARCHIVO DE RESULTADOS"^^
'TabStrip2.Tabs.Clear
'For tabs2 = 1 To numa
' TabStrip2.Tabs.Add(tabs2, , , 0) = Trim(Uma(tabs2 - 1))
TabStrip1.Tabs.Clear
For Tabs = 1 To n_ofi
TabStrip1.Tabs.Add(Tabs, , , 0) = "Ofic" & Trim(Ofi((Tabs - 1)))
Next Tabs
'Next tabs2
ListView1.ListItems.Clear
Dim itmX As ListItem
Dim Total As Double
ListView1.ColumnHeaders.Clear

104

ListView1.ColumnHeaders.Add , "ID", "ID", 0


ListView1.ColumnHeaders.Add , "PK", "PK", 0
ListView1.ColumnHeaders.Add , "car", "Carga", 2000, 2
ListView1.ColumnHeaders.Add , "u", "01 00", 900, 2
ListView1.ColumnHeaders.Add , "d", "02 00", 900, 2
ListView1.ColumnHeaders.Add , "t", "03 00", 900, 2
ListView1.ColumnHeaders.Add , "c", "04 00", 900, 2
ListView1.ColumnHeaders.Add , "ci", "05 00", 900, 2
ListView1.ColumnHeaders.Add , "s", "06 00", 900, 2
ListView1.ColumnHeaders.Add , "si", "07 00", 900, 2
ListView1.ColumnHeaders.Add , "o", "08 00", 900, 2
ListView1.ColumnHeaders.Add , "n", "09 00", 900, 2
ListView1.ColumnHeaders.Add , "di", "10 00", 900, 2
ListView1.ColumnHeaders.Add , "on", "11 00", 900, 2
ListView1.ColumnHeaders.Add , "do", "12 00", 900, 2
ListView1.ColumnHeaders.Add , "tr", "13 00", 900, 2
ListView1.ColumnHeaders.Add , "ca", "14 00", 900, 2
ListView1.ColumnHeaders.Add , "q", "15 00", 900, 2
ListView1.ColumnHeaders.Add , "die", "16 00", 900, 2
ListView1.ColumnHeaders.Add , "sie", "17 00", 900, 2
ListView1.ColumnHeaders.Add , "oc", "18 00", 900, 2
ListView1.ColumnHeaders.Add , "nue", "19 00", 900, 2
ListView1.ColumnHeaders.Add , "v", "20 00", 900, 2
ListView1.ColumnHeaders.Add , "tiu", "21 00", 900, 2
ListView1.ColumnHeaders.Add , "tid", "22 00", 900, 2
ListView1.ColumnHeaders.Add , "tit", "23 00", 900, 2
ListView1.ColumnHeaders.Add , "cero", "24 00", 900, 2
ListView1.ColumnHeaders.Add , "tot", "TOTAL 24h", 1300, 2
ListView1.ColumnHeaders.Add , "p", "", 100
ListView2.ListItems.Clear
ListView2.ColumnHeaders.Clear
ListView2.ColumnHeaders.Add , "ID", "ID", 0
ListView2.ColumnHeaders.Add , "PK", "PK", 0
ListView2.ColumnHeaders.Add , "car", "Carga", 2000, 2
ListView2.ColumnHeaders.Add , "u", "01 00", 900, 2
ListView2.ColumnHeaders.Add , "d", "02 00", 900, 2
ListView2.ColumnHeaders.Add , "t", "03 00", 900, 2
ListView2.ColumnHeaders.Add , "c", "04 00", 900, 2
ListView2.ColumnHeaders.Add , "ci", "05 00", 900, 2
ListView2.ColumnHeaders.Add , "s", "06 00", 900, 2
ListView2.ColumnHeaders.Add , "si", "07 00", 900, 2
ListView2.ColumnHeaders.Add , "o", "08 00", 900, 2
ListView2.ColumnHeaders.Add , "n", "09 00", 900, 2
ListView2.ColumnHeaders.Add , "di", "10 00", 900, 2
ListView2.ColumnHeaders.Add , "on", "11 00", 900, 2
ListView2.ColumnHeaders.Add , "do", "12 00", 900, 2
ListView2.ColumnHeaders.Add , "tr", "13 00", 900, 2
ListView2.ColumnHeaders.Add , "ca", "14 00", 900, 2
ListView2.ColumnHeaders.Add , "q", "15 00", 900, 2
ListView2.ColumnHeaders.Add , "die", "16 00", 900, 2
ListView2.ColumnHeaders.Add , "sie", "17 00", 900, 2
ListView2.ColumnHeaders.Add , "oc", "18 00", 900, 2
ListView2.ColumnHeaders.Add , "nue", "19 00", 900, 2
ListView2.ColumnHeaders.Add , "v", "20 00", 900, 2
ListView2.ColumnHeaders.Add , "tiu", "21 00", 900, 2
ListView2.ColumnHeaders.Add , "tid", "22 00", 900, 2
ListView2.ColumnHeaders.Add , "tit", "23 00", 900, 2
ListView2.ColumnHeaders.Add , "cero", "24 00", 900, 2
ListView2.ColumnHeaders.Add , "tot", "TOTAL 24h", 1300, 2
ListView2.ColumnHeaders.Add , "p", "", 100
ListView3.ListItems.Clear
ListView3.ColumnHeaders.Clear
ListView3.ColumnHeaders.Add , "ID", "ID", 0
ListView3.ColumnHeaders.Add , "PK", "PK", 0
ListView3.ColumnHeaders.Add , "car", "Carga", 2000, 2
ListView3.ColumnHeaders.Add , "u", "01 00", 900, 2
ListView3.ColumnHeaders.Add , "d", "02 00", 900, 2
ListView3.ColumnHeaders.Add , "t", "03 00", 900, 2
ListView3.ColumnHeaders.Add , "c", "04 00", 900, 2

105

ListView3.ColumnHeaders.Add , "ci", "05 00", 900, 2


ListView3.ColumnHeaders.Add , "s", "06 00", 900, 2
ListView3.ColumnHeaders.Add , "si", "07 00", 900, 2
ListView3.ColumnHeaders.Add , "o", "08 00", 900, 2
ListView3.ColumnHeaders.Add , "n", "09 00", 900, 2
ListView3.ColumnHeaders.Add , "di", "10 00", 900, 2
ListView3.ColumnHeaders.Add , "on", "11 00", 900, 2
ListView3.ColumnHeaders.Add , "do", "12 00", 900, 2
ListView3.ColumnHeaders.Add , "tr", "13 00", 900, 2
ListView3.ColumnHeaders.Add , "ca", "14 00", 900, 2
ListView3.ColumnHeaders.Add , "q", "15 00", 900, 2
ListView3.ColumnHeaders.Add , "die", "16 00", 900, 2
ListView3.ColumnHeaders.Add , "sie", "17 00", 900, 2
ListView3.ColumnHeaders.Add , "oc", "18 00", 900, 2
ListView3.ColumnHeaders.Add , "nue", "19 00", 900, 2
ListView3.ColumnHeaders.Add , "v", "20 00", 900, 2
ListView3.ColumnHeaders.Add , "tiu", "21 00", 900, 2
ListView3.ColumnHeaders.Add , "tid", "22 00", 900, 2
ListView3.ColumnHeaders.Add , "tit", "23 00", 900, 2
ListView3.ColumnHeaders.Add , "cero", "24 00", 900, 2
ListView3.ColumnHeaders.Add , "tot", "TOTAL 24h", 1300, 2
ListView3.ColumnHeaders.Add , "p", "", 100
Call TabStrip1_Click
End Sub
Private Sub Salida_Click()
End
End Sub

Private Sub TabStrip1_Click()


ListView1.ListItems.Clear
ListView2.ListItems.Clear
ListView3.ListItems.Clear
Dim result As Resulta2
Dim itmX As ListItem
Dim itmx2 As ListItem
Dim itmX3 As ListItem
Dim Prueba As String
i=0
Prueba = TabStrip1.SelectedItem
Open App.Path & "/Resultados/" + Trim(Prueba) + ".rst" For Random Access Read As #1 Len = Len(result)
Do While Not EOF(1)
Get #1, , result
i=i+1
If UCase(Left(result.Comp, 1)) = "S" Then
Set itmX = ListView1.ListItems.Add(1, , result.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(result.Nombre)
itmX.SubItems(3) = Trim(result.t1)
itmX.SubItems(4) = Trim(result.t2)
itmX.SubItems(5) = Trim(result.t3)
itmX.SubItems(6) = Trim(result.t4)
itmX.SubItems(7) = Trim(result.t5)
itmX.SubItems(8) = Trim(result.t6)
itmX.SubItems(9) = Trim(result.t7)
itmX.SubItems(10) = Trim(result.t8)
itmX.SubItems(11) = Trim(result.t9)
itmX.SubItems(12) = Trim(result.t10)
itmX.SubItems(13) = Trim(result.t11)
itmX.SubItems(14) = Trim(result.t12)
itmX.SubItems(15) = Trim(result.t13)
itmX.SubItems(16) = Trim(result.t14)
itmX.SubItems(17) = Trim(result.t15)

106

itmX.SubItems(18) = Trim(result.t16)
itmX.SubItems(19) = Trim(result.t17)
itmX.SubItems(20) = Trim(result.t18)
itmX.SubItems(21) = Trim(result.t19)
itmX.SubItems(22) = Trim(result.t20)
itmX.SubItems(23) = Trim(result.t21)
itmX.SubItems(24) = Trim(result.t22)
itmX.SubItems(25) = Trim(result.t23)
itmX.SubItems(26) = Trim(result.t24)
itmX.SubItems(27) = Trim(result.tTotal)
Set itmX = Nothing
End If
Loop
Close #1
k=0
Open App.Path & "/Resultados/" + Trim(Prueba) + ".rst" For Random Access Read As #1 Len = Len(result)
Do While Not EOF(1)
Get #1, , result
k=k+1
If UCase(Left(result.Comp, 1)) = "L" Then
Set itmx2 = ListView2.ListItems.Add(1, , result.id)
itmx2.SubItems(1) = k - 1
itmx2.SubItems(2) = Trim(result.Nombre)
itmx2.SubItems(3) = Trim(result.t1)
itmx2.SubItems(4) = Trim(result.t2)
itmx2.SubItems(5) = Trim(result.t3)
itmx2.SubItems(6) = Trim(result.t4)
itmx2.SubItems(7) = Trim(result.t5)
itmx2.SubItems(8) = Trim(result.t6)
itmx2.SubItems(9) = Trim(result.t7)
itmx2.SubItems(10) = Trim(result.t8)
itmx2.SubItems(11) = Trim(result.t9)
itmx2.SubItems(12) = Trim(result.t10)
itmx2.SubItems(13) = Trim(result.t11)
itmx2.SubItems(14) = Trim(result.t12)
itmx2.SubItems(15) = Trim(result.t13)
itmx2.SubItems(16) = Trim(result.t14)
itmx2.SubItems(17) = Trim(result.t15)
itmx2.SubItems(18) = Trim(result.t16)
itmx2.SubItems(19) = Trim(result.t17)
itmx2.SubItems(20) = Trim(result.t18)
itmx2.SubItems(21) = Trim(result.t19)
itmx2.SubItems(22) = Trim(result.t20)
itmx2.SubItems(23) = Trim(result.t21)
itmx2.SubItems(24) = Trim(result.t22)
itmx2.SubItems(25) = Trim(result.t23)
itmx2.SubItems(26) = Trim(result.t24)
itmx2.SubItems(27) = Trim(result.tTotal)
Set itmx2 = Nothing
End If
Loop
Close #1
l=0
Open App.Path & "/Resultados/" + Trim(Prueba) + ".rst" For Random Access Read As #1 Len = Len(result)
Do While Not EOF(1)
Get #1, , result
l=l+1
If UCase(Left(result.Comp, 1)) = "T" Then
Set itmX3 = ListView3.ListItems.Add(1, , result.id)
itmX3.SubItems(1) = l - 1
itmX3.SubItems(2) = Trim(result.Nombre)
itmX3.SubItems(3) = Trim(result.t1)
itmX3.SubItems(4) = Trim(result.t2)
itmX3.SubItems(5) = Trim(result.t3)
itmX3.SubItems(6) = Trim(result.t4)
itmX3.SubItems(7) = Trim(result.t5)
itmX3.SubItems(8) = Trim(result.t6)
itmX3.SubItems(9) = Trim(result.t7)
itmX3.SubItems(10) = Trim(result.t8)
itmX3.SubItems(11) = Trim(result.t9)

107

itmX3.SubItems(12) = Trim(result.t10)
itmX3.SubItems(13) = Trim(result.t11)
itmX3.SubItems(14) = Trim(result.t12)
itmX3.SubItems(15) = Trim(result.t13)
itmX3.SubItems(16) = Trim(result.t14)
itmX3.SubItems(17) = Trim(result.t15)
itmX3.SubItems(18) = Trim(result.t16)
itmX3.SubItems(19) = Trim(result.t17)
itmX3.SubItems(20) = Trim(result.t18)
itmX3.SubItems(21) = Trim(result.t19)
itmX3.SubItems(22) = Trim(result.t20)
itmX3.SubItems(23) = Trim(result.t21)
itmX3.SubItems(24) = Trim(result.t22)
itmX3.SubItems(25) = Trim(result.t23)
itmX3.SubItems(26) = Trim(result.t24)
itmX3.SubItems(27) = Trim(result.tTotal)
Set itmX3 = Nothing
End If
Loop
Close #1
End Sub
Function ExisteArch(nombrearchivo As String) As Boolean
On Error Resume Next
ExisteArch = (Dir$(nombrearchivo) <> "")
End Function

108

Apndice D. Conceptos Bsicos de Programacin


El trabajo de programar implica el uso de trminos que pueden ser incomprensibles
en la lectura de aquellos que no estn familiarizados con la materia. Tambin existen
mtodos que requieren del estudio terico, para comprender el porqu de su aplicacin o
desestimacin al momento de realizar las rutinas de un programa de clculo.

D.1. Trminos de programacin


A continuacin se presentan diversos trminos que se utilizan frecuentemente en el
desarrollo del presente trabajo y que deben ser explicados, para tener una mejor
comprensin del desarrollo del proyecto.

Directorio Parentesco

Es el directorio en el cual se localiza el programa en ejecucin. La direccin en la


cul se ubica el ejecutable principal del programa.

Tiempo de ejecucin

Se denomina de este modo al momento en que un programa est en uso, es decir que
se realizan las operaciones que fueron diseadas por el programador y quien est operando
en ese instante el software, ser llamado en ese momento el usuario.

Tiempo de diseo

109

Se denomina a todo el perodo en que se accede al cdigo del programa y se trabaja


sobre el lenguaje del mismo, mas no dentro de la operacin de ste.

Usuario

Es todo aquel que haga uso del programa con cualquier fin, ya sea de evaluacin, de
trabajo o por conocimiento del mismo. El usuario es para quien se realiza el programa y,
dependiendo de la complejidad del mismo, tendr un mayor o menor alcance dentro de los
consumidores.

Archivo de datos

Es un espacio de memoria fija de la computadora que contiene una informacin de


un tamao especfico y que debe ser identificable por un programa o un usuario. Los
archivos de datos por lo general no deben ser modificados por los usuarios, mas si por los
programas.

Lista de datos

Es un tipo de datos que posee una o ms variables. Se llama lista por la capacidad
de almacenar ms de un dato dentro de si. Se asemeja a un vector, con la diferencia que sus
elementos no poseen identificacin de posicin, por lo tanto no pueden ser buscados por
coordenadas sino por diversos criterios de seleccin.

Vectores

110

Tipos

de

datos

multivariables

multidimensionales,

que

permiten

el

almacenamiento de pequeos datos en posiciones especficas dentro de las dimensiones


establecidas. Se puede localizar una variable en un vector, con hacer el llamado segn la
coordenada de posicin de la misma.

Libreras

Bases de datos de procedimientos que permiten la ejecucin de instrucciones


complejas de programas evitando que se dispersen las acciones de funcionamiento y se
consuma ms memoria de la necesaria.

Base de datos

Formato de almacenamiento de datos, archivos o programas, que permite


parametrizar por criterios la posicin en que sean guardados los elementos que se ingresen.
Son muy diversas y requieren de libreras y programas adicionales para su funcionamiento.

111

D.2. Mtodos de Almacenamiento de Datos


Se explica en esta etapa varios de los mtodos ms comunes de almacenamiento de
datos temporal y permanente, con lo cual se comprende el porqu de la eleccin de cada
uno de ellos en las distintas etapas de ejecucin de un programa.

Mtodo por Vectores y Matrices

Este mtodo de almacenamiento de datos, es de mucha utilidad para procesos de


clculo, pero en tiempo de ejecucin, ya que los datos almacenados no son permanentes
sino durante el uso del programa. Una vez que se finalice la sesin de uso, las variables se
renuevan. No requiere de un manejo complejo de libreras.
Se pueden tener datos fijos en este tipo de datos, pero no se pueden fijar datos que
sean actualizables para cada sesin de trabajo, siempre sern los mismos que se establezcan
en tiempo de diseo.

Mtodo por Lista de Datos

El almacenamiento por lista de datos requiere de la definicin de la cantidad y tipo


de variables que se van a leer e insertar en el archivo de datos. Una vez definidas estas
caractersticas, el programa puede, en tiempo de ejecucin leer y escribir sobre el archivo,
ya que reserva el espacio fsico de memoria que requiere por cada lista de datos que se
necesite ingresar. Puede accederse a sus datos por criterios de identificacin o por posicin
dentro del total de datos.
Se requiere que antes de ingresar un nuevo dato se establezca la ruta de ingreso del
nuevo dato, para no sobrescribir alguno por error. En la lectura, sin embargo, no afecta los
datos en ningn sentido.

112

Es un mtodo muy dinmico y veloz, que no requiere mucho uso de memoria de


proceso y no requiere libreras o programas adicionales para su ejecucin, almacenamiento
o lectura.

Mtodo por Base de Datos

Es un mtodo de almacenamiento complejo y dinmico, que permite el trabajo en


varias etapas. El mtodo en que se almacenen los datos puede ser determinado en tiempo de
ejecucin si as lo desea el programador. Permite el manejo de muchas variables de
distintos tipos. La velocidad de trabajo es rpida, y el consumo de memoria en procesos
depender de la complejidad de los criterios en que almacene los datos.
Su desventaja es que requiere de libreras especficas para su funcionamiento. En el
caso especfico de Visual Basic, requiere de la instalacin de un servidor SQL Server, que
requiere de una licencia costosa y su manejo no resulta tan sencillo.

113

Apndice E.
E.1. Conceptos de Clculo de Ganancia de Calor
E.1.1. Ganancia de Calor a travs de reas Ventanales
La principal variable climtica que influye en la carga de refrigeracin de una
edificacin es la radiacin solar. El efecto de la radiacin solar es ms pronunciado y su
impacto se hace inmediato en superficies no opacas expuestas.

E.1.2. Ganancia de Calor a travs de Superficies Exteriores


La ganancia de calor a travs de superficies externas opacas deriva de los mismos
elementos de la radiacin solar y el gradiente trmico igual que en las reas de ventanales.
Difiere principalmente en que es una funcin de la masa y la naturaleza de la pared o techo
de construccin, ya que estos elementos afectan la tasa de conduccin de calor a travs del
ensamblaje compuesto hacia el interior de la superficie.

E.1.3. Temperatura Sol-Aire


La Temperatura Sol-Aire es la temperatura externa que, en ausencia de todo cambio
de radiacin, da la misma tasa de intercambio de calor a las superficies como debera
hacerlo la combinacin de la radiacin solar incidente, la energa de radiacin del
intercambio entre el cielo y los dems alrededores y el intercambio de calor por conveccin
con el aire externo.

114

Flujo de calor a travs de las superficies exteriores.

El balance de calor en una superficie asoleada reporta un flujo de calor a la


superficie q / A como:

q / A = I t + ho (To Ts ) R

(19)

dnde:

= absorbancia de la superficie a la radiacin solar

It

= incidencia total de radiacin solar a la superficie, W/m2

ho

= coeficiente de transferencia de calor por radiacin y por conveccin


externa a la superficie, W/(m2 K)

To

= temperatura externa del aire, C

Ts

= temperatura de superficie, C

= emitancia hemisfrica de la superficie

= diferencia entre la radiacin incidente en la superficie desde el cielo y los


alrededores y, la radiacin emitida por los cuerpos negros a la temperatura
del aire exterior, W/m2

Asumiendo que la tasa de transferencia de calor puede ser expresada en trminos de


la temperatura Sol-Aire Te

q / A = ho (Te Ts )

(20)

y de las ecuaciones (19) y (20) se obtiene:

Te = To + I t / ho R / ho

(21)

115

Superficies Horizontales.

Para superficies horizontales que perciben el efecto de radiacin desde el cielo


nicamente, un valor apropiado de R es 63 W/m2, entonces si = 1 y ho = 17 W/(m2 K),
el valor de correccin del trmino por las ondas amplias es de -3,9 C.

Superficies Verticales.

Debido a que las superficies verticales perciben la reverberacin del suelo y las
dems edificaciones a su alrededor, as como tambin radiacin solar directa, se hace difcil
determinar los valores de R . Cuando la radiacin solar es intensa, las superficies de los
objetos en la tierra tienen una temperatura superior a la temperatura del aire externo; an
as, la radiacin compensa las bajas emisiones extendidas del cielo. Sin embargo, es una
prctica comn asumir R =0 para superficies verticales.

Valores Tabulados de Temperatura.

Las temperaturas sol-aire tabuladas (Tabla 4.1) han sido calculados en base a

R / ho siendo - 3,9C para las superficies horizontales y 0C para las superficies


verticales. Los valores de I t incluyen variaciones difusas de radiacin del cielo despejado y
el reflejo en el suelo, pero no hace consideracin de los reflejos de paredes adyacentes.

Colores de Superficie.

Las Temperaturas Sol-Aire son dadas por dos valores de parmetros de / ho ; el


valor de 0,026 es apropiado para superficies de un color claro de superficie, mientras que
0,052 representa el valor mximo usual para este parmetro (superficies muy oscuras o
cualquier superficie cuyo brillo permanente no pueda ser determinado).

116

Ciclo de la Temperatura del Aire.

El ciclo de la temperatura del aire utilizado para el clculo de las temperaturas solaire est dado en la columna 2 (Tabla E.1). Las temperaturas sol-aire pueden ser ajustadas a
cualquier otro ciclo de temperaturas simplemente aadiendo o sustrayendo la diferencia
existente entre el valor deseado de temperatura del aire y el valor de temperatura dado en la
columna 2 (Tabla E.1).

Tabla E.1. Temperaturas soleadas para Julio 21, 40 N de Latitud


Te = To + It /ho - R/ho
Temp.
Aire
Hora To, C

Superficies Claras, /ho = 0.026


N

NE

SE

SO

NO

HOR

Temp.
Aire
Hora To,C

Superficies Oscuras, /ho = 0.052


N

NE

SE

SO

NO

HOR

25,4

25,4 25,4

25,4

25,4

25,4

25,4

25,4

25,4

21,5

25,4

25,4

25,4

25,4

25,4

25,4

25,4

25,4

25,4

21,5

24,9

24,9 24,9

24,9

24,9

24,9

24,9

24,9

24,9

21,0

24,9

24,9

24,9

24,9

24,9

24,9

24,9

24,9

24,9

21,0

24,4

24,4 24,4

24,4

24,4

24,4

24,4

24,4

24,4

20,5

24,4

24,4

24,4

24,4

24,4

24,4

24,4

24,4

24,4

20,5

24,1

24,1 24,1

24,1

24,1

24,1

24,1

24,1

24,1

20,2

24,1

24,1

24,1

24,1

24,1

24,1

24,1

24,1

24,1

20,2

24,0

24,1 24,2

24,2

24,1

24,0

24,0

24,0

24,0

20,1

24,0

24,2

24,4

24,3

24,1

24,0

24,0

24,0

24,0

20,2

24,2

27,2 34,5

35,5

29,8

25,1

25,1

25,1

25,1

22,9

24,2

30,2

44,7

46,7

35,4

26,0

26,0

26,0

26,0

25,5

24,8

27,3 38,1

41,5

35,2

26,5

26,4

26,4

26,4

28,1

24,8

29,7

51,5

58,2

45,6

28,2

28,0

28,0

28,0

35,4

25,8

28,1 38,0

43,5

38,9

28,2

28,0

28,0

28,0

33,8

25,8

30,5

50,1

61,2

52,1

30,7

30,1

30,1

30,1

45,8

27,2

29,9 35,9

43,1

41,2

31,5

29,8

29,8

29,8

39,2

27,2

32,5

44,5

58,9

55,1

35,8

32,3

32,3

32,3

55,1

10

28,8

31,7 33,4

40,8

41,8

35,4

31,8

31,7

31,7

43,9

10

28,8

34,5

38,0

52,8

54,9

42,0

34,7

34,5

34,5

62,8

11

30,7

33,7 34,0

37,4

41,1

39,0

34,2

33,7

33,7

47,7

11

30,7

36,8

37,2

44,0

51,5

47,4

37,7

36,8

36,8

68,5

12

32,5

35,6 35,6

35,9

39,1

41,4

39,1

35,9

35,6

50,1

12

32,5

38,7

38,7

39,3

45,7

50,4

45,7

39,3

38,7

71,6

13

33,8

36,8 36,8

36,8

37,3

42,1

44,2

40,5

37,1

50,8

13

33,8

39,9

39,9

39,9

40,8

50,5

54,6

47,1

40,3

71,6

14

34,7

37,6 37,6

37,6

37,7

41,3

47,7

46,7

39,3

49,8

14

34,7

40,4

40,4

40,4

40,6

47,9

60,8

58,7

43,9

68,7

15

35,0

37,7 37,6

37,6

37,6

39,3

49,0

50,9

43,7

47,0

15

35,0

40,3

40,1

40,1

40,1

43,6

62,9

66,7

52,3

62,9

16

34,7

37,0 36,9

36,9

36,9

37,1

47,8

52,4

46,9

42,7

16

34,7

39,4

39,0

39,0

39,0

39,6

61,0

70,1

59,0

54,7

17

33,9

36,4 35,5

35,5

35,5

35,6

44,3

50,6

47,2

37,2

17

33,9

38,8

37,1

37,1

37,1

37,3

54,7

67,3

60,6

44,5

18

32,7

35,7 33,6

33,6

33,6

33,6

38,3

44,0

43,0

31,4

18

32,7

38,7

34,5

34,5

34,5

34,5

43,9

55,2

53,2

34,0

19

31,3

31,4 31,3

31,3

31,3

31,3

31,4

31,5

31,5

27,4

19

31,3

31,5

31,3

31,3

31,3

31,3

31,4

31,6

31,7

27,5

20

29,8

29,8 29,8

29,8

29,8

29,8

29,8

29,8

29,8

25,9

20

29,8

29,8

29,8

29,8

29,8

29,8

29,8

29,8

29,8

25,9

21

28,6

28,6 28,6

28,6

28,6

28,6

28,6

28,6

28,6

24,7

21

28,6

28,6

28,6

28,6

28,6

28,6

28,6

28,6

28,6

24,7

22

27,5

27,5 27,5

27,5

27,5

27,5

27,5

27,5

27,5

23,6

22

27,5

27,5

27,5

27,5

27,5

27,5

27,5

27,5

27,5

23,6

23

26,6

26,6 26,6

26,6

26,6

26,6

26,6

26,6

26,6

22,7

23

26,6

26,6

26,6

26,6

26,6

26,6

26,6

26,6

26,6

22,7

24

26,0

26,0 26,0

26,0

26,0

26,0

26,0

26,0

26,0

22,1

24

26,0

26,0

26,0

26,0

26,0

26,0

26,0

26,0

26,0

22,1

Prom. 29,0

30,0 32,0

33,0

32,0

31,0

32,0

33,0

32,0

32,0 Prom. 29,0

32,0

35,0

37,0

37,0

34,0

37,0

37,0

35,0

40,0

Fuente: ASHRAE Fundamentals 1997

117

Temperatura Soleada Promedio.

El promedio diario de temperatura sol-aire Tea puede ser calculado para cualquier
situacin como

Tea = Toa +

I DT R

ho 24 ho

(22)

donde I DT es la suma del total de coeficientes de ganancia de calor solar para el mes y
orientacin requeridos, en W/m2.
En cualquier instante el balance de calor entre una superficie de ventana exterior y
su entorno trmico ambiental, tal y como se muestra en la figura (Figura 4.2) es

Et + U (To Ti ) = q R + q s + qT + q RCo + q RCi

(23)

donde q R , qs y qT representan al calor reflejado, almacenado en el vidrio y


transmitido, respectivamente. En general, qs es relativamente pequeo en magnitud, por lo
cual se considera despreciable. Los trminos qRCo y qRCi son las tasas de flujo de calor
externo e interno respectivamente por fenmenos de radiacin y conveccin. El calor que
es liberado a la atmsfera es la suma del calor reflejado q R y el calor que sale por efectos
de radiacin y conveccin qRCo .

118

Figura E.1. Balance de Calor en un instante para material cristalino expuesto al sol.

El total de ganancia de calor a travs de material cristalino se puede expresar como:

Calor total

Radiacin

admitido a

travs del vidrio

transmitida a

Flujo de calor que se


+

inserta desde la propia

travs del vidrio

superficie del vidrio

q A = EDD + Edd + qRCi

(24)

El subndice D denota radiacin directa; d denota radiacin difusa, y indica


radiacin transmitida. Las propiedades de radiacin difusa puede hacerse considerando un
caso de radiacin directa donde =60. La siguiente ecuacin considera la energa solar
como un valor total para simplificar.

Calor total
admitido a travs
del vidrio

Radiacin
=

transmitida a
travs del vidrio

Flujo absorbido
+

de radiacin solar
que incide.

Flujo de calor de afuera


+

hacia adentro por


diferencia de temperatura

119

Con lo cual la ecuacin (24) puede ser escrita como:

q A = Et + N i (Et ) + U (to ti )

(25)

En los casos de doble cristal, la transmitancia a travs de ambos vidrios puede ser
calculada por

( o i )

(26)

(1 2 3 )

Los primeros dos trminos de la ecuacin (25) estn relacionados a la radiacin


solar incidente, mientras que el tercero ocurre en presencia o no del sol. Combinando las
ecuaciones (25) y (26) se obtiene
q A = Et + N jo (Eo ) + N i (Eo ) + U (to ti )

Calor total admitido


a travs del vidrio

Ganancia de

Calor Solar

(27)

Ganancia de calor
por conduccin

Estas pueden ser escritas como

q A = CGCS Et + U (t o t i )

(28)

donde
qA

= transmisin instantnea de calor admitida a travs de los ventanales, W/m2

CGCS = coeficiente de ganancia de calor solar


Para un cristal simple, la fraccin de radiacin absorbida Ni puede ser aproximada
con la ecuacin
N i U / ho

(29)

120

donde U es el factor de resistencia trmica del cristal y ho es el coeficiente de


pelcula externo.

Sombreado Externo.

Los sombreados no uniformes causados por los voladizos de los techos, extensiones
laterales o proyecciones de los edificios, hacen requerir de un clculo separado de las partes
sombreadas y las no sombreadas de las ventanas a cada hora. Las reas, sombreadas y no
sombreadas, dependen de la localizacin de la lnea de sombra en el plano del vidrio. Se
han elaborado mtodos aproximados para hacer las consideraciones del movimiento de la
lnea de sombra en funcin de la hora, as como mtodos en que se considera inicialmente
la carga como si no existiese la sombra y luego ajusta el resultado tomando en cuenta el
efecto del sombreado, aplicando un factor de carga negativo que corrige la imprecisin.

Consideraciones de Temperatura.

Para estimar la conduccin de calor a travs de los ventanales en cualquier


momento, son aplicables los valores de temperaturas externas e internas de bulbo seco.

E.1.4. Ganancia de Calor a Travs de las Superficies


Siempre que un espacio acondicionado se encuentra adyacente a otro con una
temperatura distinta, la transferencia de calor a travs de la separacin fsica entre ellos
debe de considerarse. La tasa de transferencia de calor est dada por
q = UA(Tb Ti )

(30)

donde
q

= calor transferido, W

= coeficiente global de transferencia de calor entre el espacio adyacente y el


espacio acondicionado, W/(m2 K)

121

= rea superficial de la separacin, m2

Tb

= promedio de la temperatura en el espacio adyacente, C

Ti

= temperatura en el espacio acondicionado, C

Los valores de U

pueden ser obtenidos segn los principios bsicos de

transferencia de calor por conduccin. La temperatura tb puede alejarse mucho del rango
de la temperatura del espacio acondicionado. La temperatura en una cocina o sala de
calderas, por ejemplo, puede estar como mucho entre 8 y 28K sobre la temperatura externa
del aire. La temperatura actual de los espacios adyacentes debera ser medida siempre que
sea posible. Donde no se conoce nada, excepto que el espacio adyacente es de construccin
convencional, no contiene fuentes de calor y no recibe directamente una ganancia
significativa de calor del sol, Tb - Ti , puede ser considerada la diferencia entre la
temperatura externa del aire y 2,8K menos que la temperatura de bulbo seco del espacio
acondicionado. En algunos casos, la temperatura del aire en el espacio adyacente
corresponde a la temperatura externa del aire o superior.

E.1.5. Fuentes de Calor en los Espacios Refrigerados


Personas

La Tabla de Tasas de Ganancia de Calor de los Ocupantes (Tabla 4.2) muestra


algunas de las medidas de calor y humedad que aporta una persona al ambiente en que se
encuentra, al realizar diferentes actividades. En muchas ocasiones, estas medidas de calor
sensible y latente constituyen una parte significativa de la carga total. Incluso en los casos
de corta estancia, el aporte significativo de calor y humedad de las personas, puede ser
significativo en la carga.

122

Tabla E.2. Ganancias de Calor de los ocupantes de un espacio refrigerado


Calor Total, W
Adulto
Hombre

Tipo de actividad

Ajustado,
H/M

Calor
Sensible,
W

Calor
Latente,
W

Bajo V

Sentado en un teatro

Teatro, matine

115

95

65

30

Sentado en un teatro, noche

Teatro, noche

115

105

70

35

Sentado, trabajo ligero

Oficinas, hoteles, apartamentos

130

115

70

45

Trabajo de oficina de actividad moderada

Oficinas, hoteles, apartamento

140

130

75

55

Trabajo ligero, caminando, de pie

Tienda por departamentos

160

130

75

55

Caminar, estar de pie

Farmacia, Banco

160

145

75

70

Trabajo sedentario

Restaurante

145

160

80

80

Trabajo ligero en bancas

Fbrica

235

220

80

140

Baile moderado

Saln de danza

265

250

90

160

Fabrica

295

295

110

185

Caminar 4 8Km/h trabajo con


Bowling

% Calor Sensible que


se Irradia

Cancha de Bowling

440

425

170

255

Trabajo pesado

Fabrica

440

425

170

255

Trabajo con maquinaria pesada, cargar

Fabrica

470

470

185

285

Atletismo, Ejercicios

Gimnasio

585

525

210

Alta V

60

27

58

38

49

35

54

19

315

Fuente: ASHRAE Fundamentals 1997

La conversin de ganancia de calor sensible de las personas a carga de enfriamiento


del espacio se ve afectada por las caractersticas del espacio, en tal sentido se hace subjetiva
la aplicacin de una apropiada funcin de transferencia de la habitacin. La ganancia de
calor latente se considera instantnea.

Iluminacin

Debido a que la iluminacin es en la mayora de los casos el componente de carga


ms significativo, se hace necesario imponer un estimado preciso para obtener la ganancia
de calor de las mismas. El clculo de este componente de carga no se hace de modo directo;
la tasa de calor en un momento dado puede ser un poco distinta del calor equivalente a la
potencia suministrada instantneamente a las luces en cuestin.
Slo parte de la energa de las luces se obtiene a travs del calor de conveccin, el
cual retira a cada instante el sistema de aire acondicionado del espacio. La porcin restante
de calor emitido por las luces, se obtiene por efectos de radiacin, una vez que sta es
absorbida y liberada por las paredes, suelos y mobiliario de la habitacin. Esta absorcin de
energa influye en la carga de enfriamiento del espacio despus de un lapso de tiempo,

123

quedando an presente una fraccin de esta energa irradindose incluso despus de apagar
las luces.
Siempre existe un retraso entre el tiempo en que se encienden las luces y el
momento en que la energa irradiada por la luz equipara a la energa que se acumula
instantneamente. Este retraso debe ser considerado cuando se realizan los clculos de
carga de refrigeracin, ya que desde el momento en que es percibida por el espacio, que es
an ms baja que la ganancia instantnea generada e incluso en el momento de pico de
carga, afecta significativamente la carga del espacio.

Ganancia de calor Instantnea debido a la Iluminacin.

La fuente principal de calor de las luces proviene de los elementos que emiten la luz
o bombillo, sin embargo, una fuente significante de calor puede ser generada en diversos
accesorios en los arreglos de luces o lmparas. Generalmente la ganancia de calor de la
iluminacin elctrica se calcula de la forma:
qel = WFul Fsa

(31)

donde
qel

= ganancia de calor, W

= potencia total de las luces

Ful

= factor de uso

Fsa

= factor de balasto

La potencia total de las luces se obtiene de sumar la capacidad de todos los


bombillos que se utilicen en el rea acondicionada.
El factor de uso de las luces es la fraccin de la capacidad instalada de luces que
est en uso, para la cual se estiman las condiciones de carga de refrigeracin.

124

El factor de balasto se aplica en el caso que las luces sean fluorescentes y arreglos
de luces, que estn ventilados o instalados de un modo en el cual no todo el calor que
producen es percibido en el rea acondicionada. En las instalaciones de luces fluorescentes,
el factor de las prdidas en el balasto se considera como un factor mximo de 2,19 para
lmparas sencillas de 32W. Para lmparas de encendido rpido de 40W el factor varia entre
1,18 y 1,30 de acuerdo a si son dos o una las lmparas que estn en uso, pero para la
mayora de las aplicaciones se recomienda el uso de un factor de 1,20. Para algunas
instalaciones industriales, con lmparas de sodio, se pueden considerar valores que oscilan
entre 1,04 y 1,37, dependiendo del fabricante, por lo cual deben ser evaluados
individualmente.
En los casos de las lmparas ventiladas, se debe determinar la fraccin que se espera
que sea percibida directamente por el rea acondicionada directamente.

Temperatura del Plnum.

As como el calor de las luces es recibido por el aire de retorno, la temperatura


diferencial entre el espacio refrigerado y el espacio encerrado entre el cielo raso y el techo,
se convierte en un componente que aporta calor en el rea a refrigerar. El aire de retorno
puede ser conducido a travs de ductos para capturar el calor de las luces sin que tenga que
producirse a travs del plnum como tal, o este espacio cerrado puede ser usado como
espacio para el retorno del aire, causando que la distribucin del calor de las luces pueda
ser manejada de distintas maneras. La mayora de las temperaturas en los plnum no
sobrepasan ms all de 0,5 a 1,5 K por encima de la temperatura del espacio refrigerado,
generando as gradiente trmico que permite la transferencia de calor entre la superficie del
plnum que a su vez reduce en un porcentaje significativo la carga de refrigeracin en el
espacio.

125

Balance Energtico.

En los locales donde sea utilizado el espacio sobre el cielo raso como plnum para
el aire de retorno, ocurre un intercambio de energa que requiere que el calor que sea
recibido de las luces en el aire de retorno a) se convierta en parte de la carga de
refrigeracin del aire de retorno (representada por la temperatura a la que alcanza el aire de
retorno mientras atraviesa el espacio encerrado), b) se transfiere parcialmente de vuelta al
espacio refrigerado a travs de las lminas del cielo raso y c) puede perderse parcialmente a
travs de las superficies superiores, que suelen ser suelos de niveles superiores. En los
edificios con placas intermedias, los espacios refrigerados frecuentemente tienen ganancia
de calor a travs del suelo, de forma similar a si tuvieran un plnum inferior, considerando
las perdidas mencionadas. El componente de calor por radiacin que se desprende de las
superficies de este plnum es por lo general despreciable, por lo tanto para efectos de
clculo se consideran todos los efectos de transferencia de calor como convectivos.
La figura (Figura E.2) muestra un diagrama esquemtico de cmo es un plnum de
aire de retorno. Las ecuaciones de la (32) a la (36), utilizando signos de convencin de
acuerdo a los utilizados en la representacin del Balance de Calor de un Retorno por
Plnum (Figura E.2), representan el balance de energa de diseo de un plnum de aire de
retorno para el interior de un edificio de placas intermedias.

Figura E.2. Balance de Calor de un Retorno por Plnum

126

q1 = U c Ac (T p Tr )

(32)

q 2 = U f A f (T p T fa )

(33)

q3 = 1,23Q(T p Tr )

(34)

qlp q 2 q1 q3 = 0

(35)

Q=

q r + q1
1,23(Tr Ts )

(36)

dnde
q1

= ganancia de calor del espacio a travs del plnum, W

q2

= prdida de calor desde el plnum hacia el piso superior, W

q3

= ganancia de calor recogida por el aire de retorno, W

= flujo del aire de retorno, L/s

qlp

= ganancia de calor de las luces hacia el plnum, W

qlr

= ganancia de calor de las luces hacia el espacio, W

qf

= ganancia de calor desde el plnum inferior, W

qw

= ganancia de calor de las paredes externas, W

qr

= carga de refrigeracin del espacio, que incluye el manejo adecuado de las


variables qlr , q f y/o qw , W

Tp

= temperatura en el plnum, C

Tr

= temperatura del rea refrigerada, C

T fa

= temperatura del nivel superior, C

Ts

= temperatura de suministro del aire C

127

E.1.6. Ganancias de Calor por Infiltracin y Ventilacin


Ventilacin

El aire externo debe ser introducido por ventilacin a los espacios acondicionados.
Aquellos lugares donde se quiere lograr un mximo de economa en espacio y carga de
refrigeracin, como en los submarinos o en otras reas restringidas, una cantidad de 0,5 L/s
de aire del exterior por persona es suficiente, siempre y cuando se garantice que el aire de
recirculacin est descontaminado de un modo apropiado.
Segn la norma estndar 62 de ASHRAE se recomienda una frecuencia de
ventilacin mnima para distintas aplicaciones comunes. Como uso general, as como en
oficinas, se recomienda un flujo de 10 L/s por persona. De igual forma, se puede consultar
la tabla completa de los flujos recomendados en la mencionada norma para los distintos
tipos de espacios acondicionados. (Ver Apndice A1)
Los cambios de aire, que viene siendo la cantidad de veces que en promedio se ha
llenado la habitacin con aire nuevo, se recomienda segn normas que sean entre 6 a 8 por
hora. (Ver Apndice A2)
El aire de ventilacin, por lo general se introduce al sistema de modo directo del
ambiente, necesitando preenfriar el aire por intercambiadores. Esto introduce un factor de
ganancia de calor adicional, que a pesar de ser pequeo es influyente.
Para reducir las ganancias de calor externas del aire de ventilacin, se han
desarrollado aplicaciones de recirculacin y filtrado del aire interno, combinndolo con aire
externo. El aire de recirculacin debe ser tratado para controlar los olores.

128

Infiltracin

La infiltracin de aire, que es el aire que se introduce de modo no previsto al


espacio acondicionado en los casos de refrigeracin, se limita, para los efectos de clculo, a
la consideracin de las puertas y ventanas. Para el clculo de las infiltraciones por las
ventanas en una estructura completa, no se requiere evaluar la totalidad de las ventanas
expuestas en los lados de la edificacin, ya que el viento no actuar sobre todos los
costados de modo simultneo. En cualquiera de los casos, la infiltracin de la totalidad de
las ventanas de dos costados adyacentes debe ser considerada. El conocimiento de la
direccin y velocidad preferente del viento contribuye a una buena seleccin de cules
paredes exteriores seleccionar.
Cuando las condiciones econmicas lo permitan, debe introducirse suficiente aire
exterior por ventilacin hacia el sistema de aire acondicionado para mantener una salida de
aire constante, con lo cual se eliminara la porcin de ganancia por infiltracin. La presin
que se mantenga debe superar la presin del viento a travs de las ranuras de las ventanas y
puertas. Cuando la cantidad de aire que se introduce al sistema a travs del sistema de aire
acondicionado no es suficiente para mantener la presin que elimine las infiltraciones, la
totalidad de la carga de infiltracin debe ser considerada como ganancia de calor del
espacio en los clculos.

E.1.7. Principios de las Cargas de Calefaccin


Las tcnicas para estimar la carga de calor de diseo para usos comercial,
institucional e industrial es esencialmente la misma que aquellas para estimar las cargas de
refrigeracin para los mismos casos, con la excepcin que a) las temperaturas exteriores al
espacio acondicionado son menores que las mantenidas en el espacio; b) no se incluyen las
ganancias de calor por efecto de la incidencia solar ni por ganancias internas; y c) la
acumulacin trmica de las estructuras de los edificios no se considera. Las prdidas de
calor (ganancias negativas de calor) en este caso son consideradas instantneas, la

129

transferencia de calor se evala conductiva y, el calor latente es considerado slo como un


factor para reemplazar la humedad que se pierde al ambiente.
La justificacin de esta aproximacin simplificada tiene como propsito estimar la
carga de calor como identificacin del peor caso de condiciones que puede ocurrir para un
da de la temporada de calefaccin. Tradicionalmente sta se considera como la carga con
la que se puede enfrentar el sistema bajo las condiciones de diseo interiores y exteriores,
incluyendo las infiltraciones y/o ventilacin, pero en la ausencia del efecto del sol (en la
noche o en das nublados de invierno) y antes que comiencen las rutinas de la gente, luces y
aplicaciones que produzcan efectos retardados de transmisin. La intencin principal es
considerar la dimensin apropiada de un adecuado sistema de calefaccin para las peores
condiciones.

130

E.2. El Mtodo
E.2.1. Procedimiento de Clculo de Diferencias de Temperaturas Totales
Equivalentes en un Promedio de Tiempo (DTTE/PT)
Para calcular una carga de enfriamiento en un rea utilizando las convenciones de
DTTE/PT aplican los procedimientos de ensamblaje de datos y anlisis de preclculos
similar a los usados en el mtodo de la funcin de transferencia (MFT), por lo cual se
requiere del uso de muchas tablas y procedimientos condensados que representan el sentido
de una funcin de transferencia, pero que se simplifica su manejo para la fcil
manipulacin de aquel que calcule las cargas trmicas y de enfriamiento.

E.2.2. Ganancia de Calor a travs de Ventanas Exteriores


Las ganancias por vidrios, que por lo general se consideran de ventanas, aunque
tambin pueden ser consideradas algunas puertas de este material que formen parte del
conjunto de elementos de un ambiente refrigerado, estn compuestas por dos factores
principales, que son los efectos de Radiacin Solar y los efectos de Conveccin por el calor
que se encuentra libre en el ambiente, que puede ser observado con el efecto trmico.
La ganancia de calor por conveccin a travs de los ventanales es proporcional al
diferencial de temperaturas entre el exterior y el ambiente refrigerado, el rea de superficie
expuesta al ambiente y el coeficiente de transferencia de calor que involucra al ambiente y
a las condiciones intrnsecas de los vidrios. La funcin que representa esta relacin es la
siguiente:
q = U A (Tb Ti )

(37)

Por otro lado la Radiacin tambin tiene un efecto significativo sobre la ganancia de
calor a travs de las superficies cristalinas, que para el mtodo de clculo actual se realiza
como una funcin de factores de sombreado y de ganancia de calor solar por orientacin,
131

latitud, hora y mes, que permiten obtener la magnitud de la cantidad de energa que se
inserta a travs de este fenmeno de transferencia a los ambientes cerrados y refrigerados.
El coeficiente de sombreado, es un factor que depende de la capacidad que tengan
los materiales vidriosos de absorber o reflejar la luz y calor, ya que esto permitir que sea
mayor o menor la incidencia del sol en las cargas del ambiente.
El factor de ganancia de calor solar, es la fraccin de irradiacin que penetra los
cristales y se convierte en ganancia de calor para el ambiente. Este factor permite
determinar la ganancia de calor por radiacin a travs de los sistemas de ventanas. Para la
obtencin del factor se debe considerar la orientacin de los sistemas cristalinos, para
predecir la porcin de exposicin que tendrn al astro solar. Estos factores han sido
calculados y tabulados para varias latitudes y todos los meses, como se observa en el
ejemplo anexo. (Ver Apndice A3, Tabla A3.1).
En tal forma, queda simplificado el clculo de la ganancia de calor por efecto de la
radiacin solar como:
qi = A FS FGCS

(38)

donde,

= rea de Vidrio, m2

FS

= Factor de Sombra

FGCS = Factor de Ganancia de Calor Solar, W/m2

E.2.3. Ganancia de Calor Sensible


Esta aproximacin es particularmente semejante al mtodo de la funcin de
transferencia y est diseado para ser usado de modo adecuado con computadores. Este
modo de clculo considera a) la temperatura sol-aire para representar las condiciones
externas y, b) constante a la temperatura interna del aire. Adems, se asumen constantes los

132

coeficientes de superficie internos y externos. Por lo tanto, la ganancia de calor a travs de


una pared o techo, se puede describir como:

)
d (q

qe , = A bn (Te , n ) n e , n Trc cn
A
n =1
n =0
n =0

(39)

donde
qe ,

= ganancia de calor de paredes o techos para la hora de clculo

= rea superficial de la pared o techo por dentro

= hora de clculo

= intervalo de tiempo

= ndice de suma

Te, n = temperatura sol-aire para el instante n


Trc

= temperatura interna (constante)

bn , cn , d n = coeficientes de funcin de transferencia por conduccin

E.2.4. Coeficientes de Funcin de Transferencia para Conduccin.


Usualmente son calculados utilizando el coeficiente de transferencia externo 17,0
W/(m2K), el coeficiente interno 8,3 W/(m2K) y el de la pared o construccin que resulte
apropiado. El uso de ho = 17 limita la aplicacin de estos coeficientes a casos de
temperaturas soleadas similares. El Coeficiente de Funcin de Transferencia especfico de
las diferentes construcciones puede ser calculado por procedimientos complejos que han
sido computarizados por cientficos en aos anteriores.

133

E.2.5. Ganancia de Calor a travs de Superficies Interiores, Espacios


Adyacentes y Pisos.
Siempre que un espacio acondicionado se encuentre adyacente a otro que se
encuentre a distinta temperatura, se producir una transferencia de calor a travs de la
separacin que puede ser calculada por:

q p , = A bn (Tb , n ) d n {(q p , n )/ A} Trc c n


n =1
n =0
n =0

(40)

donde
A

= rea, m2

Tb

= temperatura del aire del espacio adyacente, C

b ,c,d

= coeficientes derivados del tipo de pared, suelo, techo o particin

E.2.6. Ganancia de calor desde espacios adyacentes.


En los casos que Tb es constante o sus variaciones son despreciables en
comparacin con la diferencia (Tb Trc ) , q p , estar dado por la sencilla ecuacin de estado
estable
q p , = UA(Tb Trc )

(41)

donde U es el coeficiente global de transferencia de calor entre el espacio adyacente


y el espacio acondicionado.
Las mismas expresiones reflejan el valor medio de q p , , cuando se utiliza el valor
medio de Tb , que son los casos en que se considera que no hay variacin. En los casos en
que q p , es relativamente pequeo en comparacin con la ganancia de calor de los

134

componentes del otro cuarto, se puede considerar constante en su valor medio. Si la


componente de ganancia de calor es elevada, se hace necesario calcular la temperatura del
rea adyacente.

E.2.7. Ganancia de Calor a travs de infiltraciones y ventilacin.


El flujo de aire a travs del ambiente lleva consigo un trasporte de energa que debe
ser considerado para el clculo de las cargas trmicas totales dentro de un ambiente
refrigerado, ya que es a travs del flujo del aire que se produce el intercambio trmico del
espacio y se debe considerar el efecto que implica la transformacin de energa cintica en
energa trmica del aire para el caso. Se puede calcular la ganancia de calor por ventilacin
e infiltraciones con la misma ecuacin, corrigiendo el valor del caudal correspondiente para
cada uno. Existen dos modos de calcular la carga total de calor que se produce con el
transporte o penetracin de aire en el ambiente; estas son, haciendo el clculo total,
considerando el cambio energtico total del aire o considerando la suma de las ganancias de
calor sensible y latente del aire, tal y como se presentan a continuacin:
qtotal = 1,20 Q ( H o H i )

(42)

qsensible = 1,23 Q (to ti )

(43)

qlatente = 3010 Q (Wo Wi )

(44)

donde Q es el caudal de flujo de aire en [m3/s] y las constantes de las cargas


sensible y latente estn en las unidades correspondientes.

E.2.8. Tratamiento de la Ganancia de Calor y la Carga de Refrigeracin.


Procedimientos de Conversin.
El mtodo de la Diferencia de de Temperaturas Totales Equivalentes en un
Promedio de Tiempo est orientado principalmente para ser un procedimiento manual. Las
135

tablas precalculadas de retrasos temporales, de factores de decrementos y valores tabulados


para una diversidad de tipos de paredes representativas que provienen de soluciones de
series de Fourier para el caso de la ecuacin de conduccin unidimensional de estado
estable de una placa de mltiples componentes, como se realiza para calcular el flujo de
calor a travs de cada una de las paredes y techos seleccionadas para tal fin.

E.2.9. Ganancia de Calor a travs de las Paredes y Techos Exteriores


La carga de ganancia de calor de las paredes, de un modo similar al de la ganancia
por espacios adyacentes, se produce por el efecto de una diferencia de temperatura que
transfiere calor a travs del material que separa los ambientes, pero para este caso la
temperatura exterior no permanece constante en el tiempo, por el contrario, tiende a variar
cada hora.
La ganancia de calor a travs de las paredes y techos son el resultado de sucesivos
clculos que se generalizan dividiendo los valores deducidos de ganancia de calor para cada
hora de cada pared y techo, por el factor de transferencia de calor U correspondiente. Las
cantidades obtenidas por este procedimiento es lo que se llama la diferencia de temperatura
total equivalente (DTTE). Este factor hace que la ecuacin bsica de transferencia de calor
para las superficies exteriores quede descrita por:
q = UA( DTTE )

(45)

donde
q

= ganancia de calor, W

= coeficiente total de transferencia de calor, W/(m2K)

= rea de superficie, m2

DTTE = diferencia de temperatura total equivalente


El flujo de calor a travs de una pared o techo similar (similar en masa as como en
factor de transferencia U) pueden obtenerse multiplicando las DTTEs por el factor de

136

transferencia correspondiente del elemento que corresponda. Los errores que se manejan
con esta aproximacin dependen de la diferencia entre los materiales de construccin
utilizados y los considerados para el clculo de las DTTEs.

E.2.10. La Diferencia de Temperatura Total Equivalente como una funcin de


los factores de decremento y retrasos temporales.
La ganancia de calor de las paredes y techos representativos puede ser generalizada
de otro modo tambin. Los factores de decremento y los retrasos temporales son
determinados para cada ensamblaje, en tal sentido las temperaturas equivalentes
diferenciales se relacionan con las correspondientes temperaturas soleadas de la siguiente
forma:
DTTE = Tea Ti (Te Tea )

(46)

donde
Tea

= promedio diario de temperatura soleada, considerando el color de


superficie

Ti

= temperatura interna del aire

= factor de decremento efectivo

Te

= temperatura soleada horas antes de la hora para la cual se promete el


clculo de DTTE

Esta relacin permite aproximar el clculo de la ganancia de calor a travs de


cualquier pared o techo tabulada o, una equivalente, para cualquier ciclo de temperaturas
soleadas.

Clculos Manuales versus Clculos Automatizados.

La aplicacin del mtodo, en especial para el clculo del promedio en el tiempo en


especfico, resulta tediosa en la prctica. Este hecho sumado al inters desarrollado en los
137

mtodos de funciones de transferencia produce el inters de desarrollar aplicaciones


automatizadas que desarrollen los clculos para realizar mtodos ms simples de programar
con precisin similar a los mtodos complejos.

E.3. Promedio Temporal de la Carga de Refrigeracin


La tcnica de promediar en el tiempo las cargas, para relacionar la ganancia de calor
instantnea con la carga instantnea de refrigeracin es una aproximacin al concepto de la
conversin de dos etapas que se realiza en el mtodo de la funcin de transferencia. Este
procedimiento reconoce la existencia del almacenamiento trmico de los componentes y
considera las porciones de ganancia de calor que entran por radiacin al espacio en
cualquier instante, con la consecuente liberacin del calor almacenado por los componentes
en un tiempo posterior. Adems reconoce que la carga de refrigeracin de un espacio para
un instante dado es la suma de todas las ganancias de calor convectivas y las porciones de
ganancia de calor conductiva que no se dispersaran por radiacin de esa rea, sumados a la
cantidad del total de calor liberado por radiacin del que se haba almacenado hasta la hora
de evaluacin.
El efecto de los coeficientes de transferencia a travs de la habitacin en la ganancia
de calor por horas, es generar un perfil de cargas que siga la ganancia instantnea de calor
en amplitud (grande o pequea) y efectos de retrasos. Siendo funciones de la masa y
configuracin del edificio y de los componentes que ste contenga, estos coeficientes sitan
su nfasis en la hora inmediatamente precedente al clculo, disminuyendo de forma
significativa el nfasis en cada lapso previo.
As como los perfiles de carga de refrigeracin obtenidos por el mtodo de la
funcin de transferencia pueden aproximarse promediando los componentes de ganancia de
calor por radiacin en cada hora para un perodo previo al clculo de entre siete a ocho
horas con la de clculo y aadiendo el resultado al total de ganancia de calor por
conveccin para el instante correspondiente. As como los resultados son ms consistentes

138

con los obtenidos por la aplicacin rigurosa del mtodo de la funcin de transferencia, los
que se pueden obtener por el mtodo de las diferencias de temperaturas totales equivalentes
en un promedio de tiempo (DTTE/PT) se obtienen con mucho menos esfuerzo de cmputo.
La habilidad adecuada de variar el perodo del promedio de modo independiente es una
consecuencia de aplicar un juicio profesional a los resultados, que mejora con la
experiencia.
El xito de esta aproximacin depende de la eficacia con que la ganancia de calor de
los componentes se maneja como porcentajes de conveccin y radiacin, as como del
nmero de horas en que estos son utilizados dentro del lapso que es estudiado. La debilidad
de esta aproximacin radica en que no existen datos en la literatura especializada para
verificar los factores, y se hace necesario el juicio profesional de experto en el usuario.
Los valores de ganancia de calor para ambos mtodos MFT o DTTE/PT son
esencialmente idnticos para todos los componentes de carga. Los valores de carga de
refrigeracin derivados de la aplicacin adecuada de las tcnicas de promediar, se asemejan
a los obtenidos por el mtodo MFT para ganancia de calor por fuentes externas. La carga de
refrigeracin causada por la ganancia de calor interna, sin embargo, al promediarse en el
mismo perodo de tiempo que los componentes externos, alcanza picos en un lapso menor y
con mayores amplitudes que las generadas por el mtodo MFT. Esta diferencia radica
bsicamente en que el nivel casi constante de radiacin aadida en los perodos de
ocupacin y tambin a la resultante del aplastamiento de las curvas de carga de
refrigeracin que se realiza en el mtodo MFT.

139

AgrResistencia - 1
Dim datos As Us
Option Explicit
Private Sub CancelButton_Click()
Me.Hide
CalculoU.Show
End Sub
Private Sub OKButton_Click()
Dim n_res As Long
n_res = lenfile8(App.Path & "/Datos/Resistencias.cfl")
Open App.Path & "/Datos/Resistencias.cfl" For Random As #1 Len = Len(datos)
Get #1, n_res, datos
Close #1
datos.Descripcion = Text1.Text
datos.Resistencia = Text2.Text
datos.conf = "R"
datos.id = datos.id + 1
datos.salto = vbCrLf
Open App.Path & "/Datos/Resistencias.cfl" For Random As #1 Len = Len(datos)
Put #1, n_res, datos
Close #1
CalculoU.Text1.Text = n_res
Me.Hide
End Sub

AgrResistividad - 1
Dim datos As Us
Option Explicit
Private Sub CancelButton_Click()
Me.Hide
CalculoU.Show
End Sub
Private Sub OKButton_Click()
If Text4.Text = 0 Or Text4.Text = "" Then
MsgBox "No se puede dar valor, la resistencia no puede ser CERO"
Else
Dim n_res As Long
n_res = lenfile8(App.Path & "/Datos/Resistencias.cfl")
Open App.Path & "/Datos/Resistencias.cfl" For Random As #1 Len = Len(datos)
Get #1, n_res, datos
Close #1
datos.Descripcion = Text1.Text
datos.Resistencia = Text4.Text
datos.conf = "R"
datos.id = datos.id + 1
datos.salto = vbCrLf
Open App.Path & "/Datos/Resistencias.cfl" For Random As #1 Len = Len(datos)
Put #1, n_res, datos
Close #1
CalculoU.Text1.Text = n_res
Me.Hide
End If
End Sub
Private Sub Text3_Change()
Text4.Text = Text3.Text * Text2.Text
End Sub

Indicar Espesor [m]

CalculoU - 1
Dim datos As Us
Private Sub Calcular_Click()
Dim resistenciasum As Double
Dim rpeq As Double
Dim ucef As Double
Open App.Path & "/Datos/Resistencias.cfl" For Random As #1 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.conf, 1)) = "R" Then
rpeq = Trim(datos.Resistencia)
rpeq = rpeq * 1
resistenciasum = resistenciasum + rpeq
End If
Loop
Close #1
If Not resistenciasum = 0 Then
ucef = 1 / resistenciasum
Ucoef.Text = ucef
End If
End Sub

Private Sub cmdAadirCarga_Click()


Me.Hide
Cargas.txtUcoefPartic.Text = Ucoef.Text
If ExisteArch(App.Path & "/Datos/Resistencias.cfl") = True Then Kill App.Path & "/Datos/Resistenci
as.cfl"
End Sub
Private Sub Command1_Click()
If Resistencia = "" Then
MsgBox "Verifique que no desea aadir una resistencia nula"
Else
Dim n_res As Long
n_res = lenfile8(App.Path & "/Datos/Resistencias.cfl")
Open App.Path & "/Datos/Resistencias.cfl" For Random As #1 Len = Len(datos)
Get #1, n_res, datos
Close #1
datos.Descripcion = Nombre.Text
datos.Resistencia = Resistencia.Text
datos.conf = "R"
datos.borrado = 1
datos.id = datos.id + 1
datos.salto = vbCrLf
Open App.Path & "/Datos/Resistencias.cfl" For Random As #1 Len = Len(datos)
Put #1, n_res, datos
Close #1
End If
Text1.Text = n_res
End Sub
Private Sub Command2_Click()
If resistividad.Text = "" Or Espesor.Text = "" Then
MsgBox "Verifique que no desea aadir una resistencia nula"
Else
Dim n_res As Long
Dim Resistencia As Double
n_res = lenfile8(App.Path & "/Datos/Resistencias.cfl")
Open App.Path & "/Datos/Resistencias.cfl" For Random As #1 Len = Len(datos)
Get #1, n_res, datos
Close #1
datos.Descripcion = Nombre.Text
Resistencia = resistividad.Text * Espesor.Text
datos.Resistencia = Resistencia
datos.conf = "R"
datos.id = datos.id + 1
datos.salto = vbCrLf
Open App.Path & "/Datos/Resistencias.cfl" For Random As #1 Len = Len(datos)
Put #1, n_res, datos
Close #1

CalculoU - 2
End If
Text1.Text = n_res
End Sub
Private Sub Form_Load()
Espesor.Enabled = False
Espesor.BackColor = &H80000011
Espesor.Text = ""
resistividad.Text = ""
Nombre.Text = ""
Resistencia.Text = ""
Ucoef.Text = ""
ListView1.ColumnHeaders.Clear
ListView1.ColumnHeaders.Add , "ID", "ID", 0
ListView1.ColumnHeaders.Add , "PK", "PK", 0
ListView1.ColumnHeaders.Add , "c", "Material", 2800, 2
ListView1.ColumnHeaders.Add , "d", "Resistencia", 1000, 2
ListView1.ListItems.Clear
i = 0
Open App.Path & "/Datos/Resistencias.cfl" For Random As #1 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.conf, 1)) = "R" Then
Set itmx1 = ListView1.ListItems.Add(1, , datos.id)
itmx1.SubItems(1) = i - 1
itmx1.SubItems(2) = Trim(datos.Descripcion)
itmx1.SubItems(3) = Trim(datos.Resistencia)
Set itmx1 = Nothing
End If
Loop
Close #1
ListView2.ColumnHeaders.Clear
ListView2.ColumnHeaders.Add , "ID", "ID", 0
ListView2.ColumnHeaders.Add , "PK", "PK", 0
ListView2.ColumnHeaders.Add , "c", "Material", 3000, 0
ListView2.ColumnHeaders.Add , "d", "Densidad", 1000, 2
ListView2.ColumnHeaders.Add , "l", "Resistencia", 1000, 2
ListView2.ListItems.Clear
Dim itmX As ListItem
i = 0
Open App.Path & "/Tablas/Tabla24_4.cfl" For Random Access Read As #1 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If Not UCase(Left(datos.Descripcion, 2)) = " " Then
If UCase(Left(datos.conf, 1)) = "N" Then
Set itmX = ListView2.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.Descripcion)
itmX.SubItems(3) = Trim(datos.Densidad)
itmX.SubItems(4) = Trim(datos.Resistencia)
Set itmX = Nothing
End If
End If
Loop
ListView2.SortKey = 2
ListView2.Sorted = True
Close #1
ListView3.ColumnHeaders.Clear
ListView3.ColumnHeaders.Add , "ID", "ID", 0
ListView3.ColumnHeaders.Add , "PK", "PK", 0
ListView3.ColumnHeaders.Add , "c", "Material", 3000, 0
ListView3.ColumnHeaders.Add , "d", "Densidad", 1000, 2
ListView3.ColumnHeaders.Add , "l", "Resistencia", 1000, 2
ListView3.ListItems.Clear
Dim itmx2 As ListItem
i = 0
Open App.Path & "/Tablas/Tabla24_4.cfl" For Random Access Read As #1 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos

CalculoU - 3
i = i + 1
If Not UCase(Left(datos.Descripcion, 2)) = " " Then
If UCase(Left(datos.conf, 1)) = "L" Then
Set itmx2 = ListView3.ListItems.Add(1, , datos.id)
itmx2.SubItems(1) = i - 1
itmx2.SubItems(2) = Trim(datos.Descripcion)
itmx2.SubItems(3) = Trim(datos.Densidad)
itmx2.SubItems(4) = Trim(datos.Resistencia)
Set itmx2 = Nothing
End If
End If
Loop
Close #1
End Sub
Private Sub ListView2_Dblclick()
Open App.Path & "/Tablas/Tabla24_4.cfl" For Binary Access Read As #1 Len = Len(datos)
Get #1, (ListView2.SelectedItem.SubItems(1) * Len(datos)) + 1, datos
Close #1
largo = Len(Trim(datos.Resistencia))
If largo > 6 Then
MsgBox "este elemento requiere que usted decida cul valor poner del rango"
Else
AgrResistencia.Text1.Text = Trim(datos.Descripcion)
AgrResistencia.Text2.Text = Trim(datos.Resistencia)
AgrResistencia.Show
End If
End Sub
Private Sub ListView3_dblclick()
Open App.Path & "/Tablas/Tabla24_4.cfl" For Binary Access Read As #1 Len = Len(datos)
Get #1, (ListView3.SelectedItem.SubItems(1) * Len(datos)) + 1, datos
Close #1
largo = Len(Trim(datos.Resistencia))
If largo > 6 Then
MsgBox "este elemento requiere que usted decida cul valor poner del rango"
Else
AgrResistividad.Text1.Text = Trim(datos.Descripcion)
AgrResistividad.Text2.Text = Trim(datos.Resistencia)
AgrResistividad.Show
End If
End Sub
Private Sub resistividad_Change()
Espesor.BackColor = &H80000005
Espesor.Enabled = True
End Sub
Private Sub TabStrip1_Click()
If tabstrip1.SelectedItem = "Resistencias" Then
Frame1.Visible = True
Frame2.Visible = False
End If
If tabstrip1.SelectedItem = "Resistividades" Then
Frame1.Visible = False
Frame2.Visible = True
End If
End Sub
Private Sub Text1_Change()
Call Form_Load
End Sub
Function ExisteArch(nombrearchivo As String) As Boolean
On Error Resume Next
ExisteArch = (Dir$(nombrearchivo) <> "")
End Function

Nombre del Material

Resistencia [K*m^2/W]
- DE SER EL CASO Resistividad [K*m/W]
Espesor

[m]

Coeficiente de Tansferencia de
Calor [W/(m^2*K)]

CalorPersona - 1
Private Sub Form_Load()
Dim datos As CalorPersonas
ListView1.ColumnHeaders.Clear
ListView1.ColumnHeaders.Add , "ID", "ID", 0
ListView1.ColumnHeaders.Add , "PK", "PK", 0
ListView1.ColumnHeaders.Add , "ta", "Tipo de Actividad", 3500, 2
ListView1.ColumnHeaders.Add , "", "Lugar Tpico", 2400, 2
ListView1.ColumnHeaders.Add , "Ch", "Calor Adulto Hombre", 1900, 2
ListView1.ColumnHeaders.Add , "Chm", "Calor Ajustado H/M", 1900, 2
ListView1.ColumnHeaders.Add , "CS", "Calor Sensible", 1200, 2
ListView1.ColumnHeaders.Add , "CL", "Calor Latente", 1200, 2
ListView1.ColumnHeaders.Add , "IrrB", "% Calor sensible Irr., Bajo V", 2300, 2
ListView1.ColumnHeaders.Add , "IrrA", "% Calor sensible Irr., Bajo V", 2300, 2
ListView1.ListItems.Clear
Dim itmX As ListItem
Open App.Path & "/Tablas/CPer.cfl" For Random Access Read As #1 Len = Len(datos)
i = 0
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.nomb, 1)) = "P" Then
Set itmX = ListView1.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.actividad)
itmX.SubItems(3) = Trim(datos.Tipo)
itmX.SubItems(4) = Trim(datos.hombre)
itmX.SubItems(5) = Trim(datos.ajustado)
itmX.SubItems(6) = Trim(datos.sensible)
itmX.SubItems(7) = Trim(datos.Latente)
itmX.SubItems(8) = Trim(datos.Bajo)
itmX.SubItems(9) = Trim(datos.Alto)
Set itmX = Nothing
End If
Loop
Close #1
End Sub
Private Sub ListView1_dblclick()
Dim datos As CalorPersonas
Open App.Path & "/Tablas/CPer.cfl" For Binary Access Read As #1 Len = Len(datos)
Get #1, (ListView1.SelectedItem.SubItems(1) * Len(datos)) + 1, datos
Close #1
Cargas.txtshgpersonas.Text = Trim(datos.sensible)
Cargas.txtlhgpersonas.Text = Trim(datos.Latente)
Me.Hide
Cargas.Show
End Sub

Ganancias de Calor de los ocupantes de un Espacio Refrigerado

(*)Tabla 3, Captulo 29, "ASHRAE Fundamentals (199

CambiosAireHora - 1
Dim datos As ventilac
Dim itmX As ListItem
Private Sub Command1_Click()
n_camb = lenfile6(App.Path & "/Tablas/CambiosHora.cfl")
Open App.Path & "/Tablas/CambiosHora.cfl" For Random As #1 Len = Len(datos)
Get #1, n_camb, datos
Close #1
datos.Aplicacion = Text1.Text
datos.lps = Text2.Text
datos.Sup = "S"
datos.id = datos.id + 1
datos.salto = vbCrLf
Open App.Path & "/Tablas/CambiosHora.cfl" For Random As #1 Len = Len(datos)
Put #1, n_camb, datos
Close #1
Call Form_Load
End Sub
Private Sub Form_Load()
ListView1.ColumnHeaders.Clear
ListView1.ColumnHeaders.Add , "ID", "ID", 0
ListView1.ColumnHeaders.Add , "PK", "PK", 0
ListView1.ColumnHeaders.Add , "Uso", "Local Destinado A:", 2500, 0
ListView1.ColumnHeaders.Add , "chm", "Cambios Mnimos Aire/hora", 1500, 0
ListView1.ListItems.Clear
i = 0
Open App.Path & "/Tablas/CambiosHora.cfl" For Random Access Read As #1 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.Sup, 1)) = "S" Then
Set itmX = ListView1.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.Aplicacion)
itmX.SubItems(3) = Trim(datos.lps)
Set itmX = Nothing
End If
Loop
Close #1
End Sub

Cargas - 1
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim

clmx As ColumnHeader
itmx1 As ListItem
itmx2 As ListItem
i As Integer
canttech, cantpared, cantvid, cantpart, cantpiso, canttechint As Integer
cantapara, cantluces, cantequipos, cantpersonas As Integer
ofper As String
datos As techo
Directorio As String
n_tech, colocacion As Long

Private Sub cboaparatoscorr_dropdown()


cboAparatosCorr.Clear
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len =
Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.TVar, 1)) = "O" Then
cboAparatosCorr.AddItem (datos.nombamb)
End If
Loop
Close #1
End Sub
Private Sub cboColocacion_click()
Dim datos2 As Motores
colocacion = 0
Open App.Path & "/Tablas/TablaMotores.cfl" For Random Access Read As #1 Len = Len(datos2)
Do While Not EOF(1)
Get #1, , datos2
i = i + 1
If Trim(datos2.eficiencia) = txtEficienciaEquipos.Text Then
If cboColocacion.Text = "A" Then colocacion = Trim(datos2.A)
If cboColocacion.Text = "B" Then colocacion = Trim(datos2.B)
If cboColocacion.Text = "C" Then colocacion = Trim(datos2.C)
If cboColocacion.Text = "D" Then colocacion = 0
End If
Loop
Close #1
txtTcolocacion.Text = colocacion
End Sub
Private Sub cbocorrtecho_dropdown()
cbocorrtecho.Clear
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len =
Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.TVar, 1)) = "O" Then
cbocorrtecho.AddItem (datos.nombamb)
End If
Loop
Close #1
End Sub
Private Sub cboEquiposCorr_dropdown()
cboEquiposCorr.Clear
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len =
Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.TVar, 1)) = "O" Then
cboEquiposCorr.AddItem (datos.nombamb)
End If

Cargas - 2
Loop
Close #1
End Sub
Private Sub cboLuces_Click()
If cboLuces.Text = "Fluorescente" Then
txtCoefDiseoluces.Text = "1,2"
Else
txtCoefDiseoluces.Text = 1
End If
End Sub
Private Sub cboLucesCorr_dropdown()
cboLucesCorr.Clear
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len =
Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.TVar, 1)) = "O" Then
cboLucesCorr.AddItem (datos.nombamb)
End If
Loop
Close #1
End Sub
Private Sub cboParedCorr_dropdown()
cboParedCorr.Clear
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len =
Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.TVar, 1)) = "O" Then
cboParedCorr.AddItem (datos.nombamb)
End If
Loop
Close #1
End Sub
Private Sub cboParticionCorr_dropdown()
cboParticionCorr.Clear
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len =
Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.TVar, 1)) = "O" Then
cboParticionCorr.AddItem (datos.nombamb)
End If
Loop
Close #1
End Sub
Private Sub cboPersonCorr_dropdown()
cboPersonCorr.Clear
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len =
Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.TVar, 1)) = "O" Then
cboPersonCorr.AddItem (datos.nombamb)
End If
Loop
Close #1
End Sub

Cargas - 3
Private Sub cboVidrioCorr_dropdown()
cboVidrioCorr.Clear
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len =
Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.TVar, 1)) = "O" Then
cboVidrioCorr.AddItem (datos.nombamb)
End If
Loop
Close #1
End Sub
Private Sub cboVidrioCorr_click()
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len =
Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.nombamb, 7)) = UCase(Left(cboVidrioCorr.Text, 7)) Then
Text1.Text = datos.Tso
Text2.Text = datos.Textd
End If
Loop
Close #1
End Sub

Private Sub cmdAparato_Click()


ListView3.ListItems.Clear
If cboAparatosCorr.Text = "" Or txtIgAparatos.Text = "" Or txtshg.Text = "" Or txtlhg.Text = "" Th
en
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else
Oficina = cboAparatosCorr.Text
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Le
n = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If UCase(Left(datos.TVar, 1)) = "O" Then
If datos.nombamb = Oficina Then
Uma = datos.UmaAt
End If
End If
Loop
Close #1
Dim n_apa As Long
n_apa = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt")
If n_apa - 1 = 0 Then n_apa = n_apa + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Get #1, n_apa - 1, datos
Close #1
If n_apa > 30 Then
MsgBox "No se pueden agregar ms de cinco (30) Cargas para esta versin del programa"
Else
datos.TVar = "CARGA"
datos.tcarga = "APARATOS"
datos.UmaAt = Uma
datos.Ofcorr = cboAparatosCorr.Text
datos.Igaparatos = txtIgAparatos.Text
datos.shg = txtshg.Text
datos.lhg = txtlhg.Text
datos.inicio = cboinicioaparatos.Text
datos.duracion = cboduracionaparatos.Text
datos.Campana = cbocampanaaparatos.Text
datos.borrado = 1
datos.id = datos.id + 1
datos.salto = vbCrLf
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Put #1, n_apa, datos

Cargas - 4
Close #1
cboAparatosCorr.Text = "-Elegir Oficina-"
txtIgAparatos.Text = ""
txtshg.Text = ""
txtlhg.Text = ""
End If
End If
Call Form_Load
End Sub

Private Sub cmdEquipos_Click()


ListView3.ListItems.Clear
If cboEquiposCorr.Text = "" Or txtPotenciaEquipos.Text = "" Or cboColocacion.Text = "" Or txtEfici
enciaEquipos.Text = "" Or txtusoEquipo.Text = "" Or txtIgEquipos.Text = "" Then
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else
Oficina = cboEquiposCorr.Text
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Le
n = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If UCase(Left(datos.TVar, 1)) = "O" Then
If datos.nombamb = Oficina Then
Uma = datos.UmaAt
End If
End If
Loop
Close #1
Dim n_eqp As Long
n_eqp = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt")
If n_eqp - 1 = 0 Then n_eqp = n_eqp + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Get #1, n_eqp - 1, datos
Close #1
If n_eqp > 30 Then
MsgBox "No se pueden agregar ms de cinco (30) Cargas para esta versin del programa"
Else
datos.TVar = "CARGA"
datos.tcarga = "EQUIPOTENCIA"
datos.UmaAt = Uma
datos.Ofcorr = cboEquiposCorr.Text
datos.potencia = txtPotenciaEquipos.Text
datos.eficiencia = txtEficienciaEquipos.Text
datos.uso = txtusoEquipo.Text
datos.colocacion = cboColocacion.Text
datos.Tcolocacion = txtTcolocacion.Text
datos.inicio = cboInicioEquipos.Text
datos.duracion = cboDuracionEquipos.Text
datos.IgEquipos = txtIgEquipos.Text
datos.borrado = 1
datos.id = datos.id + 1
datos.salto = vbCrLf
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Put #1, n_eqp, datos
Close #1
cboEquiposCorr.Text = "-Elegir Oficina-"
txtPotenciaEquipos.Text = ""
txtEficienciaEquipos.Text = ""
txtusoEquipo.Text = ""
txtIgEquipos.Text = ""
cboColocacion.Text = ""
txtTcolocacion.Text = ""
End If
End If
Call Form_Load
Call cboColocacion_click
End Sub

Private Sub cmdGuardarAparatos_Click()


If cboAparatosCorr.Text = "" Or txtIgAparatos.Text = "" Or txtshg.Text = "" Or txtlhg.Text = "" Th
en

Cargas - 5
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else

Oficina = cboAparatosCorr.Text
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Le
n = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If UCase(Left(datos.TVar, 1)) = "O" Then
If datos.nombamb = Oficina Then
Uma = datos.UmaAt
End If
End If
Loop
Close #1
Dim n_apa As Long
n_apa = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt")
If n_apa - 1 = 0 Then n_apa = n_apa + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Get #1, n_apa - 1, datos
Close #1
datos.TVar = "CARGA"
datos.tcarga = "APARATOS"
datos.UmaAt = Uma
datos.Ofcorr = cboAparatosCorr.Text
datos.Igaparatos = txtIgAparatos.Text
datos.shg = txtshg.Text
datos.lhg = txtlhg.Text
datos.inicio = cboinicioaparatos.Text
datos.duracion = cboduracionaparatos.Text
datos.Campana = cbocampanaaparatos.Text
datos.borrado = Check6.Value
datos.id = ListView3.SelectedItem.SubItems(1)
Open App.Path & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Put #1, ListView3.SelectedItem.SubItems(1) + 1, datos
Close #1
Dim n_cont As Integer
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len
= Len(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt" For Random As #2 Len = Len(datos
)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
On Error Resume Next
Kill App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt"
FileCopy App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt", App.Path & "/" & Trim(Direc
torio) & "/Datos/Cargas.txt"
Kill App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt"
cboAparatosCorr.Text = "-Elegir Oficina-"
txtIgAparatos.Text = ""
txtshg.Text = ""
txtlhg.Text = ""
End If
Call Form_Load
End Sub

Private Sub cmdGuardarEquipos_Click()


If cboEquiposCorr.Text = "" Or cboColocacion.Text = "" Or txtPotenciaEquipos.Text = "" Or txtEfici
enciaEquipos.Text = "" Or txtusoEquipo.Text = "" Or txtIgEquipos.Text = "" Then
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else
Oficina = cboEquiposCorr.Text
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Le
n = Len(datos)

Cargas - 6

Do While Not EOF(1)


Get #1, , datos
If UCase(Left(datos.TVar, 1)) = "O" Then
If datos.nombamb = Oficina Then
Uma = datos.UmaAt
End If
End If
Loop
Close #1
Dim n_eqp As Long
n_eqp = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt")
If n_eqp - 1 = 0 Then n_eqp = n_eqp + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Get #1, n_eqp - 1, datos
Close #1
datos.TVar = "CARGA"
datos.tcarga = "EQUIPOTENCIA"
datos.UmaAt = Uma
datos.Ofcorr = cboEquiposCorr.Text
datos.potencia = txtPotenciaEquipos.Text
datos.eficiencia = txtEficienciaEquipos.Text
datos.uso = txtusoEquipo.Text
datos.colocacion = cboColocacion.Text
datos.Tcolocacion = txtTcolocacion.Text
datos.inicio = cboInicioEquipos.Text
datos.duracion = cboDuracionEquipos.Text
datos.IgEquipos = txtIgEquipos.Text
datos.borrado = Check7.Value
datos.id = ListView3.SelectedItem.SubItems(1)
datos.salto = vbCrLf
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Put #1, ListView3.SelectedItem.SubItems(1) + 1, datos
Close #1
Dim n_cont As Integer
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len
= Len(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt" For Random As #2 Len = Len(datos
)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
On Error Resume Next
Kill App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt"
FileCopy App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt", App.Path & "/" & Trim(Direc
torio) & "/Datos/Cargas.txt"
Kill App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt"
cboEquiposCorr.Text = "-Elegir Oficina-"
txtPotenciaEquipos.Text = ""
txtEficienciaEquipos.Text = ""
txtusoEquipo.Text = ""
txtIgEquipos.Text = ""
cboColocacion.Text = ""
txtTcolocacion.Text = ""
End If
Call Form_Load
Call cboColocacion_click
End Sub

Private Sub cmdGuardarLuces_Click()


If txtPotLuces.Text = "" Or txtporcionluces.Text = "" Or txtCoefDiseoluces.Text = "" Or cboLucesC
orr.Text = "" Then
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else
Oficina = cboLucesCorr.Text

Cargas - 7

Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Le
n = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If UCase(Left(datos.TVar, 1)) = "O" Then
If datos.nombamb = Oficina Then
Uma = datos.UmaAt
End If
End If
Loop
Close #1
Dim n_luc As Long
n_luc = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt")
If n_luc - 1 = 0 Then n_luc = n_luc + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Get #1, n_luc - 1, datos
Close #1
datos.TVar = "CARGA"
datos.tcarga = "LUCES"
datos.UmaAt = Uma
datos.Ofcorr = cboLucesCorr.Text
datos.Potluces = txtPotLuces.Text
datos.uso = txtporcionluces.Text
datos.tipoluces = cboLuces.Text
datos.inicio = cboinicioluces.Text
datos.duracion = cboDuracionluces.Text
datos.coefdis = txtCoefDiseoluces.Text
datos.borrado = Check5.Value
datos.id = ListView3.SelectedItem.SubItems(1)
datos.salto = vbCrLf
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Put #1, ListView3.SelectedItem.SubItems(1) + 1, datos
Close #1
Dim n_cont As Integer
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len
= Len(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt" For Random As #2 Len = Len(datos
)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
On Error Resume Next
Kill App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt"
FileCopy App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt", App.Path & "/" & Trim(Direc
torio) & "/Datos/Cargas.txt"
Kill App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt"
cboLucesCorr.Text = "-Elegir Oficina-"
txtPotLuces.Text = ""
txtporcionluces.Text = ""
txtCoefDiseoluces.Text = ""
End If
Call Form_Load
End Sub

Private Sub cmdGuardarPared_Click()


If txtIgPared.Text = "" Or txtUcoefPar.Text = "" Or txtareapared.Text = "" Or txtcoefcolor.Text =
"" Or cboParedCorr.Text = "" Then
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else
Oficina = cboParedCorr.Text
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Le
n = Len(datos)
Do While Not EOF(1)
Get #1, , datos

Cargas - 8
If UCase(Left(datos.TVar, 1)) = "O" Then
If datos.nombamb = Oficina Then
Uma = datos.UmaAt
Text1.Text = datos.Tso
Text2.Text = datos.Textd
End If
End If

Loop
Close #1
Dim n_pare As Long
n_pare = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt")
If n_pare - 1 = 0 Then n_pare = n_pare + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Get #1, n_pare - 1, datos
Close #1
datos.TVar = "CARGA"
datos.tcarga = "PARED"
datos.UmaAt = Uma
datos.Ofcorr = cboParedCorr.Text
datos.IgPar = txtIgPared.Text
datos.Ucoef = txtUcoefPar.Text
datos.area = txtareapared.Text
datos.color = txtcoefcolor.Text
datos.Grupo = txtgrupo.Text
datos.fte = txtTimeLag.Text
datos.orientacion = cboOrientacion.Text
datos.inercia = txtdecfact.Text
datos.Tso = Text1.Text
datos.Textd = Text2.Text
datos.borrado = Check2.Value
datos.id = ListView3.SelectedItem.SubItems(1)
datos.salto = vbCrLf
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Put #1, ListView3.SelectedItem.SubItems(1) + 1, datos
Close #1
Dim n_cont As Integer
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len
= Len(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt" For Random As #2 Len = Len(datos
)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
On Error Resume Next
Kill App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt"
FileCopy App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt", App.Path & "/" & Trim(Direc
torio) & "/Datos/Cargas.txt"
Kill App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt"
cboParedCorr.Text = "-Elegir Oficina-"
txtIgPared.Text = ""
txtUcoefPar.Text = ""
txtareapared.Text = ""
txtcoefcolor.Text = ""
txtdecfact.Text = ""
txtTimeLag.Text = ""
End If
Call Form_Load
End Sub

Private Sub cmdGuardarParticion_Click()


If txtIgPartic.Text = "" Or txtUcoefPartic.Text = "" Or txtAreaPartic.Text = "" Or txtTAdyacente.T
ext = "" Or cboParticionCorr.Text = "" Or txtTofic.Text = "" Then
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else

Cargas - 9

Oficina = cboParticionCorr.Text
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Le
n = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If UCase(Left(datos.TVar, 1)) = "O" Then
If datos.nombamb = Oficina Then
Uma = datos.UmaAt
End If
End If
Loop
Close #1
Dim n_part As Long
n_part = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt")
If n_part - 1 = 0 Then n_part = n_part + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Get #1, n_part - 1, datos
Close #1
datos.TVar = "CARGA"
If TabStrip3.SelectedItem = "Particin" Then
datos.tcarga = "PARTICION"
End If
If TabStrip3.SelectedItem = "Piso" Then
datos.tcarga = "PISO"
End If

If TabStrip3.SelectedItem = "Techo Interno" Then


datos.tcarga = "TECHO INTERNO"
End If
datos.UmaAt = Uma
datos.Ofcorr = cboParticionCorr.Text
datos.IgPart = txtIgPartic.Text
datos.Ucoef = txtUcoefPartic.Text
datos.area = txtAreaPartic.Text
datos.TAdyacente = txtTAdyacente.Text
datos.Tso = txtTofic.Text
datos.borrado = Check4.Value
datos.id = ListView3.SelectedItem.SubItems(1)
datos.salto = vbCrLf
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Put #1, ListView3.SelectedItem.SubItems(1) + 1, datos
Close #1
Dim n_cont As Integer
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len
= Len(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt" For Random As #2 Len = Len(datos
)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
On Error Resume Next
Kill App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt"
FileCopy App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt", App.Path & "/" & Trim(Direc
torio) & "/Datos/Cargas.txt"
Kill App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt"
cboParticionCorr.Text = "-Elegir Oficina-"
txtIgPartic.Text = ""
txtUcoefPartic.Text = ""
txtAreaPartic.Text = ""
txtTAdyacente.Text = ""
txtTofic.Text = ""
End If
Call Form_Load

Cargas - 10
End Sub

Private Sub cmdGuardarPersonas_Click()


If txtnropersonas.Text = "" Or txtlhgpersonas.Text = "" Or txtshgpersonas.Text = "" Or cboPersonCo
rr.Text = "" Then
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else
Oficina = cboPersonCorr.Text
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Le
n = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If UCase(Left(datos.TVar, 1)) = "O" Then
If datos.nombamb = Oficina Then
Uma = datos.UmaAt
End If
End If
Loop
Close #1
Dim n_per As Long
n_per = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt")
If n_per - 1 = 0 Then n_per = n_per + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Get #1, n_per - 1, datos
Close #1
datos.TVar = "CARGA"
datos.tcarga = "PERSONAS"
datos.UmaAt = Uma
datos.Ofcorr = cboPersonCorr.Text
datos.shg = txtshgpersonas.Text
datos.lhg = txtlhgpersonas.Text
datos.inicio = cboentrada.Text
datos.duracion = cbopermanencia.Text
datos.cantpersonas = txtnropersonas.Text
datos.borrado = Check8.Value
datos.id = ListView3.SelectedItem.SubItems(1)
datos.salto = vbCrLf
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Put #1, ListView3.SelectedItem.SubItems(1) + 1, datos
Close #1
Dim n_cont As Integer
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len
= Len(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt" For Random As #2 Len = Len(datos
)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
On Error Resume Next
Kill App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt"
FileCopy App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt", App.Path & "/" & Trim(Direc
torio) & "/Datos/Cargas.txt"
Kill App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt"
cboPersonCorr.Text = "-Elegir Oficina-"
txtshgpersonas = ""
txtlhgpersonas.Text = ""
txtnropersonas.Text = ""
End If
Call Form_Load
End Sub

Private Sub cmdGuardartecho_Click()


If cbocorrtecho.Text = "" Or txtTitech.Text = "" Or txtucoef.Text = "" Or txtarea.Text = "" Or txt
techcoef.Text = "" Or txtfte.Text = "" Then

Cargas - 11
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else

Oficina = cbocorrtecho.Text
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Le
n = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If UCase(Left(datos.TVar, 1)) = "O" Then
If datos.nombamb = Oficina Then
Uma = datos.UmaAt
Text1.Text = datos.Tso
Text2.Text = datos.Textd
End If
End If
Loop
Close #1
n_tech = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt")
If n_tech - 1 = 0 Then n_tech = n_tech + 1
Open App.Path & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Get #1, n_tech - 1, datos
Close #1
datos.TVar = "CARGA"
datos.tcarga = "TECHO"
datos.UmaAt = Uma
datos.Ofcorr = cbocorrtecho.Text
datos.Ucoef = txtucoef.Text
datos.area = txtarea.Text
datos.color = txttechcoef.Text
datos.fte = txtfte.Text
datos.inercia = txtdf.Text
datos.cielo = cbocielo.Text
datos.titech = txtTitech.Text
datos.Tso = Text1.Text
datos.Textd = Text2.Text
datos.borrado = Check1.Value
datos.id = ListView3.SelectedItem.SubItems(1)
datos.salto = vbCrLf
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Put #1, (ListView3.SelectedItem.SubItems(1) + 1), datos
Close #1
Dim n_cont As Integer
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len
= Len(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt" For Random As #2 Len = Len(datos
)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
On Error Resume Next
Kill App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt"
FileCopy App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt", App.Path & "/" & Trim(Direc
torio) & "/Datos/Cargas.txt"
Kill App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt"
txtcanttech.Text = n_tech - 1
txtucoef.Text = ""
txtarea.Text = ""
txttechcoef.Text = ""
txtfte.Text = ""
txtdf.Text = ""
End If
Call Form_Load
End Sub
Private Sub cmdGuardarTodo_Click()

Cargas - 12

Dim n_cont As Integer


n_uma = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt")
n_ofi = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt")
n_carg = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt")
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random Access Read As #1 Len = Len(
datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/General.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len =
Len(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/General.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len = Le
n(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/General.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
End
End Sub

Private Sub cmdGuardarVidrio_Click()


If txtIgvid.Text = "" Or txtucoefvid.Text = "" Or txtareavidrio.Text = "" Or txtcoefaten.Text = ""
Or cboVidrioCorr.Text = "" Then
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else
Oficina = cboVidrioCorr.Text
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Le
n = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If UCase(Left(datos.TVar, 1)) = "O" Then
If datos.nombamb = Oficina Then
Uma = datos.UmaAt
Text1.Text = datos.Tso
Text2.Text = datos.Textd
End If
End If
Loop
Close #1
Dim n_vid As Long
n_vid = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt")
If n_vid - 1 = 0 Then n_vid = n_vid + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Get #1, n_vid - 1, datos
Close #1

Cargas - 13

datos.TVar = "CARGA"
datos.tcarga = "VIDRIO"
datos.UmaAt = Uma
datos.Ofcorr = cboVidrioCorr.Text
datos.igvid = txtIgvid.Text
datos.Ucoef = txtucoefvid.Text
datos.area = txtareavidrio.Text
datos.Atenuacion = txtcoefaten.Text
datos.orientacion = cboorientacionvidrio.Text
datos.Tso = Text1.Text
datos.Textd = Text2.Text
datos.borrado = Check3.Value
datos.id = ListView3.SelectedItem.SubItems(1)
datos.salto = vbCrLf
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Put #1, ListView3.SelectedItem.SubItems(1) + 1, datos
Close #1
Dim n_cont As Integer
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len
= Len(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt" For Random As #2 Len = Len(datos
)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
On Error Resume Next
Kill App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt"
FileCopy App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt", App.Path & "/" & Trim(Direc
torio) & "/Datos/Cargas.txt"
Kill App.Path & "/" & Trim(Directorio) & "/Datos/nCargas.txt"
'Limpia las casillas de Texto
cboVidrioCorr.Text = "-Elegir Oficina-"
txtIgvid.Text = ""
txtucoefvid.Text = ""
txtareavidrio.Text = ""
txtcoefaten.Text = ""
txtconstamb.Text = ""
Text1.Text = ""
Text2.Text = ""
End If
Call Form_Load
End Sub

Private Sub cmdLuces_Click()


ListView3.ListItems.Clear
If txtPotLuces.Text = "" Or txtporcionluces.Text = "" Or txtCoefDiseoluces.Text = "" Or cboLucesC
orr.Text = "" Then
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else
Oficina = cboLucesCorr.Text
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Le
n = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If UCase(Left(datos.TVar, 1)) = "O" Then
If datos.nombamb = Oficina Then
Uma = datos.UmaAt
End If
End If
Loop
Close #1
Dim n_luc As Long
n_luc = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt")
If n_luc - 1 = 0 Then n_luc = n_luc + 1

Cargas - 14

Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Get #1, n_luc - 1, datos
Close #1
If n_luc > 30 Then
MsgBox "No se pueden agregar ms de cinco (30) Cargas para esta versin del programa"
Else
datos.TVar = "CARGA"
datos.tcarga = "LUCES"
datos.UmaAt = Uma
datos.Ofcorr = cboLucesCorr.Text
datos.Potluces = txtPotLuces.Text
datos.uso = txtporcionluces.Text
datos.tipoluces = cboLuces.Text
datos.inicio = cboinicioluces.Text
datos.duracion = cboDuracionluces.Text
datos.coefdis = txtCoefDiseoluces.Text
datos.borrado = 1
datos.id = datos.id + 1
datos.salto = vbCrLf
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Put #1, n_luc, datos
Close #1
cboLucesCorr.Text = "-Elegir Oficina-"
txtPotLuces.Text = ""
txtporcionluces.Text = ""
txtCoefDiseoluces.Text = ""
End If
End If
Call Form_Load
End Sub

Private Sub cmdPared_Click()


ListView3.ListItems.Clear
If txtIgPared.Text = "" Or txtUcoefPar.Text = "" Or txtareapared.Text = "" Or txtcoefcolor.Text =
"" Or cboParedCorr.Text = "" Then
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else
Oficina = cboParedCorr.Text
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Le
n = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If UCase(Left(datos.TVar, 1)) = "O" Then
If datos.nombamb = Oficina Then
Uma = datos.UmaAt
Text1.Text = datos.Tso
Text2.Text = datos.Textd
End If
End If
Loop
Close #1
Dim n_pare As Long
n_pare = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt")
If n_pare - 1 = 0 Then n_pare = n_pare + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Get #1, n_pare - 1, datos
Close #1
If n_pare > 30 Then
MsgBox "No se pueden agregar ms de cinco (30) Cargas para esta versin del programa"
Else
datos.TVar = "CARGA"
datos.tcarga = "PARED"
datos.UmaAt = Uma
datos.Ofcorr = cboParedCorr.Text
datos.IgPar = txtIgPared.Text
datos.Ucoef = txtUcoefPar.Text
datos.area = txtareapared.Text
datos.color = txtcoefcolor.Text
datos.Grupo = txtgrupo.Text
datos.orientacion = cboOrientacion.Text
datos.fte = txtTimeLag.Text

Cargas - 15

datos.inercia = txtdecfact.Text
datos.Tso = Text1.Text
datos.Textd = Text2.Text
datos.borrado = 1
datos.id = datos.id + 1
datos.salto = vbCrLf
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Put #1, n_pare, datos
Close #1
cboParedCorr.Text = "-Elegir Oficina-"
txtIgPared.Text = ""
txtUcoefPar.Text = ""
txtareapared.Text = ""
txtcoefcolor.Text = ""
txtdecfact.Text = ""
txtTimeLag.Text = ""
End If
End If
Call Form_Load
End Sub

Private Sub cmdParticion_Click()


ListView3.ListItems.Clear
If txtIgPartic.Text = "" Or txtUcoefPartic.Text = "" Or txtAreaPartic.Text = "" Or txtTAdyacente.T
ext = "" Or cboParticionCorr.Text = "" Or txtTofic.Text = "" Then
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else
Oficina = cboParticionCorr.Text
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Le
n = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If UCase(Left(datos.TVar, 1)) = "O" Then
If datos.nombamb = Oficina Then
Uma = datos.UmaAt
End If
End If
Loop
Close #1
Dim n_part As Long
n_part = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt")
If n_part - 1 = 0 Then n_part = n_part + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Get #1, n_part - 1, datos
Close #1
If n_part > 30 Then
MsgBox "No se pueden agregar ms de cinco (30) Cargas para esta versin del programa"
Else
datos.TVar = "CARGA"
If TabStrip3.SelectedItem = "Particin" Then
datos.tcarga = "PARTICION"
End If
If TabStrip3.SelectedItem = "Piso" Then
datos.tcarga = "PISO"
End If

If TabStrip3.SelectedItem = "Techo Interno" Then


datos.tcarga = "TECHO INTERNO"
End If
datos.UmaAt = Uma
datos.Ofcorr = cboParticionCorr.Text
datos.IgPart = txtIgPartic.Text
datos.Ucoef = txtUcoefPartic.Text
datos.area = txtAreaPartic.Text
datos.TAdyacente = txtTAdyacente.Text
datos.Tso = txtTofic.Text
datos.borrado = 1
datos.id = datos.id + 1
datos.salto = vbCrLf
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)

Cargas - 16
Put #1, n_part, datos
Close #1
cboParticionCorr.Text = "-Elegir Oficina-"
txtIgPartic.Text = ""
txtUcoefPartic.Text = ""
txtAreaPartic.Text = ""
txtTAdyacente.Text = ""
txtTofic.Text = ""
End If
End If
Call Form_Load
End Sub

Private Sub cmdPersonas_Click()


ListView3.ListItems.Clear
If txtnropersonas.Text = "" Or txtlhgpersonas.Text = "" Or txtshgpersonas.Text = "" Or cboPersonCo
rr.Text = "" Then
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else
Oficina = cboPersonCorr.Text
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Le
n = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If UCase(Left(datos.TVar, 1)) = "O" Then
If datos.nombamb = Oficina Then
Uma = datos.UmaAt
End If
End If
Loop
Close #1
Dim n_per As Long
n_per = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt")
If n_per - 1 = 0 Then n_per = n_per + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Get #1, n_per - 1, datos
Close #1
If n_per > 30 Then
MsgBox "No se pueden agregar ms de cinco (30) Cargas para esta versin del programa"
Else
datos.TVar = "CARGA"
datos.tcarga = "PERSONAS"
datos.UmaAt = Uma
datos.Ofcorr = cboPersonCorr.Text
datos.shg = txtshgpersonas.Text
datos.lhg = txtlhgpersonas.Text
datos.inicio = cboentrada.Text
datos.duracion = cbopermanencia.Text
datos.cantpersonas = txtnropersonas.Text
datos.borrado = 1
datos.id = datos.id + 1
datos.salto = vbCrLf
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Put #1, n_per, datos
Close #1
cboPersonCorr.Text = "-Elegir Oficina-"
txtshgpersonas = ""
txtlhgpersonas.Text = ""
txtnropersonas.Text = ""
End If
End If
Call Form_Load
End Sub
Private Sub cmdSalir_Click()
End
End Sub

Private Sub cmdTecho_Click()


ListView3.ListItems.Clear
If cbocorrtecho.Text = "" Or txtTitech.Text = "" Or txtucoef.Text = "" Or txtarea.Text = "" Or txt

Cargas - 17

techcoef.Text = "" Or txtfte.Text = "" Then


MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else
Oficina = cbocorrtecho.Text
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Le
n = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If UCase(Left(datos.TVar, 1)) = "O" Then
If datos.nombamb = Oficina Then
Uma = datos.UmaAt
Text1.Text = datos.Tso
Text2.Text = datos.Textd
End If
End If
Loop
Close #1
n_tech = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt")
If n_tech - 1 = 0 Then n_tech = n_tech + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Get #1, n_tech - 1, datos
Close #1
If n_tech > 30 Then
MsgBox "No se pueden agregar ms de cinco (30) Cargas para esta versin del programa"
Else
datos.TVar = "CARGA"
datos.tcarga = "TECHO"
datos.UmaAt = Uma
datos.Ofcorr = cbocorrtecho.Text
datos.Ucoef = txtucoef.Text
datos.area = txtarea.Text
datos.color = txttechcoef.Text
datos.fte = txtfte.Text
datos.inercia = txtdf.Text
datos.cielo = cbocielo.Text
datos.titech = txtTitech.Text
datos.Tso = Text1.Text
datos.Textd = Text2.Text
datos.borrado = 1
datos.id = datos.id + 1
datos.salto = vbCrLf
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Put #1, n_tech, datos
Close #1
cbocorrtecho.Text = "-Elegir Oficina-"
txtucoef.Text = ""
txtarea.Text = ""
txttechcoef.Text = ""
txtfte.Text = ""
txtdf.Text = ""
End If
End If
Call Form_Load
End Sub
Private Sub cmdTipos_Click()
frmTipos.Visible = True
End Sub

Private Sub cmdVidrio_Click()


ListView3.ListItems.Clear
If txtIgvid.Text = "" Or txtucoefvid.Text = "" Or txtareavidrio.Text = "" Or txtcoefaten.Text = ""
Or cboVidrioCorr.Text = "" Then
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else
Oficina = cboVidrioCorr.Text
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Le
n = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If UCase(Left(datos.TVar, 1)) = "O" Then

Cargas - 18
If datos.nombamb = Oficina Then
Uma = datos.UmaAt
End If
End If

Loop
Close #1
Dim n_vid As Long
n_vid = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt")
If n_vid - 1 = 0 Then n_vid = n_vid + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Get #1, n_vid - 1, datos
Close #1
If n_vid > 30 Then
MsgBox "No se pueden agregar ms de cinco (30) Cargas para esta versin del programa"
Else
datos.TVar = "CARGA"
datos.tcarga = "VIDRIO"
datos.UmaAt = Uma
datos.Ofcorr = cboVidrioCorr.Text
datos.igvid = txtIgvid.Text
datos.Ucoef = txtucoefvid.Text
datos.area = txtareavidrio.Text
datos.Atenuacion = txtcoefaten.Text
datos.orientacion = cboorientacionvidrio.Text
datos.Tso = Text1.Text
datos.Textd = Text2.Text
datos.borrado = 1
datos.id = datos.id + 1
datos.salto = vbCrLf
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random As #1 Len = Len(datos)
Put #1, n_vid, datos
Close #1
cboVidrioCorr.Text = "-Elegir Oficina-"
txtIgvid.Text = ""
txtucoefvid.Text = ""
txtareavidrio.Text = ""
txtcoefaten.Text = ""
Text1.Text = ""
Text2.Text = ""
End If
End If
Call Form_Load
End Sub
Private Sub equipoten_Click()
frmTipos.Visible = False
End Sub
Private Sub Form_Load()
tabstrip1.Tabs.Item(6).Selected = True
Directorio = DatosGenerales.txtTituloProyecto.Text
Call TabStrip3_click
End Sub
Private Sub frmTipos_click()
frmTipos.Visible = False
End Sub
Private Sub ListView3_dblclick()
frmTipos.Visible = False
If TabStrip3.SelectedItem = "Techo" Then
cmdGuardartecho.Visible = True
Check1.Visible = True
cmdTecho.Visible = False
Check1.Value = 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Binary Access Read As #1 Len
= Len(datos)
Get #1, (ListView3.SelectedItem.SubItems(1) * Len(datos)) + 1, datos
Close #1
cbocorrtecho.Text = Trim(datos.Ofcorr)
txtucoef.Text = Trim(datos.Ucoef)

Cargas - 19
txtarea.Text = Trim(datos.area)
txttechcoef.Text = Trim(datos.color)
txtfte.Text = Trim(datos.fte)
txtdf.Text = Trim(datos.inercia)
cbocielo.Text = Trim(datos.cielo)
txtTitech.Text = Trim(datos.titech)
Text1.Text = Trim(datos.Tso)
Text2.Text = Trim(datos.Textd)
End If
If TabStrip3.SelectedItem = "Pared" Then
cmdGuardarPared.Visible = True
Check2.Visible = True
cmdPared.Visible = False
Check2.Value = 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Binary Access Read As #1 Len
= Len(datos)
Get #1, (ListView3.SelectedItem.SubItems(1) * Len(datos)) + 1, datos
Close #1
cboParedCorr.Text = Trim(datos.Ofcorr)
txtIgPared.Text = Trim(datos.IgPar)
txtUcoefPar.Text = Trim(datos.Ucoef)
txtareapared.Text = Trim(datos.area)
txtcoefcolor.Text = Trim(datos.color)
txtgrupo.Text = Trim(datos.Grupo)
cboOrientacion.Text = Trim(datos.orientacion)
Text1.Text = Trim(datos.Tso)
Text2.Text = Trim(datos.Textd)
txtdecfact.Text = Trim(datos.inercia)
txtTimeLag.Text = Trim(datos.fte)
End If
If TabStrip3.SelectedItem = "Vidrio" Then
cmdGuardarVidrio.Visible = True
Check3.Visible = True
cmdVidrio.Visible = False
Check3.Value = 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Binary Access Read As #1 Len
= Len(datos)
Get #1, (ListView3.SelectedItem.SubItems(1) * Len(datos)) + 1, datos
Close #1
cboVidrioCorr.Text = Trim(datos.Ofcorr)
txtIgvid.Text = Trim(datos.igvid)
txtucoefvid.Text = Trim(datos.Ucoef)
txtareavidrio.Text = Trim(datos.area)
txtcoefaten.Text = Trim(datos.Atenuacion)
cboorientacionvidrio.Text = Trim(datos.orientacion)
Text1.Text = Trim(datos.Tso)
Text2.Text = Trim(datos.Textd)
End If

If TabStrip3.SelectedItem = "Particin" Or TabStrip3.SelectedItem = "Piso" Or TabStrip3.SelectedIt


em = "Techo Interno" Then
cmdGuardarParticion.Visible = True
Check4.Visible = True
cmdParticion.Visible = False
Check4.Value = 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Binary Access Read As #1 Len
= Len(datos)
Get #1, (ListView3.SelectedItem.SubItems(1) * Len(datos)) + 1, datos
Close #1
cboParticionCorr.Text = Trim(datos.Ofcorr)
txtIgPartic.Text = Trim(datos.IgPart)
txtUcoefPartic.Text = Trim(datos.Ucoef)
txtAreaPartic.Text = Trim(datos.area)
txtTAdyacente.Text = Trim(datos.TAdyacente)
txtTofic.Text = Trim(datos.Tso)
End If
If TabStrip3.SelectedItem = "Luces" Then
cmdGuardarLuces.Visible = True

Cargas - 20
Check5.Visible = True
cmdLuces.Visible = False
Check5.Value = 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Binary Access Read As #1 Len
= Len(datos)
Get #1, (ListView3.SelectedItem.SubItems(1) * Len(datos)) + 1, datos
Close #1
cboLucesCorr.Text = Trim(datos.Ofcorr)
txtPotLuces.Text = Trim(datos.Potluces)
txtporcionluces.Text = Trim(datos.uso)
cboLuces.Text = Trim(datos.tipoluces)
cboinicioluces.Text = Trim(datos.inicio)
cboDuracionluces.Text = Trim(datos.duracion)
txtCoefDiseoluces.Text = Trim(datos.coefdis)
End If
If TabStrip3.SelectedItem = "Aparatos" Then
cmdGuardarAparatos.Visible = True
Check6.Visible = True
cmdAparato.Visible = False
Check6.Value = 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Binary Access Read As #1 Len
= Len(datos)
Get #1, (ListView3.SelectedItem.SubItems(1) * Len(datos)) + 1, datos
Close #1
cboAparatosCorr.Text = Trim(datos.Ofcorr)
txtIgAparatos.Text = Trim(datos.Igaparatos)
txtshg.Text = Trim(datos.shg)
txtlhg.Text = Trim(datos.lhg)
cboinicioaparatos.Text = Trim(datos.inicio)
cboduracionaparatos.Text = Trim(datos.duracion)
cbocampanaaparatos.Text = Trim(datos.Campana)
End If
If TabStrip3.SelectedItem = "Equipos de Potencia" Then
cmdGuardarEquipos.Visible = True
Check7.Visible = True
Check7.Value = 1
cmdEquipos.Visible = False
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Binary Access Read As #1 Len
= Len(datos)
Get #1, (ListView3.SelectedItem.SubItems(1) * Len(datos)) + 1, datos
Close #1
cboEquiposCorr.Text = Trim(datos.Ofcorr)
txtPotenciaEquipos.Text = Trim(datos.potencia)
txtEficienciaEquipos.Text = Trim(datos.eficiencia)
txtusoEquipo.Text = Trim(datos.uso)
cboColocacion.Text = Trim(datos.colocacion)
txtTcolocacion.Text = Trim(datos.Tcolocacion)
cboInicioEquipos.Text = Trim(datos.inicio)
cboDuracionEquipos.Text = Trim(datos.duracion)
txtIgEquipos.Text = Trim(datos.IgEquipos)
End If
If TabStrip3.SelectedItem = "Personas" Then
cmdGuardarPersonas.Visible = True
Check8.Visible = True
cmdPersonas.Visible = False
Check8.Value = 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Binary Access Read As #1 Len
= Len(datos)
Get #1, (ListView3.SelectedItem.SubItems(1) * Len(datos)) + 1, datos
Close #1
txtnropersonas.Text = Trim(datos.cantpersonas)
txtshgpersonas.Text = Trim(datos.shg)
txtlhgpersonas.Text = Trim(datos.lhg)
cboentrada.Text = Trim(datos.inicio)
cbopermanencia.Text = Trim(datos.duracion)
cboPersonCorr.Text = Trim(datos.Ofcorr)
End If
End Sub

Cargas - 21
Private Sub TabStrip1_Click()
If tabstrip1.SelectedItem = "Inicio" Then
inicio.Show
Me.Hide
tabstrip1.Tabs.Item(6).Selected = False
End If
If tabstrip1.SelectedItem = "Datos Generales" Then
DatosGenerales.Show
Me.Hide
tabstrip1.Tabs.Item(6).Selected = False
End If
If tabstrip1.SelectedItem = "Condiciones Exteriores" Then
CondicionesExteriores.Show
Me.Hide
tabstrip1.Tabs.Item(6).Selected = False
End If
If tabstrip1.SelectedItem = "Condiciones de la(s) UMA(s)" Then
CondicionesUma.Show
Me.Hide
tabstrip1.Tabs.Item(6).Selected = False
End If
If tabstrip1.SelectedItem = "Condiciones de Ambiente(s)" Then
CondicionesOficina.Show
Me.Hide
tabstrip1.Tabs.Item(6).Selected = False
End If
End Sub
Private Sub TabStrip3_click()
canttech = 0
cantpared = 0
cantvid = 0
cantpart = 0
cantpiso = 0
canttechint = 0
cantluces = 0
cantapara = 0
cantequipos = 0
cantpersonas = 0
ListView3.ListItems.Clear
frmTipos.Visible = False
txtCoefDiseoluces.Locked = True
txtCoefDiseoluces.BackColor = &H80000011
If TabStrip3.SelectedItem = "Techo" Then
techo.Visible = True
pared.Visible = False
vidrio.Visible = False
particion.Visible = False
luces.Visible = False
aparatos.Visible = False
equipoten.Visible = False
personas.Visible = False
cmdGuardartecho.Visible = False
Check1.Visible = False
cmdTecho.Visible = True
ListView3.ColumnHeaders.Clear
ListView3.ColumnHeaders.Add , "ID", "ID", 0
ListView3.ColumnHeaders.Add , "PK", "PK", 0
ListView3.ColumnHeaders.Add , "Tcar", "Tipo de Carga", 1700, 2
ListView3.ColumnHeaders.Add , "U", "Coef. Transf.", 1300, 2
ListView3.ColumnHeaders.Add , "Area", "rea", 700, 2
ListView3.ColumnHeaders.Add , "Ctech", "Coef. Techo", 1200, 2
ListView3.ColumnHeaders.Add , "fte", "TL [h]", 700, 2
ListView3.ColumnHeaders.Add , "cielo", "Cielo Raso", 1200, 2
ListView3.ColumnHeaders.Add , "tipo", "Tipo Techo", 1200, 2
ListView3.ColumnHeaders.Add , "Perte", "Oficina", 2300, 2

Cargas - 22
Dim itmX As ListItem
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len
= Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.tcarga, 13)) = "TECHO
" And datos.borrado = 1 Then
Set itmX = ListView3.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.tcarga)
itmX.SubItems(3) = Trim(datos.Ucoef)
itmX.SubItems(4) = Trim(datos.area)
itmX.SubItems(5) = Trim(datos.color)
itmX.SubItems(6) = Trim(datos.fte)
itmX.SubItems(7) = Trim(datos.cielo)
itmX.SubItems(8) = Trim(datos.titech)
itmX.SubItems(9) = Trim(datos.Ofcorr)
Set itmX = Nothing
canttech = canttech + 1
End If
Loop
Close #1
txtcanttech.Text = canttech
End If
If TabStrip3.SelectedItem = "Pared" Then
techo.Visible = False
pared.Visible = True
vidrio.Visible = False
particion.Visible = False
luces.Visible = False
aparatos.Visible = False
equipoten.Visible = False
personas.Visible = False
cmdGuardarPared.Visible = False
Check2.Visible = False
cmdPared.Visible = True
ListView3.ColumnHeaders.Clear
ListView3.ColumnHeaders.Add , "ID", "ID", 0
ListView3.ColumnHeaders.Add , "PK", "PK", 0
ListView3.ColumnHeaders.Add , "tcar", "Tipo de Carga", 1700, 2
ListView3.ColumnHeaders.Add , "Coef", "Coef. Transf.", 1300, 2
ListView3.ColumnHeaders.Add , "area", "rea Pared", 1100, 2
ListView3.ColumnHeaders.Add , "coefcol", "Coef. Color", 1200, 2
ListView3.ColumnHeaders.Add , "grupo", "Grupo", 800, 2
ListView3.ColumnHeaders.Add , "orien", "Orientacion", 1100, 2
ListView3.ColumnHeaders.Add , "corr", "Oficina", 2300, 2
ListView3.ColumnHeaders.Add , "ig", "Iguales", 800, 2
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len
= Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.tcarga, 13)) = "PARED
" And datos.borrado = 1 Then
Set itmX = ListView3.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.tcarga)
itmX.SubItems(3) = Trim(datos.Ucoef)
itmX.SubItems(4) = Trim(datos.area)
itmX.SubItems(5) = Trim(datos.color)
itmX.SubItems(6) = Trim(datos.Grupo)
itmX.SubItems(7) = Trim(datos.orientacion)
itmX.SubItems(8) = Trim(datos.Ofcorr)
itmX.SubItems(9) = Trim(datos.IgPar)
Set itmX = Nothing
cantpared = cantpared + 1
End If
Loop
Close #1

Cargas - 23
txtcantpared.Text = cantpared
End If
If TabStrip3.SelectedItem = "Vidrio" Then
techo.Visible = False
pared.Visible = False
vidrio.Visible = True
particion.Visible = False
luces.Visible = False
aparatos.Visible = False
equipoten.Visible = False
personas.Visible = False
cmdGuardarVidrio.Visible = False
Check3.Visible = False
cmdVidrio.Visible = True
ListView3.ColumnHeaders.Clear
ListView3.ColumnHeaders.Add , "ID", "ID", 0
ListView3.ColumnHeaders.Add , "PK", "PK", 0
ListView3.ColumnHeaders.Add , "Carga", "Tipo de Carga", 1700, 2
ListView3.ColumnHeaders.Add , "ucoef", "Coef. Transf.", 1300, 2
ListView3.ColumnHeaders.Add , "area", "rea Vidrio", 1100, 2
ListView3.ColumnHeaders.Add , "coefat", "Atenuacin", 1100, 2
ListView3.ColumnHeaders.Add , "Orien", "Orientacin", 1100, 2
ListView3.ColumnHeaders.Add , "corr", "Oficina", 2300, 2
ListView3.ColumnHeaders.Add , "ig", "Iguales", 800, 2
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len
= Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.tcarga, 13)) = "VIDRIO
" And datos.borrado = 1 Then
Set itmX = ListView3.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.tcarga)
itmX.SubItems(3) = Trim(datos.Ucoef)
itmX.SubItems(4) = Trim(datos.area)
itmX.SubItems(5) = Trim(datos.Atenuacion)
itmX.SubItems(6) = Trim(datos.orientacion)
itmX.SubItems(7) = Trim(datos.Ofcorr)
itmX.SubItems(8) = Trim(datos.igvid)
Set itmX = Nothing
cantvid = cantvid + 1
End If
Loop
Close #1
txtcantvidrio.Text = cantvid
End If
If TabStrip3.SelectedItem = "Particin" Then
techo.Visible = False
pared.Visible = False
vidrio.Visible = False
particion.Visible = True
luces.Visible = False
aparatos.Visible = False
equipoten.Visible = False
personas.Visible = False
cmdGuardarParticion.Visible = False
Check4.Visible = False
cmdParticion.Visible = True
ListView3.ColumnHeaders.Clear
ListView3.ColumnHeaders.Add , "ID", "ID", 0
ListView3.ColumnHeaders.Add , "PK", "PK", 0
ListView3.ColumnHeaders.Add , "Carga", "Tipo de Carga", 1700, 2
ListView3.ColumnHeaders.Add , "ucoef", "Coef. Transf.", 1200, 2
ListView3.ColumnHeaders.Add , "area", "rea", 700, 2
ListView3.ColumnHeaders.Add , "to", "Temp. Ofic", 1000, 2
ListView3.ColumnHeaders.Add , "coefat", "Temp. Adyacente", 1500, 2
ListView3.ColumnHeaders.Add , "corr", "Oficina", 2300, 2
ListView3.ColumnHeaders.Add , "ig", "Iguales", 900, 2

Cargas - 24
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len
= Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.tcarga, 13)) = "PARTICION
" Then
Set itmX = ListView3.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.tcarga)
itmX.SubItems(3) = Trim(datos.Ucoef)
itmX.SubItems(4) = Trim(datos.area)
itmX.SubItems(5) = Trim(datos.Tso)
itmX.SubItems(6) = Trim(datos.TAdyacente)
itmX.SubItems(7) = Trim(datos.Ofcorr)
itmX.SubItems(8) = Trim(datos.IgPart)
Set itmX = Nothing
cantpart = cantpart + 1
End If
Loop
Close #1
txtcantparticion.Text = cantpart
End If
If TabStrip3.SelectedItem = "Piso" Then
techo.Visible = False
pared.Visible = False
vidrio.Visible = False
particion.Visible = True
luces.Visible = False
aparatos.Visible = False
equipoten.Visible = False
personas.Visible = False
cmdGuardarParticion.Visible = False
Check4.Visible = False
cmdParticion.Visible = True
ListView3.ColumnHeaders.Clear
ListView3.ColumnHeaders.Add , "ID", "ID", 0
ListView3.ColumnHeaders.Add , "PK", "PK", 0
ListView3.ColumnHeaders.Add , "Carga", "Tipo de Carga", 1700, 2
ListView3.ColumnHeaders.Add , "ucoef", "Coef. Transf.", 1200, 2
ListView3.ColumnHeaders.Add , "area", "rea", 700, 2
ListView3.ColumnHeaders.Add , "to", "Temp. Ofic", 1000, 2
ListView3.ColumnHeaders.Add , "coefat", "Temp. Adyacente", 1500, 2
ListView3.ColumnHeaders.Add , "corr", "Oficina", 2300, 2
ListView3.ColumnHeaders.Add , "ig", "Iguales", 900, 2
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len
= Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.tcarga, 13)) = "PISO
" Then
Set itmX = ListView3.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.tcarga)
itmX.SubItems(3) = Trim(datos.Ucoef)
itmX.SubItems(4) = Trim(datos.area)
itmX.SubItems(5) = Trim(datos.Tso)
itmX.SubItems(6) = Trim(datos.TAdyacente)
itmX.SubItems(7) = Trim(datos.Ofcorr)
itmX.SubItems(8) = Trim(datos.IgPart)
Set itmX = Nothing
cantpiso = cantpiso + 1
End If
Loop
Close #1
txtcantparticion.Text = cantpiso
End If
If TabStrip3.SelectedItem = "Luces" Then

Cargas - 25
techo.Visible = False
pared.Visible = False
vidrio.Visible = False
particion.Visible = False
luces.Visible = True
aparatos.Visible = False
equipoten.Visible = False
personas.Visible = False
cmdGuardarLuces.Visible = False
Check5.Visible = False
cmdLuces.Visible = True
ListView3.ColumnHeaders.Clear
ListView3.ColumnHeaders.Add , "ID", "ID", 0
ListView3.ColumnHeaders.Add , "PK", "PK", 0
ListView3.ColumnHeaders.Add , "Carga", "Tipo de Carga", 1700, 2
ListView3.ColumnHeaders.Add , "potencia", "Potencia", 1000, 2
ListView3.ColumnHeaders.Add , "uso", "% de uso", 1000, 2
ListView3.ColumnHeaders.Add , "tipo", "Tipo de Luces", 1500, 2
ListView3.ColumnHeaders.Add , "ini", "Inicio", 700, 2
ListView3.ColumnHeaders.Add , "dur", "Duracin", 900, 2
ListView3.ColumnHeaders.Add , "Coef", "Factor de Balasto", 1600, 2
ListView3.ColumnHeaders.Add , "Corr", "Oficina", 2300, 2
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len
= Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.tcarga, 13)) = "LUCES
" Then
Set itmX = ListView3.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.tcarga)
itmX.SubItems(3) = Trim(datos.Potluces)
itmX.SubItems(4) = Trim(datos.uso)
itmX.SubItems(5) = Trim(datos.tipoluces)
itmX.SubItems(6) = Trim(datos.inicio)
itmX.SubItems(7) = Trim(datos.duracion)
itmX.SubItems(8) = Trim(datos.coefdis)
itmX.SubItems(9) = Trim(datos.Ofcorr)
Set itmX = Nothing
cantluces = cantluces + 1
End If
Loop
Close #1
txtcantLuces.Text = cantluces
End If
If TabStrip3.SelectedItem = "Aparatos" Then
techo.Visible = False
pared.Visible = False
vidrio.Visible = False
particion.Visible = False
luces.Visible = False
aparatos.Visible = True
equipoten.Visible = False
personas.Visible = False
cmdGuardarAparatos.Visible = False
Check6.Visible = False
cmdAparato.Visible = True
ListView3.ColumnHeaders.Clear
ListView3.ColumnHeaders.Add , "ID", "ID", 0
ListView3.ColumnHeaders.Add , "PK", "PK", 0
ListView3.ColumnHeaders.Add , "Carga", "Tipo de Carga", 1700, 2
ListView3.ColumnHeaders.Add , "SGH", "Calor Sensible", 1300, 2
ListView3.ColumnHeaders.Add , "LGH", "Calor Latente", 1300, 2
ListView3.ColumnHeaders.Add , "ini", "Inicio", 800, 2
ListView3.ColumnHeaders.Add , "dur", "Duracin", 900, 2
ListView3.ColumnHeaders.Add , "Camp", "Campana", 900, 2
ListView3.ColumnHeaders.Add , "Corr", "Oficina", 2300, 2
ListView3.ColumnHeaders.Add , "Cant", "Cantidad", 900, 2
i = 0

Cargas - 26
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len
= Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.tcarga, 13)) = "APARATOS
" Then
Set itmX = ListView3.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.tcarga)
itmX.SubItems(3) = Trim(datos.shg)
itmX.SubItems(4) = Trim(datos.lhg)
itmX.SubItems(5) = Trim(datos.inicio)
itmX.SubItems(6) = Trim(datos.duracion)
itmX.SubItems(7) = Trim(datos.Campana)
itmX.SubItems(8) = Trim(datos.Ofcorr)
itmX.SubItems(9) = Trim(datos.Igaparatos)
Set itmX = Nothing
cantapara = cantapara + 1
End If
Loop
Close #1
txtcantapara.Text = cantapara
End If
If TabStrip3.SelectedItem = "Equipos de Potencia" Then
techo.Visible = False
pared.Visible = False
vidrio.Visible = False
particion.Visible = False
luces.Visible = False
aparatos.Visible = False
equipoten.Visible = True
personas.Visible = False
cmdGuardarEquipos.Visible = False
Check7.Visible = False
cmdEquipos.Visible = True
ListView3.ColumnHeaders.Clear
ListView3.ColumnHeaders.Add , "ID", "ID", 0
ListView3.ColumnHeaders.Add , "PK", "PK", 0
ListView3.ColumnHeaders.Add , "Carga", "Tipo de Carga", 1700, 2
ListView3.ColumnHeaders.Add , "potencia", "Potencia", 1100, 2
ListView3.ColumnHeaders.Add , "Efi", "Eficiencia", 1100, 2
ListView3.ColumnHeaders.Add , "uso", "Porcion en Uso", 1400, 2
ListView3.ColumnHeaders.Add , "col", "Colocacin", 1200, 2
ListView3.ColumnHeaders.Add , "ini", "Inicio", 700, 2
ListView3.ColumnHeaders.Add , "dur", "Duracin", 900, 2
ListView3.ColumnHeaders.Add , "Corr", "Oficina", 2300, 2
ListView3.ColumnHeaders.Add , "cant", "Cantidad", 900, 2
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len
= Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.tcarga, 13)) = "EQUIPOTENCIA " Then
Set itmX = ListView3.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.tcarga)
itmX.SubItems(3) = Trim(datos.potencia)
itmX.SubItems(4) = Trim(datos.eficiencia)
itmX.SubItems(5) = Trim(datos.uso)
itmX.SubItems(6) = Trim(datos.colocacion)
itmX.SubItems(7) = Trim(datos.inicio)
itmX.SubItems(8) = Trim(datos.duracion)
itmX.SubItems(9) = Trim(datos.Ofcorr)
itmX.SubItems(10) = Trim(datos.IgEquipos)
Set itmX = Nothing
cantequipos = cantequipos + 1
End If
Loop
Close #1

Cargas - 27
txtCantEquipos.Text = cantequipos
Call cboColocacion_click
End If
If TabStrip3.SelectedItem = "Personas" Then
techo.Visible = False
pared.Visible = False
vidrio.Visible = False
particion.Visible = False
luces.Visible = False
aparatos.Visible = False
equipoten.Visible = False
personas.Visible = True
cmdGuardarPersonas.Visible = False
Check8.Visible = False
cmdPersonas.Visible = True
ListView3.ColumnHeaders.Clear
ListView3.ColumnHeaders.Add , "ID", "ID", 0
ListView3.ColumnHeaders.Add , "PK", "PK", 0
ListView3.ColumnHeaders.Add , "Carga", "Tipo de Carga", 1700, 2
ListView3.ColumnHeaders.Add , "SGH", "Calor Sensible", 1300, 2
ListView3.ColumnHeaders.Add , "LGH", "Calor Latente", 1300, 2
ListView3.ColumnHeaders.Add , "ini", "Entrada", 900, 2
ListView3.ColumnHeaders.Add , "dur", "Permanencia", 1300, 2
ListView3.ColumnHeaders.Add , "Corr", "Oficina", 2300, 2
ListView3.ColumnHeaders.Add , "cant", "Cantidad", 900, 2
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len
= Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.tcarga, 13)) = "PERSONAS
" Then
Set itmX = ListView3.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.tcarga)
itmX.SubItems(3) = Trim(datos.shg)
itmX.SubItems(4) = Trim(datos.lhg)
itmX.SubItems(5) = Trim(datos.inicio)
itmX.SubItems(6) = Trim(datos.duracion)
itmX.SubItems(7) = Trim(datos.Ofcorr)
itmX.SubItems(8) = Trim(datos.cantpersonas)
Set itmX = Nothing
cantpersonas = cantpersonas + 1
End If
Loop
Close #1
txtcantpersonas.Text = cantpersonas
End If
If TabStrip3.SelectedItem = "Techo Interno" Then
techo.Visible = False
pared.Visible = False
vidrio.Visible = False
particion.Visible = True
luces.Visible = False
aparatos.Visible = False
equipoten.Visible = False
personas.Visible = False
cmdGuardarParticion.Visible = False
Check4.Visible = False
cmdParticion.Visible = True
ListView3.ColumnHeaders.Clear
ListView3.ColumnHeaders.Add , "ID", "ID", 0
ListView3.ColumnHeaders.Add , "PK", "PK", 0
ListView3.ColumnHeaders.Add , "Carga", "Tipo de Carga", 1700, 2
ListView3.ColumnHeaders.Add , "ucoef", "Coef. Transf.", 1200, 2
ListView3.ColumnHeaders.Add , "area", "rea", 700, 2
ListView3.ColumnHeaders.Add , "to", "Temp. Ofic", 1000, 2
ListView3.ColumnHeaders.Add , "coefat", "Temp. Adyacente", 1500, 2
ListView3.ColumnHeaders.Add , "corr", "Oficina", 2300, 2

Cargas - 28
ListView3.ColumnHeaders.Add , "ig", "Iguales", 900, 2
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len
= Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.tcarga, 13)) = "TECHO INTERNO" Then
Set itmX = ListView3.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.tcarga)
itmX.SubItems(3) = Trim(datos.Ucoef)
itmX.SubItems(4) = Trim(datos.area)
itmX.SubItems(5) = Trim(datos.Tso)
itmX.SubItems(6) = Trim(datos.TAdyacente)
itmX.SubItems(7) = Trim(datos.Ofcorr)
itmX.SubItems(8) = Trim(datos.IgPart)
Set itmX = Nothing
canttechint = canttechint + 1
End If
Loop
Close #1
txtcantparticion.Text = canttechint
End If
End Sub
Private Sub txtCoefDiseoluces_Dblclick()
txtCoefDiseoluces.Locked = False
txtCoefDiseoluces.BackColor = &H80000005
End Sub
Private Sub txtlhg_Click()
Call txtshg_click
End Sub
Private Sub txtPotenciaEquipos_click()
MotoresElectricos.Show
cboColocacion.Text = ""
End Sub
Private Sub txtshg_click()
GananciaAparatos.Show
End Sub
Private Sub txtshgpersonas_dblClick()
CalorPersona.Show
End Sub

Private Sub txtTofic_click()


If cboParticionCorr.Text = "-Elegir Oficina-" Then
MsgBox "Se debe elegir una oficina para poder saber la temperatura de la misma"
Else
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Le
n = Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.TVar, 1)) = "O" And datos.nombamb = cboParticionCorr.Text Then
txtTofic.Text = datos.Tso
End If
Loop
Close #1
End If
End Sub
Private Sub txtucoef_Click()
CoefsTecho.Show
End Sub
Private Sub txtUcoefPar_click()

Cargas - 29
CoefsPared.Show
End Sub
Private Sub txtUcoefPartic_click()
CalculoU.Show
CalculoU.Text1.Text = 0
txtUcoefPartic.BackColor = &H80000005
End Sub

Cantidad
Coeficiente
Nro.
Potencia
de equipos
Vidrios
Personas
Instalada
de transferencia
Iguales
similares
[W]
Nro. de Aparatos
elementos
Paredes
Iguales
Iguales
iguales
de Calor [W/(kg K)]
Coeficiente
Ganancia
Porcin
Potencia
en
Nominal
de
uso
deCalor
Transferencia
Sensible
[%] [W]
Coeficiente de Transferencia
de Calor
[W/(m^2
K)]
[W]
rea
Ganancia
del Techo
de calor
[m^2]
sensible
Transferencia
de
Calor
[W/(m^2
Calor K)]
Tipo
Eficiencia
de Luces de
[%]
[W]
rea
de
Superficie
Cristalina
[W/(m^2
K)]
Coeficiente
rea
Ganancia
de Pared
depor
Calor
Exterior
Color
Latente
del
[m^2]
rea dede
Ganancia
Factor
Porcion
de
Pared
reduccin
de
la calor
potencia
de Particin
Latente
en
Techo
[W]
Coeficiente
por
[m^2]
(de
uso
balasto)(tpico
de [m^2]
0 a[W]
1)
Coeficiente
de Atenuacin
Color
de
la
Pared
Tipo de Techo

TIPO A: Motor y Mquina dentro del


ambiente
Temperatura
Temperatura
Retraso
Hora
Tipo
de
de Colocacin
Temporal
Inicio
Interna
del [h]
Hora a la que entra
del
Ambiente
[C]TIPO
Ambiente
Contiguo
[C] B: Motor afuera y Mquina
Hora
de Inicio
Factor de
Decremento
dentro del ambiente
Temperatura
Temperatura
Duracin
Hora
de Inicio
Externa
del
Decremento
Grupo de Pared a la
alDuracin
Ambiente
[C] TIPO
Ambiente
[C] C: Motor dentro y Mquina fuera
Horas
que(Tiempo
permanece
que
pertenece
Cielo
Raso?
en el ambiente
encendido)
delSlo)
ambiente
Campana
Duracin
de
(Hacer Click
Orientacin
t
i
TIPO D: Motor y Mquina fuera del
ambiente
Oficina a la que
Corresponde

CoefsPared - 1
Dim datos As Tabla11
Dim datos2 As Tabla14

Private Sub Form_Load()


ListView1.ColumnHeaders.Clear
ListView1.ColumnHeaders.Add , "ID", "ID", 0
ListView1.ColumnHeaders.Add , "PK", "PK", 0
ListView1.ColumnHeaders.Add , "c", "Codigo", 800, 2
ListView1.ColumnHeaders.Add , "d", "Descripcin", 3000, 2
ListView1.ColumnHeaders.Add , "l", "L [mm]", 1000, 2
ListView1.ColumnHeaders.Add , "r", "R [(m^2*K)/W]", 1300, 2
ListView1.ListItems.Clear
Dim itmX As ListItem
i = 0
Open App.Path & "/Tablas/Tabla28_11.cfl" For Random As #1 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.Codigo, 1)) = "A" Or UCase(Left(datos.Codigo, 1)) = "B" Or UCase(Left(dato
s.Codigo, 1)) = "C" Or UCase(Left(datos.Codigo, 1)) = "D" Or UCase(Left(datos.Codigo, 1)) = "E" Then
Set itmX = ListView1.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.Codigo)
itmX.SubItems(3) = Trim(datos.Descripcion)
itmX.SubItems(4) = Trim(datos.Long)
itmX.SubItems(5) = Trim(datos.Res)
Set itmX = Nothing
End If
Loop
Close #1
ListView2.ColumnHeaders.Clear
ListView2.ColumnHeaders.Add , "ID", "ID", 0
ListView2.ColumnHeaders.Add , "PK", "PK", 0
ListView2.ColumnHeaders.Add , "c", "Tipo", 800, 2
ListView2.ColumnHeaders.Add , "d", "Descripcin", 3000, 0
ListView2.ColumnHeaders.Add , "t", "Decremento", 1200, 2
ListView2.ColumnHeaders.Add , "l", "U [W/(m^2*K)]", 1300, 2
ListView2.ColumnHeaders.Add , "r", "DF", 1000, 2
ListView2.ListItems.Clear
Dim itmx2 As ListItem
i = 0
Open App.Path & "/Tablas/Tabla28_19.cfl" For Random As #1 Len = Len(datos2)
Do While Not EOF(1)
Get #1, , datos2
i = i + 1
If UCase(Left(datos2.Descripcion, 1)) = "C" Then
Set itmx2 = ListView2.ListItems.Add(1, , datos2.id)
itmx2.SubItems(1) = i - 1
itmx2.SubItems(2) = Trim(datos2.Tipo)
itmx2.SubItems(3) = Trim(datos2.Descripcion)
itmx2.SubItems(4) = Trim(datos2.TimeL)
itmx2.SubItems(5) = Trim(datos2.Ufact)
itmx2.SubItems(6) = Trim(datos2.Decrem)
Set itmx2 = Nothing
End If
Loop
Close #1
End Sub
Private Sub ListView2_Dblclick()
Open App.Path & "/Tablas/Tabla28_19.cfl" For Binary Access Read As #1 Len = Len(datos2)
Get #1, (ListView2.SelectedItem.SubItems(1) * Len(datos2) + 1), datos2
Close #1
Cargas.txtUcoefPar.Text = Trim(datos2.Ufact)
Cargas.txtTimeLag.Text = Trim(datos2.TimeL)
Cargas.txtgrupo.Text = Trim(datos2.Tipo)
Cargas.txtdecfact.Text = Trim(datos2.Decrem)
Me.Hide
End Sub
Private Sub TabStrip1_Click()

CoefsPared - 2
If tabstrip1.SelectedItem = "Seleccin de una Pared Similar" Then
frmTabla11.Visible = True
frmTabla19.Visible = False
End If
If tabstrip1.SelectedItem = "Eleccin de una Pared Establecida" Then
frmTabla19.Visible = True
frmTabla11.Visible = False
End If
End Sub

Si el tipo de pared por capas suyo esta dentro de los de la lista, seleccionelo
haciendo doble clic

CoefsTecho - 1
Dim datos As Tabla11
Dim datos2 As Tabla14

Private Sub Form_Load()


ListView1.ColumnHeaders.Clear
ListView1.ColumnHeaders.Add , "ID", "ID", 0
ListView1.ColumnHeaders.Add , "PK", "PK", 0
ListView1.ColumnHeaders.Add , "c", "Codigo", 800, 2
ListView1.ColumnHeaders.Add , "d", "Descripcin", 3000, 2
ListView1.ColumnHeaders.Add , "l", "L [mm]", 1000, 2
ListView1.ColumnHeaders.Add , "r", "R [(m^2*K)/W]", 1300, 2
ListView1.ListItems.Clear
Dim itmX As ListItem
i = 0
Open App.Path & "/Tablas/Tabla28_11.cfl" For Random As #1 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.Codigo, 1)) = "A" Or UCase(Left(datos.Codigo, 1)) = "B" Or UCase(Left(dato
s.Codigo, 1)) = "C" Or UCase(Left(datos.Codigo, 1)) = "D" Or UCase(Left(datos.Codigo, 1)) = "E" Then
Set itmX = ListView1.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.Codigo)
itmX.SubItems(3) = Trim(datos.Descripcion)
itmX.SubItems(4) = Trim(datos.Long)
itmX.SubItems(5) = Trim(datos.Res)
Set itmX = Nothing
End If
Loop
Close #1
ListView2.ColumnHeaders.Clear
ListView2.ColumnHeaders.Add , "ID", "ID", 0
ListView2.ColumnHeaders.Add , "PK", "PK", 0
ListView2.ColumnHeaders.Add , "c", "Tipo", 800, 2
ListView2.ColumnHeaders.Add , "d", "Descripcin", 3000, 2
ListView2.ColumnHeaders.Add , "t", "Decremento", 1000, 2
ListView2.ColumnHeaders.Add , "l", "U [W/(m^2*K)]", 1300, 2
ListView2.ColumnHeaders.Add , "r", "DF", 1000, 2
ListView2.ListItems.Clear
Dim itmx2 As ListItem
i = 0
Open App.Path & "/Tablas/Tabla28_14.cfl" For Random As #1 Len = Len(datos2)
Do While Not EOF(1)
Get #1, , datos2
i = i + 1
If UCase(Left(datos2.Descripcion, 1)) = "C" Then
Set itmx2 = ListView2.ListItems.Add(1, , datos2.id)
itmx2.SubItems(1) = i - 1
itmx2.SubItems(2) = Trim(datos2.Tipo)
itmx2.SubItems(3) = Trim(datos2.Descripcion)
itmx2.SubItems(4) = Trim(datos2.TimeL)
itmx2.SubItems(5) = Trim(datos2.Ufact)
itmx2.SubItems(6) = Trim(datos2.Decrem)
Set itmx2 = Nothing
End If
Loop
Close #1
End Sub
Private Sub ListView2_Dblclick()
Open App.Path & "/Tablas/Tabla28_14.cfl" For Binary Access Read As #1 Len = Len(datos2)
Get #1, (ListView2.SelectedItem.SubItems(1) * Len(datos2) + 1), datos2
Close #1
Cargas.txtucoef.Text = Trim(datos2.Ufact)
Cargas.txtfte.Text = Trim(datos2.TimeL)
Cargas.txtTitech.Text = Trim(datos2.Tipo)
Cargas.txtdf.Text = Trim(datos2.Decrem)
Me.Hide
End Sub

CoefsTecho - 2
Private Sub TabStrip1_Click()
If tabstrip1.SelectedItem = "Seleccin de un Techo Similar" Then
frmTabla11.Visible = True
frmTabla14.Visible = False
End If
If tabstrip1.SelectedItem = "Eleccin de un Techo Establecido" Then
frmTabla14.Visible = True
frmTabla11.Visible = False
End If
End Sub

Si el tipo de techo por capas suyo esta dentro de los de la lista, seleccionelo
haciendo doble clic

CondicionesExteriores - 1
Dim datos As techo
Dim Directorio As String
Private Sub cboAnalisis_click()
Dim datos2 As climas
txtTexts.Text = ""
txtHrextg.Text = ""
txtTextpromg.Text = ""
If cboAnalisis.ListIndex = 0 Then
Open App.Path & "/Tablas/Climaticas.cfl" For Random As #1
Do While Not EOF(1)
Get #1, , datos2
If Trim(datos2.Ciudad) = Trim(txtUbicacion.Text) Then
txtHrextg.Text = Trim(datos2.HrAnual)
txtTexts.Text = Trim(datos2.TempAnual)
txtTextpromg.Text = Trim(datos2.TempAnual) - 4
End If
Loop
Close #1
End If
If cboAnalisis.ListIndex = 1 Then
Open App.Path & "/Tablas/Climaticas.cfl" For Random As #1
Do While Not EOF(1)
Get #1, , datos2
If Trim(datos2.Ciudad) = Trim(txtUbicacion.Text) Then
If Trim(datos2.Hr1) = "" Then
txtHrextg.Text = Trim(datos2.HrAnual)
Else
txtHrextg.Text = Trim(datos2.Hr1)
End If
txtTexts.Text = Trim(datos2.Temp1)
txtTextpromg.Text = Trim(datos2.Temp1) - 4
End If
Loop
Close #1
End If
If cboAnalisis.ListIndex = 2 Then
Open App.Path & "/Tablas/Climaticas.cfl" For Random As #1
Do While Not EOF(1)
Get #1, , datos2
If Trim(datos2.Ciudad) = Trim(txtUbicacion.Text) Then
If Trim(datos2.Hr2) = "" Then
txtHrextg.Text = Trim(datos2.HrAnual)
Else
txtHrextg.Text = Trim(datos2.Hr2)
End If
txtTexts.Text = Trim(datos2.Temp2)
txtTextpromg.Text = Trim(datos2.Temp2) - 4
End If
Loop
Close #1
End If
If cboAnalisis.ListIndex = 3 Then
Open App.Path & "/Tablas/Climaticas.cfl" For Random As #1
Do While Not EOF(1)
Get #1, , datos2
If Trim(datos2.Ciudad) = Trim(txtUbicacion.Text) Then
If Trim(datos2.Hr3) = "" Then
txtHrextg.Text = Trim(datos2.HrAnual)
Else
txtHrextg.Text = Trim(datos2.Hr3)
End If
txtTexts.Text = Trim(datos2.Temp3)
txtTextpromg.Text = Trim(datos2.Temp3) - 4
End If
Loop
Close #1
End If
If cboAnalisis.ListIndex = 4 Then
Open App.Path & "/Tablas/Climaticas.cfl" For Random As #1
Do While Not EOF(1)
Get #1, , datos2

Len = Len(datos2)

Len = Len(datos2)

Len = Len(datos2)

Len = Len(datos2)

Len = Len(datos2)

CondicionesExteriores - 2
If Trim(datos2.Ciudad) = Trim(txtUbicacion.Text) Then
If Trim(datos2.Hr4) = "" Then
txtHrextg.Text = Trim(datos2.HrAnual)
Else
txtHrextg.Text = Trim(datos2.Hr4)
End If
txtTexts.Text = Trim(datos2.Temp4)
txtTextpromg.Text = Trim(datos2.Temp4) - 4
End If
Loop
Close #1
End If
If cboAnalisis.ListIndex = 5 Then
Open App.Path & "/Tablas/Climaticas.cfl" For Random As #1
Do While Not EOF(1)
Get #1, , datos2
If Trim(datos2.Ciudad) = Trim(txtUbicacion.Text) Then
If Trim(datos2.Hr5) = "" Then
txtHrextg.Text = Trim(datos2.HrAnual)
Else
txtHrextg.Text = Trim(datos2.Hr5)
End If
txtTexts.Text = Trim(datos2.Temp5)
txtTextpromg.Text = Trim(datos2.Temp5) - 4
End If
Loop
Close #1
End If
If cboAnalisis.ListIndex = 6 Then
Open App.Path & "/Tablas/Climaticas.cfl" For Random As #1
Do While Not EOF(1)
Get #1, , datos2
If Trim(datos2.Ciudad) = Trim(txtUbicacion.Text) Then
If Trim(datos2.Hr6) = "" Then
txtHrextg.Text = Trim(datos2.HrAnual)
Else
txtHrextg.Text = Trim(datos2.Hr6)
End If
txtTexts.Text = Trim(datos2.Temp6)
txtTextpromg.Text = Trim(datos2.Temp6) - 4
End If
Loop
Close #1
End If
If cboAnalisis.ListIndex = 7 Then
Open App.Path & "/Tablas/Climaticas.cfl" For Random As #1
Do While Not EOF(1)
Get #1, , datos2
If Trim(datos2.Ciudad) = Trim(txtUbicacion.Text) Then
If Trim(datos2.Hr7) = "" Then
txtHrextg.Text = Trim(datos2.HrAnual)
Else
txtHrextg.Text = Trim(datos2.Hr5)
End If
txtTexts.Text = Trim(datos2.Temp7)
txtTextpromg.Text = Trim(datos2.Temp7) - 4
End If
Loop
Close #1
End If
If cboAnalisis.ListIndex = 8 Then
Open App.Path & "/Tablas/Climaticas.cfl" For Random As #1
Do While Not EOF(1)
Get #1, , datos2
If Trim(datos2.Ciudad) = Trim(txtUbicacion.Text) Then
If Trim(datos2.Hr8) = "" Then
txtHrextg.Text = Trim(datos2.HrAnual)
Else
txtHrextg.Text = Trim(datos2.Hr8)
End If
txtTexts.Text = Trim(datos2.Temp8)

Len = Len(datos2)

Len = Len(datos2)

Len = Len(datos2)

Len = Len(datos2)

CondicionesExteriores - 3
txtTextpromg.Text = Trim(datos2.Temp8) - 4
End If
Loop
Close #1
End If
If cboAnalisis.ListIndex = 9 Then
Open App.Path & "/Tablas/Climaticas.cfl" For Random As #1
Do While Not EOF(1)
Get #1, , datos2
If Trim(datos2.Ciudad) = Trim(txtUbicacion.Text) Then
If Trim(datos2.Hr9) = "" Then
txtHrextg.Text = Trim(datos2.HrAnual)
Else
txtHrextg.Text = Trim(datos2.Hr9)
End If
txtTexts.Text = Trim(datos2.Temp9)
txtTextpromg.Text = Trim(datos2.Temp9) - 4
End If
Loop
Close #1
End If
If cboAnalisis.ListIndex = 10 Then
Open App.Path & "/Tablas/Climaticas.cfl" For Random As #1
Do While Not EOF(1)
Get #1, , datos2
If Trim(datos2.Ciudad) = Trim(txtUbicacion.Text) Then
If Trim(datos2.Hr10) = "" Then
txtHrextg.Text = Trim(datos2.HrAnual)
Else
txtHrextg.Text = Trim(datos2.Hr10)
End If
txtTexts.Text = Trim(datos2.Temp10)
txtTextpromg.Text = Trim(datos2.Temp10) - 4
End If
Loop
Close #1
End If
If cboAnalisis.ListIndex = 11 Then
Open App.Path & "/Tablas/Climaticas.cfl" For Random As #1
Do While Not EOF(1)
Get #1, , datos2
If Trim(datos2.Ciudad) = Trim(txtUbicacion.Text) Then
If Trim(datos2.Hr11) = "" Then
txtHrextg.Text = Trim(datos2.HrAnual)
Else
txtHrextg.Text = Trim(datos2.Hr11)
End If
txtTexts.Text = Trim(datos2.Temp11)
txtTextpromg.Text = Trim(datos2.Temp11) - 4
End If
Loop
Close #1
End If
If cboAnalisis.ListIndex = 12 Then
Open App.Path & "/Tablas/Climaticas.cfl" For Random As #1
Do While Not EOF(1)
Get #1, , datos2
If Trim(datos2.Ciudad) = Trim(txtUbicacion.Text) Then
If Trim(datos2.Hr12) = "" Then
txtHrextg.Text = Trim(datos2.HrAnual)
Else
txtHrextg.Text = Trim(datos2.Hr12)
End If
txtTexts.Text = Trim(datos2.Temp12)
txtTextpromg.Text = Trim(datos2.Temp12) - 4
End If
Loop
Close #1
End If
CondicionesUma.txtTextd.Text = txtTexts.Text
CondicionesUma.txtHrext.Text = txtHrextg.Text

Len = Len(datos2)

Len = Len(datos2)

Len = Len(datos2)

Len = Len(datos2)

CondicionesExteriores - 4
CondicionesUma.txtTme.Text = txtTextpromg.Text
End Sub
Private Sub cmdCiudDB_Click()
DatosClimticos.Show
End Sub
Private Sub cmdGuardarTodo_Click()
Dim n_cont As Integer
n_uma = lenfile(App.Path & "/Datos/UMAs.txt")
n_ofi = lenfile(App.Path & "/Datos/Oficinas.txt")
n_carg = lenfile(App.Path & "/Datos/Cargas.txt")
Open App.Path & "/Datos/UMAs.txt" For Random Access Read As #1 Len = Len(datos)
Open App.Path & "/Datos/General.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
Open App.Path & "/Datos/Oficinas.txt" For Random Access Read As #1 Len = Len(datos)
Open App.Path & "/Datos/General.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
Open App.Path & "/Datos/Cargas.txt" For Random Access Read As #1 Len = Len(datos)
Open App.Path & "/Datos/General.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
End
End Sub
Private Sub cmdSalir_Click()
End
End Sub

Private Sub cmdVistaPrevia_Click()


Dim n_contg As Integer
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random Access Read As #1 Len = Len(
datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/Global.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_contg = n_contg + 1
datos.id = n_contg
Put #2, n_contg, datos
End If
Loop
Close #1
Close #2

CondicionesExteriores - 5
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len =
Len(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/Global.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_contg = n_contg + 1
datos.id = n_contg
Put #2, n_contg, datos
End If
Loop
Close #1
Close #2

Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len = Le
n(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/Global.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_contg = n_contg + 1
datos.id = n_contg
Put #2, n_contg, datos
End If
Loop
Close #1
Close #2
VistaPreviaDatos.Show
End Sub
Private Sub Form_Load()
tabstrip1.Tabs.Item(3).Selected = True
Directorio = DatosGenerales.txtTituloProyecto.Text
End Sub

Private Sub TabStrip1_Click()


If tabstrip1.SelectedItem = "Inicio" Then
inicio.Show
Me.Hide
tabstrip1.Tabs.Item(3).Selected = False
End If
If tabstrip1.SelectedItem = "Datos Generales" Then
DatosGenerales.Show
Me.Hide
tabstrip1.Tabs.Item(3).Selected = False
End If
If tabstrip1.SelectedItem = "Condiciones de la(s) UMA(s)" Then
CondicionesUma.Show
Me.Hide
tabstrip1.Tabs.Item(3).Selected = False
End If
If tabstrip1.SelectedItem = "Condiciones de Ambiente(s)" Then
CondicionesOficina.Show
Me.Hide
tabstrip1.Tabs.Item(3).Selected = False
End If
If tabstrip1.SelectedItem = "Cargas" Then
Cargas.Show
Me.Hide
tabstrip1.Tabs.Item(3).Selected = False
End If
End Sub
Private Sub txtTexts_Change()
cboAnalisis.Enabled = True
End Sub

Ciudad de Ubicacin

Altitud sobre el nivel del mar [m]


Latitud

[ ]

Turbiedad de la Atmsfera
Temperatura Seca Exterior

[C]

Humedad Relativa Exterior

[%]

Promedio de Temperaturas en el Exterior

[C]

Tipo de Anlisis
Variacin Diaria Promedio de Temperaturas
[C]

CondicionesOficina - 1
Dim
Dim
Dim
Dim
Dim
Dim

clmx As ColumnHeader
itmx1 As ListItem
itmx2 As ListItem
i As Integer
datos As techo
Directorio As String

Private Sub cboUmaAt_dropdown()


cboUmaAt.Clear
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random Access Read As #1 Len = Len(
datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.Uma, 1)) = "U" Then
cboUmaAt.AddItem (datos.nombuma)
End If
Loop
Close #1
End Sub

Private Sub cboUmaAt_click()


i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random Access Read As #1 Len = Len(
datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.nombuma, 10)) = UCase(Left(cboUmaAt.Text, 10)) Then
txtTso.Text = Trim(datos.Tintd)
txtHro.Text = Trim(datos.Hrint)
Text1.Text = Trim(datos.Textd)
Text2.Text = Trim(datos.Hrext)
End If
Loop
Close #1
End Sub

Private Sub cmdCargOfi_Click()


ListView2.ListItems.Clear
If txtnombamb.Text = "" Or cboUmaAt.Text = "" Or txtIgOf.Text = "" Or txtTso.Text = "" Or txtHro.T
ext = "" Or txtAreaof.Text = "" Or txtHpared.Text = "" Or txtMaxPers.Text = "" Or txtInfil.Text = "" O
r txtVentof.Text = "" Or txtmetpers.Text = "" Then
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else
Dim n_ofi As Long
n_ofi = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt")
If n_ofi - 1 = 0 Then n_ofi = n_ofi + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random As #1 Len = Len(dato
s)
Get #1, n_ofi, datos
Close #1
If n_ofi > 5 Then
MsgBox "No se pueden agregar ms de cinco (5) Oficinas para esta versin del programa"
Else
datos.TVar = "OFICINA"
datos.UmaAt = cboUmaAt.Text
datos.nombamb = txtnombamb.Text
datos.IgOfi = txtIgOf.Text
datos.Tso = txtTso.Text
datos.Hro = txtHro.Text
datos.areaof = txtAreaof.Text
datos.Hpared = txtHpared.Text
datos.maxperso = txtMaxPers.Text
datos.InfIl = txtInfil.Text
datos.Ventof = txtVentof.Text
datos.Metperso = txtmetpers.Text
datos.Hrext = Text2.Text
datos.Textd = Text1.Text
datos.borrado = 1

CondicionesOficina - 2

datos.id = datos.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random As #1 Len = Len(dato
s)
Put #1, n_ofi, datos
Close #1
txtnombamb.Text = ""
txtIgOf.Text = ""
txtTso.Text = ""
txtHro.Text = ""
txtAreaof.Text = ""
txtHpared.Text = ""
txtMaxPers.Text = ""
txtInfil.Text = ""
txtVentof.Text = ""
txtmetpers.Text = ""
Text2.Text = ""
Text1.Text = ""
End If
End If
Call Form_Load
End Sub

Private Sub cmdGuardarTodo_Click()


Dim n_cont As Integer
n_uma = lenfile(App.Path & "/Datos/UMAs.txt")
n_ofi = lenfile(App.Path & "/Datos/Oficinas.txt")
n_carg = lenfile(App.Path & "/Datos/Cargas.txt")
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random Access Read As #1 Len = Len(
datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/General.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len =
Len(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/General.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len = Le
n(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/General.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
End
End Sub
Private Sub cmdNormas_Click()
If txtMaxPers.Text = "" Or txtAreaof.Text = "" Then

CondicionesOficina - 3

MsgBox "Para poder hacer automtico el proceso de clculo de las normas de ventilacin se requiere
tener el valor del rea del ambiente y el mximo de personas en el mismo"
Else
NormasVent.Show
NormasVent.Text1.Text = txtMaxPers.Text
NormasVent.Text2.Text = txtAreaof.Text
End If
End Sub

Private Sub cmdOfiCorregida_Click()


If txtnombamb.Text = "" Or cboUmaAt.Text = "" Or txtIgOf.Text = "" Or txtTso.Text = "" Or txtHro.T
ext = "" Or txtAreaof.Text = "" Or txtHpared.Text = "" Or txtMaxPers.Text = "" Or txtInfil.Text = "" O
r txtVentof.Text = "" Or txtmetpers.Text = "" Then
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else
datos.TVar = "OFICINA"
datos.O = "Ofi"
datos.nombamb = txtnombamb.Text
datos.UmaAt = cboUmaAt.Text
datos.IgOfi = txtIgOf.Text
datos.Tso = txtTso.Text
datos.Hro = txtHro.Text
datos.areaof = txtAreaof.Text
datos.Hpared = txtHpared.Text
datos.maxperso = txtMaxPers.Text
datos.InfIl = txtInfil.Text
datos.Ventof = txtVentof.Text
datos.Metperso = txtmetpers.Text
datos.Hrext = Text2.Text
datos.Textd = Text1.Text
datos.borrado = Check1.Value
datos.id = ListView2.SelectedItem.SubItems(1)
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random As #1 Len = Len(dato
s)
Put #1, ListView2.SelectedItem.SubItems(1) + 1, datos
Close #1
Dim n_num As Integer
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Le
n = Len(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/nOficinas.txt" For Random As #2 Len = Len(dat
os)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_num = n_num + 1
datos.id = n_num
Put #2, n_num, datos
End If
Loop
Close #1
Close #2
On Error Resume Next
Kill App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt"
FileCopy App.Path & "/" & Trim(Directorio) & "/Datos/nOficinas.txt", App.Path & "/" & Trim(Dir
ectorio) & "/Datos/Oficinas.txt"
Kill App.Path & "/" & Trim(Directorio) & "/Datos/nOficinas.txt"
txtmetpers.Text = ""
txtnombamb.Text = ""
txtIgOf.Text = ""
txtTso.Text = ""
txtHro.Text = ""
txtAreaof.Text = ""
txtHpared.Text = ""
txtMaxPers.Text = ""
txtInfil.Text = ""
txtVentof.Text = ""
Text1.Text = ""
Text2.Text = ""
cmdOfiCorregida.Visible = False
Check1.Visible = False
cmdCargOfi.Visible = True

CondicionesOficina - 4
End If
Call Form_Load
End Sub
Private Sub cmdSalir_Click()
End
End Sub
Private Sub Form_Load()
Directorio = DatosGenerales.txtTituloProyecto.Text
tabstrip1.Tabs.Item(5).Selected = True
ListView2.ColumnHeaders.Clear
ListView2.ColumnHeaders.Add , "ID", "ID", 0
ListView2.ColumnHeaders.Add , "PK", "PK", 0
ListView2.ColumnHeaders.Add , "nombre", "Ambiente", 2300, 2
ListView2.ColumnHeaders.Add , "uma", "UMA", 2300, 2
ListView2.ColumnHeaders.Add , "cant", "Locales Iguales", 1300, 2
ListView2.ColumnHeaders.Add , "Temp", "Temp. seca", 1200, 2
ListView2.ColumnHeaders.Add , "Hr", "Humedad", 1000, 2
ListView2.ColumnHeaders.Add , "area", "rea", 800, 2
ListView2.ColumnHeaders.Add , "altura", "Altura Pared", 1200, 2
ListView2.ColumnHeaders.Add , "max", "Max. Pers.", 1100, 2
ListView2.ColumnHeaders.Add , "ven", "Ventilacin", 1100, 2
ListView2.ColumnHeaders.Add , "infil", "Infil.", 800, 2
ListView2.ListItems.Clear
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len =
Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.TVar, 1)) = "O" And datos.borrado = 1 Then
Set itmX = ListView2.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.nombamb)
itmX.SubItems(3) = Trim(datos.UmaAt)
itmX.SubItems(4) = Trim(datos.IgOfi)
itmX.SubItems(5) = Trim(datos.Tso)
itmX.SubItems(6) = Trim(datos.Hro)
itmX.SubItems(7) = Trim(datos.areaof)
itmX.SubItems(8) = Trim(datos.Hpared)
itmX.SubItems(9) = Trim(datos.maxperso)
itmX.SubItems(10) = Trim(datos.Ventof)
itmX.SubItems(11) = Trim(datos.InfIl)
Set itmX = Nothing
End If
Loop
Close #1
End Sub
Private Sub ListView2_Dblclick()
cmdOfiCorregida.Visible = True
Check1.Visible = True
cmdCargOfi.Visible = False
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Binary Access Read As #1 Len =
Len(datos)
Get #1, (ListView2.SelectedItem.SubItems(1) * Len(datos)) + 1, datos
Close #1
txtnombamb.Text = Trim(datos.nombamb)
cboUmaAt.Text = Trim(datos.UmaAt)
txtIgOf.Text = Trim(datos.IgOfi)
txtTso.Text = Trim(datos.Tso)
txtHro.Text = Trim(datos.Hro)
txtAreaof.Text = Trim(datos.areaof)
txtHpared.Text = Trim(datos.Hpared)
txtMaxPers.Text = Trim(datos.maxperso)
txtInfil.Text = Trim(datos.InfIl)
txtVentof.Text = Trim(datos.Ventof)
txtmetpers.Text = Trim(datos.Metperso)
Text2.Text = Trim(datos.Hrext)
Text1.Text = Trim(datos.Textd)

CondicionesOficina - 5
End Sub
Private Sub TabStrip1_Click()
If tabstrip1.SelectedItem = "Inicio" Then
inicio.Show
Me.Hide
tabstrip1.Tabs.Item(5).Selected = False
End If
If tabstrip1.SelectedItem = "Datos Generales" Then
DatosGenerales.Show
Me.Hide
tabstrip1.Tabs.Item(5).Selected = False
End If
If tabstrip1.SelectedItem = "Condiciones Exteriores" Then
CondicionesExteriores.Show
Me.Hide
tabstrip1.Tabs.Item(5).Selected = False
End If
If tabstrip1.SelectedItem = "Condiciones de la(s) UMA(s)" Then
CondicionesUma.Show
Me.Hide
tabstrip1.Tabs.Item(5).Selected = False
End If
If tabstrip1.SelectedItem = "Cargas" Then
Cargas.Show
Me.Hide
tabstrip1.Tabs.Item(5).Selected = False
End If
End Sub
Private Sub txtAreaof_Change()
If Not txtAreaof.Text = "" Then
Call txtmaxpers_Change
End If
txtVentof.Text = ""
txtInfil.Text = ""
End Sub
Private Sub txtmaxpers_Change()
Dim maxperso2, areaof2 As Long
If Not txtMaxPers.Text = "" Then
If Not txtAreaof.Text = "" Then
maxperso2 = txtMaxPers.Text
areaof2 = txtAreaof.Text
txtmetpers.Text = areaof2 / maxperso2
End If
Else
txtmetpers.Text = ""
End If
txtVentof.Text = ""
txtInfil.Text = ""
End Sub

Nombre del Ambiente


UMA que atiende al Ambiente

Nmero Mximo de Personas

Ambientes Iguales

m^2/personas

Temperatura Seca del Ambiente [C]

Ventilacin [L/s]

Humedad Relativa del Ambiente [%]

Infiltraciones [L/s]

Superficie del Ambiente [m^2]


Altura de Pared [m]
Listado de Ambientes

CondicionesUma - 1

Dim clmx As ColumnHeader


Dim itmx1 As ListItem
Dim itmx2 As ListItem
Dim i As Integer
Dim datos As techo
Dim Directorio As String
Private Sub CargUMA_Click()
If txtnombuma.Text = "" Or txtcantumaigual.Text = "" Or txtTextd.Text = "" Or txtHrext.Text = "" O
r txtTintd.Text = "" Or txtTme.Text = "" Or txtHintd.Text = "" Or txtBpf.Text = "" Or txtChmin.Text =
"" Then
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else
Dim n_uma As Long
n_uma = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt")
If n_uma - 1 = 0 Then n_uma = n_uma + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random As #1 Len = Len(datos)
Get #1, n_uma, datos
Close #1
If n_uma > 2 Then
MsgBox " No se pueden agregar ms de dos (2) Unidades de Manejo de Aire para esta versin
del programa"
Else
datos.TVar = "UMA"
datos.Uma = "UMA"
datos.nombuma = txtnombuma.Text
datos.cantumaig = txtcantumaigual.Text
datos.Tmext = txtTme.Text
datos.Textd = txtTextd.Text
datos.Hrext = txtHrext.Text
datos.Tintd = txtTintd.Text
datos.Hrint = txtHintd.Text
datos.bpf = txtBpf.Text
datos.chmin = txtChmin.Text
datos.retorno = cboRetorno.Text
datos.Flujo = cboFlujo.Text
datos.Agua = cboAgua.Text
datos.borrado = 1
datos.id = datos.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random As #1 Len = Len(datos)
Put #1, n_uma, datos
Close #1
txtnombuma.Text = ""
txtcantumaigual.Text = ""
txtTintd.Text = ""
txtHintd.Text = ""
txtBpf.Text = ""
txtChmin.Text = ""
End If
End If
Call Form_Load
End Sub

Private Sub cmdGuardarTodo_Click()


Dim n_cont As Integer
n_uma = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt")
n_ofi = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt")
n_carg = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt")
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random Access Read As #1 Len = Len(
datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/General.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len =

CondicionesUma - 2

Len(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/General.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len = Le
n(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/General.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
End
End Sub

Private Sub cmdGuardUma_Click()


If txtnombuma.Text = "" Or txtcantumaigual.Text = "" Or txtTextd.Text = "" Or txtHrext.Text = "" O
r txtTintd.Text = "" Or txtTme.Text = "" Or txtHintd.Text = "" Or txtBpf.Text = "" Or txtChmin.Text =
"" Then
MsgBox "Faltan datos, verifique que llen todas las casillas", vbExclamation
Else
datos.TVar = "UMA"
datos.Uma = "UMA"
datos.nombuma = txtnombuma.Text
datos.cantumaig = txtcantumaigual.Text
datos.Tmext = txtTme.Text
datos.Textd = txtTextd.Text
datos.Hrext = txtHrext.Text
datos.Tintd = txtTintd.Text
datos.Hrint = txtHintd.Text
datos.bpf = txtBpf.Text
datos.chmin = txtChmin.Text
datos.retorno = cboRetorno.Text
datos.Flujo = cboFlujo.Text
datos.Agua = cboAgua.Text
datos.borrado = Check2.Value
datos.id = ListView1.SelectedItem.SubItems(1)
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random As #1 Len = Len(datos)
Put #1, (ListView1.SelectedItem.SubItems(1) + 1), datos
Close #1
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random Access Read As #1 Len =
Len(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/nUMAs.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_uma = n_uma + 1
datos.id = n_uma
Put #2, n_uma, datos
End If
Loop
Close #1
Close #2
On Error Resume Next
Kill App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt"

CondicionesUma - 3

FileCopy App.Path & "/" & Trim(Directorio) & "/Datos/nUMAs.txt", App.Path & "/" & Trim(Directo
rio) & "/Datos/UMAs.txt"
Kill App.Path & "/" & Trim(Directorio) & "/Datos/nUMAs.txt"
txtnombuma.Text = ""
txtcantumaigual.Text = ""
txtTintd.Text = ""
txtHintd.Text = ""
txtBpf.Text = ""
txtChmin.Text = ""
Check2.Visible = False
cmdGuardUma.Visible = False
CargUMA.Visible = True
End If
Call Form_Load
End Sub
Private Sub cmdNormas_Click()
CambiosAireHora.Show
End Sub
Private Sub cmdSalir_Click()
End
End Sub

Private Sub Form_Load()


Directorio = DatosGenerales.txtTituloProyecto.Text
tabstrip1.Tabs.Item(4).Selected = True
ListView1.ColumnHeaders.Clear
ListView1.ColumnHeaders.Add , "ID", "ID", 0
ListView1.ColumnHeaders.Add , "PK", "PK", 0
ListView1.ColumnHeaders.Add , "Nomb", "Nombre UMA", 2300, 2
ListView1.ColumnHeaders.Add , "tempm", "Temp. Ext. Med.", 1500, 2
ListView1.ColumnHeaders.Add , "temp", "Temp. Ext.", 1000, 2
ListView1.ColumnHeaders.Add , "Hrext", "Hr Ext.", 700, 2
ListView1.ColumnHeaders.Add , "tint", "Temp. Int.", 1000, 2
ListView1.ColumnHeaders.Add , "hrint", "Hr Int.", 700, 2
ListView1.ColumnHeaders.Add , "agua", "Agua", 700, 2
ListView1.ColumnHeaders.Add , "bpf", "By Pass", 800, 2
ListView1.ColumnHeaders.Add , "flujo", "Flujo", 700, 2
ListView1.ColumnHeaders.Add , "reto", "Retorno", 800, 2
ListView1.ListItems.Clear
Dim itmX As ListItem
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random Access Read As #1 Len = Len(
datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.Uma, 1)) = "U" And datos.borrado = 1 Then
Set itmX = ListView1.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.nombuma)
itmX.SubItems(3) = Trim(datos.Tmext)
itmX.SubItems(4) = Trim(datos.Textd)
itmX.SubItems(5) = Trim(datos.Hrext)
itmX.SubItems(6) = Trim(datos.Tintd)
itmX.SubItems(7) = Trim(datos.Hrint)
itmX.SubItems(8) = Trim(datos.Agua)
itmX.SubItems(9) = Trim(datos.bpf)
itmX.SubItems(10) = Trim(datos.Flujo)
itmX.SubItems(11) = Trim(datos.retorno)
Set itmX = Nothing
End If
Loop
Close #1
txtTextd.Text = CondicionesExteriores.txtTexts.Text
txtHrext.Text = CondicionesExteriores.txtHrextg.Text
txtTme.Text = CondicionesExteriores.txtTextpromg.Text
End Sub

CondicionesUma - 4

Private Sub ListView1_dblclick()


Check2.Visible = True
cmdGuardUma.Visible = True
CargUMA.Visible = False

Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Binary Access Read As #1 Len = Len(
datos)
Get #1, (ListView1.SelectedItem.SubItems(1) * Len(datos)) + 1, datos
Close #1
txtnombuma.Text = Trim(datos.nombuma)
txtcantumaigual.Text = Trim(datos.cantumaig)
txtTme.Text = Trim(datos.Tmext)
txtTextd.Text = Trim(datos.Textd)
txtHrext.Text = Trim(datos.Hrext)
txtTintd.Text = Trim(datos.Tintd)
txtHintd.Text = Trim(datos.Hrint)
txtBpf.Text = Trim(datos.bpf)
txtChmin.Text = Trim(datos.chmin)
cboRetorno.Text = Trim(datos.retorno)
cboFlujo.Text = Trim(datos.Flujo)
cboAgua.Text = Trim(datos.Agua)
End Sub
Private Sub TabStrip1_Click()
If tabstrip1.SelectedItem = "Inicio" Then
inicio.Show
Me.Hide
tabstrip1.Tabs.Item(4).Selected = False
End If
If tabstrip1.SelectedItem = "Datos Generales" Then
DatosGenerales.Show
Me.Hide
tabstrip1.Tabs.Item(4).Selected = False
End If
If tabstrip1.SelectedItem = "Condiciones Exteriores" Then
CondicionesExteriores.Show
Me.Hide
tabstrip1.Tabs.Item(4).Selected = False
End If
If tabstrip1.SelectedItem = "Condiciones de Ambiente(s)" Then
CondicionesOficina.Show
Me.Hide
tabstrip1.Tabs.Item(4).Selected = False
End If
If tabstrip1.SelectedItem = "Cargas" Then
Cargas.Show
Me.Hide
tabstrip1.Tabs.Item(4).Selected = False
End If
End Sub

Nombre de la UMA
Cantidad de UMAs iguales
Temperatura Exterior de Diseo
Temperatura Interior de Diseo
Temperatura Media Exterior

[C]
[C]

[C]

Humedad Relativa Exterior


Humedad Interior de diseo

[%

Factor de Bypass del Serpentin (0 a 1)

Cambios de Aire/h mn

Retorno

Flujo

Agua

Datos de la(s) UMA(s)

[%]

DatosClimticos - 1
Dim datos As climas
Private Sub CiudadAgregar_Click()
Dim n_ciud As Long
n_ciud = lenfile2(App.Path & "/Tablas/Climaticas.cfl")
Open App.Path & "/Tablas/Climaticas.cfl" For Random As #1 Len = Len(datos)
Get #1, n_ciud, datos
Close #1
datos.code = "O"
datos.Ciudad = Text1.Text
datos.Temp1 = Text2.Text
datos.Temp2 = Text3.Text
datos.Temp3 = Text4.Text
datos.Temp4 = Text5.Text
datos.Temp5 = Text6.Text
datos.Temp6 = Text7.Text
datos.Temp7 = Text8.Text
datos.Temp8 = Text9.Text
datos.Temp9 = Text10.Text
datos.Temp10 = Text11.Text
datos.Temp11 = Text12.Text
datos.Temp12 = Text13.Text
datos.TempAnual = Text14.Text
datos.Hr1 = Text15.Text
datos.Hr2 = Text16.Text
datos.Hr3 = Text17.Text
datos.Hr4 = Text18.Text
datos.Hr5 = Text19.Text
datos.Hr6 = Text20.Text
datos.Hr7 = Text21.Text
datos.Hr8 = Text22.Text
datos.Hr9 = Text23.Text
datos.Hr10 = Text24.Text
datos.Hr11 = Text25.Text
datos.Hr12 = Text26.Text
datos.HrAnual = Text27.Text
datos.Latitud = Text28.Text
datos.Altitud = Text29.Text
datos.id = datos.id + 1
datos.salto = vbCrLf
Open App.Path & "/Tablas/Climaticas.cfl" For Random As #1 Len = Len(datos)
Put #1, n_ciud, datos
Close #1
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text8.Text = ""
Text9.Text = ""
Text10.Text = ""
Text11.Text = ""
Text12.Text = ""
Text13.Text = ""
Text14.Text = ""
Text15.Text = ""
Text16.Text = ""
Text17.Text = ""
Text18.Text = ""
Text19.Text = ""
Text20.Text = ""
Text21.Text = ""
Text22.Text = ""
Text23.Text = ""
Text24.Text = ""
Text25.Text = ""
Text26.Text = ""
Text27.Text = ""
Call Form_Load
End Sub

DatosClimticos - 2
Private Sub Form_Load()
ListView1.ColumnHeaders.Clear
ListView1.ColumnHeaders.Add , "ID", "ID", 0
ListView1.ColumnHeaders.Add , "PK", "PK", 0
ListView1.ColumnHeaders.Add , "ciu", "Ciudad", 2000, 0
ListView1.ColumnHeaders.Add , "alt", "Altitud [m]", 1100, 2
ListView1.ColumnHeaders.Add , "lat", "Latitud []", 1100, 2
ListView1.ColumnHeaders.Add , "en", "Temp. ENE", 1100, 2
ListView1.ColumnHeaders.Add , "fe", "Temp. FEB", 1100, 2
ListView1.ColumnHeaders.Add , "ma", "Temp. MAR", 1100, 2
ListView1.ColumnHeaders.Add , "ab", "Temp. ABR", 1100, 2
ListView1.ColumnHeaders.Add , "may", "Temp. MAY", 1100, 2
ListView1.ColumnHeaders.Add , "ju", "Temp. JUN", 1100, 2
ListView1.ColumnHeaders.Add , "jul", "Temp. JUL", 1100, 2
ListView1.ColumnHeaders.Add , "ag", "Temp. AGO", 1100, 2
ListView1.ColumnHeaders.Add , "se", "Temp. SEP", 1100, 2
ListView1.ColumnHeaders.Add , "oc", "Temp. OCT", 1100, 2
ListView1.ColumnHeaders.Add , "no", "Temp. NOV", 1100, 2
ListView1.ColumnHeaders.Add , "di", "Temp. DIC", 1100, 2
ListView1.ColumnHeaders.Add , "a", "Temp. AO", 1100, 2
ListView1.ColumnHeaders.Add , "ene", "Hr. ENE", 900, 2
ListView1.ColumnHeaders.Add , "feb", "Hr. FEB", 900, 2
ListView1.ColumnHeaders.Add , "mar", "Hr. MAR", 900, 2
ListView1.ColumnHeaders.Add , "abr", "Hr. ABR", 900, 2
ListView1.ColumnHeaders.Add , "mayo", "Hr. MAY", 900, 2
ListView1.ColumnHeaders.Add , "jun", "Hr. JUN", 900, 2
ListView1.ColumnHeaders.Add , "juli", "Hr. JUL", 900, 2
ListView1.ColumnHeaders.Add , "ago", "Hr. AGO", 900, 2
ListView1.ColumnHeaders.Add , "sep", "Hr. SEP", 900, 2
ListView1.ColumnHeaders.Add , "oct", "Hr. OCT", 900, 2
ListView1.ColumnHeaders.Add , "nov", "Hr. NOV", 900, 2
ListView1.ColumnHeaders.Add , "dic", "Hr. DIC", 900, 2
ListView1.ColumnHeaders.Add , "ao", "Hr. AO", 900, 2
ListView1.ListItems.Clear
Dim itmX As ListItem
i = 0
Open App.Path & "/Tablas/Climaticas.cfl" For Random Access Read As #1 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.code, 1)) = "O" Then
Set itmX = ListView1.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.Ciudad)
itmX.SubItems(3) = Trim(datos.Altitud)
itmX.SubItems(4) = Trim(datos.Latitud)
itmX.SubItems(5) = Trim(datos.Temp1)
itmX.SubItems(6) = Trim(datos.Temp2)
itmX.SubItems(7) = Trim(datos.Temp3)
itmX.SubItems(8) = Trim(datos.Temp4)
itmX.SubItems(9) = Trim(datos.Temp5)
itmX.SubItems(10) = Trim(datos.Temp6)
itmX.SubItems(11) = Trim(datos.Temp7)
itmX.SubItems(12) = Trim(datos.Temp8)
itmX.SubItems(13) = Trim(datos.Temp9)
itmX.SubItems(14) = Trim(datos.Temp10)
itmX.SubItems(15) = Trim(datos.Temp11)
itmX.SubItems(16) = Trim(datos.Temp12)
itmX.SubItems(17) = Trim(datos.TempAnual)
itmX.SubItems(18) = Trim(datos.Hr1)
itmX.SubItems(19) = Trim(datos.Hr2)
itmX.SubItems(20) = Trim(datos.Hr3)
itmX.SubItems(21) = Trim(datos.Hr4)
itmX.SubItems(22) = Trim(datos.Hr5)
itmX.SubItems(23) = Trim(datos.Hr6)
itmX.SubItems(24) = Trim(datos.Hr7)
itmX.SubItems(25) = Trim(datos.Hr8)
itmX.SubItems(26) = Trim(datos.Hr9)
itmX.SubItems(27) = Trim(datos.Hr10)
itmX.SubItems(28) = Trim(datos.Hr11)

DatosClimticos - 3
itmX.SubItems(29) = Trim(datos.Hr12)
itmX.SubItems(30) = Trim(datos.HrAnual)
Set itmX = Nothing
End If
Loop
ListView1.SortKey = 2
ListView1.Sorted = True
Close #1
End Sub
Private Sub ListView1_dblclick()
Me.Hide
Open App.Path & "/Tablas/Climaticas.cfl" For Binary Access Read As #1 Len = Len(datos)
Get #1, (ListView1.SelectedItem.SubItems(1) * Len(datos)) + 1, datos
Close #1
CondicionesExteriores.cboAnalisis.Enabled = True
CondicionesExteriores.txtUbicacion.Text = Trim(datos.Ciudad)
CondicionesExteriores.txtAltitud.Text = Trim(datos.Altitud)
CondicionesExteriores.txtlatitud.Text = Trim(datos.Latitud)
MsgBox "Considere colocar un tipo de anlisis para que puedan proporcionrsele los dems valores"
End Sub
Private Sub Option1_Click()
Option1.Value = True
Option2.Value = False
Text2.Enabled = False: Text3.Enabled = False: Text4.Enabled = False
Text5.Enabled = False: Text6.Enabled = False: Text7.Enabled = False: Text8.Enabled = False
Text9.Enabled = False: Text10.Enabled = False: Text11.Enabled = False: Text12.Enabled = False
Text13.Enabled = False: Text14.Enabled = True: Text15.Enabled = False: Text16.Enabled = False
Text17.Enabled = False: Text18.Enabled = False: Text19.Enabled = False: Text20.Enabled = False
Text21.Enabled = False: Text22.Enabled = False: Text23.Enabled = False: Text24.Enabled = False
Text25.Enabled = False: Text26.Enabled = False: Text27.Enabled = True
End Sub
Private Sub Option2_Click()
Option2.Value = True
Option1.Value = False
Text2.Enabled = True: Text3.Enabled = True: Text4.Enabled = True
Text5.Enabled = True: Text6.Enabled = True: Text7.Enabled = True: Text8.Enabled = True
Text9.Enabled = True: Text10.Enabled = True: Text11.Enabled = True: Text12.Enabled = True
Text13.Enabled = True: Text14.Enabled = False: Text15.Enabled = True: Text16.Enabled = True
Text17.Enabled = True: Text18.Enabled = True: Text19.Enabled = True: Text20.Enabled = True
Text21.Enabled = True: Text22.Enabled = True: Text23.Enabled = True: Text24.Enabled = True
Text25.Enabled = True: Text26.Enabled = True: Text27.Enabled = False
End Sub
Private Sub Option3_Click()
Option3.Value = True
Option4.Value = False
Text1.Enabled = True
Text28.Enabled = True
Text29.Enabled = True
Text30.Enabled = True
Option2.Enabled = True
Option1.Enabled = True
Label1.Enabled = True
Label30.Enabled = True
Label31.Enabled = True
Label34.Enabled = True
CiudadAgregar.Enabled = True
End Sub
Private Sub Option4_Click()
CiudadAgregar.Enabled = False
Option3.Value = False
Option4.Value = True
Text1.Enabled = False: Text2.Enabled = False: Text3.Enabled = False: Text4.Enabled = False
Text5.Enabled = False: Text6.Enabled = False: Text7.Enabled = False: Text8.Enabled = False
Text9.Enabled = False: Text10.Enabled = False: Text11.Enabled = False: Text12.Enabled = False
Text13.Enabled = False: Text14.Enabled = False: Text15.Enabled = False: Text16.Enabled = False
Text17.Enabled = False: Text18.Enabled = False: Text19.Enabled = False: Text20.Enabled = False

DatosClimticos - 4
Text21.Enabled
Text25.Enabled
Text29.Enabled
Label1.Enabled
Label2.Enabled
End Sub

=
=
=
=
=

False: Text22.Enabled = False: Text23.Enabled = False: Text24.Enabled = False


False: Text26.Enabled = False: Text27.Enabled = False: Text28.Enabled = False
False: Text30.Enabled = False
False
False

Datos Climticos de algunas de las ciudades ms importantes de Venezuela

Desea Agregar otra Ciudad?


Ciudad

Latitud

Altitud

Variacin Estndar
en un da

Temperatura Mximas Promedio


ENE
FEB
MAR ABR

MAY

JUN

JUL

AGO

SEP

OCT

NOV

DIC

Anual

Humedad Relativa
ENE
FEB

MAY

JUN

JUL

AGO

SEP

OCT

NOV

DIC

Anual

MAR

ABR

DatosGenerales - 1
Dim datos As techo

Private Sub cmdGuardarTodo_Click()


Dim n_cont As Integer
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random Access Read As #1 Len = Len(
datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/General.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len =
Len(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/General.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2

Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len = Le
n(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/General.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
End
End Sub
Private Sub cmdSalir_Click()
End
End Sub

Private Sub cmdVistaPrevia_Click()


Dim n_contg As Integer
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random Access Read As #1 Len = Len(
datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/Global.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_contg = n_contg + 1
datos.id = n_contg
Put #2, n_contg, datos
End If
Loop
Close #1
Close #2
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len =
Len(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/Global.txt" For Random As #2 Len = Len(datos)

DatosGenerales - 2
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_contg = n_contg + 1
datos.id = n_contg
Put #2, n_contg, datos
End If
Loop
Close #1
Close #2

Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len = Le
n(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/Global.txt" For Random As #2 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_contg = n_contg + 1
datos.id = n_contg
Put #2, n_contg, datos
End If
Loop
Close #1
Close #2
VistaPreviaDatos.Show
End Sub
Private Sub Command1_Click()
On Error Resume Next
Dim datos As techo
Dim Directorio As String
Directorio = txtTituloProyecto.Text
If ExisteDir(App.Path & "/" & Trim(Directorio)) = True Then
DlgReemplazar.Show
Else
MkDir (App.Path & "/" & Trim(Directorio))
MkDir (App.Path & "/" & Trim(Directorio) & "/Datos")
MkDir (App.Path & "/" & Trim(Directorio) & "/Resultados")
n_proc = lenfile(App.Path & "/Tablas/InfoGeneral.dat")
Open App.Path & "/Tablas/InfoGeneral.dat" For Random As #1 Len = Len(datos)
Get #1, n_proc, datos
Close #1
datos.Titulo = txtTituloProyecto.Text
datos.Nombre = txtNombreEmpresa.Text
datos.Encargado = txtEncargadoProyecto.Text
datos.Fecha = txtFecha.Text
datos.id = datos.id + 1
datos.O = "N"
datos.salto = vbCrLf
Open App.Path & "/Tablas/InfoGeneral.dat" For Random As #1 Len = Len(datos)
Put #1, n_proc, datos
Close #1
tabstrip1.Enabled = True
End If
End Sub
Private Sub Form_Load()
tabstrip1.Tabs.Item(2).Selected = True
End Sub
Private Sub TabStrip1_Click()

If txtTituloProyecto.Text = "" Then


MsgBox "Debe seleccionar el nombre del archivo a examinar o crear uno, para poder seguir con e
l programa"
tabstrip1.Enabled = False
End If
If tabstrip1.SelectedItem = "Inicio" Then
inicio.Show
Me.Hide

DatosGenerales - 3
tabstrip1.Tabs.Item(2).Selected = False
End If
If tabstrip1.SelectedItem = "Condiciones Exteriores" Then
CondicionesExteriores.Show
Me.Hide
tabstrip1.Tabs.Item(2).Selected = False
End If
If tabstrip1.SelectedItem = "Condiciones de la(s) UMA(s)" Then
CondicionesUma.Show
Me.Hide
tabstrip1.Tabs.Item(2).Selected = False
End If
If tabstrip1.SelectedItem = "Condiciones de Ambiente(s)" Then
CondicionesOficina.Show
Me.Hide
tabstrip1.Tabs.Item(2).Selected = False
End If
If tabstrip1.SelectedItem = "Cargas" Then
Cargas.Show
Me.Hide
tabstrip1.Tabs.Item(2).Selected = False
End If
txtFecha.Text = Date
proyecto = txtTituloProyecto.Text
End Sub
Function ExisteDir(ruta As String) As Boolean
On Error Resume Next
ExisteDir = (Dir$(ruta & "\nul") <> "")
End Function
Private Sub txtTituloProyecto_dropdown()
tabstrip1.Enabled = True
txtTituloProyecto.Clear
i = 0
Open App.Path & "/Tablas/InfoGeneral.dat" For Random Access Read As #1 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.O, 1)) = "N" Then
txtTituloProyecto.AddItem (datos.Titulo)
txtNombreEmpresa.Text = datos.Nombre
txtEncargadoProyecto.Text = datos.Encargado
txtFecha.Text = datos.Fecha
End If
Loop
Close #1
End Sub

Nombre de la Empresa
Ttulo del Proyecto
Encargado del Proyecto
Fecha de Realizacin

DlgReemplazar - 1
Dim n_proc As Long
Dim datos As techo
Option Explicit
Private Sub CancelButton_Click()
Me.Hide
End Sub
Private Sub OKButton_Click()
Dim Directorio As String
MkDir (App.Path & "/" & Directorio)
MkDir (App.Path & "/" & Directorio & "/Datos")
MkDir (App.Path & "/" & Directorio & "/Resultados")
n_proc = lenfile(App.Path & "/Tablas/Info General.dat")
Open App.Path & "/Tablas/Info General.dat" For Random As #1 Len = Len(datos)
Get #1, n_proc, datos
Close #1
datos.Titulo = txtTituloProyecto.Text
datos.Nombre = txtNombreEmpresa.Text
datos.Encargado = txtEncargadoProyecto.Text
datos.Fecha = txtFecha.Text
datos.id = datos.id + 1
datos.O = "N"
datos.salto = vbCrLf
Open App.Path & "/Tablas/InfoGeneral.dat" For Random As #1 Len = Len(datos)
Put #1, n_proc, datos
Close #1
tabstrip1.Enabled = True
Directorio = DatosGenerales.txtTituloProyecto.Text
Kill App.Path & "/" & Directorio & "/*.*"
Kill App.Path & "/" & Directorio & "/Datos/*.*"
Kill App.Path & "/" & Directorio & "/Resultados/*.*"
End Sub

Ya Existe Un Proyecto con ese


nombre, desea reemplazar los
datos?

GananciaAparatos - 1
Private
Dim
Dim
Dim

Sub Command1_Click()
datos As aparatos2
i As Integer
n_list As Long

n_list = lenfile2(App.Path & "/Tablas/Tabla2Aparatos.cfl")


Open App.Path & "/Tablas/Tabla2Aparatos.cfl" For Random As #1 Len = Len(datos)
Get #1, n_list, datos
Close #1
datos.Aparato = Text1.Text
datos.Factor = Text2.Text
datos.Tamao = Text3.Text
datos.Tasa = Text4.Text
datos.sensAp = Text5.Text
datos.Latente = Text6.Text
datos.Total = Text7.Text
datos.sensibleC = Text8.Text
If Text5 = "" Then datos.Campana = "CON"
If Text2 = "" Then
datos.factorsi = "NO"
Else
datos.factorsi = "SI"
End If
datos.id = datos.id + 1
datos.O = "O"
datos.salto = vbCrLf
Open App.Path & "/Tablas/Tabla2Aparatos.cfl" For Random As #1 Len = Len(datos)
Put #1, n_list, datos
Close #1
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text8.Text = ""
Call Form_Load
End Sub
Private Sub cmdAceptar_Click()
If Text12.Text = "" Or Text13.Text = "" Or cbocampanaaparatos.Text = "" Then
MsgBox "Necesita dar valores a las ganancias de calor para aceptar"
Else
If cbocampanaaparatos.Text = "CON" Or cbocampanaaparatos.Text = "SIN" Then
Me.Hide
Cargas.txtshg.Text = Text12.Text
Cargas.txtlhg.Text = Text13.Text
Cargas.cbocampanaaparatos.Text = cbocampanaaparatos.Text
Else
MsgBox "Debe seleccionar una de las opciones de campana VALIDAS!"
End If
End If
End Sub

Private Sub Form_Load()


ListView1.ColumnHeaders.Clear
ListView1.ColumnHeaders.Add ,
ListView1.ColumnHeaders.Add ,
ListView1.ColumnHeaders.Add ,
ListView1.ColumnHeaders.Add ,
ListView1.ColumnHeaders.Add ,
ListView1.ColumnHeaders.Add ,
ListView1.ListItems.Clear
ListView2.ColumnHeaders.Clear

"ID",
"PK",
"ta",
"fu",
"fr",
"fl",

"ID", 0
"PK", 0
"Aparatos", 2500, 2
"Fu", 500, 2
"Fr", 500, 2
"Fl", 500, 2

GananciaAparatos - 2
ListView2.ColumnHeaders.Add ,
ListView2.ColumnHeaders.Add ,
ListView2.ColumnHeaders.Add ,
ListView2.ColumnHeaders.Add ,
ListView2.ColumnHeaders.Add ,
ListView2.ColumnHeaders.Add ,
ListView2.ListItems.Clear
ListView3.ColumnHeaders.Clear
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ListItems.Clear

"ID",
"PK",
"ta",
"fu",
"fr",
"fl",

"ID", 0
"PK", 0
"Aparatos", 2500, 2
"Fu", 500, 2
"Fr", 500, 2
"Fl", 500, 2

"ID",
"PK",
"ta",
"fu",
"fr",
"fl",
"fm",
"fo",
"fp",
"fq",

"ID", 0
"PK", 0
"
Aparatos", 2500, 0
"Factor", 1700, 2
"Tamao", 900, 2
"Potencia", 800, 2
"Sensible", 700, 2
"Latente", 700, 2
"Total", 700, 2
"Sensible", 700, 2

End Sub
Private Sub TabStrip1_Click()
Dim itmX As ListItem
Frame1.Visible = True
If tabstrip1.SelectedItem = "Condiciones" Then
Frame1.Visible = False
Frame2.Visible = False
End If
If tabstrip1.SelectedItem = "Aparatos de Cocina 1" Then
Dim datos2 As aparatos1
Frame1.Visible = True
Frame2.Visible = False
Open App.Path & "/Tablas/Tabla1Aparatos.cfl" For Random Access Read As #1 Len = Len(datos2)
i = 0
Do While Not EOF(1)
Get #1, , datos2
i = i + 1
If UCase(Left(datos2.Comb, 1)) = "E" Then
Set itmX = ListView1.ListItems.Add(1, , datos2.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos2.Aparato)
itmX.SubItems(3) = Trim(datos2.Fu)
itmX.SubItems(4) = Trim(datos2.Fr)
itmX.SubItems(5) = Trim(datos2.Fl)
Set itmX = Nothing
End If
Loop
Close #1
Open App.Path & "/Tablas/Tabla1Aparatos.cfl" For Random Access Read As #1 Len = Len(datos2)
i = 0
Do While Not EOF(1)
Get #1, , datos2
i = i + 1
If UCase(Left(datos2.Comb, 1)) = "G" Then
Set itmX = ListView2.ListItems.Add(1, , datos2.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos2.Aparato)
itmX.SubItems(3) = Trim(datos2.Fu)
itmX.SubItems(4) = Trim(datos2.Fr)
itmX.SubItems(5) = Trim(datos2.Fl)
Set itmX = Nothing
End If
Loop
Close #1
End If
If tabstrip1.SelectedItem = "Aparatos de Cocina 2" Then

GananciaAparatos - 3
Dim datos As aparatos2
Frame2.Visible = True
Frame1.Visible = False
Open App.Path & "/Tablas/Tabla2Aparatos.cfl" For Random Access Read As #1 Len = Len(datos)
i = 0
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.O, 1)) = "O" Then
Set itmX = ListView3.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.Aparato)
itmX.SubItems(3) = Trim(datos.Factor)
itmX.SubItems(4) = Trim(datos.Tamao)
itmX.SubItems(5) = Trim(datos.Tasa)
itmX.SubItems(6) = Trim(datos.sensAp)
itmX.SubItems(7) = Trim(datos.Latente)
itmX.SubItems(8) = Trim(datos.Total)
itmX.SubItems(9) = Trim(datos.sensibleC)
Set itmX = Nothing
End If
Loop
Close #1
End If
End Sub
Private Sub Text10_Change()
Call Text9_Change
End Sub
Private Sub Text11_Change()
Call Text9_Change
End Sub
Private Sub Text9_Change()
If Text9.Text = "" Or Text10.Text = "" Or Text11.Text = "" Then
Text12.Text = ""
Else
Text12.Text = Text9.Text * Text10.Text * Text11.Text
Text13.Text = Text9.Text - Text12.Text
End If
End Sub

Potencia de la Mquina [W]

Factor de Uso (Fu)

Campana

Factor de Radiacin (Fr)


Calor Sensible [W]
Calor Latente [W]

Factores de Ganancia de Calor de Aparatos


Elctricos bajo campana de extraccin.

Factores de Ganancia de Calor de Aparatos a


Gas bajo campana de extraccin.

Tabla 7 Cap28 ASHRAE


Tabla 6 Cap28 ASHRAE

Inicio - 1
Private Sub cmdSalir_Click()
End
End Sub
Private Sub Form_Load()
tabstrip1.Tabs.Item(1).Selected = True
End Sub
Private Sub TabStrip1_Click()
Dim Seleccion As String
If tabstrip1.SelectedItem = "Datos Generales" Then
DatosGenerales.Show
Me.Hide
tabstrip1.Tabs.Item(1).Selected = False
End If
If tabstrip1.SelectedItem = "Condiciones Exteriores" Then
CondicionesExteriores.Show
Me.Hide
tabstrip1.Tabs.Item(1).Selected = False
End If
If tabstrip1.SelectedItem = "Condiciones de la(s) UMA(s)" Then
CondicionesUma.Show
Me.Hide
tabstrip1.Tabs.Item(1).Selected = False
End If
If tabstrip1.SelectedItem = "Condiciones de Ambiente(s)" Then
CondicionesOficina.Show
Me.Hide
tabstrip1.Tabs.Item(1).Selected = False
End If
If tabstrip1.SelectedItem = "Cargas" Then
Cargas.Show
Me.Hide
tabstrip1.Tabs.Item(1).Selected = False
End If
End Sub

Programa de Clculo de Cargas Trmic


Realizado por Ricardo Gonzlez Pern
como parte de su trabajo de Grado, como
requisito para la obtencin del Ttulo
Ingeniero Mecnico de la Universida
Simn Bolvar.

Module1 - 1
Dim proyecto As String * 15
Public Type techo
borrado As Byte
TVar As String * 8
Nombre As String * 31
Titulo As String * 31
Encargado As String * 21
Fecha As String * 15
Ciudad As String * 30
Altitud As Double
Latitud As String * 6
Turbiedad As String * 6
TempSec As Double
HumRel As Double
TempProm As Double
nombamb As String * 21
UmaAt As String * 21
IgOfi As Double
Tso As Double
Hro As Double
areaof As Double
Hpared As Double
maxperso As Double
InfIl As Double
Ventof As Double
Metperso As Double
O As String * 4
nombuma As String * 21
cantumaig As Double
Textd As Double
Hrext As Double
Tintd As Double
Hrint As Double
Tmext As Double
bpf As Double
chmin As Double
Flujo As String * 3
retorno As String * 3
Agua As String * 3
Uma As String * 4
idu As Long
id As Long
Ucoef As Double
area As Double
color As String * 6
fte As Double
cielo As String * 6
decremento As String * 5
titech As String * 4
Ofcorr As String * 21
tcarga As String * 13
IgPar As Double
Grupo As String * 2
orientacion As String * 3
igvid As Double
Atenuacion As Double
CtteAmb As Double
Sombint As String * 4
Sombext As String * 4
TAdyacente As Double
IgPart As Double
Potluces As Double
uso As Double
tipoluces As String * 13
inicio As Double
duracion As Double
coefdis As Double
inercia As Double
Igaparatos As Double
shg As Double
lhg As Double

Module1 - 2
Campana As String * 4
potencia As Double
colocacion As String * 2
Tcolocacion As Double
eficiencia As Double
IgEquipos As Double
cantpersonas As Double
salto As String
End Type
Public Type CalorPersonas
nomb As String * 8
actividad As String * 46
Tipo As String * 32
hombre As String * 4
ajustado As String * 4
sensible As String * 4
Latente As String * 4
Bajo As String * 3
Alto As String * 3
id As Long
End Type
Public Type Motores
HP As Double
kW As Double
motor As String * 11
rpm As String * 5
eficiencia As String * 3
A As String * 7
B As String * 7
C As String * 6
D As String * 2
id As Long
salto As String
End Type
Public Type Calculos
QLpers As Long
QSpers As Long
QCpers As Long
QRpers As Long
End Type
Public Type aparatos1
id As Long
Aparato As String * 30
Fu As Double
Fr As Double
Fl As Double
Comb As String * 10
salto As String
End Type
Public Type aparatos2
id As Long
Aparato As String * 30
Factor As String * 30
Tamao As String * 25
Tasa As String * 7
sensAp As String * 7
Latente As String * 7
Total As String * 7
sensibleC As String * 7
Campana As String * 4
factorsi As String * 3
O As String * 1
salto As String
End Type
Public Type Resulta2

Module1 - 3
id As Long
Comp As String * 3
Nombre As String * 30
t1 As String * 10
t2 As String * 10
t3 As String * 10
t4 As String * 10
t5 As String * 10
t6 As String * 10
t7 As String * 10
t8 As String * 10
t9 As String * 10
t10 As String * 10
t11 As String * 10
t12 As String * 10
t13 As String * 10
t14 As String * 10
t15 As String * 10
t16 As String * 10
t17 As String * 10
t18 As String * 10
t19 As String * 10
t20 As String * 10
t21 As String * 10
t22 As String * 10
t23 As String * 10
t24 As String * 10
tTotal As String * 10
salto As String
End Type
Public Type climas
id As Long
code As String * 4
Ciudad As String * 30
Temp1 As String * 6
Temp2 As String * 6
Temp3 As String * 6
Temp4 As String * 6
Temp5 As String * 6
Temp6 As String * 6
Temp7 As String * 6
Temp8 As String * 6
Temp9 As String * 6
Temp10 As String * 6
Temp11 As String * 6
Temp12 As String * 6
TempAnual As String * 6
Hr1 As String * 6
Hr2 As String * 6
Hr3 As String * 6
Hr4 As String * 6
Hr5 As String * 6
Hr6 As String * 6
Hr7 As String * 6
Hr8 As String * 6
Hr9 As String * 6
Hr10 As String * 6
Hr11 As String * 6
Hr12 As String * 6
HrAnual As String * 6
Latitud As String * 3
Altitud As String * 6
salto As String
End Type
Public Type Tabla11
id As Long
Codigo As String * 4
Descripcion As String * 50
Long As String * 4

Module1 - 4
Res As String * 6
salto As String
End Type
Public Type Tabla14
id As Long
Tipo As String * 3
Descripcion As String * 50
TimeL As String * 6
Ufact As String * 9
Decrem As String * 5
salto As String
End Type
Public Type ventilac
id As Long
Aplicacion As String * 40
Ocupacion As String * 6
lps As String * 6
Sup As String * 2
salto As String
End Type
Public Type Us
id As Long
Descripcion As String * 60
Densidad As String * 9
Resistencia As String * 9
conf As String * 2
salto As String
End Type
Public Type SHGC
id As Long
Mes As String * 11
Hora As String * 7
N As String * 9
NE As String * 9
E As String * 9
SE As String * 9
S As String * 9
SO As String * 9
O As String * 9
NO As String * 9
Hor As String * 9
salto As String
End Type
Public Function lenfile(ruta) As Long
Dim datos As techo
Dim i As Integer
i = 0
Open ruta For Binary Access Read As #1 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
Loop
Close #1
lenfile = i
End Function
Public Function lenfile2(ruta) As Long
Dim datos As climas
Dim i As Integer
i = 0
Open ruta For Binary Access Read As #1 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
Loop
Close #1

Module1 - 5
lenfile2 = i
End Function
Public Function lenfile3(ruta) As Long
Dim datos As Calculos
Dim i As Integer
i = 0
Open ruta For Binary Access Read As #1 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
Loop
Close #1
lenfile3 = i
End Function
Public Function lenfile4(ruta) As Long
Dim result As Resulta2
Dim i As Integer
i = 0
Open ruta For Binary Access Read As #1 Len = Len(result)
Do While Not EOF(1)
Get #1, , result
i = i + 1
Loop
Close #1
lenfile4 = i
End Function
Public Function lenfile5(ruta) As Long
Dim result As Tabla11
Dim i As Integer
i = 0
Open ruta For Binary Access Read As #1 Len = Len(result)
Do While Not EOF(1)
Get #1, , result
i = i + 1
Loop
Close #1
lenfile5 = i
End Function
Public Function lenfile6(ruta) As Long
Dim result As ventilac
Dim i As Integer
i = 0
Open ruta For Binary Access Read As #1 Len = Len(result)
Do While Not EOF(1)
Get #1, , result
i = i + 1
Loop
Close #1
lenfile6 = i
End Function
Public Function lenfile7(ruta) As Long
Dim result As SHGC
Dim i As Integer
i = 0
Open ruta For Binary Access Read As #1 Len = Len(result)
Do While Not EOF(1)
Get #1, , result
i = i + 1
Loop
Close #1
lenfile7 = i
End Function
Public Function lenfile8(ruta) As Long
Dim result As Us

Module1 - 6
Dim i As Integer
i = 0
Open ruta For Binary Access Read As #1 Len = Len(result)
Do While Not EOF(1)
Get #1, , result
i = i + 1
Loop
Close #1
lenfile8 = i
End Function
Public Function Log10(numero As Double) As Double
Log10 = Log(numero) / 2.30258509299405
End Function
Public Function Pi() As Double
Pi = (Atn(1) * 4)
End Function
Public Function Deg2Rad(number As Double) As Double
Deg2Rad = (number * Pi / 180)
End Function
Public Function Rad2Deg(number As Double) As Double
Rad2Deg = (number * 180 / Pi)
End Function
Function Acs(number As Double) As Double
If number = 1 Then
Acs = 0
ElseIf number = -1 Then
Acs = Pi
Else
Acs = (Atn(((-(number) / Sqr(((-(number) * (number) + 1)))))) + Pi / 2)
End If
End Function
Function AcsD(number As Double) As Double
AcsD = (Rad2Deg((Acs((number)))))
End Function
Function Asn(number As Double) As Double
If number = 1 Then
Asn = (Pi / 2)
ElseIf number = -1 Then
Asn = -(Pi / 2)
Else
Asn = (Atn((number) / (Sqr((-number * number + 1)))))
End If
End Function
Function AsnD(number As Double) As Double
AsnD = (Rad2Deg(Asn((number))))
End Function
Function SinD(number As Double) As Double
SinD = (Sin(Deg2Rad((number))))
End Function
Function CosD(number As Double) As Double
CosD = (Cos(Deg2Rad((number))))
End Function

MotoresElectricos - 1
Private
Dim
Dim
Dim

Sub Command1_Click()
datos As Motores
i As Integer
n_list As Long

n_list = lenfile2(App.Path & "/Tablas/TablaMotores.cfl")


Open App.Path & "/Tablas/TablaMotores.cfl" For Random As #1 Len = Len(datos)
Get #1, n_list, datos
Close #1
datos.HP = Text1.Text
datos.kW = Text2.Text
datos.motor = Text3.Text
datos.rpm = Text4.Text
datos.eficiencia = Text5.Text
datos.A = Text6.Text
datos.B = Text7.Text
datos.C = Text8.Text
datos.D = 0
datos.id = datos.id + 1
datos.salto = vbCrLf
Open App.Path & "/Tablas/TablaMotores.cfl" For Random As #1 Len = Len(datos)
Put #1, n_list, datos
Close #1
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = 1500
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text8.Text = ""
Call Form_Load
End Sub
Private Sub Form_Load()
Dim datos As Motores
ListView1.ColumnHeaders.Clear
ListView1.ColumnHeaders.Add , "ID", "ID", 0
ListView1.ColumnHeaders.Add , "PK", "PK", 0
ListView1.ColumnHeaders.Add , "ta", "Potencia [HP]", 1200, 2
ListView1.ColumnHeaders.Add , "", "Potencia [kW]", 1200, 2
ListView1.ColumnHeaders.Add , "Ch", "Tipo de Motor", 1900, 2
ListView1.ColumnHeaders.Add , "Chm", "Velocidad Nominal [rpm]", 1900, 2
ListView1.ColumnHeaders.Add , "CS", "Eficiencia [%]", 1200, 2
ListView1.ColumnHeaders.Add , "CL", "A [Watt]", 1200, 2
ListView1.ColumnHeaders.Add , "IrrB", "B [Watt]", 1200, 2
ListView1.ColumnHeaders.Add , "IrrA", "C[Watt]", 1200, 2
ListView1.ListItems.Clear
Dim itmX As ListItem
Open App.Path & "/Tablas/TablaMotores.cfl" For Random Access Read As #1 Len = Len(datos)
i = 0
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.D, 1)) = 0 Then
Set itmX = ListView1.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.HP)
itmX.SubItems(3) = Trim(datos.kW)
itmX.SubItems(4) = Trim(datos.motor)
itmX.SubItems(5) = Trim(datos.rpm)
itmX.SubItems(6) = Trim(datos.eficiencia)
itmX.SubItems(7) = Trim(datos.A)
itmX.SubItems(8) = Trim(datos.B)
itmX.SubItems(9) = Trim(datos.C)
Set itmX = Nothing
End If
Loop

MotoresElectricos - 2
Close #1
End Sub
Private Sub ListView1_dblclick()
Dim datos As Motores
Open App.Path & "/Tablas/TablaMotores.cfl" For Binary Access Read As #1 Len = Len(datos)
Get #1, (ListView1.SelectedItem.SubItems(1) * Len(datos)) + 1, datos
Close #1
Cargas.txtPotenciaEquipos.Text = Trim(datos.kW) * 1000
Cargas.txtEficienciaEquipos.Text = Trim(datos.eficiencia)
A = Trim(datos.A)
B = Trim(datos.B)
C = Trim(datos.C)
Me.Hide
Cargas.Show
End Sub

Ganancia de Calor de los Motores Elctricos Tpicos

SELECCIONAR EL TIPO DE MOTOR HACIENDO DOBLE CLICK SOBRE L

(*)Tabla 4, Captulo 28, "ASHRAE Fundamentals (1997)

NormasVent - 1
Dim datos As ventilac
Private Sub Form_Load()
ListView1.ColumnHeaders.Clear
ListView1.ColumnHeaders.Add , "ID", "ID", 0
ListView1.ColumnHeaders.Add , "PK", "PK", 0
ListView1.ColumnHeaders.Add , "ciu", "Aplicacion", 2000, 2
ListView1.ColumnHeaders.Add , "en", "Ocupacin", 1100, 2
ListView1.ColumnHeaders.Add , "fe", "L/(s*persona)", 1100, 2
ListView2.ColumnHeaders.Clear
ListView2.ColumnHeaders.Add , "ID", "ID", 0
ListView2.ColumnHeaders.Add , "PK", "PK", 0
ListView2.ColumnHeaders.Add , "ciu", "Aplicacion", 2000, 2
ListView2.ColumnHeaders.Add , "en", "Ocupacin", 1100, 2
ListView2.ColumnHeaders.Add , "fe", "L/(s*m^2)", 1100, 2
ListView1.ListItems.Clear
ListView2.ListItems.Clear
i = 0
Open App.Path & "/Tablas/TablaVentilac.cfl" For Random Access Read As #1 Len = Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.Sup, 1)) = "N" Then
Set itmX = ListView1.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.Aplicacion)
itmX.SubItems(3) = Trim(datos.Ocupacion)
itmX.SubItems(4) = Trim(datos.lps)
Set itmX = Nothing
End If
Loop
Close #1
Open App.Path & "/Tablas/TablaVentilac.cfl" For Random Access Read As #1 Len = Len(datos)
i = 0
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.Sup, 1)) = "C" Then
Set itmX = ListView2.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.Aplicacion)
itmX.SubItems(3) = Trim(datos.Ocupacion)
itmX.SubItems(4) = Trim(datos.lps)
Set itmX = Nothing
End If
Loop
Close #1
End Sub
Private Sub ListView1_dblclick()
Dim ventilac As Double
Dim InfIl As Double
Open App.Path & "/Tablas/TablaVentilac.cfl" For Binary Access Read As #1 Len = Len(datos)
Get #1, (ListView1.SelectedItem.SubItems(1) * Len(datos)) + 1, datos
Close #1
ventilac = Trim(datos.lps) * Text1.Text
InfIl = ventilac * 0.15
CondicionesOficina.txtVentof.Text = ventilac
CondicionesOficina.txtInfil.Text = InfIl
Me.Hide
End Sub
Private Sub ListView2_Dblclick()
Dim ventilac As Double
Dim InfIl As Double
Open App.Path & "/Tablas/TablaVentilac.cfl" For Binary Access Read As #1 Len = Len(datos)
Get #1, (ListView2.SelectedItem.SubItems(1) * Len(datos)) + 1, datos
Close #1
ventilac = Trim(datos.lps) * Text2.Text
InfIl = ventilac * 0.1
CondicionesOficina.txtVentof.Text = ventilac

NormasVent - 2
CondicionesOficina.txtInfil.Text = InfIl
Me.Hide
End Sub

Seleccione el uso que mayor se asemeje al uso real del ambiente.


Los
requisitos de Ventilacin e infiltracin se calculan automticamente para su comodidad.

Resultados - 1

Dim i As Integer: Dim TEAGUA As Long: Dim CHGMIN As Double


Dim CantOfiIgual(5) As Double
Dim QTMAXUMA(5) As Double: Dim QSMAXUMA(5) As Double: Dim QLMAXUMA(5) As Double
Dim Qtecho(11, 23) As Double
Dim TE As Double
Dim TI As Double
Dim CPAIRE As Double: Dim CPH2O As Double: Dim RA As Double: Dim TSAT As Double
Dim TSATA As Double: Dim ENTALLIQ As Double: Dim PWSSAT As Double: Dim WSAT As Double
Dim W As Double: Dim T As Double: Dim VOLESP As Double: Dim FCS As Double
Dim ENTALVAP As Double: Dim FCL As Double
Dim Qpared(11, 23) As Double
Dim Qvidrio(11, 23) As Double
Dim Qluces(0, 24) As Double: Dim QCluces(0, 24) As Double
Dim QRluces(0, 24) As Double
Dim Qpersonas(0, 24) As Double
Dim CAPTOTALUE As Double
Dim QLpersonas(0, 24) As Double: Dim QSRpersonas(0, 24) As Double
Dim QSpersonas(0, 24) As Double: Dim QSCpersonas(0, 24) As Double
Dim Qequipos(0, 24) As Double
Dim TETDT(1 To 24, 1 To 12) As Double: Dim QTechos(1 To 24, 1 To 12) As Double
Dim QTMAX As Double
Dim QTI, QSI, QLI As Double
Dim TADPA As Double: Dim PRESION As Double: Dim PWSADP As Double: Dim ERSHF As Double: Dim EQSI As
Double
Dim TINT As Double: Dim QSVENT As Double: Dim QLVENT As Double: Dim PWSBHA As Double
Dim tbha As Double: Dim WSBHA As Double: Dim TBSSF As Double: Dim TBHF As Double
Dim BYPF As Single: Dim TBSMF As Double
Dim QTechTotal(1 To 12) As Double: Dim DelayT As Integer
Dim TdelT As Double
Dim TETD(1 To 24, 1 To 12) As Double: Dim QParedes(1 To 24, 1 To 12) As Double
Dim QparTotal(1 To 12) As Double: Dim Delay As Integer
Dim Tdel As Double
Dim Solar(1 To 24, 1 To 12) As Double: Dim ConvectVid(1 To 24, 1 To 12) As Double
Dim TSolarm(1 To 12) As Double: Dim Tconvidm(1 To 12) As Double
Dim SolTempCl(1 To 24, 1 To 12, 1 To 9) As Double: Dim SolTempOs(1 To 24, 1 To 12, 1 To 9) As Doub
le
Dim IDT(1 To 12, 1 To 9) As Double
Dim AvgSolCl(1 To 12, 1 To 9) As Double: Dim AvgSolOs(1 To 12, 1 To 9) As Double
Dim TempMaxExternasAnual(1 To 24, 1 To 12) As Double
Dim TempMaxExternas(1 To 24) As Double: Dim TempMax As Double
Dim Variac As Double
Dim Qaparatos(0, 24) As Double: Dim QLaparatos(0, 24) As Double: Dim QSaparatos(0, 24) As Double
Dim CargaTotalUE(12, 24) As Double: Dim SensibleUE(12, 24) As Double: Dim LatenteUE(12, 24) As Dou
ble
Dim TotalUMA(1 To 20) As Double: Dim LatenteUMA(1 To 20) As Double: Dim SensibleUMA(1 To 20) As Do
uble
Dim TotalSensible(11, 23) As Double: Dim TotalLatente(11, 23) As Long
Dim QSsum(12, 24, 5) As Double: Dim QLsum(24, 5) As Double: Dim QTSum(12, 24, 5) As Double
Dim n_ofi As Long: Dim n_uma As Long: Dim nUma As Long
Dim Ofi(5) As String
Dim Uma(5) As String
Dim UmaIgual(5) As Long
Dim OficinasIgual(5) As Long
Dim UmaOfi(5) As String: Dim VolOfi(5) As Double: Dim VUMASG(5) As Double
Dim result As Resulta2
Dim CaudalAireOfi(5) As Double: Dim CaudalAireUma(5) As Double
Dim QofiC(1 To 5, 1 To 12, 1 To 25) As Double: Dim QSofic(1 To 5, 1 To 12, 1 To 25) As Double: Dim
QLofic(1 To 5, 1 To 12, 1 To 25) As Double
Dim QsensVent(1 To 25, 1 To 12) As Double: Dim QsensInfil(1 To 25, 1 To 12) As Double
Dim QLatVent(1 To 25, 1 To 12) As Double: Dim QLatInfil(1 To 25, 1 To 12) As Double
Dim QTVent(1 To 25, 1 To 12) As Double: Dim QTInfil(1 To 25, 1 To 12) As Double
Dim QSSUMOF(5) As Double
Dim AO(1 To 12) As String
Dim decl(1 To 12) As Double
Dim A(1 To 12) As Double
Dim B(1 To 12) As Double
Dim C(1 To 12) As Double
Dim Time(1 To 12) As Double
Dim Phi(1 To 9) As Double
Dim SHGFhm(1 To 24, 1 To 12, 1 To 9) As Double
Dim CosTita As Double: Dim tilt As Double

Resultados - 2

Dim EDN As Double: Dim ED As Double: Dim Y As Double


Dim Difusa As Double: Dim Eds As Double: Dim Edg As Double
Dim SufSolAz As Double: Dim H As Double: Dim L As Double: Dim declinacion As Double
Dim Beta As Double: Dim Solaz As Double: Dim CosSolAz As Double
Dim Var1 As Double: Dim Var2 As Double: Dim Var3 As Double: Dim Var4 As Double: Dim Transmitido As
Double: Dim Absorbido As Double
Dim SHGF As Double
Dim inicios(1 To 12) As Long
Dim n_hor As Long
Dim datos As techo
Dim tabla As SHGC
Dim lhg, shg, ini, dur, cantp, fin As Double
Dim k, m, N, nOfi As Integer
Dim Tabs As Integer
Dim Tinterna(5) As Double: Dim Texterna(5) As Double: Dim Winterna(5) As Double: Dim Wexterna(5) A
s Double
Dim CMHL(5) As Long: Dim RETL(5) As Long: Dim EXTL(5) As Long: Dim CMH As Long
Dim IGUALES As Long
Dim Tme, Text, Tintu, Hrextu, Hrintu As Double
Dim Directorio As String: Dim RCAL As Long
Dim Mesmax As Long: Dim Horamax As Long: Dim MesmaxUE As Long: Dim HoramaxUE As Long
Dim OfienUma As Long: Dim QsOficUma(1 To 5, 1 To 5) As Double
Private Sub Form_Load()
Directorio = DatosGenerales.txtTituloProyecto.Text
i = 0
k = 0

u = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random Access Read As #1 Len = Len(dato
s)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.TVar, 1)) = "U" Then
Uma(u) = Trim(datos.nombuma)
UmaIgual(u) = datos.cantumaig
u = u + 1
End If
Loop
n_uma = u
Close #1
Call SHGFCALC
For Meses = 1 To 12
For horas = 1 To 11
siguiente = horas + 1
varequis = SHGFhm(horas, Meses, 9) * 1
varequismas1 = SHGFhm(siguiente, Meses, 9) * 1
If varequis > varequismas1 Then
inicios(Meses) = horas + 1
End If
Next horas
Next Meses
If ExisteArch(App.Path & "/Tablas/SHGF/SHGF_LAT" + Trim(L) + ".shg") = False Then Call TablasSHGF
Dim Porcentaje(1 To 24) As Double
Porcentaje(1) = 0.87: Porcentaje(2) = 0.92: Porcentaje(3) = 0.96: Porcentaje(4) = 0.99
Porcentaje(5) = 1: Porcentaje(6) = 0.98: Porcentaje(7) = 0.93: Porcentaje(8) = 0.84
Porcentaje(9) = 0.71: Porcentaje(10) = 0.56: Porcentaje(11) = 0.39: Porcentaje(12) = 0.23
Porcentaje(13) = 0.11: Porcentaje(14) = 0.03: Porcentaje(15) = 0: Porcentaje(16) = 0.03
Porcentaje(17) = 0.1: Porcentaje(18) = 0.21: Porcentaje(19) = 0.34: Porcentaje(20) = 0.47
Porcentaje(21) = 0.58: Porcentaje(22) = 0.48: Porcentaje(23) = 0.76: Porcentaje(24) = 0.82
Variac = CondicionesExteriores.Text1.Text
TempMax = CondicionesExteriores.txtTexts.Text
For Mes = 1 To 12
For Hora = 1 To 24
TempMaxExternasAnual(Hora, Mes) = TempMax - Porcentaje(Hora) * Variac
Next Hora
Next Mes

Resultados - 3

For Meses = 1 To 12
comienzo = inicios(Meses)
finali = 24 - comienzo
previa = comienzo - 1
posti = finali + 1
For orient = 1 To 9
IDT(Meses, orient) = 0
Temp = 0
If orient = 9 Then i = 3.9 Else i = 0
For Hora = 1 To previa
SolTempCl(Hora, Meses, orient) = TempMaxExternasAnual(Hora, Meses) + i
SolTempOs(Hora, Meses, orient) = TempMaxExternasAnual(Hora, Meses) + i
Temp = Temp + TempMaxExternasAnual(Hora, Meses)
Next Hora
For Hora = comienzo To finali
SolTempCl(Hora, Meses, orient) = TempMaxExternasAnual(Hora, Meses) + 0.026 * SHGFh
m(Hora, Meses, orient) * 1.15 + i
SolTempOs(Hora, Meses, orient) = TempMaxExternasAnual(Hora, Meses) + 0.052 * SHGFh
m(Hora, Meses, orient) * 1.15 + i
IDT(Meses, orient) = IDT(Meses, orient) + SHGFhm(Hora, Meses, orient)
Temp = Temp + TempMaxExternasAnual(Hora, Meses)
Next Hora
For Hora = posti To 24
SolTempCl(Hora, Meses, orient) = TempMaxExternasAnual(Hora, Meses) + i
SolTempOs(Hora, Meses, orient) = TempMaxExternasAnual(Hora, Meses) + i
Temp = Temp + TempMaxExternasAnual(Hora, Meses)
Next Hora
AvgSolCl(Meses, orient) = (Temp / 24) + 0.026 * (IDT(Meses, orient) / 24) + i
AvgSolOs(Meses, orient) = (Temp / 24) + 0.052 * (IDT(Meses, orient) / 24) + i
Next orient
Next Meses
i = 0
k = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len =
Len(datos)
Do While Not EOF(1)
Get #1, , datos
'i = i + 1
If UCase(Left(datos.TVar, 1)) = "O" Then
Ofi(k) = datos.nombamb
UmaOfi(k) = Trim(datos.UmaAt)
OficinasIgual(k) = datos.IgOfi
k = k + 1
End If
Loop
n_ofi = k
Close #1
i = 0
m = 0
N = 0
L = 0
For nOfi = 1 To n_ofi
Dim nombrearchivo As String
nombrearchivo = App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi 1))) + ".rst"
If ExisteArch(nombrearchivo) = True Then Kill App.Path & "/" & Trim(Directorio) & "/Resultados
/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".rst"
CARVid = 0: CARPared = 0: CARTecho = 0: CArTechint = 0: CarPiso = 0: CaRPArtic = 0
CarAparat = 0: CarLuces = 0: CarEQuip = 0: CarPersonas = 0
For L = 1 To 24
QSpersonas(0, L) = 0
QLpersonas(0, L) = 0
QSCpersonas(0, L) = 0
QSRpersonas(0, L) = 0
Qequipos(0, L) = 0
QRluces(0, L) = 0
QCluces(0, L) = 0
Qluces(0, L) = 0
QLaparatos(0, L) = 0
QSaparatos(0, L) = 0
Qaparatos(0, L) = 0

Resultados - 4

Next L
particion = 0: Tparticion = 0: Piso = 0: Tpiso = 0: TechoInt = 0: TTechoInt = 0
totalS = 0: totalL = 0: totalSc = 0: totalSr = 0
totalEq = 0
totalapara = 0: totallapara = 0: totalsapara = 0
totalluces = 0: totalrluc = 0: totalcluc = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len
= Len(datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If Ofi((nOfi - 1)) = datos.Ofcorr Then
If UCase(Left(datos.tcarga, 13)) = "PERSONAS
" Then
CarPersonas = 1
lhg = Trim(datos.lhg)
shg = Trim(datos.shg)
ini = Trim(datos.inicio)
dur = Trim(datos.duracion)
cantp = Trim(datos.cantpersonas)
ini = ini * 1
dur = dur * 1 - 1
fin = ini + dur
For j = 1 To 24
If j < ini Then
QSpersonas(0, j) = 0 + QSpersonas(0, j)
QLpersonas(0, j) = 0 + QLpersonas(0, j)
QSCpersonas(0, j) = 0 + QSCpersonas(0, j)
QSRpersonas(0, j) = 0 + QSRpersonas(0, j)
N = N + 1
End If
If j >= ini And j <= fin Then
QSpersonas(0, j) = shg * cantp + QSpersonas(0, j)
QLpersonas(0, j) = lhg * cantp + QLpersonas(0, j)
QSCpersonas(0, j) = shg * cantp * 0.67 + QSCpersonas(0, j)
m = m + 1
End If
If j >= ini + 4 And j <= fin Then
QSRpersonas(0, j) = shg * cantp * 0.33 + QSRpersonas(0, j)
End If
If j > fin Then
QSpersonas(0, j) = 0 + QSpersonas(0, j)
QLpersonas(0, j) = 0 + QLpersonas(0, j)
QSCpersonas(0, j) = 0 + QSCpersonas(0, j)
QSRpersonas(0, j) = 0 + QSRpersonas(0, j)
L = L + 1
End If
If j = ini Then QSRpersonas(0, j) = QSRpersonas(0, j) + 0.2 * 0.33 * shg * can
tp
If j = ini + 1 Then QSRpersonas(0, j) = QSRpersonas(0, j) + 0.4 * 0.33 * shg *
cantp
If j = ini + 2 Then QSRpersonas(0, j) = QSRpersonas(0, j) + 0.6 * 0.33 * shg *
cantp
If j = ini + 3 Then QSRpersonas(0, j) = QSRpersonas(0, j) + 0.8 * 0.33 * shg *
cantp
If j = fin Then QSRpersonas(0, j) = 0.8 * 0.33 * shg * cantp + QSRpersonas(0,
j)
If j = fin + 1 Then QSRpersonas(0, j) = 0.6 * 0.33 * shg * cantp + QSRpersonas
(0, j)
If j = fin + 2 Then QSRpersonas(0, j) = 0.4 * 0.33 * shg * cantp + QSRpersonas
(0, j)
If j = fin + 3 Then QSRpersonas(0, j) = 0.2 * 0.33 * shg * cantp + QSRpersonas
(0, j)
totalS = totalS + QSpersonas(0, j)
totalL = totalL + QLpersonas(0, j)
totalSc = totalSc + QSCpersonas(0, j)
totalSr = totalSr + QSRpersonas(0, j)
Qpersonas(0, j) = Qpersonas(0, j) + QSpersonas(0, j) + QLpersonas(0, j)
Next j
End If
If UCase(Left(datos.tcarga, 13)) = "EQUIPOTENCIA " Then
CarEQuip = 1

Resultados - 5

qequi = Trim(datos.Tcolocacion)
ini = Trim(datos.inicio)
dur = Trim(datos.duracion)
Canteq = Trim(datos.IgEquipos)
uso = Trim(datos.uso)
ini = ini * 1
dur = dur * 1 - 1
fin = ini + dur
qequi = qequi * 1
For j = 1 To 24
If j < ini Then
Qequipos(0, j) = 0 + Qequipos(0, j)
N = N + 1
End If
If j >= ini And j <= fin Then
Qequipos(0, j) = qequi * uso * Canteq + Qequipos(0, j)
m = m + 1
End If
If j > fin Then
Qequipos(0, j) = 0 + Qequipos(0, j)
L = L + 1
End If
totalEq = totalEq + Qequipos(0, j)
Next j
End If
If UCase(Left(datos.tcarga, 13)) = "LUCES
" Then
CarLuces = 1
Facuso = Trim(datos.uso)
poten = Trim(datos.Potluces)
Facbal = Trim(datos.coefdis)
ini = Trim(datos.inicio)
dur = Trim(datos.duracion)
kind = Trim(datos.tipoluces)
ini = ini * 1
dur = dur * 1 - 1
fin = ini + dur
q = 0
m = 0
L = 0
N = 0
For j = 1 To 24
If j < ini Then
QRluces(0, j) = 0 + QRluces(0, j)
QCluces(0, j) = 0 + QCluces(0, j)
q = q + 1
End If
If j >= ini And j <= fin Then
If kind = "Fluorescente" Then
QRluces(0, j) = QRluces(0, j) + (poten * (Facuso / 100) * Facbal * 0.5
)

QCluces(0, j) = QCluces(0, j) + (poten * (Facuso / 100) * Facbal * 0.5


)
m = m + 1
Else

QRluces(0, j) = QRluces(0, j) + (poten * (Facuso / 100) * Facbal * 0.8


)

QCluces(0, j) = QCluces(0, j) + (poten * (Facuso / 100) * Facbal * 0.2


)
L = L + 1
End If
End If
If j > fin Then
QRluces(0, j) = 0 + QRluces(0, j)
QCluces(0, j) = 0 + QCluces(0, j)
N = N + 1
End If
totalrluc = totalrluc + QRluces(0, j)
totalcluc = totalcluc + QCluces(0, j)
Qluces(0, j) = QRluces(0, j) + QCluces(0, j)
Next j
totalluces = totalrluc + totalcluc

Resultados - 6
End If
If UCase(Left(datos.tcarga, 13)) = "APARATOS
" Then
CarAparat = 1
sensible = Trim(datos.shg)
Latente = Trim(datos.lhg)
Ig = Trim(datos.Igaparatos)
Campana = Trim(datos.Campana)
ini = Trim(datos.inicio)
dur = Trim(datos.duracion)
ini = ini * 1
dur = dur * 1 - 1
fin = ini + dur
For j = 1 To 24
If j < ini Then
QLaparatos(0, j) = 0 + QLaparatos(0, j)
QSaparatos(0, j) = 0 + QSaparatos(0, j)
q = q + 1
End If
If j >= ini And j <= fin Then
QSaparatos(0, j) = sensible * 1 * Ig + QSaparatos(0, j)
If Campana = "SIN" Then
QLaparatos(0, j) = QLaparatos(0, j) + Latente * 1 * Ig
m = m + 1
Else
QLaparatos(0, j) = 0 + QLaparatos(0, j)
L = L + 1
End If
End If
If j > fin Then
QLaparatos(0, j) = 0 + QLaparatos(0, j)
QSaparatos(0, j) = 0 + QSaparatos(0, j)
N = N + 1
End If
totallapara = totallapara + QLaparatos(0, j)
totalsapara = totalsapara + QSaparatos(0, j)
Qaparatos(0, j) = QLaparatos(0, j) + QSaparatos(0, j)
Next j
totalapara = totallapara + totalsapara
End If
If UCase(Left(datos.tcarga, 13)) = "PARTICION
" Or UCase(Left(datos.tcarga, 13)) =
"TECHO INTERNO" Or UCase(Left(datos.tcarga, 13)) = "PISO
" Then
Nombre = Trim(datos.tcarga)
Ucoef = Trim(datos.Ucoef)
area = Trim(datos.area)
tady = Trim(datos.TAdyacente)
tofi = Trim(datos.Tso)
IGUALES = Trim(datos.IgPart)
If Nombre = "PARTICION" Then
CaRPArtic = 1
particion = IGUALES * area * Ucoef * (tady * 1 - tofi * 1)
Tparticion = particion * 24
q = q + 1
End If
If Nombre = "PISO" Then
CarPiso = 1
Piso = IGUALES * area * Ucoef * (tady * 1 - tofi * 1)
Tpiso = Piso * 24
End If
If Nombre = "TECHO INTERNO" Then
CArTechint = 1
TechoInt = IGUALES * area * Ucoef * (tady * 1 - tofi * 1)
TTechoInt = TechoInt * 24
N = N + 1
End If
End If
If UCase(Left(datos.tcarga, 13)) = "VIDRIO
" Then
CARVid = 1
area = Trim(datos.area)
Ucoef = Trim(datos.Ucoef)
Scoef = Trim(datos.Atenuacion)
Tempof = Trim(datos.Tso)

Resultados - 7

TemExt = Trim(datos.Textd)
OrientacionV = Trim(datos.orientacion)
IgualVid = Trim(datos.igvid)
If OrientacionV = "N" Then ori = 1
If OrientacionV = "NE" Then ori = 2
If OrientacionV = "E" Then ori = 3
If OrientacionV = "SE" Then ori = 4
If OrientacionV = "S" Then ori = 5
If OrientacionV = "S0" Then ori = 6
If OrientacionV = "O" Then ori = 7
If OrientacionV = "N0" Then ori = 8
If CondicionesExteriores.cboAnalisis.ListIndex = 0 Then
For Meses = 1 To 12
comienzo = inicios(Meses)
finali = 24 - comienzo
previa = comienzo - 1
posti = finali + 1
Tsolar = 0: Tconvid = 0
For horas = 1 To previa
Solar(horas, Meses) = 0
ConvectVid(horas, Meses) = IgualVid * Ucoef * area * (TempMaxExternasA
nual(horas, Meses) - Tempof)
Tsolar = Tsolar + Solar(horas, Meses)
Tconvid = Tconvid + ConvectVid(horas, Meses)
Next horas
For horas = comienzo To finali
Solar(horas, Meses) = IgualVid * area * Scoef * SHGFhm(horas, Meses, o
ri)
Tsolar = Tsolar + Solar(horas, Meses)
ConvectVid(horas, Meses) = IgualVid * Ucoef * area * (TempMaxExternasA
nual(horas, Meses) - Tempof)
Tconvid = Tconvid + ConvectVid(horas, Meses)
Next horas
For horas = posti To 24
Solar(horas, Meses) = 0
ConvectVid(horas, Meses) = IgualVid * Ucoef * area * (TempMaxExternasA
nual(horas, Meses) - Tempof)
Tsolar = Tsolar + Solar(horas, Meses)
Tconvid = Tconvid + ConvectVid(horas, Meses)
Next horas
Tconvidm(Meses) = Tconvid
TSolarm(Meses) = Tsolar
Next Meses
Else
Meses = CondicionesExteriores.cboAnalisis.ListIndex
comienzo = inicios(Meses)
finali = 24 - comienzo
previa = comienzo - 1
posti = finali + 1
Tsolar = 0: Tconvid = 0
For horas = 1 To previa
Solar(horas, Meses) = 0
ConvectVid(horas, Meses) = IgualVid * Ucoef * area * (TempMaxExternasA
nual(horas, Meses) - Tempof)
Tsolar = Tsolar + Solar(horas, Meses)
Tconvid = Tconvid + ConvectVid(horas, Meses)
Next horas
For horas = comienzo To finali
Solar(horas, Meses) = IgualVid * area * Scoef * SHGFhm(horas, Meses, o
ri)
Tsolar = Tsolar + Solar(horas, Meses)
ConvectVid(horas, Meses) = IgualVid * Ucoef * area * (TempMaxExternasA
nual(horas, Meses) - Tempof)
Tconvid = Tconvid + ConvectVid(horas, Meses)
Next horas
For horas = posti To 24
Solar(horas, Meses) = 0
ConvectVid(horas, Meses) = IgualVid * Ucoef * area * (TempMaxExternasA
nual(horas, Meses) - Tempof)
Tsolar = Tsolar + Solar(horas, Meses)
Tconvid = Tconvid + ConvectVid(horas, Meses)

Resultados - 8
Next horas
Tconvidm(Meses) = Tconvid
TSolarm(Meses) = Tsolar
End If

End If
If UCase(Left(datos.tcarga, 13)) = "PARED
" Then
CARPared = 1
Ucoef = Trim(datos.Ucoef)
area = Trim(datos.area)
OrientPa = Trim(datos.orientacion)
decrement = Trim(datos.inercia)
Tlag = Trim(datos.fte)
colorP = Trim(datos.color)
TINT = Trim(datos.Tso)
IgualPare = Trim(datos.IgPar)
If OrientPa = "N" Then orient = 1
If OrientPa = "NE" Then orient = 2
If OrientPa = "E" Then orient = 3
If OrientPa = "SE" Then orient = 4
If OrientPa = "S" Then orient = 5
If OrientPa = "S0" Then orient = 6
If OrientPa = "O" Then orient = 7
If OrientPa = "N0" Then orient = 8
If CondicionesExteriores.cboAnalisis.ListIndex = 0 Then
For Meses = 1 To 12
QparTotal(Meses) = 0
For Hora = 1 To 24
Delay = Round((Hora - Tlag), 0)
If Delay <= 0 Then Delay = Round(24 + Delay)
If colorP = 0.026 Then
Tdel = SolTempCl(Delay, Meses, orient)
TETD(Hora, Meses) = AvgSolCl(Meses, orient) - TINT + decrement *
AvgSolCl(Meses, orient))
Else
Tdel = SolTempOs(Delay, Meses, orient)
TETD(Hora, Meses) = AvgSolOs(Meses, orient) - TINT + decrement *
AvgSolOs(Meses, orient))
End If
QParedes(Hora, Meses) = Ucoef * TETD(Hora, Meses) * area * IgualPare
QparTotal(Meses) = QparTotal(Meses) + QParedes(Hora, Meses)
Next Hora
Next Meses
Else
Meses = CondicionesExteriores.cboAnalisis.ListIndex
QparTotal(Meses) = 0
For Hora = 1 To 24
Delay = Round((Hora - Tlag), 0)
If Delay <= 0 Then Delay = Round(24 + Delay)
If colorP = 0.026 Then
Tdel = SolTempCl(Delay, Meses, orient)
TETD(Hora, Meses) = AvgSolCl(Meses, orient) - TINT + decrement *
AvgSolCl(Meses, orient))
Else
Tdel = SolTempOs(Delay, Meses, orient)
TETD(Hora, Meses) = AvgSolOs(Meses, orient) - TINT + decrement *
AvgSolOs(Meses, orient))
End If
QParedes(Hora, Meses) = Ucoef * TETD(Hora, Meses) * area * IgualPare
QparTotal(Meses) = QparTotal(Meses) + QParedes(Hora, Meses)
Next Hora
End If
End If
If UCase(Left(datos.tcarga, 13)) = "TECHO
" Then
CARTecho = 1
Ucoef = Trim(datos.Ucoef)
areaT = Trim(datos.area)
techcoef = Trim(datos.color)
TimLag = Trim(datos.fte)
Decrm = Trim(datos.inercia)
cielor = Trim(datos.cielo)

(Tdel

(Tdel

(Tdel

(Tdel

Resultados - 9

Tempi = Trim(datos.Tso)
If CondicionesExteriores.cboAnalisis.ListIndex = 0 Then
For Meses = 1 To 12
QTechTotal(Meses) = 0
For Hora = 1 To 24
Delay = Round((Hora - TimLag), 0)
If Delay <= 0 Then Delay = Round(24 + Delay)
If techcoef = 0.026 Then
TeDelT = SolTempCl(Delay, Meses, 9)
TETDT(Hora, Meses) = AvgSolCl(Meses, 9) - Tempi + Decrm * (TeDelT - Av
gSolCl(Meses, 9))
Else

TeDelT = SolTempOs(Delay, Meses, 9)


TETDT(Hora, Meses) = AvgSolOs(Meses, 9) - Tempi + Decrm * (TeDelT - Av
gSolOs(Meses, 9))

End If
QTechos(Hora, Meses) = Ucoef * areaT * TETDT(Hora, Meses)
QTechTotal(Meses) = QTechTotal(Meses) + QTechos(Hora, Meses)
Next Hora
Next Meses
Else
Meses = CondicionesExteriores.cboAnalisis.ListIndex
QTechTotal(Meses) = 0
For Hora = 1 To 24
Delay = Round((Hora - TimLag), 0)
If Delay <= 0 Then Delay = Round(24 + Delay)
If techcoef = 0.026 Then
TeDelT = SolTempCl(Delay, Meses, 9)
TETDT(Hora, Meses) = AvgSolCl(Meses, 9) - Tempi + Decrm * (TeDelT - Av
gSolCl(Meses, 9))
Else

TeDelT = SolTempOs(Delay, Meses, 9)


TETDT(Hora, Meses) = AvgSolOs(Meses, 9) - Tempi + Decrm * (TeDelT - Av
gSolOs(Meses, 9))
End If
QTechos(Hora, Meses) = Ucoef * areaT * TETDT(Hora, Meses)
QTechTotal(Meses) = QTechTotal(Meses) + QTechos(Hora, Meses)
Next Hora
End If
End If
End If

Loop
Close #1
Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len =
Len(datos)
Do While Not EOF(1)
Get #1, , datos
If Ofi((nOfi - 1)) = datos.nombamb Then
Qvent = Trim(datos.Ventof)
Qinfil = Trim(datos.InfIl)
Tino = Trim(datos.Tso)
Wino = Trim(datos.Hro) / 100
WEXT = Trim(datos.Hrext) / 100
CaudalAireOfi(nOfi) = Qvent * 1 + Qinfil * 1
Hparedof = Trim(datos.Hpared)
arOfi = Trim(datos.areaof)
VolOfi(nOfi) = arOfi * Hparedof
QSSUMOF(nOfi) = 0
If CondicionesExteriores.cboAnalisis.ListIndex = 0 Then
For Mes = 1 To 12
For Hora = 1 To 24
QsensVent(Hora, Mes) = 1.23 * Qvent * (TempMaxExternasAnual(Hora, Mes) - Tino * 1)
QsensInfil(Hora, Mes) = 1.23 * Qinfil * (TempMaxExternasAnual(Hora, Mes) - Tino *
1)
QLatVent(Hora, Mes) = 3010 * Qvent * (WEXT - Wino)
QLatInfil(Hora, Mes) = 3010 * Qinfil * (WEXT - Wino)
QTVent(Hora, Mes) = QsensVent(Hora, Mes) + QLatVent(Hora, Mes)
QTInfil(Hora, Mes) = QsensInfil(Hora, Mes) + QLatInfil(Hora, Mes)
QsensVent(25, Mes) = QsensVent(25, Mes) + QsensVent(Hora, Mes)
QLatVent(25, Mes) = QLatVent(25, Mes) + QLatVent(Hora, Mes)
QsensInfil(25, Mes) = QsensInfil(25, Mes) + QsensInfil(Hora, Mes)

Resultados - 10

QLatInfil(25, Mes) = QLatInfil(25, Mes) + QLatInfil(Hora, Mes)


QTVent(25, Mes) = QTVent(25, Mes) + QTVent(Hora, Mes)
QTInfil(25, Mes) = QTInfil(25, Mes) + QTInfil(Hora, Mes)
QofiC(nOfi, Mes, Hora) = QTechos(Hora, Mes) + QParedes(Hora, Mes) + Solar(Hora, Me
s) + ConvectVid(Hora, Mes) + particion + Piso + TechoInt + Qaparatos(0, Hora) + Qluces(0, Hora) + Qequ
ipos(0, Hora) + QSpersonas(0, Hora) + QLpersonas(0, Hora) + QTVent(Hora, Mes) + QTInfil(Hora, Mes)
QLofic(nOfi, Mes, Hora) = QLatVent(Hora, Mes) + QLatInfil(Hora, Mes) + QLpersonas(
0, Hora) + QLaparatos(0, Hora)
QSofic(nOfi, Mes, Hora) = QsensVent(Hora, Mes) + QsensInfil(Hora, Mes) + QTechos(H
ora, Mes) + QParedes(Hora, Mes) + Solar(Hora, Mes) + ConvectVid(Hora, Mes) + particion + Piso + TechoI
nt + QSaparatos(0, Hora) + Qluces(0, Hora) + Qequipos(0, Hora) + QSpersonas(0, Hora)
QofiC(nOfi, Mes, 25) = QofiC(nOfi, Mes, Hora) + QofiC(nOfi, Mes, 25)
QSofic(nOfi, Mes, 25) = QSofic(nOfi, Mes, Hora) + QSofic(nOfi, Mes, 25)
QLofic(nOfi, Mes, 25) = QLofic(nOfi, Mes, Hora) + QLofic(nOfi, Mes, 25)
If QSofic(nOfi, Mes, Hora) > QSSUMOF(nOfi) Then
QSSUMOF(nOfi) = QSofic(nOfi, Mes, Hora)
MESMAXOFI = Mes
HORAMAXOFI = Hora
End If
Next Hora
Next Mes
Else
Mes = CondicionesExteriores.cboAnalisis.ListIndex
For Hora = 1 To 24
QsensVent(Hora, Mes) = 1.23 * Qvent * (TempMaxExternasAnual(Hora, Mes) - Tino * 1)
QsensInfil(Hora, Mes) = 1.23 * Qinfil * (TempMaxExternasAnual(Hora, Mes) - Tino *
1)
QLatVent(Hora, Mes) = 3010 * Qvent * (WEXT - Wino)
QLatInfil(Hora, Mes) = 3010 * Qinfil * (WEXT - Wino)
QTVent(Hora, Mes) = QsensVent(Hora, Mes) + QLatVent(Hora, Mes)
QTInfil(Hora, Mes) = QsensInfil(Hora, Mes) + QLatInfil(Hora, Mes)
QsensVent(25, Mes) = QsensVent(25, Mes) + QsensVent(Hora, Mes)
QLatVent(25, Mes) = QLatVent(25, Mes) + QLatVent(Hora, Mes)
QsensInfil(25, Mes) = QsensInfil(25, Mes) + QsensInfil(Hora, Mes)
QLatInfil(25, Mes) = QLatInfil(25, Mes) + QLatInfil(Hora, Mes)
QTVent(25, Mes) = QTVent(25, Mes) + QTVent(Hora, Mes)
QTInfil(25, Mes) = QTInfil(25, Mes) + QTInfil(Hora, Mes)
QofiC(nOfi, Mes, Hora) = QTechos(Hora, Mes) + QParedes(Hora, Mes) + Solar(Hora, Me
s) + ConvectVid(Hora, Mes) + particion + Piso + TechoInt + Qaparatos(0, Hora) + Qluces(0, Hora) + Qequ
ipos(0, Hora) + QSpersonas(0, Hora) + QLpersonas(0, Hora) + QTVent(Hora, Mes) + QTInfil(Hora, Mes)
QLofic(nOfi, Mes, Hora) = QLatVent(Hora, Mes) + QLatInfil(Hora, Mes) + QLpersonas(
0, Hora) + QLaparatos(0, Hora)
QSofic(nOfi, Mes, Hora) = QsensVent(Hora, Mes) + QsensInfil(Hora, Mes) + QTechos(H
ora, Mes) + QParedes(Hora, Mes) + Solar(Hora, Mes) + ConvectVid(Hora, Mes) + particion + Piso + TechoI
nt + QSaparatos(0, Hora) + Qluces(0, Hora) + Qequipos(0, Hora) + QSpersonas(0, Hora)
QofiC(nOfi, Mes, 25) = QofiC(nOfi, Mes, Hora) + QofiC(nOfi, Mes, 25)
QSofic(nOfi, Mes, 25) = QSofic(nOfi, Mes, Hora) + QSofic(nOfi, Mes, 25)
QLofic(nOfi, Mes, 25) = QLofic(nOfi, Mes, Hora) + QLofic(nOfi, Mes, 25)
If QSofic(nOfi, Mes, Hora) > QSSUMOF(nOfi) Then
QSSUMOF(nOfi) = QSofic(nOfi, Mes, Hora)
MESMAXOFI = Mes
HORAMAXOFI = Hora
End If
Next Hora
End If
End If
Loop
Close #1
Dim n_carg As Long
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1
))) + ".rst")
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) + ".r
st" For Random As #1 Len = Len(result)
Get #1, n_carg, result
Close #1
If CarPersonas = 1 Then
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi
- 1))) + ".rst")
result.Comp = "T"
result.Nombre = "Sensible Personas"
result.t1 = QSpersonas(0, 1)

Resultados - 11

".rst"

- 1)))

".rst"

- 1)))

result.t2 = QSpersonas(0, 2)
result.t3 = QSpersonas(0, 3)
result.t4 = QSpersonas(0, 4)
result.t5 = QSpersonas(0, 5)
result.t6 = QSpersonas(0, 6)
result.t7 = QSpersonas(0, 7)
result.t8 = QSpersonas(0, 8)
result.t9 = QSpersonas(0, 9)
result.t10 = QSpersonas(0, 10)
result.t11 = QSpersonas(0, 11)
result.t12 = QSpersonas(0, 12)
result.t13 = QSpersonas(0, 13)
result.t14 = QSpersonas(0, 14)
result.t15 = QSpersonas(0, 15)
result.t16 = QSpersonas(0, 16)
result.t17 = QSpersonas(0, 17)
result.t18 = QSpersonas(0, 18)
result.t19 = QSpersonas(0, 19)
result.t20 = QSpersonas(0, 20)
result.t21 = QSpersonas(0, 21)
result.t22 = QSpersonas(0, 22)
result.t23 = QSpersonas(0, 23)
result.t24 = QSpersonas(0, 24)
result.tTotal = totalS
result.salto = vbCrLf
result.id = 0
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "L"
result.Nombre = "Latente Personas"
result.t1 = QLpersonas(0, 1)
result.t2 = QLpersonas(0, 2)
result.t3 = QLpersonas(0, 3)
result.t4 = QLpersonas(0, 4)
result.t5 = QLpersonas(0, 5)
result.t6 = QLpersonas(0, 6)
result.t7 = QLpersonas(0, 7)
result.t8 = QLpersonas(0, 8)
result.t9 = QLpersonas(0, 9)
result.t10 = QLpersonas(0, 10)
result.t11 = QLpersonas(0, 11)
result.t12 = QLpersonas(0, 12)
result.t13 = QLpersonas(0, 13)
result.t14 = QLpersonas(0, 14)
result.t15 = QLpersonas(0, 15)
result.t16 = QLpersonas(0, 16)
result.t17 = QLpersonas(0, 17)
result.t18 = QLpersonas(0, 18)
result.t19 = QLpersonas(0, 19)
result.t20 = QLpersonas(0, 20)
result.t21 = QLpersonas(0, 21)
result.t22 = QLpersonas(0, 22)
result.t23 = QLpersonas(0, 23)
result.t24 = QLpersonas(0, 24)
result.tTotal = totalL
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "S"
result.Nombre = "Sensible Convectiva Personas"
result.t1 = QSCpersonas(0, 1)
result.t2 = QSCpersonas(0, 2)

+ Trim(Ofi((nOfi - 1))) +

+ "Ofic" + Trim(Ofi((nOfi

+ Trim(Ofi((nOfi - 1))) +

+ "Ofic" + Trim(Ofi((nOfi

Resultados - 12

".rst"

- 1)))

".rst"

- 1)))

result.t3 = QSCpersonas(0, 3)
result.t4 = QSCpersonas(0, 4)
result.t5 = QSCpersonas(0, 5)
result.t6 = QSCpersonas(0, 6)
result.t7 = QSCpersonas(0, 7)
result.t8 = QSCpersonas(0, 8)
result.t9 = QSCpersonas(0, 9)
result.t10 = QSCpersonas(0, 10)
result.t11 = QSCpersonas(0, 11)
result.t12 = QSCpersonas(0, 12)
result.t13 = QSCpersonas(0, 13)
result.t14 = QSCpersonas(0, 14)
result.t15 = QSCpersonas(0, 15)
result.t16 = QSCpersonas(0, 16)
result.t17 = QSCpersonas(0, 17)
result.t18 = QSCpersonas(0, 18)
result.t19 = QSCpersonas(0, 19)
result.t20 = QSCpersonas(0, 20)
result.t21 = QSCpersonas(0, 21)
result.t22 = QSCpersonas(0, 22)
result.t23 = QSCpersonas(0, 23)
result.t24 = QSCpersonas(0, 24)
result.tTotal = totalSc
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "S"
result.Nombre = "Sensible Radiacin Personas"
result.t1 = QSRpersonas(0, 1)
result.t2 = QSRpersonas(0, 2)
result.t3 = QSRpersonas(0, 3)
result.t4 = QSRpersonas(0, 4)
result.t5 = QSRpersonas(0, 5)
result.t6 = QSRpersonas(0, 6)
result.t7 = QSRpersonas(0, 7)
result.t8 = QSRpersonas(0, 8)
result.t9 = QSRpersonas(0, 9)
result.t10 = QSRpersonas(0, 10)
result.t11 = QSRpersonas(0, 11)
result.t12 = QSRpersonas(0, 12)
result.t13 = QSRpersonas(0, 13)
result.t14 = QSRpersonas(0, 14)
result.t15 = QSRpersonas(0, 15)
result.t16 = QSRpersonas(0, 16)
result.t17 = QSRpersonas(0, 17)
result.t18 = QSRpersonas(0, 18)
result.t19 = QSRpersonas(0, 19)
result.t20 = QSRpersonas(0, 20)
result.t21 = QSRpersonas(0, 21)
result.t22 = QSRpersonas(0, 22)
result.t23 = QSRpersonas(0, 23)
result.t24 = QSRpersonas(0, 24)
result.tTotal = totalSr
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
End If
If CarEQuip = 1 Then
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "S"
result.Nombre = "Equipos de Potencia"
result.t1 = Qequipos(0, 1)

+ Trim(Ofi((nOfi - 1))) +

+ "Ofic" + Trim(Ofi((nOfi

+ Trim(Ofi((nOfi - 1))) +

+ "Ofic" + Trim(Ofi((nOfi

Resultados - 13

".rst"

- 1)))

".rst"

- 1)))

result.t2 = Qequipos(0, 2)
result.t3 = Qequipos(0, 3)
result.t4 = Qequipos(0, 4)
result.t5 = Qequipos(0, 5)
result.t6 = Qequipos(0, 6)
result.t7 = Qequipos(0, 7)
result.t8 = Qequipos(0, 8)
result.t9 = Qequipos(0, 9)
result.t10 = Qequipos(0, 10)
result.t11 = Qequipos(0, 11)
result.t12 = Qequipos(0, 12)
result.t13 = Qequipos(0, 13)
result.t14 = Qequipos(0, 14)
result.t15 = Qequipos(0, 15)
result.t16 = Qequipos(0, 16)
result.t17 = Qequipos(0, 17)
result.t18 = Qequipos(0, 18)
result.t19 = Qequipos(0, 19)
result.t20 = Qequipos(0, 20)
result.t21 = Qequipos(0, 21)
result.t22 = Qequipos(0, 22)
result.t23 = Qequipos(0, 23)
result.t24 = Qequipos(0, 24)
result.tTotal = totalEq
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
End If
If CarLuces = 1 Then
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "S"
result.Nombre = "Luces Convectivas"
result.t1 = QCluces(0, 1)
result.t2 = QCluces(0, 2)
result.t3 = QCluces(0, 3)
result.t4 = QCluces(0, 4)
result.t5 = QCluces(0, 5)
result.t6 = QCluces(0, 6)
result.t7 = QCluces(0, 7)
result.t8 = QCluces(0, 8)
result.t9 = QCluces(0, 9)
result.t10 = QCluces(0, 10)
result.t11 = QCluces(0, 11)
result.t12 = QCluces(0, 12)
result.t13 = QCluces(0, 13)
result.t14 = QCluces(0, 14)
result.t15 = QCluces(0, 15)
result.t16 = QCluces(0, 16)
result.t17 = QCluces(0, 17)
result.t18 = QCluces(0, 18)
result.t19 = QCluces(0, 19)
result.t20 = QCluces(0, 20)
result.t21 = QCluces(0, 21)
result.t22 = QCluces(0, 22)
result.t23 = QCluces(0, 23)
result.t24 = QCluces(0, 24)
result.tTotal = totalcluc
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "S"
result.Nombre = "Luces-Radiacin"

+ Trim(Ofi((nOfi - 1))) +

+ "Ofic" + Trim(Ofi((nOfi

+ Trim(Ofi((nOfi - 1))) +

+ "Ofic" + Trim(Ofi((nOfi

Resultados - 14

".rst"

- 1)))

".rst"

- 1)))

result.t1 = QRluces(0, 1)
result.t2 = QRluces(0, 2)
result.t3 = QRluces(0, 3)
result.t4 = QRluces(0, 4)
result.t5 = QRluces(0, 5)
result.t6 = QRluces(0, 6)
result.t7 = QRluces(0, 7)
result.t8 = QRluces(0, 8)
result.t9 = QRluces(0, 9)
result.t10 = QRluces(0, 10)
result.t11 = QRluces(0, 11)
result.t12 = QRluces(0, 12)
result.t13 = QRluces(0, 13)
result.t14 = QRluces(0, 14)
result.t15 = QRluces(0, 15)
result.t16 = QRluces(0, 16)
result.t17 = QRluces(0, 17)
result.t18 = QRluces(0, 18)
result.t19 = QRluces(0, 19)
result.t20 = QRluces(0, 20)
result.t21 = QRluces(0, 21)
result.t22 = QRluces(0, 22)
result.t23 = QRluces(0, 23)
result.t24 = QRluces(0, 24)
result.tTotal = totalrluc
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "T"
result.Nombre = "Luces"
result.t1 = Qluces(0, 1)
result.t2 = Qluces(0, 2)
result.t3 = Qluces(0, 3)
result.t4 = Qluces(0, 4)
result.t5 = Qluces(0, 5)
result.t6 = Qluces(0, 6)
result.t7 = Qluces(0, 7)
result.t8 = Qluces(0, 8)
result.t9 = Qluces(0, 9)
result.t10 = Qluces(0, 10)
result.t11 = Qluces(0, 11)
result.t12 = Qluces(0, 12)
result.t13 = Qluces(0, 13)
result.t14 = Qluces(0, 14)
result.t15 = Qluces(0, 15)
result.t16 = Qluces(0, 16)
result.t17 = Qluces(0, 17)
result.t18 = Qluces(0, 18)
result.t19 = Qluces(0, 19)
result.t20 = Qluces(0, 20)
result.t21 = Qluces(0, 21)
result.t22 = Qluces(0, 22)
result.t23 = Qluces(0, 23)
result.t24 = Qluces(0, 24)
result.tTotal = totalluces
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
End If
If CarAparat = 1 Then
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "L"

+ Trim(Ofi((nOfi - 1))) +

+ "Ofic" + Trim(Ofi((nOfi

+ Trim(Ofi((nOfi - 1))) +

+ "Ofic" + Trim(Ofi((nOfi

Resultados - 15

".rst"

- 1)))

".rst"

- 1)))

result.Nombre = "Aparatos-Latente"
result.t1 = QLaparatos(0, 1)
result.t2 = QLaparatos(0, 2)
result.t3 = QLaparatos(0, 3)
result.t4 = QLaparatos(0, 4)
result.t5 = QLaparatos(0, 5)
result.t6 = QLaparatos(0, 6)
result.t7 = QLaparatos(0, 7)
result.t8 = QLaparatos(0, 8)
result.t9 = QLaparatos(0, 9)
result.t10 = QLaparatos(0, 10)
result.t11 = QLaparatos(0, 11)
result.t12 = QLaparatos(0, 12)
result.t13 = QLaparatos(0, 13)
result.t14 = QLaparatos(0, 14)
result.t15 = QLaparatos(0, 15)
result.t16 = QLaparatos(0, 16)
result.t17 = QLaparatos(0, 17)
result.t18 = QLaparatos(0, 18)
result.t19 = QLaparatos(0, 19)
result.t20 = QLaparatos(0, 20)
result.t21 = QLaparatos(0, 21)
result.t22 = QLaparatos(0, 22)
result.t23 = QLaparatos(0, 23)
result.t24 = QLaparatos(0, 24)
result.tTotal = totallapara
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "S"
result.Nombre = "Aparatos-Sensible"
result.t1 = QSaparatos(0, 1)
result.t2 = QSaparatos(0, 2)
result.t3 = QSaparatos(0, 3)
result.t4 = QSaparatos(0, 4)
result.t5 = QSaparatos(0, 5)
result.t6 = QSaparatos(0, 6)
result.t7 = QSaparatos(0, 7)
result.t8 = QSaparatos(0, 8)
result.t9 = QSaparatos(0, 9)
result.t10 = QSaparatos(0, 10)
result.t11 = QSaparatos(0, 11)
result.t12 = QSaparatos(0, 12)
result.t13 = QSaparatos(0, 13)
result.t14 = QSaparatos(0, 14)
result.t15 = QSaparatos(0, 15)
result.t16 = QSaparatos(0, 16)
result.t17 = QSaparatos(0, 17)
result.t18 = QSaparatos(0, 18)
result.t19 = QSaparatos(0, 19)
result.t20 = QSaparatos(0, 20)
result.t21 = QSaparatos(0, 21)
result.t22 = QSaparatos(0, 22)
result.t23 = QSaparatos(0, 23)
result.t24 = QSaparatos(0, 24)
result.tTotal = totalsapara
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "T"
result.Nombre = "Aparatos-Total"

+ Trim(Ofi((nOfi - 1))) +

+ "Ofic" + Trim(Ofi((nOfi

+ Trim(Ofi((nOfi - 1))) +

+ "Ofic" + Trim(Ofi((nOfi

Resultados - 16
result.t1 = Qaparatos(0, 1)
result.t2 = Qaparatos(0, 2)
result.t3 = Qaparatos(0, 3)
result.t4 = Qaparatos(0, 4)
result.t5 = Qaparatos(0, 5)
result.t6 = Qaparatos(0, 6)
result.t7 = Qaparatos(0, 7)
result.t8 = Qaparatos(0, 8)
result.t9 = Qaparatos(0, 9)
result.t10 = Qaparatos(0, 10)
result.t11 = Qaparatos(0, 11)
result.t12 = Qaparatos(0, 12)
result.t13 = Qaparatos(0, 13)
result.t14 = Qaparatos(0, 14)
result.t15 = Qaparatos(0, 15)
result.t16 = Qaparatos(0, 16)
result.t17 = Qaparatos(0, 17)
result.t18 = Qaparatos(0, 18)
result.t19 = Qaparatos(0, 19)
result.t20 = Qaparatos(0, 20)
result.t21 = Qaparatos(0, 21)
result.t22 = Qaparatos(0, 22)
result.t23 = Qaparatos(0, 23)
result.t24 = Qaparatos(0, 24)
result.tTotal = totalapara
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
End If
If CaRPArtic = 1 Then
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
- 1))) + ".rst")
result.Comp = "S"
result.Nombre = "Sensible-Particin"
result.t1 = particion
result.t2 = particion
result.t3 = particion
result.t4 = particion
result.t5 = particion
result.t6 = particion
result.t7 = particion
result.t8 = particion
result.t9 = particion
result.t10 = particion
result.t11 = particion
result.t12 = particion
result.t13 = particion
result.t14 = particion
result.t15 = particion
result.t16 = particion
result.t17 = particion
result.t18 = particion
result.t19 = particion
result.t20 = particion
result.t21 = particion
result.t22 = particion
result.t23 = particion
result.t24 = particion
result.tTotal = Tparticion
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
End If
If CarPiso = 1 Then
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"

+ Trim(Ofi((nOfi - 1))) +

+ "Ofic" + Trim(Ofi((nOfi

+ Trim(Ofi((nOfi - 1))) +

+ "Ofic" + Trim(Ofi((nOfi

Resultados - 17

- 1))) + ".rst")
result.Comp = "S"
result.Nombre = "Sensible-Piso"
result.t1 = Piso
result.t2 = Piso
result.t3 = Piso
result.t4 = Piso
result.t5 = Piso
result.t6 = Piso
result.t7 = Piso
result.t8 = Piso
result.t9 = Piso
result.t10 = Piso
result.t11 = Piso
result.t12 = Piso
result.t13 = Piso
result.t14 = Piso
result.t15 = Piso
result.t16 = Piso
result.t17 = Piso
result.t18 = Piso
result.t19 = Piso
result.t20 = Piso
result.t21 = Piso
result.t22 = Piso
result.t23 = Piso
result.t24 = Piso
result.tTotal = Tpiso
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) +
".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
End If
If CArTechint = 1 Then
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi
- 1))) + ".rst")
result.Comp = "S"
result.Nombre = "Sensible-TechoInterno"
result.t1 = TechoInt
result.t2 = TechoInt
result.t3 = TechoInt
result.t4 = TechoInt
result.t5 = TechoInt
result.t6 = TechoInt
result.t7 = TechoInt
result.t8 = TechoInt
result.t9 = TechoInt
result.t10 = TechoInt
result.t11 = TechoInt
result.t12 = TechoInt
result.t13 = TechoInt
result.t14 = TechoInt
result.t15 = TechoInt
result.t16 = TechoInt
result.t17 = TechoInt
result.t18 = TechoInt
result.t19 = TechoInt
result.t20 = TechoInt
result.t21 = TechoInt
result.t22 = TechoInt
result.t23 = TechoInt
result.t24 = TechoInt
result.tTotal = TTechoInt
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1))) +
".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1

Resultados - 18
End If
Call IMPRESION
Next nOfi
Call CalculoUE
tabstrip1.Tabs.Clear
For Tabs = 1 To n_ofi
tabstrip1.Tabs.Add(Tabs, , , 0) = "Ofic" & Trim(Ofi((Tabs - 1)))
Next Tabs
ListView1.ListItems.Clear
Dim itmX As ListItem
Dim Total As Double
ListView1.ColumnHeaders.Clear
ListView1.ColumnHeaders.Add , "ID", "ID", 0
ListView1.ColumnHeaders.Add , "PK", "PK", 0
ListView1.ColumnHeaders.Add , "car", "Carga", 2000, 2
ListView1.ColumnHeaders.Add , "u", "01 00", 900, 2
ListView1.ColumnHeaders.Add , "d", "02 00", 900, 2
ListView1.ColumnHeaders.Add , "t", "03 00", 900, 2
ListView1.ColumnHeaders.Add , "c", "04 00", 900, 2
ListView1.ColumnHeaders.Add , "ci", "05 00", 900, 2
ListView1.ColumnHeaders.Add , "s", "06 00", 900, 2
ListView1.ColumnHeaders.Add , "si", "07 00", 900, 2
ListView1.ColumnHeaders.Add , "o", "08 00", 900, 2
ListView1.ColumnHeaders.Add , "n", "09 00", 900, 2
ListView1.ColumnHeaders.Add , "di", "10 00", 900, 2
ListView1.ColumnHeaders.Add , "on", "11 00", 900, 2
ListView1.ColumnHeaders.Add , "do", "12 00", 900, 2
ListView1.ColumnHeaders.Add , "tr", "13 00", 900, 2
ListView1.ColumnHeaders.Add , "ca", "14 00", 900, 2
ListView1.ColumnHeaders.Add , "q", "15 00", 900, 2
ListView1.ColumnHeaders.Add , "die", "16 00", 900, 2
ListView1.ColumnHeaders.Add , "sie", "17 00", 900, 2
ListView1.ColumnHeaders.Add , "oc", "18 00", 900, 2
ListView1.ColumnHeaders.Add , "nue", "19 00", 900, 2
ListView1.ColumnHeaders.Add , "v", "20 00", 900, 2
ListView1.ColumnHeaders.Add , "tiu", "21 00", 900, 2
ListView1.ColumnHeaders.Add , "tid", "22 00", 900, 2
ListView1.ColumnHeaders.Add , "tit", "23 00", 900, 2
ListView1.ColumnHeaders.Add , "cero", "24 00", 900, 2
ListView1.ColumnHeaders.Add , "tot", "TOTAL 24h", 1300, 2
ListView1.ColumnHeaders.Add , "p", "", 100
ListView2.ListItems.Clear
ListView2.ColumnHeaders.Clear
ListView2.ColumnHeaders.Add , "ID", "ID", 0
ListView2.ColumnHeaders.Add , "PK", "PK", 0
ListView2.ColumnHeaders.Add , "car", "Carga", 2000, 2
ListView2.ColumnHeaders.Add , "u", "01 00", 900, 2
ListView2.ColumnHeaders.Add , "d", "02 00", 900, 2
ListView2.ColumnHeaders.Add , "t", "03 00", 900, 2
ListView2.ColumnHeaders.Add , "c", "04 00", 900, 2
ListView2.ColumnHeaders.Add , "ci", "05 00", 900, 2
ListView2.ColumnHeaders.Add , "s", "06 00", 900, 2
ListView2.ColumnHeaders.Add , "si", "07 00", 900, 2
ListView2.ColumnHeaders.Add , "o", "08 00", 900, 2
ListView2.ColumnHeaders.Add , "n", "09 00", 900, 2
ListView2.ColumnHeaders.Add , "di", "10 00", 900, 2
ListView2.ColumnHeaders.Add , "on", "11 00", 900, 2
ListView2.ColumnHeaders.Add , "do", "12 00", 900, 2
ListView2.ColumnHeaders.Add , "tr", "13 00", 900, 2
ListView2.ColumnHeaders.Add , "ca", "14 00", 900, 2
ListView2.ColumnHeaders.Add , "q", "15 00", 900, 2
ListView2.ColumnHeaders.Add , "die", "16 00", 900, 2
ListView2.ColumnHeaders.Add , "sie", "17 00", 900, 2
ListView2.ColumnHeaders.Add , "oc", "18 00", 900, 2
ListView2.ColumnHeaders.Add , "nue", "19 00", 900, 2
ListView2.ColumnHeaders.Add , "v", "20 00", 900, 2
ListView2.ColumnHeaders.Add , "tiu", "21 00", 900, 2
ListView2.ColumnHeaders.Add , "tid", "22 00", 900, 2
ListView2.ColumnHeaders.Add , "tit", "23 00", 900, 2
ListView2.ColumnHeaders.Add , "cero", "24 00", 900, 2

Resultados - 19
ListView2.ColumnHeaders.Add ,
ListView2.ColumnHeaders.Add ,
ListView3.ListItems.Clear
ListView3.ColumnHeaders.Clear
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
ListView3.ColumnHeaders.Add ,
Call TabStrip1_Click
End Sub

"tot", "TOTAL 24h", 1300, 2


"p", "", 100
"ID", "ID", 0
"PK", "PK", 0
"car", "Carga", 2000, 2
"u", "01 00", 900, 2
"d", "02 00", 900, 2
"t", "03 00", 900, 2
"c", "04 00", 900, 2
"ci", "05 00", 900, 2
"s", "06 00", 900, 2
"si", "07 00", 900, 2
"o", "08 00", 900, 2
"n", "09 00", 900, 2
"di", "10 00", 900, 2
"on", "11 00", 900, 2
"do", "12 00", 900, 2
"tr", "13 00", 900, 2
"ca", "14 00", 900, 2
"q", "15 00", 900, 2
"die", "16 00", 900, 2
"sie", "17 00", 900, 2
"oc", "18 00", 900, 2
"nue", "19 00", 900, 2
"v", "20 00", 900, 2
"tiu", "21 00", 900, 2
"tid", "22 00", 900, 2
"tit", "23 00", 900, 2
"cero", "24 00", 900, 2
"tot", "TOTAL 24h", 1300, 2
"p", "", 100

Private Sub Salida_Click()


End
End Sub
Private Sub TabStrip1_Click()
ListView1.ListItems.Clear
ListView2.ListItems.Clear
ListView3.ListItems.Clear
Dim result As Resulta2
Dim itmX As ListItem
Dim itmx2 As ListItem
Dim itmX3 As ListItem
Dim Prueba As String
i = 0
Prueba = tabstrip1.SelectedItem
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + Trim(Prueba) + ".rst" For Random Access
Read As #1 Len = Len(result)
Do While Not EOF(1)
Get #1, , result
i = i + 1
If UCase(Left(result.Comp, 1)) = "S" Then
Set itmX = ListView1.ListItems.Add(1, , result.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(result.Nombre)
itmX.SubItems(3) = Trim(result.t1)
itmX.SubItems(4) = Trim(result.t2)
itmX.SubItems(5) = Trim(result.t3)
itmX.SubItems(6) = Trim(result.t4)
itmX.SubItems(7) = Trim(result.t5)
itmX.SubItems(8) = Trim(result.t6)
itmX.SubItems(9) = Trim(result.t7)
itmX.SubItems(10) = Trim(result.t8)
itmX.SubItems(11) = Trim(result.t9)
itmX.SubItems(12) = Trim(result.t10)
itmX.SubItems(13) = Trim(result.t11)

Resultados - 20
itmX.SubItems(14) =
itmX.SubItems(15) =
itmX.SubItems(16) =
itmX.SubItems(17) =
itmX.SubItems(18) =
itmX.SubItems(19) =
itmX.SubItems(20) =
itmX.SubItems(21) =
itmX.SubItems(22) =
itmX.SubItems(23) =
itmX.SubItems(24) =
itmX.SubItems(25) =
itmX.SubItems(26) =
itmX.SubItems(27) =
Set itmX = Nothing
End If

Trim(result.t12)
Trim(result.t13)
Trim(result.t14)
Trim(result.t15)
Trim(result.t16)
Trim(result.t17)
Trim(result.t18)
Trim(result.t19)
Trim(result.t20)
Trim(result.t21)
Trim(result.t22)
Trim(result.t23)
Trim(result.t24)
Trim(result.tTotal)

Loop
Close #1
k = 0
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + Trim(Prueba) + ".rst" For Random Access
Read As #1 Len = Len(result)
Do While Not EOF(1)
Get #1, , result
k = k + 1
If UCase(Left(result.Comp, 1)) = "L" Then
Set itmx2 = ListView2.ListItems.Add(1, , result.id)
itmx2.SubItems(1) = k - 1
itmx2.SubItems(2) = Trim(result.Nombre)
itmx2.SubItems(3) = Trim(result.t1)
itmx2.SubItems(4) = Trim(result.t2)
itmx2.SubItems(5) = Trim(result.t3)
itmx2.SubItems(6) = Trim(result.t4)
itmx2.SubItems(7) = Trim(result.t5)
itmx2.SubItems(8) = Trim(result.t6)
itmx2.SubItems(9) = Trim(result.t7)
itmx2.SubItems(10) = Trim(result.t8)
itmx2.SubItems(11) = Trim(result.t9)
itmx2.SubItems(12) = Trim(result.t10)
itmx2.SubItems(13) = Trim(result.t11)
itmx2.SubItems(14) = Trim(result.t12)
itmx2.SubItems(15) = Trim(result.t13)
itmx2.SubItems(16) = Trim(result.t14)
itmx2.SubItems(17) = Trim(result.t15)
itmx2.SubItems(18) = Trim(result.t16)
itmx2.SubItems(19) = Trim(result.t17)
itmx2.SubItems(20) = Trim(result.t18)
itmx2.SubItems(21) = Trim(result.t19)
itmx2.SubItems(22) = Trim(result.t20)
itmx2.SubItems(23) = Trim(result.t21)
itmx2.SubItems(24) = Trim(result.t22)
itmx2.SubItems(25) = Trim(result.t23)
itmx2.SubItems(26) = Trim(result.t24)
itmx2.SubItems(27) = Trim(result.tTotal)
Set itmx2 = Nothing
End If
Loop
Close #1
L = 0
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + Trim(Prueba) + ".rst" For Random Access
Read As #1 Len = Len(result)
Do While Not EOF(1)
Get #1, , result
L = L + 1
If UCase(Left(result.Comp, 1)) = "T" Then
Set itmX3 = ListView3.ListItems.Add(1, , result.id)
itmX3.SubItems(1) = L - 1
itmX3.SubItems(2) = Trim(result.Nombre)
itmX3.SubItems(3) = Trim(result.t1)
itmX3.SubItems(4) = Trim(result.t2)
itmX3.SubItems(5) = Trim(result.t3)
itmX3.SubItems(6) = Trim(result.t4)

Resultados - 21
itmX3.SubItems(7) = Trim(result.t5)
itmX3.SubItems(8) = Trim(result.t6)
itmX3.SubItems(9) = Trim(result.t7)
itmX3.SubItems(10) = Trim(result.t8)
itmX3.SubItems(11) = Trim(result.t9)
itmX3.SubItems(12) = Trim(result.t10)
itmX3.SubItems(13) = Trim(result.t11)
itmX3.SubItems(14) = Trim(result.t12)
itmX3.SubItems(15) = Trim(result.t13)
itmX3.SubItems(16) = Trim(result.t14)
itmX3.SubItems(17) = Trim(result.t15)
itmX3.SubItems(18) = Trim(result.t16)
itmX3.SubItems(19) = Trim(result.t17)
itmX3.SubItems(20) = Trim(result.t18)
itmX3.SubItems(21) = Trim(result.t19)
itmX3.SubItems(22) = Trim(result.t20)
itmX3.SubItems(23) = Trim(result.t21)
itmX3.SubItems(24) = Trim(result.t22)
itmX3.SubItems(25) = Trim(result.t23)
itmX3.SubItems(26) = Trim(result.t24)
itmX3.SubItems(27) = Trim(result.tTotal)
Set itmX3 = Nothing
End If
Loop
Close #1
ListView1.Sorted = True
ListView1.SortKey = 2
ListView2.Sorted = True
ListView2.SortKey = 2
ListView3.Sorted = True
ListView3.SortKey = 2
End Sub
Function ExisteArch(nombrearchivo As String) As Boolean
On Error Resume Next
ExisteArch = (Dir$(nombrearchivo) <> "")
End Function

Private Sub CalculoUE()


QTMAX = 0
QTSUMAUEMAX = 0
For nUma = 1 To n_uma
OfienUma = 0
For nOfi = 1 To n_ofi
If Trim(Uma(nUma - 1)) = Trim(UmaOfi(nOfi - 1)) Then
OfienUma = OfienUma + 1
CaudalAireUma(nUma) = CaudalAireUma(nUma) + CaudalAireOfi(nOfi)
VUMASG(nUma) = VUMASG(nUma) + VolOfi(nOfi)
CantOfiIgual(nUma) = CantOfiIgual(nUma) + 1
For Meses = 1 To 12
For Hora = 1 To 24
erre = erre + 1
QSsum(Meses, Hora, nUma) = QSsum(Meses, Hora, nUma) + QSofic(nOfi, Meses, 25)
* OficinasIgual(nOfi - 1)
QLsum(Hora, nUma) = QLsum(Hora, nUma) + QLofic(nOfi, Meses, Hora) * OficinasIg
ual(nOfi)
QTSum(Meses, Hora, nUma) = QSsum(Meses, Hora, nUma) + QLsum(Hora, nUma)
If QTSum(Meses, Hora, nUma) > QTMAX Then
QTMAX = QTSum(Meses, Hora, nUma)
Mesmax = Meses
Horamax = Hora
End If
QsOficUma(OfienUma, nUma) = QSofic(nOfi, Meses, 25) * OficinasIgual(nOfi - 1)
LatenteUMA(nUma) = LatenteUMA(nUma) + QLsum(Hora, nUma)
SensibleUMA(nUma) = SensibleUMA(nUma) + QSsum(Meses, Hora, nUma)
TotalUMA(nUma) = LatenteUMA(nUma) + SensibleUMA(nUma)
Next Hora
Next Meses
QTMAXUMA(nUma) = QTMAXUMA(nUma) + QTSum(Mesmax, Horamax, nUma)
QSMAXUMA(nUma) = QSMAXUMA(nUma) + QSsum(Mesmax, Horamax, nUma)
QLMAXUMA(nUma) = QLMAXUMA(nUma) + QLsum(Mesmax, nUma)

Resultados - 22

End If
Next nOfi
For Mes = 1 To 12
For Hora = 1 To 24
SensibleUE(Mes, Hora) = SensibleUE(Mes, Hora) + QSsum(Mes, Hora, nUma) * UmaIgual(nUma
- 1)
LatenteUE(Mes, Hora) = LatenteUE(Mes, Hora) + QLsum(Hora, nUma) * UmaIgual(nUma - 1)
CargaTotalUE(Mes, Hora) = SensibleUE(Mes, Hora) + LatenteUE(Mes, Hora)
If CargaTotalUE(Mes, Hora) > QTSUMAUEMAX Then
QTSUMAUEMAX = CargaTotalUE(Mes, Hora)
MesmaxUE = Mes
HoramaxUE = Hora
End If
Next Hora
Next Mes
Next nUma
PRESION = 101.325
For nUma = 1 To n_uma
IGUALOFI = CantOfiIgual(nUma)
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random Access Read As #1 Len =
Len(datos)
Do While Not EOF(1)
Get #1, , datos
If Uma(nUma - 1) = Trim(datos.nombuma) Then
BYPF = Trim(datos.bpf)
IGUALES = Trim(datos.cantumaig)
Tme = Trim(datos.Tmext)
Text = Trim(datos.Textd)
Tintu = Trim(datos.Tintd)
Hrextu = Trim(datos.Hrext)
Hrintu = Trim(datos.Hrint)
CHGMIN = Trim(datos.chmin)
Retor = Trim(datos.retorno)
Tipo = Trim(datos.Flujo)
Aguas = Trim(datos.Agua)
Tinterna(nUma) = Tintu: Texterna(nUma) = Text
TE = Text + 273.15
TI = Tintu + 273.15
PWSE = FNPWS(TE)
PWE = Hrextu / 100 * PWSE
Wexterna(nUma) = 0.62198 * PWE / (PRESION - PWE)
PWSi = FNPWS(TI)
PWI = Hrintu / 100 * PWSi
Winterna(nUma) = 0.62198 * PWI / (PRESION - PWI)
CPAIRE = 1.006: CPH2O = 1.886: RA = 287.055: TSAT = 10
TSATA = TSAT + 273.15
ENTALLIQ = 42.01
PWSSAT = FNPWS(TSATA)
WSAT = 0.62198001 * PWSSAT / (PRESION - PWSSAT)
W = (Winterna(nUma) - WSAT) / 2
T = (Tinterna(nUma) + TSAT) / 2 + 273.15
VOLESP = RA / PRESION / 1000 * T * (1 + 1.6078 * W)
FCS = (CPAIRE - CPH2O * W) / VOLESP / 3.6
ENTALVAP = 2501 + 1.805 * Tinterna(nUma)
FCL = (ENTALVAP - ENTALLIQ) / VOLESP / 3.6
If Tipo = "VV" Then
QTI = QTMAXUMA(nUma)
QSI = QSMAXUMA(nUma)
QLI = QLMAXUMA(nUma)
Else
QTI = TotalUMA(nUma)
QSI = SensibleUMA(nUma)
QLI = LatenteUMA(nUma)
End If
TINT = Tinterna(nUma)
Text = Texterna(nUma)
wint = Winterna(nUma)
WEXT = Wexterna(nUma)
AIREUMA = CaudalAireUma(nUma)
VUMA = VUMASG(nUma)
Dim PWSADP As Long

Resultados - 23
If
If
If
If

Retor = "CR" Then Call CONRET


Retor = "SR" Then Call SINRET
Retor = "PR" Then Call RETORNOPARCIAL
Tipo = "VV" Then
If Retor = "SR" Then
For i = 1 To IGUALOFI
CMHL(i) = CMH * QsOficUma(i, nUma) / QSI
RETL(i) = 0
EXTL(i) = CMHL(i)
Next i
ElseIf Retor = "PR" Then
For i = 1 To IGUALOFI
CMHL(i) = CMH * QsOficUma(i, nUma) / QSI
RETL(i) = 0
EXTL(i) = CMHL(i) - CaudalAireOfi(i)
Next i
Else
For i = 1 To IGUALOFI
CMHL(i) = CMH * QsOficUma(i, nUma) / QSI
RETL(i) = CMHL(i) - CaudalAireOfi(i)
EXTL(i) = 0
Next i
End If
Else
If Retor = "SR" Then
CMHL(IGUALOFI) = CMH
If IGUALOFI = 1 Then
RETL(1) = 0
Else
For i = 1 To IGUALOFI - 1
CMHL(i) = CMH * QsOficUma(i, nUma) / QSI
RETL(i) = 0
EXTL(i) = CMHL(i)
CMHL(IGUALOFI) = CMHL(IGUALOFI) - CMHL(i) * OficinasIgual(i - 1)
Next i
End If
CMHL(IGUALOFI) = CMHL(IGUALOFI) / OficinasIgual(IGUALOFI - 1)
EXTL(IGUALOFI) = CMHL(IGUALOFI) / OficinasIgual(IGUALOFI - 1)
ElseIf Retor = "PR" Then
AFM = 0
RETM = 0
RET = CMH - AIREUMA
DIFRET = RET - RETM
CMHL(IGUALOFI) = CMH
For i = 1 To IGUALOFI - 1
CMHL(i) = CMH * QsOficUma(i, nUma) / QSI
CMHL(i) = CMHL(i) - CMHL(i) * OficinasIgual(i)
EXTL(i) = CMHL(i)
RETL(i) = 0
Next i
CMHL(IGUALOFI) = CMHL(IGUALOFI) / OficinasIgual(IGUALOFI - 1)
EXTL(IGUALOFI) = CMHL(IGUALOFI)
RETL(IGUALOFI) = 0
Else
CMHL(IGUALOFI) = CMH
RETL(IGUALOFI) = CMH - AIREUMA
EXTL(IGUALOFI) = P
For i = 1 To IGUALOFI - 1
CMHL(i) = CMH * QsOficUma(i, nUma) / QSI
RETL(i) = CMHL(i) - OficinasIgual(i)
EXTL(i) = 0
CMHL(IGUALOFI) = CMHL(IGUALOFI) - CMHL(i) * OficinasIgual(i - 1)
RETL(IGUALOFI) = RETL(IGUALOFI) - RETL(i) * OficinasIgual(i - 1)
Next i
CMHL(IGUALOFI) = CMHL(IGUALOFI) / OficinasIgual(IGUALOFI - 1)
RETL(IGUALOFI) = RETL(IGUALOFI) / OficinasIgual(IGUALOFI - 1)
End If
End If
If Aguas = "SI" Then
TEAGUA = 23 '8#
AGUAINCT = 4#

Resultados - 24
LPSAGUA = CAPTOTAL / 0.293 / (500 * AGUAINCT * 1.8) * 0.0631
End If
End If
Loop
Close #1
Next nUma
Text1.Text = CAPTOTALUE
Text2.Text = RCAL
End Sub

Private Sub SHGFCALC()


AO(1) = "ENERO": AO(2) = "FEBRERO": AO(3) = "MARZO": AO(4) = "ABRIL"
AO(5) = "MAYO": AO(6) = "JUNIO": AO(7) = "JULIO": AO(8) = "AGOSTO"
AO(9) = "SEPTIEMBRE": AO(10) = "OCTUBRE": AO(11) = "NOVIEMBRE": AO(12) = "DICIEMBRE"
decl(1) = -20: decl(2) = -10.8: decl(3) = 0: decl(4) = 11.6: decl(5) = 20: decl(6) = 23.45
decl(7) = 20.6: decl(8) = 12.3: decl(9) = 0: decl(10) = -10.5: decl(11) = -19.8: decl(12) = -23.45
A(1) = 1230: A(2) = 1215: A(3) = 1186: A(4) = 1136: A(5) = 1104: A(6) = 1088
A(7) = 1085: A(8) = 1107: A(9) = 1151: A(10) = 1192: A(11) = 1221: A(12) = 1233
B(1) = 0.142: B(2) = 0.144: B(3) = 0.156: B(4) = 0.18: B(5) = 0.196: B(6) = 0.205
B(7) = 0.207: B(8) = 0.201: B(9) = 0.177: B(10) = 0.16: B(11) = 0.149: B(12) = 0.142
C(1) = 0.058: C(2) = 0.06: C(3) = 0.071: C(4) = 0.097: C(5) = 0.121: C(6) = 0.134
C(7) = 0.136: C(8) = 0.122: C(9) = 0.092: C(10) = 0.073: C(11) = 0.063: C(12) = 0.057
Time(1) = -11.2: Time(2) = -13.9: Time(3) = -7.5: Time(4) = 1.1
Time(5) = 3.3: Time(6) = -1.4: Time(7) = -6.2: Time(8) = -2.4
Time(9) = 7.5: Time(10) = 15.4: Time(11) = 13.8: Time(12) = 1.6
Phi(1) = 180: Phi(2) = 135: Phi(3) = 90: Phi(4) = 45
Phi(5) = 0: Phi(6) = -45: Phi(7) = -90: Phi(8) = -135
Dim aj(0 To 5) As Double
aj(0) = 0.01154: aj(1) = 0.77674: aj(2) = -3.94657
aj(3) = 8.57881: aj(4) = -8.38135: aj(5) = 3.01188
Dim tj(0 To 5) As Double
tj(0) = -0.00885: tj(1) = 2.71235: tj(2) = -0.62062
tj(3) = -7.07329: tj(4) = 9.75995: tj(5) = -3.89922
L = CondicionesExteriores.txtlatitud.Text
For Meses = 1 To 12
For horas = 1 To 24
For Posicion = 1 To 9
declinacion = decl(Meses)
H = 0: Beta = 0: Solaz = 0: SufSolAz = 0: Tita = 0: EDN = 0: ED = 0: Y = 0: tilt =
0: Eds = 0: Edg = 0
Difusa = 0: Var1 = 0: Var2 = 0: Var3 = 0: Var4 = 0: Transmitido = 0: Absorbido = 0
: SHGF = 0
SHGFhm(horas, Meses, Posicion) = 0
H = CDec(0.25 * (12 - CDec(horas)) * 60)
Beta = AsnD(CosD(L) * CosD(declinacion) * CosD(H) + SinD(L) * SinD(declinacion))
CosSolAz = Round(((SinD(Beta) * SinD(L) - SinD(declinacion)) / (CosD(Beta) * CosD(
L))), 2)
Solaz = (AcsD((CosSolAz)))
If Posicion = 9 Then
SufSolAz = 0
tilt = 0
CosTita = (SinD(Beta))
Else
SufSolAz = Solaz - (Phi(Posicion))
tilt = 90
CosTita = (CosD(Beta) * CosD(SufSolAz))
End If
EDN = A(Meses) * Exp(-(B(Meses)) / SinD(Beta))
If CosTita > 0 Then
ED = EDN * CosTita
Else
ED = 0
End If
If CosTita > -0.2 Then
Y = 0.55 + 0.437 * CosTita + 0.313 * (CosTita ^ 2)
Else
Y = 0.45
End If
If tilt = 90 Then
Eds = C(Meses) * Y * EDN

Resultados - 25
Else
Eds = C(Meses) * EDN * ((1 + CosD(tilt)) / 2)
End If
Edg = EDN * (C(Meses) + SinD(Beta)) * 0.2 * ((1 - CosD(tilt)) / 2)
Difusa = Edg + Eds
For j = 0 To 5
Var1 = Var1 + tj(j) * CosTita ^ j
Var2 = Var2 + tj(j) / (j + 2)
Var3 = Var3 + aj(j) * CosTita ^ j
Var4 = Var4 + aj(j) / (j + 2)
Next j
Transmitido = ED * Var1 + 2 * Difusa * Var2
Absorbido = ED * Var3 + 2 * Difusa * Var4
SHGF = Round(Transmitido + 0.267 * Absorbido, 0)
SHGFhm(horas, Meses, Posicion) = SHGF
Next Posicion
Next horas
Next Meses
End Sub

Private Sub TablasSHGF()


For Meses = 1 To 12
n_hor = lenfile7(App.Path & "/Tablas/SHGF/SHGF_LAT" + Trim(L) + ".shg")
Open App.Path & "/Tablas/SHGF/SHGF_LAT" + Trim(L) + ".shg" For Random As #1 Len = Len(tabla)
Get #1, n_hor, tabla
Close #1
tabla.salto = vbCrLf
tabla.Mes = AO(Meses)
tabla.Hora = ""
tabla.N = "N"
tabla.NE = "NE"
tabla.E = "E"
tabla.SE = "SE"
tabla.S = "S"
tabla.SO = "SO"
tabla.O = "O"
tabla.NO = "NO"
tabla.Hor = "Hor"
tabla.id = tabla.id + 1
tabla.salto = vbCrLf
n_hor = lenfile7(App.Path & "/Tablas/SHGF/SHGF_LAT" + Trim(L) + ".shg")
Open App.Path & "/Tablas/SHGF/SHGF_LAT" + Trim(L) + ".shg" For Random As #1 Len = Len(tabla)
Put #1, n_hor, tabla
Close #1
Dim cont As Long: Dim inicio As Long: Dim final As Long: Dim Tiempo As Long
preinicio = inicios(Meses) - 1
For Tiempo = 1 To preinicio
tabla.Mes = AO(Meses)
tabla.Hora = Tiempo & ":00"
tabla.N = 0
tabla.NE = 0
tabla.E = 0
tabla.SE = 0
tabla.S = 0
tabla.SO = 0
tabla.O = 0
tabla.NO = 0
tabla.Hor = 0
tabla.id = tabla.id + 1
tabla.salto = vbCrLf
n_hor = lenfile7(App.Path & "/Tablas/SHGF/SHGF_LAT" + Trim(L) + ".shg")
Open App.Path & "/Tablas/SHGF/SHGF_LAT" + Trim(L) + ".shg" For Random As #1 Len = Len(tabl
a)
Put #1, n_hor, tabla
Close #1
Next Tiempo
inicio = inicios(Meses)
final = 24 - inicio
For Hora = inicio To final
tabla.Mes = AO(Meses)

Resultados - 26

tabla.Hora = Hora & ":00"


tabla.N = SHGFhm(Hora, Meses, 1)
tabla.NE = SHGFhm(Hora, Meses, 2)
tabla.E = SHGFhm(Hora, Meses, 3)
tabla.SE = SHGFhm(Hora, Meses, 4)
tabla.S = SHGFhm(Hora, Meses, 5)
tabla.SO = SHGFhm(Hora, Meses, 6)
tabla.O = SHGFhm(Hora, Meses, 7)
tabla.NO = SHGFhm(Hora, Meses, 8)
tabla.Hor = SHGFhm(Hora, Meses, 9)
tabla.id = tabla.id + 1
tabla.salto = vbCrLf
n_hor = lenfile7(App.Path & "/Tablas/SHGF/SHGF_LAT" + Trim(L) + ".shg")
Open App.Path & "/Tablas/SHGF/SHGF_LAT" + Trim(L) + ".shg" For Random As #1 Len = Len(tabl
a)

Put #1, n_hor, tabla


Close #1
Next Hora
posfinal = final + 1
For horas = posfinal To 24
tabla.Mes = AO(Meses)
tabla.Hora = horas & ":00"
tabla.N = 0
tabla.NE = 0
tabla.E = 0
tabla.SE = 0
tabla.S = 0
tabla.SO = 0
tabla.O = 0
tabla.NO = 0
tabla.Hor = 0
tabla.id = tabla.id + 1
tabla.salto = vbCrLf
n_hor = lenfile7(App.Path & "/Tablas/SHGF/SHGF_LAT" + Trim(L) + ".shg")
Open App.Path & "/Tablas/SHGF/SHGF_LAT" + Trim(L) + ".shg" For Random As #1 Len = Len(tabl
a)
Put #1, n_hor, tabla
Close #1
Next horas
tabla.Mes = ""
tabla.Hora = ""
tabla.N = ""
tabla.NE = ""
tabla.E = ""
tabla.SE = ""
tabla.S = ""
tabla.SO = ""
tabla.O = ""
tabla.NO = ""
tabla.Hor = ""
tabla.id = tabla.id + 1
tabla.salto = vbCrLf
n_hor = lenfile7(App.Path & "/Tablas/SHGF/SHGF_LAT" + Trim(L) + ".shg")
Open App.Path & "/Tablas/SHGF/SHGF_LAT" + Trim(L) + ".shg" For Random As #1 Len = Len(tabla)
Put #1, n_hor, tabla
Close #1
Next Meses
End Sub
Private Sub CONRET()
PRESION = 101.325
RCAL = 0
QSVENT = FCS * CaudalAireUma(nUma) * (Texterna(nUma) - Tinterna(nUma))
QLVENT = FCL * CaudalAireUma(nUma) * (Wexterna(nUma) - Winterna(nUma))
WEXT = Wexterna(nUma): wint = Winterna(nUma)
VUMA = VUMASG(nUma)
AIREUMA = CHGMIN * VUMA
Do
WMI = 0.00001: TMI = TINT - 14.1
EQSI = QSI + BYPF * QSVENT + RCAL
EQLI = QLI + BYPF * QLVENT

Resultados - 27
ERSHF = EQSI / (EQSI + EQLI)
N = 0
TADP = TINT - 12
i = 0
Do
i = i + 1
TADPA = TADP + 273.15
PWSADP = FNPWS(TADPA)
WSADP1 = FNWS(PWSADP, PRESION)
WSADP2 = wint - (((1 - ERSHF) / ERSHF) * ((TINT - TADP) / 2459))
If Not Abs(WSADP1 - WSADP2) < WMI Then
If (WSADP1 - WSADP2) < 0 Then
TADP = TADP + 0.02
Else
N = N + 1
If N = 70 Then
WMI = 0.001
N = 0
Else
TADP = TADP - 0.5
If TADP < TMI Then
RCAL = RCAL + 100
r = 1
Exit Do
End If
End If
End If
End If
Loop Until Abs(WSADP1 - WSADP2) < WMI: r = 0
If r = 0 Then
CMH = EQSI / (FCS * (TINT - TADP) * (1 - BYPF))
CHCAL = CMH / VUMA
If CHCAL > CHGMIN Then Exit Do
RCAL = RCAL + 100
End If
Loop
TBSM = ((CMH - AIREUMA) * TINT - AIREUMA * Text) / CMH
MSHF = (Text - TINT) / (WEXT - wint)
WM = WEXT - (Text - TBSM) / MSHF
TBH = 15.56
Do
tbha = 273.15 + TBH
PWSBHA = FNPWS(tbha)
WSBHA = FNWS(PWSBHA, PRESION)
TBHF = TBH * 1.8 + 32
TBSMF = TBSM * 1.8 + 32
WMC = FNWM(TBHF, WSBHA, TBSMF)
If WMC >= WM Then
Do
TBH = TBH - 0.11
tbha = TBH + 273.15
PWSBHA = FNPWS(tbha)
WSBHA = FNWS(PWSBHA, PRESION)
TBHF = TBH * 1.8 + 32
TBSMF = TBSM * 1.8 + 32
WMC = FNWM(TBHF, WSBHA, TBSMF)
Loop Until Abs(WMC - WM) < 0.00004 Or (WMC - WM) <= 0
Exit Do
Else
TBH = TBH + 0.55
End If
Loop
TBHM = TBH
TBSS = TBSM - (TBSM - TADP) * (1 - BYPF)
MAQSHF = (TBSM - TADP) / (WM - WSADP2)
WSAL = WM - (TBSM - TBSS) / MAQSHF
TBH = TADP
Do
tbha = TBH + 273.15
PWSBHA = FNPWS(tbha)

Resultados - 28
WSBHA = FNWS(PWSBHA, PRESION)
TBHF = TBH * 1.8 + 32
TBSSF = TBSS * 1.8 + 32
WSALC = FNWM(TBHF, WSBHA, TBSSF)
If WSALC >= WSAL Then
Do
TBH = TBH - 0.11
tbha = TBH + 273.15
PWSBHA = FNPWS(tbha)
WSBHA = FNWS(PWSBHA, PRESION)
TBHF = TBH * 1.8 + 32
TBSSF = TBSS * 1.8 + 32
WSALC = FNWM(TBHF, WSBHA, TBSSF)
Loop Until Abs(WSALC - WSAL) < 0.00004 Or (WSALC - WSAL) <= 0
Exit Do
Else
TBH = TBH + 0.55
End If
Loop
CAPTOTAL = QTI + RCAL
CAPTOTALUE = CAPTOTALUE + (QTI + RCAL) * IGUALES
RCALUE = RCALUE + RCAL * IGUALES
End Sub
Private Sub SINRET()
AIREUMA = CHGMIN * VUMASG(nUma)
WMI = 0.00005
TMI = TINT - 14.1
QSVENT = FCS * CaudalAireUma(nUma) * (Texterna(nUma) - Tinterna(nUma))
QLVENT = FCL * CaudalAireUma(nUma) * (Wexterna(nUma) - Winterna(nUma))
RCAL = 0
Do
EQSI = QSI + BYPF * QSVENT + RCAL
EQLI = QLI + BYPF * QLVENT
ERSHF = EQSI / (EQSI + EQLI)
N = 0
TADP = TINT - 12
contr = 0
Do
contr = contr + 1
TADPA = TADP + 273.15
PWSADP = FNPWS(TADPA)
WSADP1 = FNWS(PWSADP, PRESION)
WSADP2 = Winterna(nUma) - (1 - ERSHF) / ERSHF * (TINT - TADP) / 2459
If Abs(WSADP1 - WSADP2) < WMI Then
Exit Do
Else
If (WSADP1 - WSADP2) < 0 Then
TADP = TADP + 0.02
Else
N = N + 1
If N >= 70 Then
WMI = 0.001
N = 0
If Abs(WSADP1 - WSADP2) < WMI Then Exit Do
Else
TADP = TADP - 0.5
If TADP < TMI Then
RCAL = RCAL + 100
EQSI = QSI + BYPF * QSVENT + RCAL
EQLI = QLI + BYPF * QLVENT
ERSHF = EQSI / (EQSI + EQLI)
N = 0
TADP = TINT - 12
End If
End If
End If
End If
Loop
CMH = EQSI / (FCS * (TINT - TADP) * (1 - BYPF))
If Abs(CMH - CaudalAireUma(nUma)) < 0.02 * CMH Then

Resultados - 29
CMH = AIREUMA
CHCAL = CMH / VUMASG(nUma)
If CHCAL >= CHGMIN Then
Exit Do
Else
RCAL = RCAL + 100
End If
Else
If (CMH - AIREUMA) < 0 Then
RCAL = RCAL + 100
Else
AIREUMA = CMH
WMI = 0.00005: TMI = TINT - 14.1
QSVENT = FCS * AIREUMA * (Text - TINT)
QLVENT = FCL * AIREUMA * (Wexterna(nUma) - Winterna(nUma))
End If
End If
Loop
TBSM = Text
TBH = 15.56
Do
tbha = 273.15 + TBH
PWSBHA = FNPWS(tbha)
WSBHA = FNWS(PWSBHA, PRESION)
TBHF = TBH * 1.8 + 32
TBSMF = TBSM * 1.8 + 32
WMC = FNWM(TBHF, WSBHA, PRESION)
If WMC >= WM Then Exit Do
TBH = TBH + 0.55
Loop
Do
TBH = TBH - 0.11
tbha = TBH + 273.15
PWSBHA = FNPWS(tbha)
WSBHA = FNWS(PWSBHA, PRESION)
TBHF = TBH * 1.8 + 32: TBSMF = TBSM * 1.8 + 32
WMC = FNWM(TBHF, WSBHA, TBSMF)
Loop Until Abs(WMC - WM) < 0.00004 Or (WMC - WM) <= 0
TBHM = TBH
TBSS = TBSM - (tbs - TADP) * (1 - BYPF)
MAQSHF = (TBSM - TADP) / (WM - WSADP2)
WSAL = WM - (TBSM - TBSS) / MAQSHF
TBH = TADP
Do
tbha = TBH + 273.15
PWSBHA = FNPWS(tbha)
WSBHA = FNWS(PWSBHA, PRESION)
TBHF = TBH * 1.8 * 32: TBSSF = TBSS * 1.8 + 32
WSALC = FNWM(TBHF, WSBHA, TBSSF)
If WSALC >= WSAL Then Exit Do
TBH = TBH + 0.55
Loop
Do
TBH = TBH - 0.11
tbha = TBH + 273.15
PWSBHA = FNPWS(tbha)
WSBHA = FNWS(PWSBHA, PRESION)
TBHF = TBH * 1.8 + 32
TBSSF = TBSS * 1.8 + 32
WSALC = FNWM(TBHF, WSBHA, TBSSF)
Loop Until (WSALC - WSAL) < 0.00004 Or (WSALC - WSAL) <= 0
TBHS = TBH
CAPTOTAL = QTI + RCAL
CAPTOTALUE = CAPTOTALUE + (QTI + RCAL) * IGUALES
RCALUE = RCALUE + RCAL * IGUALES
End Sub
Private Sub RETORNOPARCIAL()
RCAL = 0
QSVENT = 1.23 * CaudalAireUma(nUma) * (Texterna(nUma) - Tinterna(nUma))
QLVENT = 3010 * CaudalAireUma(nUma) * (Wexterna(nUma) - Winterna(nUma))

Resultados - 30

EQSI = QSI + BYPF * QSVENT + RCAL


EQLI = QLI + BYPF * QLVENT
ERSHF = EQSI / (EQSI + EQLI)
TADP = 4.44
Do
TADPA = TADP + 273.15
PWSADP = FNPWS(TADPA)
WSADP1 = FNWS(PWSADP, PRESION)
WSADP2 = (ERSHF * 1.23 * (TINT - TADP) + ERSHF * 3010 * wint - 1.23 * (TINT - TADP)) / (ERSHF
* 3010)
If WSADP2 <= WSADP1 Then
POS1
If TADP <= 4.44 Then
RCAL = RCAL + 100
EQSI = QSI + BYPF * QSVENT + RCAL
EQLI = QLI + BYPF * QLVENT
ERSHF = EQSI / (EQSI + EQLI)
TADP = 4.44
Else
If Abs(WSADP1 - WSADP2) <= 0.00003 Or (WSADP1 - WSADP2) <= 0 Then
If TADP >= 8.890001 Then
CMH = EQSI / (1.23 * (TINT - TADP) * (1 - BYPF))
CHCAL = CMH / VUMA
If CHCAL >= chmin Then Exit Do
RCAL = RCAL + 100
EQSI = QSI + BYPF * QSVENT + RCAL
EQLI = QLI + BYPF * QLVENT
ERSHF = EQSI / (EQSI + EQLI)
TADP = 4.44
End If
Else
TADP = TADP - 0.11
TADPA = TADP + 273.15
PWSADP = FNPWS(TADPA)
WSADP1 = FNWS(PWSADP, PRESION)
WSADP2 = (ERSHF * 1.23 * (TINT - TADP) + ERSHF + 3010 * wint - 1.23 * (TINT - TADP
)) / (ERSHF * 3010)
GoTo POS1
End If
End If
Else
TADP = TADP + 0.55
End If
Loop
TBSM = ((CMH - AIREUMA) * TINT + AIREUMA * Text) / CMH
MSHF = (Text - TINT) / (WEXT - wint)
WM = WEXT - (Text - TBSM) / MSHF
TBH = 15.56
Do
tbha = 273.15
PWSBHA = FNPWS(tbha)
WSBHA = FNWS(PWSBHA, PRESION)
TBHF = TBH * 1.8 + 32: TBSMF = TBSM * 1.8 + 32
WMC = FNWM(TBHF, WSBH, TBSMF)
If WMC >= WM Then Exit Do
TBH = TBH + 0.55
Loop
Do
TBH = TBH - 0.11
tbha = TBH + 273.15
PWSBHA = FNPWS(tbha)
WSBHA = FNWS(PWSBHA, PRESION)
TBHF = TBH * 1.8 + 32: TBSMF = TBSM * 1.8 + 32
WMC = FNWM(TBHF, WSBHA, TBSMF)
Loop Until Abs(WMC - WM) < 0.00003 Or (WMC - WM) <= 0
TBHM = TBH
TBSS = TBSM - (TBSM - TADP) * (1 - BYPF)
MAQSHF = (TBSM - TADP) / (WM - WSADP2)
WSAL = WM - (TBSM - TBSS) / MAQSHF
TBH = TADP
Do

Resultados - 31
tbha = TBH + 273.15
PWSBHA = FNPWS(tbha)
WSBHA = FNWS(PWSBHA, PRESION)
TBHF = TBH * 1.8 + 32: TBSSF = TBSS * 1.8 + 32
WSALC = FNWM(TBHF, WSBHA, TBSSF)
If WSALC >= WSAL Then Exit Do
TBH = TBH + 0.55
Loop
Do
TBH = TBH - 0.11
tbha = TBH + 273.15
PWSBHA = FNPWS(tbha)
WSBHA = FNWS(PWSBHA, PRESION)
TBHF = TBH * 1.8 + 32: TBSSF = TBSS * 1.8 + 32
WSALC = FNWM(TBHF, WSBHA, TBSSF)
Loop Until Abs(WSALC - WSAL) < 0.00003 Or (WSALC - WSAL) <= 0
TBHS = TBH
CAPTOTAL = QTI + RCAL
CAPTOTALUE = CAPTOTALUE + (QTI + RCAL) * IGUALES
RCALUE = RCALUE + RCAL * IGUALES
End Sub

Function FNPWS(Temp As Double) As Double


FNPWS = Exp((-5800.2206 / Temp) + 1.3914993 - 0.04860293 * Temp + 0.000041764768 * Temp ^ 2 - 0.00
000001445293 * Temp ^ 3 + 6.5459673 * Log(Temp)) / 1000
End Function
Function FNWS(Presionred As Double, PRESION As Double) As Double
FNWS = 0.62198 * Presionred / (PRESION - Presionred)
End Function

Function FNWM(TBHF As Double, hUMEDAD As Double, tbs As Double) As Double


FNWM = ((1093 - 0.556 * TBHF) * hUMEDAD - 0.24 * (tbs - TBHF)) / (1093 + 0.444 * tbs - TBHF)
End Function
Private Sub IMPRESION()
If CondicionesExteriores.cboAnalisis.ListIndex = 0 Then
If CARVid = 1 Then
For Meses = 1 To 12
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((
nOfi - 1))) + ".rst")
result.Comp = "S"
result.Nombre = "Solar-Vidrio-" & OrientacionV & "-" & AO(Meses)
result.t1 = Solar(1, Meses)
result.t2 = Solar(2, Meses)
result.t3 = Solar(3, Meses)
result.t4 = Solar(4, Meses)
result.t5 = Solar(5, Meses)
result.t6 = Solar(6, Meses)
result.t7 = Solar(7, Meses)
result.t8 = Solar(8, Meses)
result.t9 = Solar(9, Meses)
result.t10 = Solar(10, Meses)
result.t11 = Solar(11, Meses)
result.t12 = Solar(12, Meses)
result.t13 = Solar(13, Meses)
result.t14 = Solar(14, Meses)
result.t15 = Solar(15, Meses)
result.t16 = Solar(16, Meses)
result.t17 = Solar(17, Meses)
result.t18 = Solar(18, Meses)
result.t19 = Solar(19, Meses)
result.t20 = Solar(20, Meses)
result.t21 = Solar(21, Meses)
result.t22 = Solar(22, Meses)
result.t23 = Solar(23, Meses)
result.t24 = Solar(24, Meses)
result.tTotal = TSolarm(Meses)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1)
)) + ".rst" For Random As #1 Len = Len(result)

Resultados - 32

Put #1, n_carg, result


Close #1
Next Meses
For Meses = 1 To 12
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((
nOfi - 1))) + ".rst")
result.Comp = "S"
result.Nombre = "Convect-Vidrio-" & AO(Meses)
result.t1 = ConvectVid(1, Meses)
result.t2 = ConvectVid(2, Meses)
result.t3 = ConvectVid(3, Meses)
result.t4 = ConvectVid(4, Meses)
result.t5 = ConvectVid(5, Meses)
result.t6 = ConvectVid(6, Meses)
result.t7 = ConvectVid(7, Meses)
result.t8 = ConvectVid(8, Meses)
result.t9 = ConvectVid(9, Meses)
result.t10 = ConvectVid(10, Meses)
result.t11 = ConvectVid(11, Meses)
result.t12 = ConvectVid(12, Meses)
result.t13 = ConvectVid(13, Meses)
result.t14 = ConvectVid(14, Meses)
result.t15 = ConvectVid(15, Meses)
result.t16 = ConvectVid(16, Meses)
result.t17 = ConvectVid(17, Meses)
result.t18 = ConvectVid(18, Meses)
result.t19 = ConvectVid(19, Meses)
result.t20 = ConvectVid(20, Meses)
result.t21 = ConvectVid(21, Meses)
result.t22 = ConvectVid(22, Meses)
result.t23 = ConvectVid(23, Meses)
result.t24 = ConvectVid(24, Meses)
result.tTotal = Tconvidm(Meses)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1)
)) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
Next Meses
End If
If CARPared = 1 Then
For Meses = 1 To 12
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((
nOfi - 1))) + ".rst")
result.Comp = "S"
result.Nombre = "Ganancia-Pared-" & OrientPa & "-" & AO(Meses)
result.t1 = QParedes(1, Meses)
result.t2 = QParedes(2, Meses)
result.t3 = QParedes(3, Meses)
result.t4 = QParedes(4, Meses)
result.t5 = QParedes(5, Meses)
result.t6 = QParedes(6, Meses)
result.t7 = QParedes(7, Meses)
result.t8 = QParedes(8, Meses)
result.t9 = QParedes(9, Meses)
result.t10 = QParedes(10, Meses)
result.t11 = QParedes(11, Meses)
result.t12 = QParedes(12, Meses)
result.t13 = QParedes(13, Meses)
result.t14 = QParedes(14, Meses)
result.t15 = QParedes(15, Meses)
result.t16 = QParedes(16, Meses)
result.t17 = QParedes(17, Meses)
result.t18 = QParedes(18, Meses)
result.t19 = QParedes(19, Meses)
result.t20 = QParedes(20, Meses)
result.t21 = QParedes(21, Meses)
result.t22 = QParedes(22, Meses)
result.t23 = QParedes(23, Meses)
result.t24 = QParedes(24, Meses)

Resultados - 33

)) +

nOfi

)) +

nOfi

result.tTotal = QparTotal(Meses)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
Next Meses
End If
If CARTecho = 1 Then
For Meses = 1 To 12
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
- 1))) + ".rst")
result.Comp = "S"
result.Nombre = "Ganancia_de_Techo-" & AO(Meses)
result.t1 = QTechos(1, Meses)
result.t2 = QTechos(2, Meses)
result.t3 = QTechos(3, Meses)
result.t4 = QTechos(4, Meses)
result.t5 = QTechos(5, Meses)
result.t6 = QTechos(6, Meses)
result.t7 = QTechos(7, Meses)
result.t8 = QTechos(8, Meses)
result.t9 = QTechos(9, Meses)
result.t10 = QTechos(10, Meses)
result.t11 = QTechos(11, Meses)
result.t12 = QTechos(12, Meses)
result.t13 = QTechos(13, Meses)
result.t14 = QTechos(14, Meses)
result.t15 = QTechos(15, Meses)
result.t16 = QTechos(16, Meses)
result.t17 = QTechos(17, Meses)
result.t18 = QTechos(18, Meses)
result.t19 = QTechos(19, Meses)
result.t20 = QTechos(20, Meses)
result.t21 = QTechos(21, Meses)
result.t22 = QTechos(22, Meses)
result.t23 = QTechos(23, Meses)
result.t24 = QTechos(24, Meses)
result.tTotal = QTechTotal(Meses)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
Next Meses
End If
For Mes = 1 To 12
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
- 1))) + ".rst")
result.Comp = "S"
result.Nombre = "Sensible-Ventilacion-" & AO(Mes)
result.t1 = QsensVent(1, Mes)
result.t2 = QsensVent(2, Mes)
result.t3 = QsensVent(3, Mes)
result.t4 = QsensVent(4, Mes)
result.t5 = QsensVent(5, Mes)
result.t6 = QsensVent(6, Mes)
result.t7 = QsensVent(7, Mes)
result.t8 = QsensVent(8, Mes)
result.t9 = QsensVent(9, Mes)
result.t10 = QsensVent(10, Mes)
result.t11 = QsensVent(11, Mes)
result.t12 = QsensVent(12, Mes)
result.t13 = QsensVent(13, Mes)
result.t14 = QsensVent(14, Mes)
result.t15 = QsensVent(15, Mes)
result.t16 = QsensVent(16, Mes)
result.t17 = QsensVent(17, Mes)
result.t18 = QsensVent(18, Mes)

+ Trim(Ofi((nOfi - 1)

+ "Ofic" + Trim(Ofi((

+ Trim(Ofi((nOfi - 1)

+ "Ofic" + Trim(Ofi((

Resultados - 34

)) + ".rst"

nOfi - 1)))

)) + ".rst"

nOfi - 1)))

result.t19 = QsensVent(19, Mes)


result.t20 = QsensVent(20, Mes)
result.t21 = QsensVent(21, Mes)
result.t22 = QsensVent(22, Mes)
result.t23 = QsensVent(23, Mes)
result.t24 = QsensVent(24, Mes)
result.tTotal = QsensVent(25, Mes)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "L"
result.Nombre = "Latente-Ventilacion-" & AO(Mes)
result.t1 = QLatVent(1, Mes)
result.t2 = QLatVent(2, Mes)
result.t3 = QLatVent(3, Mes)
result.t4 = QLatVent(4, Mes)
result.t5 = QLatVent(5, Mes)
result.t6 = QLatVent(6, Mes)
result.t7 = QLatVent(7, Mes)
result.t8 = QLatVent(8, Mes)
result.t9 = QLatVent(9, Mes)
result.t10 = QLatVent(10, Mes)
result.t11 = QLatVent(11, Mes)
result.t12 = QLatVent(12, Mes)
result.t13 = QLatVent(13, Mes)
result.t14 = QLatVent(14, Mes)
result.t15 = QLatVent(15, Mes)
result.t16 = QLatVent(16, Mes)
result.t17 = QLatVent(17, Mes)
result.t18 = QLatVent(18, Mes)
result.t19 = QLatVent(19, Mes)
result.t20 = QLatVent(20, Mes)
result.t21 = QLatVent(21, Mes)
result.t22 = QLatVent(22, Mes)
result.t23 = QLatVent(23, Mes)
result.t24 = QLatVent(24, Mes)
result.tTotal = QLatVent(25, Mes)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "S"
result.Nombre = "Sensible-Infiltracion-" & AO(Mes)
result.t1 = QsensInfil(1, Mes)
result.t2 = QsensInfil(2, Mes)
result.t3 = QsensInfil(3, Mes)
result.t4 = QsensInfil(4, Mes)
result.t5 = QsensInfil(5, Mes)
result.t6 = QsensInfil(6, Mes)
result.t7 = QsensInfil(7, Mes)
result.t8 = QsensInfil(8, Mes)
result.t9 = QsensInfil(9, Mes)
result.t10 = QsensInfil(10, Mes)
result.t11 = QsensInfil(11, Mes)
result.t12 = QsensInfil(12, Mes)
result.t13 = QsensInfil(13, Mes)
result.t14 = QsensInfil(14, Mes)
result.t15 = QsensInfil(15, Mes)
result.t16 = QsensInfil(16, Mes)
result.t17 = QsensInfil(17, Mes)
result.t18 = QsensInfil(18, Mes)
result.t19 = QsensInfil(19, Mes)

+ Trim(Ofi((nOfi - 1)

+ "Ofic" + Trim(Ofi((

+ Trim(Ofi((nOfi - 1)

+ "Ofic" + Trim(Ofi((

Resultados - 35

result.t20 = QsensInfil(20, Mes)


result.t21 = QsensInfil(21, Mes)
result.t22 = QsensInfil(22, Mes)
result.t23 = QsensInfil(23, Mes)
result.t24 = QsensInfil(24, Mes)
result.tTotal = QsensInfil(25, Mes)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1)
)) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((
nOfi - 1))) + ".rst")
result.Comp = "L"
result.Nombre = "Latente-Infiltracion-" & AO(Mes)
result.t1 = QLatInfil(1, Mes)
result.t2 = QLatInfil(2, Mes)
result.t3 = QLatInfil(3, Mes)
result.t4 = QLatInfil(4, Mes)
result.t5 = QLatInfil(5, Mes)
result.t6 = QLatInfil(6, Mes)
result.t7 = QLatInfil(7, Mes)
result.t8 = QLatInfil(8, Mes)
result.t9 = QLatInfil(9, Mes)
result.t10 = QLatInfil(10, Mes)
result.t11 = QLatInfil(11, Mes)
result.t12 = QLatInfil(12, Mes)
result.t13 = QLatInfil(13, Mes)
result.t14 = QLatInfil(14, Mes)
result.t15 = QLatInfil(15, Mes)
result.t16 = QLatInfil(16, Mes)
result.t17 = QLatInfil(17, Mes)
result.t18 = QLatInfil(18, Mes)
result.t19 = QLatInfil(19, Mes)
result.t20 = QLatInfil(20, Mes)
result.t21 = QLatInfil(21, Mes)
result.t22 = QLatInfil(22, Mes)
result.t23 = QLatInfil(23, Mes)
result.t24 = QLatInfil(24, Mes)
result.tTotal = QLatInfil(25, Mes)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1)
)) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
Next Mes

For Meses = 1 To 12
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((
nOfi - 1))) + ".rst")
result.Comp = "T"
result.Nombre = "TOTAL_LATENTE--" & AO(Meses)
result.t1 = QLofic(nOfi, Meses, 1)
result.t2 = QLofic(nOfi, Meses, 2)
result.t3 = QLofic(nOfi, Meses, 3)
result.t4 = QLofic(nOfi, Meses, 4)
result.t5 = QLofic(nOfi, Meses, 5)
result.t6 = QLofic(nOfi, Meses, 6)
result.t7 = QLofic(nOfi, Meses, 7)
result.t8 = QLofic(nOfi, Meses, 8)
result.t9 = QLofic(nOfi, Meses, 9)
result.t10 = QLofic(nOfi, Meses, 10)
result.t11 = QLofic(nOfi, Meses, 11)
result.t12 = QLofic(nOfi, Meses, 12)
result.t13 = QLofic(nOfi, Meses, 13)
result.t14 = QLofic(nOfi, Meses, 14)
result.t15 = QLofic(nOfi, Meses, 15)
result.t16 = QLofic(nOfi, Meses, 16)
result.t17 = QLofic(nOfi, Meses, 17)

Resultados - 36

result.t18 = QLofic(nOfi, Meses, 18)


result.t19 = QLofic(nOfi, Meses, 19)
result.t20 = QLofic(nOfi, Meses, 20)
result.t21 = QLofic(nOfi, Meses, 21)
result.t22 = QLofic(nOfi, Meses, 22)
result.t23 = QLofic(nOfi, Meses, 23)
result.t24 = QLofic(nOfi, Meses, 24)
result.tTotal = QLofic(nOfi, Meses, 25)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1)
)) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((
nOfi - 1))) + ".rst")
result.Comp = "T"
result.Nombre = "TOTAL_SENSIBLE--" & AO(Meses)
result.t1 = QSofic(nOfi, Meses, 1)
result.t2 = QSofic(nOfi, Meses, 2)
result.t3 = QSofic(nOfi, Meses, 3)
result.t4 = QSofic(nOfi, Meses, 4)
result.t5 = QSofic(nOfi, Meses, 5)
result.t6 = QSofic(nOfi, Meses, 6)
result.t7 = QSofic(nOfi, Meses, 7)
result.t8 = QSofic(nOfi, Meses, 8)
result.t9 = QSofic(nOfi, Meses, 9)
result.t10 = QSofic(nOfi, Meses, 10)
result.t11 = QSofic(nOfi, Meses, 11)
result.t12 = QSofic(nOfi, Meses, 12)
result.t13 = QSofic(nOfi, Meses, 13)
result.t14 = QSofic(nOfi, Meses, 14)
result.t15 = QSofic(nOfi, Meses, 15)
result.t16 = QSofic(nOfi, Meses, 16)
result.t17 = QSofic(nOfi, Meses, 17)
result.t18 = QSofic(nOfi, Meses, 18)
result.t19 = QSofic(nOfi, Meses, 19)
result.t20 = QSofic(nOfi, Meses, 20)
result.t21 = QSofic(nOfi, Meses, 21)
result.t22 = QSofic(nOfi, Meses, 22)
result.t23 = QSofic(nOfi, Meses, 23)
result.t24 = QSofic(nOfi, Meses, 24)
result.tTotal = QSofic(nOfi, Meses, 25)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1)
)) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
Next Meses
Else
Mes = CondicionesExteriores.cboAnalisis.ListIndex
Meses = CondicionesExteriores.cboAnalisis.ListIndex
If CARVid = 1 Then
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((
nOfi - 1))) + ".rst")
result.Comp = "S"
result.Nombre = "Solar-Vidrio-" & OrientacionV & "-" & AO(Meses)
result.t1 = Solar(1, Meses)
result.t2 = Solar(2, Meses)
result.t3 = Solar(3, Meses)
result.t4 = Solar(4, Meses)
result.t5 = Solar(5, Meses)
result.t6 = Solar(6, Meses)
result.t7 = Solar(7, Meses)
result.t8 = Solar(8, Meses)
result.t9 = Solar(9, Meses)
result.t10 = Solar(10, Meses)
result.t11 = Solar(11, Meses)
result.t12 = Solar(12, Meses)
result.t13 = Solar(13, Meses)

Resultados - 37

)) + ".rst"

nOfi - 1)))

)) + ".rst"

nOfi - 1)))

result.t14 = Solar(14, Meses)


result.t15 = Solar(15, Meses)
result.t16 = Solar(16, Meses)
result.t17 = Solar(17, Meses)
result.t18 = Solar(18, Meses)
result.t19 = Solar(19, Meses)
result.t20 = Solar(20, Meses)
result.t21 = Solar(21, Meses)
result.t22 = Solar(22, Meses)
result.t23 = Solar(23, Meses)
result.t24 = Solar(24, Meses)
result.tTotal = TSolarm(Meses)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "S"
result.Nombre = "Convect-Vidrio-" & AO(Meses)
result.t1 = ConvectVid(1, Meses)
result.t2 = ConvectVid(2, Meses)
result.t3 = ConvectVid(3, Meses)
result.t4 = ConvectVid(4, Meses)
result.t5 = ConvectVid(5, Meses)
result.t6 = ConvectVid(6, Meses)
result.t7 = ConvectVid(7, Meses)
result.t8 = ConvectVid(8, Meses)
result.t9 = ConvectVid(9, Meses)
result.t10 = ConvectVid(10, Meses)
result.t11 = ConvectVid(11, Meses)
result.t12 = ConvectVid(12, Meses)
result.t13 = ConvectVid(13, Meses)
result.t14 = ConvectVid(14, Meses)
result.t15 = ConvectVid(15, Meses)
result.t16 = ConvectVid(16, Meses)
result.t17 = ConvectVid(17, Meses)
result.t18 = ConvectVid(18, Meses)
result.t19 = ConvectVid(19, Meses)
result.t20 = ConvectVid(20, Meses)
result.t21 = ConvectVid(21, Meses)
result.t22 = ConvectVid(22, Meses)
result.t23 = ConvectVid(23, Meses)
result.t24 = ConvectVid(24, Meses)
result.tTotal = Tconvidm(Meses)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
End If
If CARPared = 1 Then
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "S"
result.Nombre = "Ganancia-Pared-" & OrientPa & "-" & AO(Meses)
result.t1 = QParedes(1, Meses)
result.t2 = QParedes(2, Meses)
result.t3 = QParedes(3, Meses)
result.t4 = QParedes(4, Meses)
result.t5 = QParedes(5, Meses)
result.t6 = QParedes(6, Meses)
result.t7 = QParedes(7, Meses)
result.t8 = QParedes(8, Meses)
result.t9 = QParedes(9, Meses)
result.t10 = QParedes(10, Meses)
result.t11 = QParedes(11, Meses)
result.t12 = QParedes(12, Meses)

+ Trim(Ofi((nOfi - 1)

+ "Ofic" + Trim(Ofi((

+ Trim(Ofi((nOfi - 1)

+ "Ofic" + Trim(Ofi((

Resultados - 38

)) + ".rst"

nOfi - 1)))

)) + ".rst"

nOfi - 1)))

result.t13 = QParedes(13, Meses)


result.t14 = QParedes(14, Meses)
result.t15 = QParedes(15, Meses)
result.t16 = QParedes(16, Meses)
result.t17 = QParedes(17, Meses)
result.t18 = QParedes(18, Meses)
result.t19 = QParedes(19, Meses)
result.t20 = QParedes(20, Meses)
result.t21 = QParedes(21, Meses)
result.t22 = QParedes(22, Meses)
result.t23 = QParedes(23, Meses)
result.t24 = QParedes(24, Meses)
result.tTotal = QparTotal(Meses)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
End If
If CARTecho = 1 Then
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "S"
result.Nombre = "Ganancia_de_Techo-" & AO(Meses)
result.t1 = QTechos(1, Meses)
result.t2 = QTechos(2, Meses)
result.t3 = QTechos(3, Meses)
result.t4 = QTechos(4, Meses)
result.t5 = QTechos(5, Meses)
result.t6 = QTechos(6, Meses)
result.t7 = QTechos(7, Meses)
result.t8 = QTechos(8, Meses)
result.t9 = QTechos(9, Meses)
result.t10 = QTechos(10, Meses)
result.t11 = QTechos(11, Meses)
result.t12 = QTechos(12, Meses)
result.t13 = QTechos(13, Meses)
result.t14 = QTechos(14, Meses)
result.t15 = QTechos(15, Meses)
result.t16 = QTechos(16, Meses)
result.t17 = QTechos(17, Meses)
result.t18 = QTechos(18, Meses)
result.t19 = QTechos(19, Meses)
result.t20 = QTechos(20, Meses)
result.t21 = QTechos(21, Meses)
result.t22 = QTechos(22, Meses)
result.t23 = QTechos(23, Meses)
result.t24 = QTechos(24, Meses)
result.tTotal = QTechTotal(Meses)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
End If
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "S"
result.Nombre = "Sensible-Ventilacion-" & AO(Mes)
result.t1 = QsensVent(1, Mes)
result.t2 = QsensVent(2, Mes)
result.t3 = QsensVent(3, Mes)
result.t4 = QsensVent(4, Mes)
result.t5 = QsensVent(5, Mes)
result.t6 = QsensVent(6, Mes)
result.t7 = QsensVent(7, Mes)
result.t8 = QsensVent(8, Mes)
result.t9 = QsensVent(9, Mes)
result.t10 = QsensVent(10, Mes)

+ Trim(Ofi((nOfi - 1)

+ "Ofic" + Trim(Ofi((

+ Trim(Ofi((nOfi - 1)

+ "Ofic" + Trim(Ofi((

Resultados - 39

)) + ".rst"

nOfi - 1)))

)) + ".rst"

nOfi - 1)))

result.t11 = QsensVent(11, Mes)


result.t12 = QsensVent(12, Mes)
result.t13 = QsensVent(13, Mes)
result.t14 = QsensVent(14, Mes)
result.t15 = QsensVent(15, Mes)
result.t16 = QsensVent(16, Mes)
result.t17 = QsensVent(17, Mes)
result.t18 = QsensVent(18, Mes)
result.t19 = QsensVent(19, Mes)
result.t20 = QsensVent(20, Mes)
result.t21 = QsensVent(21, Mes)
result.t22 = QsensVent(22, Mes)
result.t23 = QsensVent(23, Mes)
result.t24 = QsensVent(24, Mes)
result.tTotal = QsensVent(25, Mes)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "L"
result.Nombre = "Latente-Ventilacion-" & AO(Mes)
result.t1 = QLatVent(1, Mes)
result.t2 = QLatVent(2, Mes)
result.t3 = QLatVent(3, Mes)
result.t4 = QLatVent(4, Mes)
result.t5 = QLatVent(5, Mes)
result.t6 = QLatVent(6, Mes)
result.t7 = QLatVent(7, Mes)
result.t8 = QLatVent(8, Mes)
result.t9 = QLatVent(9, Mes)
result.t10 = QLatVent(10, Mes)
result.t11 = QLatVent(11, Mes)
result.t12 = QLatVent(12, Mes)
result.t13 = QLatVent(13, Mes)
result.t14 = QLatVent(14, Mes)
result.t15 = QLatVent(15, Mes)
result.t16 = QLatVent(16, Mes)
result.t17 = QLatVent(17, Mes)
result.t18 = QLatVent(18, Mes)
result.t19 = QLatVent(19, Mes)
result.t20 = QLatVent(20, Mes)
result.t21 = QLatVent(21, Mes)
result.t22 = QLatVent(22, Mes)
result.t23 = QLatVent(23, Mes)
result.t24 = QLatVent(24, Mes)
result.tTotal = QLatVent(25, Mes)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "S"
result.Nombre = "Sensible-Infiltracion-" & AO(Mes)
result.t1 = QsensInfil(1, Mes)
result.t2 = QsensInfil(2, Mes)
result.t3 = QsensInfil(3, Mes)
result.t4 = QsensInfil(4, Mes)
result.t5 = QsensInfil(5, Mes)
result.t6 = QsensInfil(6, Mes)
result.t7 = QsensInfil(7, Mes)
result.t8 = QsensInfil(8, Mes)
result.t9 = QsensInfil(9, Mes)
result.t10 = QsensInfil(10, Mes)
result.t11 = QsensInfil(11, Mes)

+ Trim(Ofi((nOfi - 1)

+ "Ofic" + Trim(Ofi((

+ Trim(Ofi((nOfi - 1)

+ "Ofic" + Trim(Ofi((

Resultados - 40

)) + ".rst"

nOfi - 1)))

)) + ".rst"

nOfi - 1)))

result.t12 = QsensInfil(12, Mes)


result.t13 = QsensInfil(13, Mes)
result.t14 = QsensInfil(14, Mes)
result.t15 = QsensInfil(15, Mes)
result.t16 = QsensInfil(16, Mes)
result.t17 = QsensInfil(17, Mes)
result.t18 = QsensInfil(18, Mes)
result.t19 = QsensInfil(19, Mes)
result.t20 = QsensInfil(20, Mes)
result.t21 = QsensInfil(21, Mes)
result.t22 = QsensInfil(22, Mes)
result.t23 = QsensInfil(23, Mes)
result.t24 = QsensInfil(24, Mes)
result.tTotal = QsensInfil(25, Mes)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "L"
result.Nombre = "Latente-Infiltracion-" & AO(Mes)
result.t1 = QLatInfil(1, Mes)
result.t2 = QLatInfil(2, Mes)
result.t3 = QLatInfil(3, Mes)
result.t4 = QLatInfil(4, Mes)
result.t5 = QLatInfil(5, Mes)
result.t6 = QLatInfil(6, Mes)
result.t7 = QLatInfil(7, Mes)
result.t8 = QLatInfil(8, Mes)
result.t9 = QLatInfil(9, Mes)
result.t10 = QLatInfil(10, Mes)
result.t11 = QLatInfil(11, Mes)
result.t12 = QLatInfil(12, Mes)
result.t13 = QLatInfil(13, Mes)
result.t14 = QLatInfil(14, Mes)
result.t15 = QLatInfil(15, Mes)
result.t16 = QLatInfil(16, Mes)
result.t17 = QLatInfil(17, Mes)
result.t18 = QLatInfil(18, Mes)
result.t19 = QLatInfil(19, Mes)
result.t20 = QLatInfil(20, Mes)
result.t21 = QLatInfil(21, Mes)
result.t22 = QLatInfil(22, Mes)
result.t23 = QLatInfil(23, Mes)
result.t24 = QLatInfil(24, Mes)
result.tTotal = QLatInfil(25, Mes)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic"
For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/"
+ ".rst")
result.Comp = "T"
result.Nombre = "TOTAL_LATENTE--" & AO(Meses)
result.t1 = QLofic(nOfi, Meses, 1)
result.t2 = QLofic(nOfi, Meses, 2)
result.t3 = QLofic(nOfi, Meses, 3)
result.t4 = QLofic(nOfi, Meses, 4)
result.t5 = QLofic(nOfi, Meses, 5)
result.t6 = QLofic(nOfi, Meses, 6)
result.t7 = QLofic(nOfi, Meses, 7)
result.t8 = QLofic(nOfi, Meses, 8)
result.t9 = QLofic(nOfi, Meses, 9)
result.t10 = QLofic(nOfi, Meses, 10)
result.t11 = QLofic(nOfi, Meses, 11)
result.t12 = QLofic(nOfi, Meses, 12)

+ Trim(Ofi((nOfi - 1)

+ "Ofic" + Trim(Ofi((

+ Trim(Ofi((nOfi - 1)

+ "Ofic" + Trim(Ofi((

Resultados - 41

result.t13 = QLofic(nOfi, Meses, 13)


result.t14 = QLofic(nOfi, Meses, 14)
result.t15 = QLofic(nOfi, Meses, 15)
result.t16 = QLofic(nOfi, Meses, 16)
result.t17 = QLofic(nOfi, Meses, 17)
result.t18 = QLofic(nOfi, Meses, 18)
result.t19 = QLofic(nOfi, Meses, 19)
result.t20 = QLofic(nOfi, Meses, 20)
result.t21 = QLofic(nOfi, Meses, 21)
result.t22 = QLofic(nOfi, Meses, 22)
result.t23 = QLofic(nOfi, Meses, 23)
result.t24 = QLofic(nOfi, Meses, 24)
result.tTotal = QLofic(nOfi, Meses, 25)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1)
)) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
n_carg = lenfile4(App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((
nOfi - 1))) + ".rst")
result.Comp = "T"
result.Nombre = "TOTAL_SENSIBLE--" & AO(Meses)
result.t1 = QSofic(nOfi, Meses, 1)
result.t2 = QSofic(nOfi, Meses, 2)
result.t3 = QSofic(nOfi, Meses, 3)
result.t4 = QSofic(nOfi, Meses, 4)
result.t5 = QSofic(nOfi, Meses, 5)
result.t6 = QSofic(nOfi, Meses, 6)
result.t7 = QSofic(nOfi, Meses, 7)
result.t8 = QSofic(nOfi, Meses, 8)
result.t9 = QSofic(nOfi, Meses, 9)
result.t10 = QSofic(nOfi, Meses, 10)
result.t11 = QSofic(nOfi, Meses, 11)
result.t12 = QSofic(nOfi, Meses, 12)
result.t13 = QSofic(nOfi, Meses, 13)
result.t14 = QSofic(nOfi, Meses, 14)
result.t15 = QSofic(nOfi, Meses, 15)
result.t16 = QSofic(nOfi, Meses, 16)
result.t17 = QSofic(nOfi, Meses, 17)
result.t18 = QSofic(nOfi, Meses, 18)
result.t19 = QSofic(nOfi, Meses, 19)
result.t20 = QSofic(nOfi, Meses, 20)
result.t21 = QSofic(nOfi, Meses, 21)
result.t22 = QSofic(nOfi, Meses, 22)
result.t23 = QSofic(nOfi, Meses, 23)
result.t24 = QSofic(nOfi, Meses, 24)
result.tTotal = QSofic(nOfi, Meses, 25)
result.salto = vbCrLf
result.id = result.id + 1
Open App.Path & "/" & Trim(Directorio) & "/Resultados/" + "Ofic" + Trim(Ofi((nOfi - 1)
)) + ".rst" For Random As #1 Len = Len(result)
Put #1, n_carg, result
Close #1
End If
End Sub

Label1
Ganancias SENSIBLES

Ganancias LATENTES

Ganancias TOTALES

Label5

VistaPreviaDatos - 1
Dim
Dim
Dim
Dim
Dim
Dim

clmx As ColumnHeader
itmx1 As ListItem
itmx2 As ListItem
i As Integer
datos As techo
Directorio As String

Private Sub cmdCalculo_Click()


Resultados.Show
Me.Hide
End Sub

Private Sub cmdGuardarTodo_Click()


Dim n_cont As Integer
Dim Nombre As String
n_uma = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt")
n_ofi = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt")
n_carg = lenfile(App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt")
Nombre = DatosGenerales.txtTituloProyecto.Text
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random Access Read As #1 Len = Len(
datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/" + Nombre + ".txt" For Random As #2 Len = Len(da
tos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2

Open App.Path & "/" & Trim(Directorio) & "/Datos/Oficinas.txt" For Random Access Read As #1 Len =
Len(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/" + Nombre + ".txt" For Random As #2 Len = Len(da
tos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2

Open App.Path & "/" & Trim(Directorio) & "/Datos/Cargas.txt" For Random Access Read As #1 Len = Le
n(datos)
Open App.Path & "/" & Trim(Directorio) & "/Datos/" + Nombre + ".txt" For Random As #2 Len = Len(da
tos)
Do While Not EOF(1)
Get #1, , datos
If datos.borrado = 1 Then
n_cont = n_cont + 1
datos.id = n_cont
Put #2, n_cont, datos
End If
Loop
Close #1
Close #2
End
End Sub
Private Sub cmdVolver_Click()
Me.Hide

VistaPreviaDatos - 2
End Sub
Private Sub Form_Load()
Directorio = DatosGenerales.txtTituloProyecto.Text
ListView5.ColumnHeaders.Clear
ListView5.ColumnHeaders.Add , "ID", "ID", 0
ListView5.ColumnHeaders.Add , "PK", "PK", 0
ListView5.ColumnHeaders.Add , "uma", "UMA", 1700, 2
ListView5.ColumnHeaders.Add , "ofi", "Oficina", 1700, 2
ListView5.ColumnHeaders.Add , "carg", "Carga", 1700, 2

ListView5.ListItems.Clear
Dim itmX As ListItem
i = 0
Open App.Path & "/" & Trim(Directorio) & "/Datos/UMAs.txt" For Random Access Read As #1 Len = Len(
datos)
Do While Not EOF(1)
Get #1, , datos
i = i + 1
If UCase(Left(datos.Uma, 1)) = "U" And datos.borrado = 1 Then
Set itmX = ListView5.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.nombuma)
itmX.SubItems(3) = "-"
itmX.SubItems(4) = "-"
Set itmX = Nothing
End If
Loop
Close #1

Open App.Path & "/" & Trim(Directorio) & "/Datos/Global.txt" For Random Access Read As #1 Len = Le
n(datos)
Do While Not EOF(1)
Get #1, , datos
If UCase(Left(datos.TVar, 1)) = "O" And datos.borrado = 1 Then
Set itmX = ListView5.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.UmaAt)
itmX.SubItems(3) = Trim(datos.nombamb)
itmX.SubItems(4) = "-"
Set itmX = Nothing
End If
Loop
Close #1

Open App.Path & "/" & Trim(Directorio) & "/Datos/Global.txt" For Random Access Read As #1 Len = Le
n(datos)
Do While Not EOF(1)
Get #1, , datos
If UCase(Left(datos.TVar, 1)) = "C" And datos.borrado = 1 Then
Set itmX = ListView5.ListItems.Add(1, , datos.id)
itmX.SubItems(1) = i - 1
itmX.SubItems(2) = Trim(datos.UmaAt)
itmX.SubItems(3) = Trim(datos.Ofcorr)
itmX.SubItems(4) = Trim(datos.tcarga)
Set itmX = Nothing
End If
Loop
Close #1
ListView5.SortKey = 3
ListView5.Sorted = True
End Sub

S-ar putea să vă placă și