Ejemplo 1 de scripting Python - Fundamentos de db_eplusout_reader
Este ejemplo muestra cómo crear un script Python sencillo que escriba un informe básico de resumen energético después de cada simulación, accediendo a variables del archivo de salida SQLite de EnergyPlus. Puedes ampliarlo para crear informes más elaborados según el modelo y tus necesidades.
El modelo es el mismo modelo base utilizado en otros tutoriales de scripts personalizados.
Los pasos son los siguientes.
Paso 1 - Crear un modelo base
1. Crea un modelo nuevo situado en London Gatwick.
2. Añade un edificio con los ajustes predeterminados y dibuja un bloque rectangular de 20m por 10m y altura 3.5m, como se muestra abajo.
3. Carga la plantilla de actividad Área de oficinas genérica a nivel de edificio en la pestaña Actividad.
Paso 2 - Escribir un script personalizado
La siguiente tarea es escribir el script que leerá los resultados del archivo SQL, los procesará y escribirá un informe resumido. Los pasos son:
1. Haz clic en el icono Scripts
de la barra de herramientas para abrir el gestor de scripts y marca la casilla Activar scripts .
2. Haz clic en el elemento de exploración Script. Aparece una lista de scripts existentes en el panel de información derecho.
3. Haz clic en la categoría Python-Script y pulsa el icono Añadir nuevo elemento de la barra de información para abrir el diálogo de edición.
4. Copia y pega el script siguiente en la ventana. En resumen, antes de generar el IDF para la simulación se fuerza la opción de salida SQLite de cada edificio. Después se cargan las salidas clave de consumo de calefacción, refrigeración, equipos e iluminación desde el archivo eplusout.sql, se suman y se escriben en un archivo de texto de DesignBuilder en la carpeta EnergyPlus.
from db_eplusout_reader import Variable, get_results
from db_eplusout_reader.constants import *
from datetime import datetime
# ensure that SQLite outputs are generated
def before_energy_idf_generation():
site = api_environment.Site
for building in site.Buildings:
building.SetAttribute("SSSQLiteOP", "1")
def after_energy_simulation():
variables = [
Variable("", "DistrictCooling:Facility", "J"),
Variable("", "DistrictHeating:Facility", "J"),
Variable("", "InteriorEquipment:Electricity", "J"),
Variable("", "InteriorLights:Electricity", "J")
]
file_path = api_environment.EnergyPlusFolder + r'eplusout.sql'
results = get_results(file_path, variables=variables, alike=True, frequency=RP)
convertJ_kWh = 3600000
cooling = results.arrays[0][0] / convertJ_kWh
heating = results. arrays[1][0] / convertJ_kWh
equipment = results.arrays[2][0] / convertJ_kWh
lighting = results.arrays [3][0] / convertJ_kWh
total = str(heating + cooling + equipment + lighting)
file_path = api_environment.EnergyPlusFolder + r'energy_report.txt'
with open(file_path, 'w') as file1:
line0 = "The following values have been retrieved from the .sql file."
line1 = "Cooling Energy: {0}{1}\n".format(cooling, " kWh")
line2 = "Heating Energy: {0}{1}\n".format(heating, " kWh")
line3 = "Equipment Energy: {0}{1}\n".format(equipment, " kWh")
line4 = "Lighting energy: {0}{1}\n".format(lighting, " kWh")
line5 = "Total Energy: {0}{1}\n".format(total, " kWh")
file1.write('{}\n\n{}\n{}\n{}\n{}\n{}'.format(line0,line1,line2,line3,line4,line5))
Consejo: Para ahorrar tiempo puedes copiar y pegar el script anterior en el diálogo. Python requiere sangría como parte de la sintaxis y puede perderse al pegar. En ese caso debes insertarla manualmente; la forma más sencilla es usar <Tab>.
Paso 3 - Ejecutar la simulación y comprobar los resultados
Ve a la pestaña Simulación y ejecuta una simulación anual, asegurándote de que la opción de salida Mensual y RunPeriod esté marcada en el apartado Intervalos de salida para informes .
Una vez terminada la simulación, ve a la carpeta EnergyPlus (comando Archivo > Carpetas > Carpeta EnergyPlus). Debería haber un archivo de texto llamado «energy_report.txt» con resultados como los siguientes.
Los siguientes valores se han obtenido del archivo .sql.
Cooling Energy: 8783.43169749 kWh
Heating Energy: 8226.56484868 kWh
Equipment Energy: 7922.75824552 kWh
Lighting energy: 11450.1034080 kWh
Total Energy: 36382.8581997 kWh
