From ab46cd2ad7e67f348f2c7306ba5567a17bfee906 Mon Sep 17 00:00:00 2001 From: Guille Date: Thu, 25 Apr 2024 06:54:32 +0200 Subject: [PATCH] add screens for aditional workflows --- renderer.js | 6 +- workflows.json | 13 +- workflows/energy_plus/css/styles.css | 25 +++ workflows/energy_plus/logo/logo.png | Bin 0 -> 5514 bytes workflows/energy_plus/main.html | 38 ++++ workflows/energy_plus/module/.env | 3 + workflows/energy_plus/module/.env_demo | 3 + workflows/energy_plus/module/module.js | 202 ++++++++++++++++++ workflows/energy_plus/run.js | 30 +++ workflows/meb/css/styles.css | 25 +++ workflows/meb/logo/logo.png | Bin 0 -> 5803 bytes workflows/meb/main.html | 38 ++++ workflows/meb/module/.env | 3 + workflows/meb/module/.env_demo | 3 + workflows/meb/module/module.js | 202 ++++++++++++++++++ workflows/meb/run.js | 30 +++ .../retrofit/logo/{retrofit.png => logo.png} | Bin workflows/retrofit/main.html | 2 +- 18 files changed, 618 insertions(+), 5 deletions(-) create mode 100644 workflows/energy_plus/css/styles.css create mode 100644 workflows/energy_plus/logo/logo.png create mode 100644 workflows/energy_plus/main.html create mode 100644 workflows/energy_plus/module/.env create mode 100644 workflows/energy_plus/module/.env_demo create mode 100644 workflows/energy_plus/module/module.js create mode 100644 workflows/energy_plus/run.js create mode 100644 workflows/meb/css/styles.css create mode 100644 workflows/meb/logo/logo.png create mode 100644 workflows/meb/main.html create mode 100644 workflows/meb/module/.env create mode 100644 workflows/meb/module/.env_demo create mode 100644 workflows/meb/module/module.js create mode 100644 workflows/meb/run.js rename workflows/retrofit/logo/{retrofit.png => logo.png} (100%) diff --git a/renderer.js b/renderer.js index 5cc5867..7ac7c99 100644 --- a/renderer.js +++ b/renderer.js @@ -11,9 +11,11 @@ fetch('./workflows.json') img.alt = site.name a.href = site.script let name = document.createTextNode(site.name) - name.className = "p-1" + let span = document.createElement('span') + span.className = "p-1" a.appendChild(img) - a.appendChild(name) + span.appendChild(name) + a.appendChild(span) li.appendChild(a) workflowsList.appendChild(li) }) diff --git a/workflows.json b/workflows.json index 909571d..32640c4 100644 --- a/workflows.json +++ b/workflows.json @@ -2,9 +2,18 @@ "workflows": [ { "name": "Retrofit scenario", - "logo": "workflows/retrofit/logo/retrofit.png", - "uri": "https://nextgenerations-cities.encs.concordia.ca/api/v1/", + "logo": "workflows/retrofit/logo/logo.png", "script": "workflows/retrofit/main.html" + }, + { + "name": "Monthly energy balance", + "logo": "workflows/meb/logo/logo.png", + "script": "workflows/meb/main.html" + }, + { + "name": "Energy+", + "logo": "workflows/energy_plus/logo/logo.png", + "script": "workflows/energy_plus/main.html" } ] } \ No newline at end of file diff --git a/workflows/energy_plus/css/styles.css b/workflows/energy_plus/css/styles.css new file mode 100644 index 0000000..3b1e8b3 --- /dev/null +++ b/workflows/energy_plus/css/styles.css @@ -0,0 +1,25 @@ + +.form-element { + padding-top: 5px; + padding-left: 30px; +} + +#links { + padding-left: 40px; + padding-top: 20px; +} + +h1 { + margin-top: 30px; +} + +#img_logo { + padding-bottom: 10px; + margin-left: 20px; + height: 40px; +} + +#info { + width: 40%; + padding-left: -10px; +} \ No newline at end of file diff --git a/workflows/energy_plus/logo/logo.png b/workflows/energy_plus/logo/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..624a6a929cab8527aa1539fb531b102753453bca GIT binary patch literal 5514 zcmeHLX;2f{7LFjOD7fK!5k*Bt9anTZ0Tt^_)hl1U`Ddy+-F@$OzI)Dh&bgJF zjlSOQrY0691Oma7@8RN)-z|05P-FaCW!jpF-)iH8K^lKJhNx62Bv=$m)Wj-LBC5qC z1cLUK%-7GXhB&nMzWHo}p$i<-LS;uLKYGQ>6Er`vnKN~1?$GDm(xj%jq(Q+c9Xsh3 zg`R?j#QXw*ZRWY$p9f;5V=2 z!#2y)**=?(<|1Q4&Yt2S|eL;<|rS#QKF(yePeEZB6+psReC|luwbv58K*Heq8q>ap~8ky^WV=~>Fp@LVzkk! zoKpF&zWnZ?-BPzrQIcHtyjhtQK~F>rnZkCv_LKP$ncbJmOO!3`B@4Ss;(gwqRyv0S zcR&pj{ex=9xD4Iu=Weth$m7a^bPbkZteBofsSMW_^$ zb4lHmr$|Ih%q0an2mpbShlXPwaVj(*&RdAYMIszA$!U&>qZYymWT*xvYGqM!HKgT| z^t=%MtQ)41hPOrq&X%;N0nFt`MbFFQ{Zo0Qn*H= zgs9Y*m>5b7ouW`lsWc9ULj^!82$FFGSsg3az*@3gZLOo|<8VRMhze6`Fom3`89iT4Zi$Jq5?93>DyE(#=C=N{jMOVX_mi4_PYhV+k27Qg^$ z43x~IiN$0FhXa#2G?Ya~IVegO(`cXrn?8VwFIQ_|IfCk_aB>QU^N0`;gHEHd$aE%~ zMP`VZD4FdbW{^b^HVShPIxIoZ0Teze46jN!YM@s-Dltw4N>I84ML?VYWs(^Pn@MJK zPzKonq>E4o4k!j_fSyW>KyC_^493%m$zUl;Rm!FM37z1OvoD`Z0x5k^{fKWAtdZab zT#^?ikJf&M3NaZPpn-L2(pWS)hskCDERgO%XAQ7kh^o|hCF(e70EN!bo9og7;lbd- z!n!)e3H0N5ED%qH!WxB2s8B?4Nje9JI?GSf0=%8Xum*O4H7HIBfD8y=Kp;a%V?rPR z0Ze-Ugn$8fg&32>{x`I)d5DgEDfhtC`1-N>p}vj^K$rEs^}R-6`c@(m^-Tf6NM8tQ zcsVN8`-yY)O(Eg1T#DkmM}N6~9LN5q6lf9$RE*$#jY!xWG6RGeWHwzQCZjYKlgUEF zcrG2jWLGOBniyDxI!kdKajo$3)N4hYp-+_Em*|*qRF?%@Ffss=L5@x^ItV$i>;ali zFzP=aB7;E#5d@HsB@B)T579wH#-jqssDp%sA}GM(F!~zilYswwhz#=Qn!rQU*F=Aa zj#S;Y_%W%D)c;6(A7H>fic8ZshVRe#c2E7Z-}h^V`}GT>uOB##jySwO5m4w&4 z$^`srn9?IyjsNk{q`L;qn~|->2Zw0*0@op(gD0Aq4|!Cv-jF~T?8|p?7J8hi+t#cQ zE-4#U3@yl@AZ2P7?_37NFRshWnu$^wZZQ__P zm(61YjH}^Z)BUD;9V^;UXy+O3`PjS&jmj&U0LijAYR&|!y;HKb6&wAl}YRRbLAi(}x$UOi)@k6?7F8^2x@)Wf#D{l>bmA>YIz2n$bnJNBGv=wH} zWwh&dd++Zp&hh~M=-D^D;<9u7`S->4$IcTjd5viD5@p}BGril%26#Eh;DX zo^4KPj1CPf0_`deE@^w(!V|up`OF&$8E?pqUmTGzA!a3bpLJXg-(Iu5xTSj6j=X8c zEl^6l%#!f_igZfW+%6A zicLruZbCHQf2X~ZNbd=LS2Twp$@h~l*W4Sf;19cciC&1%I!Nnk-%_pts&TZiyDWRA z@=YGIqtN(gn+rxqT5oxdE2@jz=9^*BP$qEMSK3bV1TrrL`HVcc+Fe^J-yjv}NMr znR8}usj9hkB`(pNXyfl$>$qyAW^MIkj4<{2BrP{?$^2PPBiHYlWxl9A*CKh(BadF=4)i3J>CU0Qva`OaRWvPRFnopOcr;Zf=zrM2BW;liyu z%gxlbGw+EF9Znp2P!@>Yyy2OiM@>IwL=Ii})182ToJc3PM~yE}Oqca!zlzUv>R~sO zT9U3bCN>^J-7|wGPTAt1IMzKFluFC5#ct@ipgli$aPcFt?Z5 zAbHZ8doP`3iVL<}k-yl>c*w@Dg=fB_L;5XhN vm#y-x49p+vZWgirxbkp*Xou6{7axrGEvhL`GEP0C+l~0H-Yy5{EnWK;abPWq literal 0 HcmV?d00001 diff --git a/workflows/energy_plus/main.html b/workflows/energy_plus/main.html new file mode 100644 index 0000000..74d3adc --- /dev/null +++ b/workflows/energy_plus/main.html @@ -0,0 +1,38 @@ + + + + + + Energy plus workflow + + + + + Home +

Energy plus workflow

+
+
+
+
+ +
+
+ Buildings Name or Alias (semicolon splitted):
+ +
+ +
+ +
+
+
Retrofit workflow access to the precalculated data bla bla bla, we may need to put some explanation over here
+
+
+ + + + \ No newline at end of file diff --git a/workflows/energy_plus/module/.env b/workflows/energy_plus/module/.env new file mode 100644 index 0000000..4c50d2a --- /dev/null +++ b/workflows/energy_plus/module/.env @@ -0,0 +1,3 @@ +APPLICATION_USERNAME=city_layers +APPLICATION_PASSWORD=city_layers +APPLICATION=36a065d9-bafb-4345-89fe-d68988ce9db2 \ No newline at end of file diff --git a/workflows/energy_plus/module/.env_demo b/workflows/energy_plus/module/.env_demo new file mode 100644 index 0000000..01a7fa9 --- /dev/null +++ b/workflows/energy_plus/module/.env_demo @@ -0,0 +1,3 @@ +APPLICATION_USERNAME=username +APPLICATION_PASSWORD=secret_pass +APPLICATION=apikey \ No newline at end of file diff --git a/workflows/energy_plus/module/module.js b/workflows/energy_plus/module/module.js new file mode 100644 index 0000000..d700fb4 --- /dev/null +++ b/workflows/energy_plus/module/module.js @@ -0,0 +1,202 @@ +const { dialog, BrowserWindow } = require ("electron"); +const dotenv = require('dotenv') +const session_start = 'https://nextgenerations-cities.encs.concordia.ca/api/v1.4/session/start' +const retrofit_results = 'https://nextgenerations-cities.encs.concordia.ca/api/v1.4/persistence/retrofit-results' +//const session_start = 'http://127.0.0.1:15789/v1.4/session/start' +//const retrofit_results = 'http://127.0.0.1:15789/v1.4/persistence/retrofit-results' + + +exports.run = async (application, buildings, tmp_path) => { + console.log(`Executing ${application}`) + dotenv.config({ path:__dirname+'/.env' }) + const application_uuid = process.env.APPLICATION; + const username = process.env.APPLICATION_USERNAME; + const password = process.env.APPLICATION_PASSWORD; + let response = await fetch(session_start, { + method: 'PUT', + headers: { + 'Content-type': 'application/json', + 'username': username, + 'password': password, + 'application-uuid': application_uuid, + 'accept': 'application/json' + } + }); + if (response.status == 200) { + const application_response = await response.json() + const session_id = response.headers.get('session_id') + let token = response.headers.get('token') + console.log(`token: ${token}`) + request = { 'scenarios': [] } + application_response.scenarios.forEach((scenario) => { + scenario_request = {} + scenario_request[`${scenario}`] = buildings + request['scenarios'].push(scenario_request) + }) + response = await fetch(retrofit_results, { + method: 'POST', + headers: { + 'Content-type': 'application/json', + 'session-id': session_id, + 'token': token, + 'application-uuid': application_uuid, + 'accept': 'application/json' + }, + body: JSON.stringify(request) + }, 600000) + console.log(`response: ${response.status}`) + if (response.status == 200) { + results = await response.json() + + var meb_header = "SCENARIO;BUILDING NAME;TOTAL HEATING AREA" + meb_header = `${meb_header};YEARLY COOLING DEMAND;YEARLY HEATING DEMAND;MONTHLY COOLING DEMAND(JAN);MONTHLY COOLING DEMAND(FEB);MONTHLY COOLING DEMAND(MAR);MONTHLY COOLING DEMAND(APR);MONTHLY COOLING DEMAND(MAY);MONTHLY COOLING DEMAND(JUN);MONTHLY COOLING DEMAND(JUL);MONTHLY COOLING DEMAND(AUG);MONTHLY COOLING DEMAND(SEPT);MONTHLY COOLING DEMAND(OCT);MONTHLY COOLING DEMAND(NOV);MONTHLY COOLING DEMAND(DEC);MONTHLY HEATING DEMAND(JAN);MONTHLY HEATING DEMAND(FEB);MONTHLY HEATING DEMAND(MAR);MONTHLY HEATING DEMAND(APR);MONTHLY HEATING DEMAND(MAY);MONTHLY HEATING DEMAND(JUN);MONTHLY HEATING DEMAND(JUL);MONTHLY HEATING DEMAND(AUG);MONTHLY HEATING DEMAND(SEPT);MONTHLY HEATING DEMAND(OCT);MONTHLY HEATING DEMAND(NOV);MONTHLY HEATING DEMAND(DEC)` + meb_header = `${meb_header};YEARLY COOLING PEAK LOAD;YEARLY HEATING PEAK LOAD;MONTHLY COOLING PEAK LOAD (JAN);MONTHLY COOLING PEAK LOAD (FEB);MONTHLY COOLING PEAK LOAD (MAR);MONTHLY COOLING PEAK LOAD (APR);MONTHLY COOLING PEAK LOAD (MAY);MONTHLY COOLING PEAK LOAD (JUN);MONTHLY COOLING PEAK LOAD (JUL);MONTHLY COOLING PEAK LOAD (AUG);MONTHLY COOLING PEAK LOAD (SEPT);MONTHLY COOLING PEAK LOAD (OCT);MONTHLY COOLING PEAK LOAD (NOV);MONTHLY COOLING PEAK LOAD (DEC);MONTHLY HEATING PEAK LOAD (JAN);MONTHLY HEATING PEAK LOAD (FEB);MONTHLY HEATING PEAK LOAD (MAR);MONTHLY HEATING PEAK LOAD (APR);MONTHLY HEATING PEAK LOAD (MAY);MONTHLY HEATING PEAK LOAD (JUN);MONTHLY HEATING PEAK LOAD (JUL);MONTHLY HEATING PEAK LOAD (AUG);MONTHLY HEATING PEAK LOAD (SEPT);MONTHLY HEATING PEAK LOAD (OCT);MONTHLY HEATING PEAK LOAD (NOV);MONTHLY HEATING PEAK LOAD (DEC)` + meb_header = `${meb_header};YEARLY LIGHTING PEAK LOAD;MONTHLY LIGHTING PEAK LOAD(JAN);MONTHLY LIGHTING PEAK LOAD(FEB);MONTHLY LIGHTING PEAK LOAD(MAR);MONTHLY LIGHTING PEAK LOAD(APR);MONTHLY LIGHTING PEAK LOAD(MAY);MONTHLY LIGHTING PEAK LOAD(JUN);MONTHLY LIGHTING PEAK LOAD(JUL);MONTHLY LIGHTING PEAK LOAD(AUG);MONTHLY LIGHTING PEAK LOAD(SEPT);MONTHLY LIGHTING PEAK LOAD(OCT);MONTHLY LIGHTING PEAK LOAD(NOV);MONTHLY LIGHTING PEAK LOAD(DEC)` + meb_header = `${meb_header};YEARLY COOLING CONSUMPTION;YEARLY HEATING CONSUMPTION;MONTHLY COOLING CONSUMPTION(JAN);MONTHLY COOLING CONSUMPTION(FEB);MONTHLY COOLING CONSUMPTION(MAR);MONTHLY COOLING CONSUMPTION(APR);MONTHLY COOLING CONSUMPTION(MAY);MONTHLY COOLING CONSUMPTION(JUN);MONTHLY COOLING CONSUMPTION(JUL);MONTHLY COOLING CONSUMPTION(AUG);MONTHLY COOLING CONSUMPTION(SEPT);MONTHLY COOLING CONSUMPTION(OCT);MONTHLY COOLING CONSUMPTION(NOV);MONTHLY COOLING CONSUMPTION(DEC);MONTHLY HEATING CONSUMPTION(JAN);MONTHLY HEATING CONSUMPTION(FEB);MONTHLY HEATING CONSUMPTION(MAR);MONTHLY HEATING CONSUMPTION(APR);MONTHLY HEATING CONSUMPTION(MAY);MONTHLY HEATING CONSUMPTION(JUN);MONTHLY HEATING CONSUMPTION(JUL);MONTHLY HEATING CONSUMPTION(AUG);MONTHLY HEATING CONSUMPTION(SEPT);MONTHLY HEATING CONSUMPTION(OCT);MONTHLY HEATING CONSUMPTION(NOV);MONTHLY HEATING CONSUMPTION(DEC)` + meb_header = `${meb_header};YEARLY APPLIANCES PEAK LOAD;MONTHLY APPLIANCES PEAK LOAD(JAN);MONTHLY APPLIANCES PEAK LOAD(FEB);MONTHLY APPLIANCES PEAK LOAD(MAR);MONTHLY APPLIANCES PEAK LOAD(APR);MONTHLY APPLIANCES PEAK LOAD(MAY);MONTHLY APPLIANCES PEAK LOAD(JUN);MONTHLY APPLIANCES PEAK LOAD(JUL);MONTHLY APPLIANCES PEAK LOAD(AUG);MONTHLY APPLIANCES PEAK LOAD(SEPT);MONTHLY APPLIANCES PEAK LOAD(OCT);MONTHLY APPLIANCES PEAK LOAD(NOV);MONTHLY APPLIANCES PEAK LOAD(DEC)` + meb_header = `${meb_header};YEARLY LIGHTING ELECTRICAL DEMAND;MONTHLY LIGHTING ELECTRICAL DEMAND(JAN);MONTHLY LIGHTING ELECTRICAL DEMAND(FEB);MONTHLY LIGHTING ELECTRICAL DEMAND(MAR);MONTHLY LIGHTING ELECTRICAL DEMAND(APR);MONTHLY LIGHTING ELECTRICAL DEMAND(MAY);MONTHLY LIGHTING ELECTRICAL DEMAND(JUN);MONTHLY LIGHTING ELECTRICAL DEMAND(JUL);MONTHLY LIGHTING ELECTRICAL DEMAND(AUG);MONTHLY LIGHTING ELECTRICAL DEMAND(SEPT);MONTHLY LIGHTING ELECTRICAL DEMAND(OCT);MONTHLY LIGHTING ELECTRICAL DEMAND(NOV);MONTHLY LIGHTING ELECTRICAL DEMAND(DEC)` + meb_header = `${meb_header};YEARLY APPLIANCES ELECTRICAL DEMAND;MONTHLY APPLIANCES ELECTRICAL DEMAND(JAN);MONTHLY APPLIANCES ELECTRICAL DEMAND(FEB);MONTHLY APPLIANCES ELECTRICAL DEMAND(MAR);MONTHLY APPLIANCES ELECTRICAL DEMAND(APR);MONTHLY APPLIANCES ELECTRICAL DEMAND(MAY);MONTHLY APPLIANCES ELECTRICAL DEMAND(JUN);MONTHLY APPLIANCES ELECTRICAL DEMAND(JUL);MONTHLY APPLIANCES ELECTRICAL DEMAND(AUG);MONTHLY APPLIANCES ELECTRICAL DEMAND(SEPT);MONTHLY APPLIANCES ELECTRICAL DEMAND(OCT);MONTHLY APPLIANCES ELECTRICAL DEMAND(NOV);MONTHLY APPLIANCES ELECTRICAL DEMAND(DEC)` + meb_header = `${meb_header};YEARLY ON SITE ELECTRICAL PRODUCTION;MONTHLY ON SITE ELECTRICAL PRODUCTION(JAN);MONTHLY ON SITE ELECTRICAL PRODUCTION(FEB);MONTHLY ON SITE ELECTRICAL PRODUCTION(MAR);MONTHLY ON SITE ELECTRICAL PRODUCTION(APR);MONTHLY ON SITE ELECTRICAL PRODUCTION(MAY);MONTHLY ON SITE ELECTRICAL PRODUCTION(JUN);MONTHLY ON SITE ELECTRICAL PRODUCTION(JUL);MONTHLY ON SITE ELECTRICAL PRODUCTION(AUG);MONTHLY ON SITE ELECTRICAL PRODUCTION(SEPT);MONTHLY ON SITE ELECTRICAL PRODUCTION(OCT);MONTHLY ON SITE ELECTRICAL PRODUCTION(NOV);MONTHLY ON SITE ELECTRICAL PRODUCTION(DEC)` + meb_header = `${meb_header};YEARLY DOMESTIC HOT WATER CONSUMPTION;YEARLY DOMESTIC HOT WATER HEAT DEMAND;MONTHLY DOMESTIC HOT WATER CONSUMPTION(JAN);MONTHLY DOMESTIC HOT WATER CONSUMPTION(FEB);MONTHLY DOMESTIC HOT WATER CONSUMPTION(MAR);MONTHLY DOMESTIC HOT WATER CONSUMPTION(APR);MONTHLY DOMESTIC HOT WATER CONSUMPTION(MAY);MONTHLY DOMESTIC HOT WATER CONSUMPTION(JUN);MONTHLY DOMESTIC HOT WATER CONSUMPTION(JUL);MONTHLY DOMESTIC HOT WATER CONSUMPTION(AUG);MONTHLY DOMESTIC HOT WATER CONSUMPTION(SEPT);MONTHLY DOMESTIC HOT WATER CONSUMPTION(OCT);MONTHLY DOMESTIC HOT WATER CONSUMPTION(NOV);MONTHLY DOMESTIC HOT WATER CONSUMPTION(DEC);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(JAN);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(FEB);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(MAR);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(APR);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(MAY);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(JUN);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(JUL);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(AUG);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(SEPT);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(OCT);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(NOV);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(DEC)` + meb_header = `${meb_header};YEARLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION;MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(JAN);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(FEB);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(MAR);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(APR);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(MAY);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(JUN);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(JUL);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(AUG);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(SEPT);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(OCT);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(NOV);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(DEC)` + + var costs_header = "SCENARIO;BUILDING NAME;TOTAL HEATING AREA" + costs_header = `${costs_header};TOTAL CAPITAL COSTS SKIN;TOTAL CAPITAL COSTS SYSTEMS;END OF LIFE COSTS;TOTAL OPERATIONAL COSTS;TOTAL MAINTENANCE COSTS;OPERATIONAL INCOMES` + costs_header = `${costs_header};B2010 OPAQUE WALLS(1);B2010 OPAQUE WALLS(2);B2010 OPAQUE WALLS(3);B2010 OPAQUE WALLS(4);B2010 OPAQUE WALLS(5);B2010 OPAQUE WALLS(6);B2010 OPAQUE WALLS(7);B2010 OPAQUE WALLS(8);B2010 OPAQUE WALLS(9);B2010 OPAQUE WALLS(10);B2010 OPAQUE WALLS(11);B2010 OPAQUE WALLS(12);B2010 OPAQUE WALLS(13);B2010 OPAQUE WALLS(14);B2010 OPAQUE WALLS(15);B2010 OPAQUE WALLS(16);B2010 OPAQUE WALLS(17);B2010 OPAQUE WALLS(18);B2010 OPAQUE WALLS(19);B2010 OPAQUE WALLS(20);B2010 OPAQUE WALLS(21);B2010 OPAQUE WALLS(22);B2010 OPAQUE WALLS(23);B2010 OPAQUE WALLS(24);B2010 OPAQUE WALLS(25);B2010 OPAQUE WALLS(26);B2010 OPAQUE WALLS(27);B2010 OPAQUE WALLS(28);B2010 OPAQUE WALLS(29);B2010 OPAQUE WALLS(30);B2010 OPAQUE WALLS(31)` + costs_header = `${costs_header};B2020 TRANSPARENT(1);B2020 TRANSPARENT(2);B2020 TRANSPARENT(3);B2020 TRANSPARENT(4);B2020 TRANSPARENT(5);B2020 TRANSPARENT(6);B2020 TRANSPARENT(7);B2020 TRANSPARENT(8);B2020 TRANSPARENT(9);B2020 TRANSPARENT(10);B2020 TRANSPARENT(11);B2020 TRANSPARENT(12);B2020 TRANSPARENT(13);B2020 TRANSPARENT(14);B2020 TRANSPARENT(15);B2020 TRANSPARENT(16);B2020 TRANSPARENT(17);B2020 TRANSPARENT(18);B2020 TRANSPARENT(19);B2020 TRANSPARENT(20);B2020 TRANSPARENT(21);B2020 TRANSPARENT(22);B2020 TRANSPARENT(23);B2020 TRANSPARENT(24);B2020 TRANSPARENT(25);B2020 TRANSPARENT(26);B2020 TRANSPARENT(27);B2020 TRANSPARENT(28);B2020 TRANSPARENT(29);B2020 TRANSPARENT(30);B2020 TRANSPARENT(31)` + costs_header = `${costs_header};B3010 OPAQUE ROOF(1);B3010 OPAQUE ROOF(2);B3010 OPAQUE ROOF(3);B3010 OPAQUE ROOF(4);B3010 OPAQUE ROOF(5);B3010 OPAQUE ROOF(6);B3010 OPAQUE ROOF(7);B3010 OPAQUE ROOF(8);B3010 OPAQUE ROOF(9);B3010 OPAQUE ROOF(10);B3010 OPAQUE ROOF(11);B3010 OPAQUE ROOF(12);B3010 OPAQUE ROOF(13);B3010 OPAQUE ROOF(14);B3010 OPAQUE ROOF(15);B3010 OPAQUE ROOF(16);B3010 OPAQUE ROOF(17);B3010 OPAQUE ROOF(18);B3010 OPAQUE ROOF(19);B3010 OPAQUE ROOF(20);B3010 OPAQUE ROOF(21);B3010 OPAQUE ROOF(22);B3010 OPAQUE ROOF(23);B3010 OPAQUE ROOF(24);B3010 OPAQUE ROOF(25);B3010 OPAQUE ROOF(26);B3010 OPAQUE ROOF(27);B3010 OPAQUE ROOF(28);B3010 OPAQUE ROOF(29);B3010 OPAQUE ROOF(30);B3010 OPAQUE ROOF(31)` + costs_header = `${costs_header};B10 SUPERSTRUCTURE(1);B10 SUPERSTRUCTURE(2);B10 SUPERSTRUCTURE(3);B10 SUPERSTRUCTURE(4);B10 SUPERSTRUCTURE(5);B10 SUPERSTRUCTURE(6);B10 SUPERSTRUCTURE(7);B10 SUPERSTRUCTURE(8);B10 SUPERSTRUCTURE(9);B10 SUPERSTRUCTURE(10);B10 SUPERSTRUCTURE(11);B10 SUPERSTRUCTURE(12);B10 SUPERSTRUCTURE(13);B10 SUPERSTRUCTURE(14);B10 SUPERSTRUCTURE(15);B10 SUPERSTRUCTURE(16);B10 SUPERSTRUCTURE(17);B10 SUPERSTRUCTURE(18);B10 SUPERSTRUCTURE(19);B10 SUPERSTRUCTURE(20);B10 SUPERSTRUCTURE(21);B10 SUPERSTRUCTURE(22);B10 SUPERSTRUCTURE(23);B10 SUPERSTRUCTURE(24);B10 SUPERSTRUCTURE(25);B10 SUPERSTRUCTURE(26);B10 SUPERSTRUCTURE(27);B10 SUPERSTRUCTURE(28);B10 SUPERSTRUCTURE(29);B10 SUPERSTRUCTURE(30);B10 SUPERSTRUCTURE(31)` + costs_header = `${costs_header};D3020 HEAT GENERATING SYSTEMS(1);D3020 HEAT GENERATING SYSTEMS(2);D3020 HEAT GENERATING SYSTEMS(3);D3020 HEAT GENERATING SYSTEMS(4);D3020 HEAT GENERATING SYSTEMS(5);D3020 HEAT GENERATING SYSTEMS(6);D3020 HEAT GENERATING SYSTEMS(7);D3020 HEAT GENERATING SYSTEMS(8);D3020 HEAT GENERATING SYSTEMS(9);D3020 HEAT GENERATING SYSTEMS(10);D3020 HEAT GENERATING SYSTEMS(11);D3020 HEAT GENERATING SYSTEMS(12);D3020 HEAT GENERATING SYSTEMS(13);D3020 HEAT GENERATING SYSTEMS(14);D3020 HEAT GENERATING SYSTEMS(15);D3020 HEAT GENERATING SYSTEMS(16);D3020 HEAT GENERATING SYSTEMS(17);D3020 HEAT GENERATING SYSTEMS(18);D3020 HEAT GENERATING SYSTEMS(19);D3020 HEAT GENERATING SYSTEMS(20);D3020 HEAT GENERATING SYSTEMS(21);D3020 HEAT GENERATING SYSTEMS(22);D3020 HEAT GENERATING SYSTEMS(23);D3020 HEAT GENERATING SYSTEMS(24);D3020 HEAT GENERATING SYSTEMS(25);D3020 HEAT GENERATING SYSTEMS(26);D3020 HEAT GENERATING SYSTEMS(27);D3020 HEAT GENERATING SYSTEMS(28);D3020 HEAT GENERATING SYSTEMS(29);D3020 HEAT GENERATING SYSTEMS(30);D3020 HEAT GENERATING SYSTEMS(31)` + costs_header = `${costs_header};D3030 COOLING GENERATION SYSTEMS(1);D3030 COOLING GENERATION SYSTEMS(2);D3030 COOLING GENERATION SYSTEMS(3);D3030 COOLING GENERATION SYSTEMS(4);D3030 COOLING GENERATION SYSTEMS(5);D3030 COOLING GENERATION SYSTEMS(6);D3030 COOLING GENERATION SYSTEMS(7);D3030 COOLING GENERATION SYSTEMS(8);D3030 COOLING GENERATION SYSTEMS(9);D3030 COOLING GENERATION SYSTEMS(10);D3030 COOLING GENERATION SYSTEMS(11);D3030 COOLING GENERATION SYSTEMS(12);D3030 COOLING GENERATION SYSTEMS(13);D3030 COOLING GENERATION SYSTEMS(14);D3030 COOLING GENERATION SYSTEMS(15);D3030 COOLING GENERATION SYSTEMS(16);D3030 COOLING GENERATION SYSTEMS(17);D3030 COOLING GENERATION SYSTEMS(18);D3030 COOLING GENERATION SYSTEMS(19);D3030 COOLING GENERATION SYSTEMS(20);D3030 COOLING GENERATION SYSTEMS(21);D3030 COOLING GENERATION SYSTEMS(22);D3030 COOLING GENERATION SYSTEMS(23);D3030 COOLING GENERATION SYSTEMS(24);D3030 COOLING GENERATION SYSTEMS(25);D3030 COOLING GENERATION SYSTEMS(26);D3030 COOLING GENERATION SYSTEMS(27);D3030 COOLING GENERATION SYSTEMS(28);D3030 COOLING GENERATION SYSTEMS(29);D3030 COOLING GENERATION SYSTEMS(30);D3030 COOLING GENERATION SYSTEMS(31)` + costs_header = `${costs_header};D3080 OTHER HVAC AHU(1);D3080 OTHER HVAC AHU(2);D3080 OTHER HVAC AHU(3);D3080 OTHER HVAC AHU(4);D3080 OTHER HVAC AHU(5);D3080 OTHER HVAC AHU(6);D3080 OTHER HVAC AHU(7);D3080 OTHER HVAC AHU(8);D3080 OTHER HVAC AHU(9);D3080 OTHER HVAC AHU(10);D3080 OTHER HVAC AHU(11);D3080 OTHER HVAC AHU(12);D3080 OTHER HVAC AHU(13);D3080 OTHER HVAC AHU(14);D3080 OTHER HVAC AHU(15);D3080 OTHER HVAC AHU(16);D3080 OTHER HVAC AHU(17);D3080 OTHER HVAC AHU(18);D3080 OTHER HVAC AHU(19);D3080 OTHER HVAC AHU(20);D3080 OTHER HVAC AHU(21);D3080 OTHER HVAC AHU(22);D3080 OTHER HVAC AHU(23);D3080 OTHER HVAC AHU(24);D3080 OTHER HVAC AHU(25);D3080 OTHER HVAC AHU(26);D3080 OTHER HVAC AHU(27);D3080 OTHER HVAC AHU(28);D3080 OTHER HVAC AHU(29);D3080 OTHER HVAC AHU(30);D3080 OTHER HVAC AHU(31)` + costs_header = `${costs_header};D5020 LIGHTING AND BRANCH WIRING(1);D5020 LIGHTING AND BRANCH WIRING(2);D5020 LIGHTING AND BRANCH WIRING(3);D5020 LIGHTING AND BRANCH WIRING(4);D5020 LIGHTING AND BRANCH WIRING(5);D5020 LIGHTING AND BRANCH WIRING(6);D5020 LIGHTING AND BRANCH WIRING(7);D5020 LIGHTING AND BRANCH WIRING(8);D5020 LIGHTING AND BRANCH WIRING(9);D5020 LIGHTING AND BRANCH WIRING(10);D5020 LIGHTING AND BRANCH WIRING(11);D5020 LIGHTING AND BRANCH WIRING(12);D5020 LIGHTING AND BRANCH WIRING(13);D5020 LIGHTING AND BRANCH WIRING(14);D5020 LIGHTING AND BRANCH WIRING(15);D5020 LIGHTING AND BRANCH WIRING(16);D5020 LIGHTING AND BRANCH WIRING(17);D5020 LIGHTING AND BRANCH WIRING(18);D5020 LIGHTING AND BRANCH WIRING(19);D5020 LIGHTING AND BRANCH WIRING(20);D5020 LIGHTING AND BRANCH WIRING(21);D5020 LIGHTING AND BRANCH WIRING(22);D5020 LIGHTING AND BRANCH WIRING(23);D5020 LIGHTING AND BRANCH WIRING(24);D5020 LIGHTING AND BRANCH WIRING(25);D5020 LIGHTING AND BRANCH WIRING(26);D5020 LIGHTING AND BRANCH WIRING(27);D5020 LIGHTING AND BRANCH WIRING(28);D5020 LIGHTING AND BRANCH WIRING(29);D5020 LIGHTING AND BRANCH WIRING(30);D5020 LIGHTING AND BRANCH WIRING(31)` + costs_header = `${costs_header};D301010 PHOTOVOLTAIC SYSTEM(1);D301010 PHOTOVOLTAIC SYSTEM(2);D301010 PHOTOVOLTAIC SYSTEM(3);D301010 PHOTOVOLTAIC SYSTEM(4);D301010 PHOTOVOLTAIC SYSTEM(5);D301010 PHOTOVOLTAIC SYSTEM(6);D301010 PHOTOVOLTAIC SYSTEM(7);D301010 PHOTOVOLTAIC SYSTEM(8);D301010 PHOTOVOLTAIC SYSTEM(9);D301010 PHOTOVOLTAIC SYSTEM(10);D301010 PHOTOVOLTAIC SYSTEM(11);D301010 PHOTOVOLTAIC SYSTEM(12);D301010 PHOTOVOLTAIC SYSTEM(13);D301010 PHOTOVOLTAIC SYSTEM(14);D301010 PHOTOVOLTAIC SYSTEM(15);D301010 PHOTOVOLTAIC SYSTEM(16);D301010 PHOTOVOLTAIC SYSTEM(17);D301010 PHOTOVOLTAIC SYSTEM(18);D301010 PHOTOVOLTAIC SYSTEM(19);D301010 PHOTOVOLTAIC SYSTEM(20);D301010 PHOTOVOLTAIC SYSTEM(21);D301010 PHOTOVOLTAIC SYSTEM(22);D301010 PHOTOVOLTAIC SYSTEM(23);D301010 PHOTOVOLTAIC SYSTEM(24);D301010 PHOTOVOLTAIC SYSTEM(25);D301010 PHOTOVOLTAIC SYSTEM(26);D301010 PHOTOVOLTAIC SYSTEM(27);D301010 PHOTOVOLTAIC SYSTEM(28);D301010 PHOTOVOLTAIC SYSTEM(29);D301010 PHOTOVOLTAIC SYSTEM(30);D301010 PHOTOVOLTAIC SYSTEM(31)` + costs_header = `${costs_header};GLOBAL END OF LIFE COSTS(1);GLOBAL END OF LIFE COSTS(2);GLOBAL END OF LIFE COSTS(3);GLOBAL END OF LIFE COSTS(4);GLOBAL END OF LIFE COSTS(5);GLOBAL END OF LIFE COSTS(6);GLOBAL END OF LIFE COSTS(7);GLOBAL END OF LIFE COSTS(8);GLOBAL END OF LIFE COSTS(9);GLOBAL END OF LIFE COSTS(10);GLOBAL END OF LIFE COSTS(11);GLOBAL END OF LIFE COSTS(12);GLOBAL END OF LIFE COSTS(13);GLOBAL END OF LIFE COSTS(14);GLOBAL END OF LIFE COSTS(15);GLOBAL END OF LIFE COSTS(16);GLOBAL END OF LIFE COSTS(17);GLOBAL END OF LIFE COSTS(18);GLOBAL END OF LIFE COSTS(19);GLOBAL END OF LIFE COSTS(20);GLOBAL END OF LIFE COSTS(21);GLOBAL END OF LIFE COSTS(22);GLOBAL END OF LIFE COSTS(23);GLOBAL END OF LIFE COSTS(24);GLOBAL END OF LIFE COSTS(25);GLOBAL END OF LIFE COSTS(26);GLOBAL END OF LIFE COSTS(27);GLOBAL END OF LIFE COSTS(28);GLOBAL END OF LIFE COSTS(29);GLOBAL END OF LIFE COSTS(30);GLOBAL END OF LIFE COSTS(31);GLOBAL END OF LIFE COSTS(32)` + costs_header = `${costs_header};FIXED COSTS ELECTRICITY PEAK(1);FIXED COSTS ELECTRICITY PEAK(2);FIXED COSTS ELECTRICITY PEAK(3);FIXED COSTS ELECTRICITY PEAK(4);FIXED COSTS ELECTRICITY PEAK(5);FIXED COSTS ELECTRICITY PEAK(6);FIXED COSTS ELECTRICITY PEAK(7);FIXED COSTS ELECTRICITY PEAK(8);FIXED COSTS ELECTRICITY PEAK(9);FIXED COSTS ELECTRICITY PEAK(10);FIXED COSTS ELECTRICITY PEAK(11);FIXED COSTS ELECTRICITY PEAK(12);FIXED COSTS ELECTRICITY PEAK(13);FIXED COSTS ELECTRICITY PEAK(14);FIXED COSTS ELECTRICITY PEAK(15);FIXED COSTS ELECTRICITY PEAK(16);FIXED COSTS ELECTRICITY PEAK(17);FIXED COSTS ELECTRICITY PEAK(18);FIXED COSTS ELECTRICITY PEAK(19);FIXED COSTS ELECTRICITY PEAK(20);FIXED COSTS ELECTRICITY PEAK(21);FIXED COSTS ELECTRICITY PEAK(22);FIXED COSTS ELECTRICITY PEAK(23);FIXED COSTS ELECTRICITY PEAK(24);FIXED COSTS ELECTRICITY PEAK(25);FIXED COSTS ELECTRICITY PEAK(26);FIXED COSTS ELECTRICITY PEAK(27);FIXED COSTS ELECTRICITY PEAK(28);FIXED COSTS ELECTRICITY PEAK(29);FIXED COSTS ELECTRICITY PEAK(30);FIXED COSTS ELECTRICITY PEAK(31);FIXED COSTS ELECTRICITY PEAK(32)` + costs_header = `${costs_header};FIXED COSTS ELECTRICITY MONTHLY(1);FIXED COSTS ELECTRICITY MONTHLY(2);FIXED COSTS ELECTRICITY MONTHLY(3);FIXED COSTS ELECTRICITY MONTHLY(4);FIXED COSTS ELECTRICITY MONTHLY(5);FIXED COSTS ELECTRICITY MONTHLY(6);FIXED COSTS ELECTRICITY MONTHLY(7);FIXED COSTS ELECTRICITY MONTHLY(8);FIXED COSTS ELECTRICITY MONTHLY(9);FIXED COSTS ELECTRICITY MONTHLY(10);FIXED COSTS ELECTRICITY MONTHLY(11);FIXED COSTS ELECTRICITY MONTHLY(12);FIXED COSTS ELECTRICITY MONTHLY(13);FIXED COSTS ELECTRICITY MONTHLY(14);FIXED COSTS ELECTRICITY MONTHLY(15);FIXED COSTS ELECTRICITY MONTHLY(16);FIXED COSTS ELECTRICITY MONTHLY(17);FIXED COSTS ELECTRICITY MONTHLY(18);FIXED COSTS ELECTRICITY MONTHLY(19);FIXED COSTS ELECTRICITY MONTHLY(20);FIXED COSTS ELECTRICITY MONTHLY(21);FIXED COSTS ELECTRICITY MONTHLY(22);FIXED COSTS ELECTRICITY MONTHLY(23);FIXED COSTS ELECTRICITY MONTHLY(24);FIXED COSTS ELECTRICITY MONTHLY(25);FIXED COSTS ELECTRICITY MONTHLY(26);FIXED COSTS ELECTRICITY MONTHLY(27);FIXED COSTS ELECTRICITY MONTHLY(28);FIXED COSTS ELECTRICITY MONTHLY(29);FIXED COSTS ELECTRICITY MONTHLY(30);FIXED COSTS ELECTRICITY MONTHLY(31);FIXED COSTS ELECTRICITY MONTHLY(32)` + costs_header = `${costs_header};VARIABLE COSTS ELECTRICITY(1);VARIABLE COSTS ELECTRICITY(2);VARIABLE COSTS ELECTRICITY(3);VARIABLE COSTS ELECTRICITY(4);VARIABLE COSTS ELECTRICITY(5);VARIABLE COSTS ELECTRICITY(6);VARIABLE COSTS ELECTRICITY(7);VARIABLE COSTS ELECTRICITY(8);VARIABLE COSTS ELECTRICITY(9);VARIABLE COSTS ELECTRICITY(10);VARIABLE COSTS ELECTRICITY(11);VARIABLE COSTS ELECTRICITY(12);VARIABLE COSTS ELECTRICITY(13);VARIABLE COSTS ELECTRICITY(14);VARIABLE COSTS ELECTRICITY(15);VARIABLE COSTS ELECTRICITY(16);VARIABLE COSTS ELECTRICITY(17);VARIABLE COSTS ELECTRICITY(18);VARIABLE COSTS ELECTRICITY(19);VARIABLE COSTS ELECTRICITY(20);VARIABLE COSTS ELECTRICITY(21);VARIABLE COSTS ELECTRICITY(22);VARIABLE COSTS ELECTRICITY(23);VARIABLE COSTS ELECTRICITY(24);VARIABLE COSTS ELECTRICITY(25);VARIABLE COSTS ELECTRICITY(26);VARIABLE COSTS ELECTRICITY(27);VARIABLE COSTS ELECTRICITY(28);VARIABLE COSTS ELECTRICITY(29);VARIABLE COSTS ELECTRICITY(30);VARIABLE COSTS ELECTRICITY(31);VARIABLE COSTS ELECTRICITY(32)` + costs_header = `${costs_header};FIXED COSTS GAS(1);FIXED COSTS GAS(2);FIXED COSTS GAS(3);FIXED COSTS GAS(4);FIXED COSTS GAS(5);FIXED COSTS GAS(6);FIXED COSTS GAS(7);FIXED COSTS GAS(8);FIXED COSTS GAS(9);FIXED COSTS GAS(10);FIXED COSTS GAS(11);FIXED COSTS GAS(12);FIXED COSTS GAS(13);FIXED COSTS GAS(14);FIXED COSTS GAS(15);FIXED COSTS GAS(16);FIXED COSTS GAS(17);FIXED COSTS GAS(18);FIXED COSTS GAS(19);FIXED COSTS GAS(20);FIXED COSTS GAS(21);FIXED COSTS GAS(22);FIXED COSTS GAS(23);FIXED COSTS GAS(24);FIXED COSTS GAS(25);FIXED COSTS GAS(26);FIXED COSTS GAS(27);FIXED COSTS GAS(28);FIXED COSTS GAS(29);FIXED COSTS GAS(30);FIXED COSTS GAS(31);FIXED COSTS GAS(32)` + costs_header = `${costs_header};VARIABLE COSTS GAS(1);VARIABLE COSTS GAS(2);VARIABLE COSTS GAS(3);VARIABLE COSTS GAS(4);VARIABLE COSTS GAS(5);VARIABLE COSTS GAS(6);VARIABLE COSTS GAS(7);VARIABLE COSTS GAS(8);VARIABLE COSTS GAS(9);VARIABLE COSTS GAS(10);VARIABLE COSTS GAS(11);VARIABLE COSTS GAS(12);VARIABLE COSTS GAS(13);VARIABLE COSTS GAS(14);VARIABLE COSTS GAS(15);VARIABLE COSTS GAS(16);VARIABLE COSTS GAS(17);VARIABLE COSTS GAS(18);VARIABLE COSTS GAS(19);VARIABLE COSTS GAS(20);VARIABLE COSTS GAS(21);VARIABLE COSTS GAS(22);VARIABLE COSTS GAS(23);VARIABLE COSTS GAS(24);VARIABLE COSTS GAS(25);VARIABLE COSTS GAS(26);VARIABLE COSTS GAS(27);VARIABLE COSTS GAS(28);VARIABLE COSTS GAS(29);VARIABLE COSTS GAS(30);VARIABLE COSTS GAS(31);VARIABLE COSTS GAS(32)` + costs_header = `${costs_header};HEATING MAINTENANCE(1);HEATING MAINTENANCE(2);HEATING MAINTENANCE(3);HEATING MAINTENANCE(4);HEATING MAINTENANCE(5);HEATING MAINTENANCE(6);HEATING MAINTENANCE(7);HEATING MAINTENANCE(8);HEATING MAINTENANCE(9);HEATING MAINTENANCE(10);HEATING MAINTENANCE(11);HEATING MAINTENANCE(12);HEATING MAINTENANCE(13);HEATING MAINTENANCE(14);HEATING MAINTENANCE(15);HEATING MAINTENANCE(16);HEATING MAINTENANCE(17);HEATING MAINTENANCE(18);HEATING MAINTENANCE(19);HEATING MAINTENANCE(20);HEATING MAINTENANCE(21);HEATING MAINTENANCE(22);HEATING MAINTENANCE(23);HEATING MAINTENANCE(24);HEATING MAINTENANCE(25);HEATING MAINTENANCE(26);HEATING MAINTENANCE(27);HEATING MAINTENANCE(28);HEATING MAINTENANCE(29);HEATING MAINTENANCE(30);HEATING MAINTENANCE(31);HEATING MAINTENANCE(32)` + costs_header = `${costs_header};COOLING MAINTENANCE(1);COOLING MAINTENANCE(2);COOLING MAINTENANCE(3);COOLING MAINTENANCE(4);COOLING MAINTENANCE(5);COOLING MAINTENANCE(6);COOLING MAINTENANCE(7);COOLING MAINTENANCE(8);COOLING MAINTENANCE(9);COOLING MAINTENANCE(10);COOLING MAINTENANCE(11);COOLING MAINTENANCE(12);COOLING MAINTENANCE(13);COOLING MAINTENANCE(14);COOLING MAINTENANCE(15);COOLING MAINTENANCE(16);COOLING MAINTENANCE(17);COOLING MAINTENANCE(18);COOLING MAINTENANCE(19);COOLING MAINTENANCE(20);COOLING MAINTENANCE(21);COOLING MAINTENANCE(22);COOLING MAINTENANCE(23);COOLING MAINTENANCE(24);COOLING MAINTENANCE(25);COOLING MAINTENANCE(26);COOLING MAINTENANCE(27);COOLING MAINTENANCE(28);COOLING MAINTENANCE(29);COOLING MAINTENANCE(30);COOLING MAINTENANCE(31);COOLING MAINTENANCE(32)` + costs_header = `${costs_header};PV MAINTENANCE(1);PV MAINTENANCE(2);PV MAINTENANCE(3);PV MAINTENANCE(4);PV MAINTENANCE(5);PV MAINTENANCE(6);PV MAINTENANCE(7);PV MAINTENANCE(8);PV MAINTENANCE(9);PV MAINTENANCE(10);PV MAINTENANCE(11);PV MAINTENANCE(12);PV MAINTENANCE(13);PV MAINTENANCE(14);PV MAINTENANCE(15);PV MAINTENANCE(16);PV MAINTENANCE(17);PV MAINTENANCE(18);PV MAINTENANCE(19);PV MAINTENANCE(20);PV MAINTENANCE(21);PV MAINTENANCE(22);PV MAINTENANCE(23);PV MAINTENANCE(24);PV MAINTENANCE(25);PV MAINTENANCE(26);PV MAINTENANCE(27);PV MAINTENANCE(28);PV MAINTENANCE(29);PV MAINTENANCE(30);PV MAINTENANCE(31);PV MAINTENANCE(32)` + costs_header = `${costs_header};GLOBAL OPERATIONAL INCOMES(1);GLOBAL OPERATIONAL INCOMES(2);GLOBAL OPERATIONAL INCOMES(3);GLOBAL OPERATIONAL INCOMES(4);GLOBAL OPERATIONAL INCOMES(5);GLOBAL OPERATIONAL INCOMES(6);GLOBAL OPERATIONAL INCOMES(7);GLOBAL OPERATIONAL INCOMES(8);GLOBAL OPERATIONAL INCOMES(9);GLOBAL OPERATIONAL INCOMES(10);GLOBAL OPERATIONAL INCOMES(11);GLOBAL OPERATIONAL INCOMES(12);GLOBAL OPERATIONAL INCOMES(13);GLOBAL OPERATIONAL INCOMES(14);GLOBAL OPERATIONAL INCOMES(15);GLOBAL OPERATIONAL INCOMES(16);GLOBAL OPERATIONAL INCOMES(17);GLOBAL OPERATIONAL INCOMES(18);GLOBAL OPERATIONAL INCOMES(19);GLOBAL OPERATIONAL INCOMES(20);GLOBAL OPERATIONAL INCOMES(21);GLOBAL OPERATIONAL INCOMES(22);GLOBAL OPERATIONAL INCOMES(23);GLOBAL OPERATIONAL INCOMES(24);GLOBAL OPERATIONAL INCOMES(25);GLOBAL OPERATIONAL INCOMES(26);GLOBAL OPERATIONAL INCOMES(27);GLOBAL OPERATIONAL INCOMES(28);GLOBAL OPERATIONAL INCOMES(29);GLOBAL OPERATIONAL INCOMES(30);GLOBAL OPERATIONAL INCOMES(31);GLOBAL OPERATIONAL INCOMES(32)` + costs_header = `${costs_header};SUBSIDIES CONSTRUCTION(1);SUBSIDIES CONSTRUCTION(2);SUBSIDIES CONSTRUCTION(3);SUBSIDIES CONSTRUCTION(4);SUBSIDIES CONSTRUCTION(5);SUBSIDIES CONSTRUCTION(6);SUBSIDIES CONSTRUCTION(7);SUBSIDIES CONSTRUCTION(8);SUBSIDIES CONSTRUCTION(9);SUBSIDIES CONSTRUCTION(10);SUBSIDIES CONSTRUCTION(11);SUBSIDIES CONSTRUCTION(12);SUBSIDIES CONSTRUCTION(13);SUBSIDIES CONSTRUCTION(14);SUBSIDIES CONSTRUCTION(15);SUBSIDIES CONSTRUCTION(16);SUBSIDIES CONSTRUCTION(17);SUBSIDIES CONSTRUCTION(18);SUBSIDIES CONSTRUCTION(19);SUBSIDIES CONSTRUCTION(20);SUBSIDIES CONSTRUCTION(21);SUBSIDIES CONSTRUCTION(22);SUBSIDIES CONSTRUCTION(23);SUBSIDIES CONSTRUCTION(24);SUBSIDIES CONSTRUCTION(25);SUBSIDIES CONSTRUCTION(26);SUBSIDIES CONSTRUCTION(27);SUBSIDIES CONSTRUCTION(28);SUBSIDIES CONSTRUCTION(29);SUBSIDIES CONSTRUCTION(30);SUBSIDIES CONSTRUCTION(31)` + costs_header = `${costs_header};SUBSIDIES HVAC(1);SUBSIDIES HVAC(2);SUBSIDIES HVAC(3);SUBSIDIES HVAC(4);SUBSIDIES HVAC(5);SUBSIDIES HVAC(6);SUBSIDIES HVAC(7);SUBSIDIES HVAC(8);SUBSIDIES HVAC(9);SUBSIDIES HVAC(10);SUBSIDIES HVAC(11);SUBSIDIES HVAC(12);SUBSIDIES HVAC(13);SUBSIDIES HVAC(14);SUBSIDIES HVAC(15);SUBSIDIES HVAC(16);SUBSIDIES HVAC(17);SUBSIDIES HVAC(18);SUBSIDIES HVAC(19);SUBSIDIES HVAC(20);SUBSIDIES HVAC(21);SUBSIDIES HVAC(22);SUBSIDIES HVAC(23);SUBSIDIES HVAC(24);SUBSIDIES HVAC(25);SUBSIDIES HVAC(26);SUBSIDIES HVAC(27);SUBSIDIES HVAC(28);SUBSIDIES HVAC(29);SUBSIDIES HVAC(30);SUBSIDIES HVAC(31)` + costs_header = `${costs_header};SUBSIDIES PV(1);SUBSIDIES PV(2);SUBSIDIES PV(3);SUBSIDIES PV(4);SUBSIDIES PV(5);SUBSIDIES PV(6);SUBSIDIES PV(7);SUBSIDIES PV(8);SUBSIDIES PV(9);SUBSIDIES PV(10);SUBSIDIES PV(11);SUBSIDIES PV(12);SUBSIDIES PV(13);SUBSIDIES PV(14);SUBSIDIES PV(15);SUBSIDIES PV(16);SUBSIDIES PV(17);SUBSIDIES PV(18);SUBSIDIES PV(19);SUBSIDIES PV(20);SUBSIDIES PV(21);SUBSIDIES PV(22);SUBSIDIES PV(23);SUBSIDIES PV(24);SUBSIDIES PV(25);SUBSIDIES PV(26);SUBSIDIES PV(27);SUBSIDIES PV(28);SUBSIDIES PV(29);SUBSIDIES PV(30);SUBSIDIES PV(31)` + + var operational_co2_header = "SCENARIO;BUILDING NAME;TOTAL HEATING AREA" + operational_co2_header = `${operational_co2_header};HEATING YEAR;HEATING MONTH(JAN);HEATING MONTH(FEB);HEATING MONTH(MAR);HEATING MONTH(APR);HEATING MONTH(MAY);HEATING MONTH(JUN);HEATING MONTH(JUL);HEATING MONTH(AUG);HEATING MONTH(SEPT);HEATING MONTH(OCT);HEATING MONTH(NOV);HEATING MONTH(DEC)` + operational_co2_header = `${operational_co2_header};DOMESTIC HOT WATER YEAR;DOMESTIC HOT WATER MONTH(JAN);DOMESTIC HOT WATER MONTH(FEB);DOMESTIC HOT WATER MONTH(MAR);DOMESTIC HOT WATER MONTH(APR);DOMESTIC HOT WATER MONTH(MAY);DOMESTIC HOT WATER MONTH(JUN);DOMESTIC HOT WATER MONTH(JUL);DOMESTIC HOT WATER MONTH(AUG);DOMESTIC HOT WATER MONTH(SEPT);DOMESTIC HOT WATER MONTH(OCT);DOMESTIC HOT WATER MONTH(NOV);DOMESTIC HOT WATER MONTH(DEC)` + operational_co2_header = `${operational_co2_header};COOLING YEAR;COOLING MONTH(JAN);COOLING MONTH(FEB);COOLING MONTH(MAR);COOLING MONTH(APR);COOLING MONTH(MAY);COOLING MONTH(JUN);COOLING MONTH(JUL);COOLING MONTH(AUG);COOLING MONTH(SEPT);COOLING MONTH(OCT);COOLING MONTH(NOV);COOLING MONTH(DEC)` + operational_co2_header = `${operational_co2_header};LIGHTS YEAR;LIGHTS MONTH(JAN);LIGHTS MONTH(FEB);LIGHTS MONTH(MAR);LIGHTS MONTH(APR);LIGHTS MONTH(MAY);LIGHTS MONTH(JUN);LIGHTS MONTH(JUL);LIGHTS MONTH(AUG);LIGHTS MONTH(SEPT);LIGHTS MONTH(OCT);LIGHTS MONTH(NOV);LIGHTS MONTH(DEC)` + operational_co2_header = `${operational_co2_header};APPLIANCES YEAR;APPLIANCES MONTH(JAN);APPLIANCES MONTH(FEB);APPLIANCES MONTH(MAR);APPLIANCES MONTH(APR);APPLIANCES MONTH(MAY);APPLIANCES MONTH(JUN);APPLIANCES MONTH(JUL);APPLIANCES MONTH(AUG);APPLIANCES MONTH(SEPT);APPLIANCES MONTH(OCT);APPLIANCES MONTH(NOV);APPLIANCES MONTH(DEC)` + operational_co2_header = `${operational_co2_header};ELECTRICITY YEAR;ELECTRICITY MONTH(JAN);ELECTRICITY MONTH(FEB);ELECTRICITY MONTH(MAR);ELECTRICITY MONTH(APR);ELECTRICITY MONTH(MAY);ELECTRICITY MONTH(JUN);ELECTRICITY MONTH(JUL);ELECTRICITY MONTH(AUG);ELECTRICITY MONTH(SEPT);ELECTRICITY MONTH(OCT);ELECTRICITY MONTH(NOV);ELECTRICITY MONTH(DEC)` + + + let meb_lines = [] + let cost_lines = [] + let operational_co2_lines = [] + for (var scenario in results.results) { + var value = results.results[scenario]; + value.forEach(building_info => { + const base_line = `"${scenario}";"${building_info.building}";${building_info.total_heating_area}` + let meb = `${base_line}` + building_info['insel meb'].yearly_cooling_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_heating_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_cooling_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_heating_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_cooling_peak_load.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_heating_peak_load.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_cooling_peak_load.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_heating_peak_load.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_lighting_peak_load.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_lighting_peak_load.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_cooling_consumption.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_heating_consumption.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_cooling_consumption.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_heating_consumption.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_appliances_peak_load.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_appliances_peak_load.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_lighting_electrical_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_lighting_electrical_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_appliances_electrical_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_appliances_electrical_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_on_site_electrical_production.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_on_site_electrical_production.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_domestic_hot_water_consumption.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_domestic_hot_water_heat_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_domestic_hot_water_consumption.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_domestic_hot_water_heat_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_distribution_systems_electrical_consumption.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_distribution_systems_electrical_consumption.forEach(element => meb = `${meb};${element}`) + meb_lines.push(meb) + + let cost = `${base_line};${building_info.costs.total_capital_costs_skin};${building_info.costs.total_capital_costs_systems};${building_info.costs.end_of_life_costs};${building_info.costs.total_operational_costs};${building_info.costs.total_maintenance_costs};${building_info.costs.operational_incomes}` + building_info.costs.global_capital_costs.B2010_opaque_walls.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_costs.B2020_transparent.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_costs.B3010_opaque_roof.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_costs.B10_superstructure.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_costs.D3020_heat_generating_systems.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_costs.D3030_cooling_generation_systems.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_costs.D3080_other_hvac_ahu.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_costs.D5020_lighting_and_branch_wiring.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_costs.D301010_photovoltaic_system.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_end_of_life_costs.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_operational_costs.fixed_costs_electricity_peak.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_operational_costs.fixed_costs_electricity_monthly.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_operational_costs.variable_costs_electricity.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_operational_costs.fixed_costs_gas.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_operational_costs.variable_costs_gas.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_maintenance_costs.heating_maintenance.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_maintenance_costs.cooling_maintenance.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_maintenance_costs.pv_maintenance.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_operational_incomes.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_incomes.subsidies_construction.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_incomes.subsidies_hvac.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_incomes.subsidies_pv.forEach(element => cost = `${cost};${element}`) + cost_lines.push(cost) + + let operational_co2 = `${base_line}` + building_info.operational_co2.Heating.year.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2.Heating.month.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2['Domestic Hot Water'].year.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2['Domestic Hot Water'].month.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2.Cooling.year.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2.Cooling.month.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2.Lights.year.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2.Lights.month.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2.Appliances.year.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2.Appliances.month.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2.Electricity.year.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2.Electricity.month.forEach(element => operational_co2 = `${operational_co2};${element}`) + operational_co2_lines.push(operational_co2) + }) + } + require("fs").writeFile( + `${tmp_path}meb.csv`, + `${meb_header}\n${meb_lines.join('\n')}`, + function (err) { console.log(err ? err : 'meb saved') } + ) + require("fs").writeFile( + `${tmp_path}cost.csv`, + `${costs_header}\n${cost_lines.join('\n')}`, + function (err) { console.log(err ? err : 'cost saved') } + ) + require("fs").writeFile( + `${tmp_path}operational_co2.csv`, + `${operational_co2_header}\n${operational_co2_lines.join('\n')}`, + function (err) { console.log(err ? err : 'operational_co2 saved') } + ) + BrowserWindow.fromId(1).webContents.send('task-completed', 'meb
costs
operational_co2') + } + else { + console.log('unautorized retrofit') + } + } + else { + console.log(response) + console.log(JSON.stringify(response)) + console.log('unautorized session start') + } +} \ No newline at end of file diff --git a/workflows/energy_plus/run.js b/workflows/energy_plus/run.js new file mode 100644 index 0000000..f3c0d29 --- /dev/null +++ b/workflows/energy_plus/run.js @@ -0,0 +1,30 @@ +let param = { + 'workflow': 'retrofit', + 'application': '', + 'buildings': [] +} +document.getElementById("runScenario").addEventListener("click", runScenario) +async function runScenario() { + try { + document.getElementById('links').innerHTML = '' + document.getElementById('buildings').style.backgroundColor = "#FFFFFF" + param['application'] = document.getElementById('application').value + let buildingsString = document.getElementById('buildings').value + if (buildingsString == "") + { + document.getElementById('links').innerHTML = '' + document.getElementById('buildings').style.backgroundColor = "#FFAAAA" + return + } + buildings = buildingsString.replace('\r', '').replace('\n', '').replace('\t', '').split(';').map(e => e.trim()) + param['buildings'] = buildings + console.log(buildings) + await window.functions.run(param) + } + catch(ex) { + alert(ex) + } +} +window.functions.onTaskCompleted((value) => { + document.getElementById('links').innerHTML = value +}) \ No newline at end of file diff --git a/workflows/meb/css/styles.css b/workflows/meb/css/styles.css new file mode 100644 index 0000000..3b1e8b3 --- /dev/null +++ b/workflows/meb/css/styles.css @@ -0,0 +1,25 @@ + +.form-element { + padding-top: 5px; + padding-left: 30px; +} + +#links { + padding-left: 40px; + padding-top: 20px; +} + +h1 { + margin-top: 30px; +} + +#img_logo { + padding-bottom: 10px; + margin-left: 20px; + height: 40px; +} + +#info { + width: 40%; + padding-left: -10px; +} \ No newline at end of file diff --git a/workflows/meb/logo/logo.png b/workflows/meb/logo/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..436a65f03157bd7c129729b727fae4606ba3a27d GIT binary patch literal 5803 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 literal 0 HcmV?d00001 diff --git a/workflows/meb/main.html b/workflows/meb/main.html new file mode 100644 index 0000000..aa84095 --- /dev/null +++ b/workflows/meb/main.html @@ -0,0 +1,38 @@ + + + + + + Monthly energy balance workflow + + + + + Home +

Monthly energy balance workflow

+
+
+
+
+ +
+
+ Buildings Name or Alias (semicolon splitted):
+ +
+ +
+ +
+
+
Retrofit workflow access to the precalculated data bla bla bla, we may need to put some explanation over here
+
+
+ + + + \ No newline at end of file diff --git a/workflows/meb/module/.env b/workflows/meb/module/.env new file mode 100644 index 0000000..4c50d2a --- /dev/null +++ b/workflows/meb/module/.env @@ -0,0 +1,3 @@ +APPLICATION_USERNAME=city_layers +APPLICATION_PASSWORD=city_layers +APPLICATION=36a065d9-bafb-4345-89fe-d68988ce9db2 \ No newline at end of file diff --git a/workflows/meb/module/.env_demo b/workflows/meb/module/.env_demo new file mode 100644 index 0000000..01a7fa9 --- /dev/null +++ b/workflows/meb/module/.env_demo @@ -0,0 +1,3 @@ +APPLICATION_USERNAME=username +APPLICATION_PASSWORD=secret_pass +APPLICATION=apikey \ No newline at end of file diff --git a/workflows/meb/module/module.js b/workflows/meb/module/module.js new file mode 100644 index 0000000..d700fb4 --- /dev/null +++ b/workflows/meb/module/module.js @@ -0,0 +1,202 @@ +const { dialog, BrowserWindow } = require ("electron"); +const dotenv = require('dotenv') +const session_start = 'https://nextgenerations-cities.encs.concordia.ca/api/v1.4/session/start' +const retrofit_results = 'https://nextgenerations-cities.encs.concordia.ca/api/v1.4/persistence/retrofit-results' +//const session_start = 'http://127.0.0.1:15789/v1.4/session/start' +//const retrofit_results = 'http://127.0.0.1:15789/v1.4/persistence/retrofit-results' + + +exports.run = async (application, buildings, tmp_path) => { + console.log(`Executing ${application}`) + dotenv.config({ path:__dirname+'/.env' }) + const application_uuid = process.env.APPLICATION; + const username = process.env.APPLICATION_USERNAME; + const password = process.env.APPLICATION_PASSWORD; + let response = await fetch(session_start, { + method: 'PUT', + headers: { + 'Content-type': 'application/json', + 'username': username, + 'password': password, + 'application-uuid': application_uuid, + 'accept': 'application/json' + } + }); + if (response.status == 200) { + const application_response = await response.json() + const session_id = response.headers.get('session_id') + let token = response.headers.get('token') + console.log(`token: ${token}`) + request = { 'scenarios': [] } + application_response.scenarios.forEach((scenario) => { + scenario_request = {} + scenario_request[`${scenario}`] = buildings + request['scenarios'].push(scenario_request) + }) + response = await fetch(retrofit_results, { + method: 'POST', + headers: { + 'Content-type': 'application/json', + 'session-id': session_id, + 'token': token, + 'application-uuid': application_uuid, + 'accept': 'application/json' + }, + body: JSON.stringify(request) + }, 600000) + console.log(`response: ${response.status}`) + if (response.status == 200) { + results = await response.json() + + var meb_header = "SCENARIO;BUILDING NAME;TOTAL HEATING AREA" + meb_header = `${meb_header};YEARLY COOLING DEMAND;YEARLY HEATING DEMAND;MONTHLY COOLING DEMAND(JAN);MONTHLY COOLING DEMAND(FEB);MONTHLY COOLING DEMAND(MAR);MONTHLY COOLING DEMAND(APR);MONTHLY COOLING DEMAND(MAY);MONTHLY COOLING DEMAND(JUN);MONTHLY COOLING DEMAND(JUL);MONTHLY COOLING DEMAND(AUG);MONTHLY COOLING DEMAND(SEPT);MONTHLY COOLING DEMAND(OCT);MONTHLY COOLING DEMAND(NOV);MONTHLY COOLING DEMAND(DEC);MONTHLY HEATING DEMAND(JAN);MONTHLY HEATING DEMAND(FEB);MONTHLY HEATING DEMAND(MAR);MONTHLY HEATING DEMAND(APR);MONTHLY HEATING DEMAND(MAY);MONTHLY HEATING DEMAND(JUN);MONTHLY HEATING DEMAND(JUL);MONTHLY HEATING DEMAND(AUG);MONTHLY HEATING DEMAND(SEPT);MONTHLY HEATING DEMAND(OCT);MONTHLY HEATING DEMAND(NOV);MONTHLY HEATING DEMAND(DEC)` + meb_header = `${meb_header};YEARLY COOLING PEAK LOAD;YEARLY HEATING PEAK LOAD;MONTHLY COOLING PEAK LOAD (JAN);MONTHLY COOLING PEAK LOAD (FEB);MONTHLY COOLING PEAK LOAD (MAR);MONTHLY COOLING PEAK LOAD (APR);MONTHLY COOLING PEAK LOAD (MAY);MONTHLY COOLING PEAK LOAD (JUN);MONTHLY COOLING PEAK LOAD (JUL);MONTHLY COOLING PEAK LOAD (AUG);MONTHLY COOLING PEAK LOAD (SEPT);MONTHLY COOLING PEAK LOAD (OCT);MONTHLY COOLING PEAK LOAD (NOV);MONTHLY COOLING PEAK LOAD (DEC);MONTHLY HEATING PEAK LOAD (JAN);MONTHLY HEATING PEAK LOAD (FEB);MONTHLY HEATING PEAK LOAD (MAR);MONTHLY HEATING PEAK LOAD (APR);MONTHLY HEATING PEAK LOAD (MAY);MONTHLY HEATING PEAK LOAD (JUN);MONTHLY HEATING PEAK LOAD (JUL);MONTHLY HEATING PEAK LOAD (AUG);MONTHLY HEATING PEAK LOAD (SEPT);MONTHLY HEATING PEAK LOAD (OCT);MONTHLY HEATING PEAK LOAD (NOV);MONTHLY HEATING PEAK LOAD (DEC)` + meb_header = `${meb_header};YEARLY LIGHTING PEAK LOAD;MONTHLY LIGHTING PEAK LOAD(JAN);MONTHLY LIGHTING PEAK LOAD(FEB);MONTHLY LIGHTING PEAK LOAD(MAR);MONTHLY LIGHTING PEAK LOAD(APR);MONTHLY LIGHTING PEAK LOAD(MAY);MONTHLY LIGHTING PEAK LOAD(JUN);MONTHLY LIGHTING PEAK LOAD(JUL);MONTHLY LIGHTING PEAK LOAD(AUG);MONTHLY LIGHTING PEAK LOAD(SEPT);MONTHLY LIGHTING PEAK LOAD(OCT);MONTHLY LIGHTING PEAK LOAD(NOV);MONTHLY LIGHTING PEAK LOAD(DEC)` + meb_header = `${meb_header};YEARLY COOLING CONSUMPTION;YEARLY HEATING CONSUMPTION;MONTHLY COOLING CONSUMPTION(JAN);MONTHLY COOLING CONSUMPTION(FEB);MONTHLY COOLING CONSUMPTION(MAR);MONTHLY COOLING CONSUMPTION(APR);MONTHLY COOLING CONSUMPTION(MAY);MONTHLY COOLING CONSUMPTION(JUN);MONTHLY COOLING CONSUMPTION(JUL);MONTHLY COOLING CONSUMPTION(AUG);MONTHLY COOLING CONSUMPTION(SEPT);MONTHLY COOLING CONSUMPTION(OCT);MONTHLY COOLING CONSUMPTION(NOV);MONTHLY COOLING CONSUMPTION(DEC);MONTHLY HEATING CONSUMPTION(JAN);MONTHLY HEATING CONSUMPTION(FEB);MONTHLY HEATING CONSUMPTION(MAR);MONTHLY HEATING CONSUMPTION(APR);MONTHLY HEATING CONSUMPTION(MAY);MONTHLY HEATING CONSUMPTION(JUN);MONTHLY HEATING CONSUMPTION(JUL);MONTHLY HEATING CONSUMPTION(AUG);MONTHLY HEATING CONSUMPTION(SEPT);MONTHLY HEATING CONSUMPTION(OCT);MONTHLY HEATING CONSUMPTION(NOV);MONTHLY HEATING CONSUMPTION(DEC)` + meb_header = `${meb_header};YEARLY APPLIANCES PEAK LOAD;MONTHLY APPLIANCES PEAK LOAD(JAN);MONTHLY APPLIANCES PEAK LOAD(FEB);MONTHLY APPLIANCES PEAK LOAD(MAR);MONTHLY APPLIANCES PEAK LOAD(APR);MONTHLY APPLIANCES PEAK LOAD(MAY);MONTHLY APPLIANCES PEAK LOAD(JUN);MONTHLY APPLIANCES PEAK LOAD(JUL);MONTHLY APPLIANCES PEAK LOAD(AUG);MONTHLY APPLIANCES PEAK LOAD(SEPT);MONTHLY APPLIANCES PEAK LOAD(OCT);MONTHLY APPLIANCES PEAK LOAD(NOV);MONTHLY APPLIANCES PEAK LOAD(DEC)` + meb_header = `${meb_header};YEARLY LIGHTING ELECTRICAL DEMAND;MONTHLY LIGHTING ELECTRICAL DEMAND(JAN);MONTHLY LIGHTING ELECTRICAL DEMAND(FEB);MONTHLY LIGHTING ELECTRICAL DEMAND(MAR);MONTHLY LIGHTING ELECTRICAL DEMAND(APR);MONTHLY LIGHTING ELECTRICAL DEMAND(MAY);MONTHLY LIGHTING ELECTRICAL DEMAND(JUN);MONTHLY LIGHTING ELECTRICAL DEMAND(JUL);MONTHLY LIGHTING ELECTRICAL DEMAND(AUG);MONTHLY LIGHTING ELECTRICAL DEMAND(SEPT);MONTHLY LIGHTING ELECTRICAL DEMAND(OCT);MONTHLY LIGHTING ELECTRICAL DEMAND(NOV);MONTHLY LIGHTING ELECTRICAL DEMAND(DEC)` + meb_header = `${meb_header};YEARLY APPLIANCES ELECTRICAL DEMAND;MONTHLY APPLIANCES ELECTRICAL DEMAND(JAN);MONTHLY APPLIANCES ELECTRICAL DEMAND(FEB);MONTHLY APPLIANCES ELECTRICAL DEMAND(MAR);MONTHLY APPLIANCES ELECTRICAL DEMAND(APR);MONTHLY APPLIANCES ELECTRICAL DEMAND(MAY);MONTHLY APPLIANCES ELECTRICAL DEMAND(JUN);MONTHLY APPLIANCES ELECTRICAL DEMAND(JUL);MONTHLY APPLIANCES ELECTRICAL DEMAND(AUG);MONTHLY APPLIANCES ELECTRICAL DEMAND(SEPT);MONTHLY APPLIANCES ELECTRICAL DEMAND(OCT);MONTHLY APPLIANCES ELECTRICAL DEMAND(NOV);MONTHLY APPLIANCES ELECTRICAL DEMAND(DEC)` + meb_header = `${meb_header};YEARLY ON SITE ELECTRICAL PRODUCTION;MONTHLY ON SITE ELECTRICAL PRODUCTION(JAN);MONTHLY ON SITE ELECTRICAL PRODUCTION(FEB);MONTHLY ON SITE ELECTRICAL PRODUCTION(MAR);MONTHLY ON SITE ELECTRICAL PRODUCTION(APR);MONTHLY ON SITE ELECTRICAL PRODUCTION(MAY);MONTHLY ON SITE ELECTRICAL PRODUCTION(JUN);MONTHLY ON SITE ELECTRICAL PRODUCTION(JUL);MONTHLY ON SITE ELECTRICAL PRODUCTION(AUG);MONTHLY ON SITE ELECTRICAL PRODUCTION(SEPT);MONTHLY ON SITE ELECTRICAL PRODUCTION(OCT);MONTHLY ON SITE ELECTRICAL PRODUCTION(NOV);MONTHLY ON SITE ELECTRICAL PRODUCTION(DEC)` + meb_header = `${meb_header};YEARLY DOMESTIC HOT WATER CONSUMPTION;YEARLY DOMESTIC HOT WATER HEAT DEMAND;MONTHLY DOMESTIC HOT WATER CONSUMPTION(JAN);MONTHLY DOMESTIC HOT WATER CONSUMPTION(FEB);MONTHLY DOMESTIC HOT WATER CONSUMPTION(MAR);MONTHLY DOMESTIC HOT WATER CONSUMPTION(APR);MONTHLY DOMESTIC HOT WATER CONSUMPTION(MAY);MONTHLY DOMESTIC HOT WATER CONSUMPTION(JUN);MONTHLY DOMESTIC HOT WATER CONSUMPTION(JUL);MONTHLY DOMESTIC HOT WATER CONSUMPTION(AUG);MONTHLY DOMESTIC HOT WATER CONSUMPTION(SEPT);MONTHLY DOMESTIC HOT WATER CONSUMPTION(OCT);MONTHLY DOMESTIC HOT WATER CONSUMPTION(NOV);MONTHLY DOMESTIC HOT WATER CONSUMPTION(DEC);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(JAN);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(FEB);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(MAR);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(APR);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(MAY);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(JUN);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(JUL);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(AUG);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(SEPT);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(OCT);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(NOV);MONTHLY DOMESTIC HOT WATER HEAT DEMAND(DEC)` + meb_header = `${meb_header};YEARLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION;MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(JAN);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(FEB);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(MAR);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(APR);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(MAY);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(JUN);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(JUL);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(AUG);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(SEPT);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(OCT);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(NOV);MONTHLY DISTRIBUTION SYSTEMS ELECTRICAL CONSUMPTION(DEC)` + + var costs_header = "SCENARIO;BUILDING NAME;TOTAL HEATING AREA" + costs_header = `${costs_header};TOTAL CAPITAL COSTS SKIN;TOTAL CAPITAL COSTS SYSTEMS;END OF LIFE COSTS;TOTAL OPERATIONAL COSTS;TOTAL MAINTENANCE COSTS;OPERATIONAL INCOMES` + costs_header = `${costs_header};B2010 OPAQUE WALLS(1);B2010 OPAQUE WALLS(2);B2010 OPAQUE WALLS(3);B2010 OPAQUE WALLS(4);B2010 OPAQUE WALLS(5);B2010 OPAQUE WALLS(6);B2010 OPAQUE WALLS(7);B2010 OPAQUE WALLS(8);B2010 OPAQUE WALLS(9);B2010 OPAQUE WALLS(10);B2010 OPAQUE WALLS(11);B2010 OPAQUE WALLS(12);B2010 OPAQUE WALLS(13);B2010 OPAQUE WALLS(14);B2010 OPAQUE WALLS(15);B2010 OPAQUE WALLS(16);B2010 OPAQUE WALLS(17);B2010 OPAQUE WALLS(18);B2010 OPAQUE WALLS(19);B2010 OPAQUE WALLS(20);B2010 OPAQUE WALLS(21);B2010 OPAQUE WALLS(22);B2010 OPAQUE WALLS(23);B2010 OPAQUE WALLS(24);B2010 OPAQUE WALLS(25);B2010 OPAQUE WALLS(26);B2010 OPAQUE WALLS(27);B2010 OPAQUE WALLS(28);B2010 OPAQUE WALLS(29);B2010 OPAQUE WALLS(30);B2010 OPAQUE WALLS(31)` + costs_header = `${costs_header};B2020 TRANSPARENT(1);B2020 TRANSPARENT(2);B2020 TRANSPARENT(3);B2020 TRANSPARENT(4);B2020 TRANSPARENT(5);B2020 TRANSPARENT(6);B2020 TRANSPARENT(7);B2020 TRANSPARENT(8);B2020 TRANSPARENT(9);B2020 TRANSPARENT(10);B2020 TRANSPARENT(11);B2020 TRANSPARENT(12);B2020 TRANSPARENT(13);B2020 TRANSPARENT(14);B2020 TRANSPARENT(15);B2020 TRANSPARENT(16);B2020 TRANSPARENT(17);B2020 TRANSPARENT(18);B2020 TRANSPARENT(19);B2020 TRANSPARENT(20);B2020 TRANSPARENT(21);B2020 TRANSPARENT(22);B2020 TRANSPARENT(23);B2020 TRANSPARENT(24);B2020 TRANSPARENT(25);B2020 TRANSPARENT(26);B2020 TRANSPARENT(27);B2020 TRANSPARENT(28);B2020 TRANSPARENT(29);B2020 TRANSPARENT(30);B2020 TRANSPARENT(31)` + costs_header = `${costs_header};B3010 OPAQUE ROOF(1);B3010 OPAQUE ROOF(2);B3010 OPAQUE ROOF(3);B3010 OPAQUE ROOF(4);B3010 OPAQUE ROOF(5);B3010 OPAQUE ROOF(6);B3010 OPAQUE ROOF(7);B3010 OPAQUE ROOF(8);B3010 OPAQUE ROOF(9);B3010 OPAQUE ROOF(10);B3010 OPAQUE ROOF(11);B3010 OPAQUE ROOF(12);B3010 OPAQUE ROOF(13);B3010 OPAQUE ROOF(14);B3010 OPAQUE ROOF(15);B3010 OPAQUE ROOF(16);B3010 OPAQUE ROOF(17);B3010 OPAQUE ROOF(18);B3010 OPAQUE ROOF(19);B3010 OPAQUE ROOF(20);B3010 OPAQUE ROOF(21);B3010 OPAQUE ROOF(22);B3010 OPAQUE ROOF(23);B3010 OPAQUE ROOF(24);B3010 OPAQUE ROOF(25);B3010 OPAQUE ROOF(26);B3010 OPAQUE ROOF(27);B3010 OPAQUE ROOF(28);B3010 OPAQUE ROOF(29);B3010 OPAQUE ROOF(30);B3010 OPAQUE ROOF(31)` + costs_header = `${costs_header};B10 SUPERSTRUCTURE(1);B10 SUPERSTRUCTURE(2);B10 SUPERSTRUCTURE(3);B10 SUPERSTRUCTURE(4);B10 SUPERSTRUCTURE(5);B10 SUPERSTRUCTURE(6);B10 SUPERSTRUCTURE(7);B10 SUPERSTRUCTURE(8);B10 SUPERSTRUCTURE(9);B10 SUPERSTRUCTURE(10);B10 SUPERSTRUCTURE(11);B10 SUPERSTRUCTURE(12);B10 SUPERSTRUCTURE(13);B10 SUPERSTRUCTURE(14);B10 SUPERSTRUCTURE(15);B10 SUPERSTRUCTURE(16);B10 SUPERSTRUCTURE(17);B10 SUPERSTRUCTURE(18);B10 SUPERSTRUCTURE(19);B10 SUPERSTRUCTURE(20);B10 SUPERSTRUCTURE(21);B10 SUPERSTRUCTURE(22);B10 SUPERSTRUCTURE(23);B10 SUPERSTRUCTURE(24);B10 SUPERSTRUCTURE(25);B10 SUPERSTRUCTURE(26);B10 SUPERSTRUCTURE(27);B10 SUPERSTRUCTURE(28);B10 SUPERSTRUCTURE(29);B10 SUPERSTRUCTURE(30);B10 SUPERSTRUCTURE(31)` + costs_header = `${costs_header};D3020 HEAT GENERATING SYSTEMS(1);D3020 HEAT GENERATING SYSTEMS(2);D3020 HEAT GENERATING SYSTEMS(3);D3020 HEAT GENERATING SYSTEMS(4);D3020 HEAT GENERATING SYSTEMS(5);D3020 HEAT GENERATING SYSTEMS(6);D3020 HEAT GENERATING SYSTEMS(7);D3020 HEAT GENERATING SYSTEMS(8);D3020 HEAT GENERATING SYSTEMS(9);D3020 HEAT GENERATING SYSTEMS(10);D3020 HEAT GENERATING SYSTEMS(11);D3020 HEAT GENERATING SYSTEMS(12);D3020 HEAT GENERATING SYSTEMS(13);D3020 HEAT GENERATING SYSTEMS(14);D3020 HEAT GENERATING SYSTEMS(15);D3020 HEAT GENERATING SYSTEMS(16);D3020 HEAT GENERATING SYSTEMS(17);D3020 HEAT GENERATING SYSTEMS(18);D3020 HEAT GENERATING SYSTEMS(19);D3020 HEAT GENERATING SYSTEMS(20);D3020 HEAT GENERATING SYSTEMS(21);D3020 HEAT GENERATING SYSTEMS(22);D3020 HEAT GENERATING SYSTEMS(23);D3020 HEAT GENERATING SYSTEMS(24);D3020 HEAT GENERATING SYSTEMS(25);D3020 HEAT GENERATING SYSTEMS(26);D3020 HEAT GENERATING SYSTEMS(27);D3020 HEAT GENERATING SYSTEMS(28);D3020 HEAT GENERATING SYSTEMS(29);D3020 HEAT GENERATING SYSTEMS(30);D3020 HEAT GENERATING SYSTEMS(31)` + costs_header = `${costs_header};D3030 COOLING GENERATION SYSTEMS(1);D3030 COOLING GENERATION SYSTEMS(2);D3030 COOLING GENERATION SYSTEMS(3);D3030 COOLING GENERATION SYSTEMS(4);D3030 COOLING GENERATION SYSTEMS(5);D3030 COOLING GENERATION SYSTEMS(6);D3030 COOLING GENERATION SYSTEMS(7);D3030 COOLING GENERATION SYSTEMS(8);D3030 COOLING GENERATION SYSTEMS(9);D3030 COOLING GENERATION SYSTEMS(10);D3030 COOLING GENERATION SYSTEMS(11);D3030 COOLING GENERATION SYSTEMS(12);D3030 COOLING GENERATION SYSTEMS(13);D3030 COOLING GENERATION SYSTEMS(14);D3030 COOLING GENERATION SYSTEMS(15);D3030 COOLING GENERATION SYSTEMS(16);D3030 COOLING GENERATION SYSTEMS(17);D3030 COOLING GENERATION SYSTEMS(18);D3030 COOLING GENERATION SYSTEMS(19);D3030 COOLING GENERATION SYSTEMS(20);D3030 COOLING GENERATION SYSTEMS(21);D3030 COOLING GENERATION SYSTEMS(22);D3030 COOLING GENERATION SYSTEMS(23);D3030 COOLING GENERATION SYSTEMS(24);D3030 COOLING GENERATION SYSTEMS(25);D3030 COOLING GENERATION SYSTEMS(26);D3030 COOLING GENERATION SYSTEMS(27);D3030 COOLING GENERATION SYSTEMS(28);D3030 COOLING GENERATION SYSTEMS(29);D3030 COOLING GENERATION SYSTEMS(30);D3030 COOLING GENERATION SYSTEMS(31)` + costs_header = `${costs_header};D3080 OTHER HVAC AHU(1);D3080 OTHER HVAC AHU(2);D3080 OTHER HVAC AHU(3);D3080 OTHER HVAC AHU(4);D3080 OTHER HVAC AHU(5);D3080 OTHER HVAC AHU(6);D3080 OTHER HVAC AHU(7);D3080 OTHER HVAC AHU(8);D3080 OTHER HVAC AHU(9);D3080 OTHER HVAC AHU(10);D3080 OTHER HVAC AHU(11);D3080 OTHER HVAC AHU(12);D3080 OTHER HVAC AHU(13);D3080 OTHER HVAC AHU(14);D3080 OTHER HVAC AHU(15);D3080 OTHER HVAC AHU(16);D3080 OTHER HVAC AHU(17);D3080 OTHER HVAC AHU(18);D3080 OTHER HVAC AHU(19);D3080 OTHER HVAC AHU(20);D3080 OTHER HVAC AHU(21);D3080 OTHER HVAC AHU(22);D3080 OTHER HVAC AHU(23);D3080 OTHER HVAC AHU(24);D3080 OTHER HVAC AHU(25);D3080 OTHER HVAC AHU(26);D3080 OTHER HVAC AHU(27);D3080 OTHER HVAC AHU(28);D3080 OTHER HVAC AHU(29);D3080 OTHER HVAC AHU(30);D3080 OTHER HVAC AHU(31)` + costs_header = `${costs_header};D5020 LIGHTING AND BRANCH WIRING(1);D5020 LIGHTING AND BRANCH WIRING(2);D5020 LIGHTING AND BRANCH WIRING(3);D5020 LIGHTING AND BRANCH WIRING(4);D5020 LIGHTING AND BRANCH WIRING(5);D5020 LIGHTING AND BRANCH WIRING(6);D5020 LIGHTING AND BRANCH WIRING(7);D5020 LIGHTING AND BRANCH WIRING(8);D5020 LIGHTING AND BRANCH WIRING(9);D5020 LIGHTING AND BRANCH WIRING(10);D5020 LIGHTING AND BRANCH WIRING(11);D5020 LIGHTING AND BRANCH WIRING(12);D5020 LIGHTING AND BRANCH WIRING(13);D5020 LIGHTING AND BRANCH WIRING(14);D5020 LIGHTING AND BRANCH WIRING(15);D5020 LIGHTING AND BRANCH WIRING(16);D5020 LIGHTING AND BRANCH WIRING(17);D5020 LIGHTING AND BRANCH WIRING(18);D5020 LIGHTING AND BRANCH WIRING(19);D5020 LIGHTING AND BRANCH WIRING(20);D5020 LIGHTING AND BRANCH WIRING(21);D5020 LIGHTING AND BRANCH WIRING(22);D5020 LIGHTING AND BRANCH WIRING(23);D5020 LIGHTING AND BRANCH WIRING(24);D5020 LIGHTING AND BRANCH WIRING(25);D5020 LIGHTING AND BRANCH WIRING(26);D5020 LIGHTING AND BRANCH WIRING(27);D5020 LIGHTING AND BRANCH WIRING(28);D5020 LIGHTING AND BRANCH WIRING(29);D5020 LIGHTING AND BRANCH WIRING(30);D5020 LIGHTING AND BRANCH WIRING(31)` + costs_header = `${costs_header};D301010 PHOTOVOLTAIC SYSTEM(1);D301010 PHOTOVOLTAIC SYSTEM(2);D301010 PHOTOVOLTAIC SYSTEM(3);D301010 PHOTOVOLTAIC SYSTEM(4);D301010 PHOTOVOLTAIC SYSTEM(5);D301010 PHOTOVOLTAIC SYSTEM(6);D301010 PHOTOVOLTAIC SYSTEM(7);D301010 PHOTOVOLTAIC SYSTEM(8);D301010 PHOTOVOLTAIC SYSTEM(9);D301010 PHOTOVOLTAIC SYSTEM(10);D301010 PHOTOVOLTAIC SYSTEM(11);D301010 PHOTOVOLTAIC SYSTEM(12);D301010 PHOTOVOLTAIC SYSTEM(13);D301010 PHOTOVOLTAIC SYSTEM(14);D301010 PHOTOVOLTAIC SYSTEM(15);D301010 PHOTOVOLTAIC SYSTEM(16);D301010 PHOTOVOLTAIC SYSTEM(17);D301010 PHOTOVOLTAIC SYSTEM(18);D301010 PHOTOVOLTAIC SYSTEM(19);D301010 PHOTOVOLTAIC SYSTEM(20);D301010 PHOTOVOLTAIC SYSTEM(21);D301010 PHOTOVOLTAIC SYSTEM(22);D301010 PHOTOVOLTAIC SYSTEM(23);D301010 PHOTOVOLTAIC SYSTEM(24);D301010 PHOTOVOLTAIC SYSTEM(25);D301010 PHOTOVOLTAIC SYSTEM(26);D301010 PHOTOVOLTAIC SYSTEM(27);D301010 PHOTOVOLTAIC SYSTEM(28);D301010 PHOTOVOLTAIC SYSTEM(29);D301010 PHOTOVOLTAIC SYSTEM(30);D301010 PHOTOVOLTAIC SYSTEM(31)` + costs_header = `${costs_header};GLOBAL END OF LIFE COSTS(1);GLOBAL END OF LIFE COSTS(2);GLOBAL END OF LIFE COSTS(3);GLOBAL END OF LIFE COSTS(4);GLOBAL END OF LIFE COSTS(5);GLOBAL END OF LIFE COSTS(6);GLOBAL END OF LIFE COSTS(7);GLOBAL END OF LIFE COSTS(8);GLOBAL END OF LIFE COSTS(9);GLOBAL END OF LIFE COSTS(10);GLOBAL END OF LIFE COSTS(11);GLOBAL END OF LIFE COSTS(12);GLOBAL END OF LIFE COSTS(13);GLOBAL END OF LIFE COSTS(14);GLOBAL END OF LIFE COSTS(15);GLOBAL END OF LIFE COSTS(16);GLOBAL END OF LIFE COSTS(17);GLOBAL END OF LIFE COSTS(18);GLOBAL END OF LIFE COSTS(19);GLOBAL END OF LIFE COSTS(20);GLOBAL END OF LIFE COSTS(21);GLOBAL END OF LIFE COSTS(22);GLOBAL END OF LIFE COSTS(23);GLOBAL END OF LIFE COSTS(24);GLOBAL END OF LIFE COSTS(25);GLOBAL END OF LIFE COSTS(26);GLOBAL END OF LIFE COSTS(27);GLOBAL END OF LIFE COSTS(28);GLOBAL END OF LIFE COSTS(29);GLOBAL END OF LIFE COSTS(30);GLOBAL END OF LIFE COSTS(31);GLOBAL END OF LIFE COSTS(32)` + costs_header = `${costs_header};FIXED COSTS ELECTRICITY PEAK(1);FIXED COSTS ELECTRICITY PEAK(2);FIXED COSTS ELECTRICITY PEAK(3);FIXED COSTS ELECTRICITY PEAK(4);FIXED COSTS ELECTRICITY PEAK(5);FIXED COSTS ELECTRICITY PEAK(6);FIXED COSTS ELECTRICITY PEAK(7);FIXED COSTS ELECTRICITY PEAK(8);FIXED COSTS ELECTRICITY PEAK(9);FIXED COSTS ELECTRICITY PEAK(10);FIXED COSTS ELECTRICITY PEAK(11);FIXED COSTS ELECTRICITY PEAK(12);FIXED COSTS ELECTRICITY PEAK(13);FIXED COSTS ELECTRICITY PEAK(14);FIXED COSTS ELECTRICITY PEAK(15);FIXED COSTS ELECTRICITY PEAK(16);FIXED COSTS ELECTRICITY PEAK(17);FIXED COSTS ELECTRICITY PEAK(18);FIXED COSTS ELECTRICITY PEAK(19);FIXED COSTS ELECTRICITY PEAK(20);FIXED COSTS ELECTRICITY PEAK(21);FIXED COSTS ELECTRICITY PEAK(22);FIXED COSTS ELECTRICITY PEAK(23);FIXED COSTS ELECTRICITY PEAK(24);FIXED COSTS ELECTRICITY PEAK(25);FIXED COSTS ELECTRICITY PEAK(26);FIXED COSTS ELECTRICITY PEAK(27);FIXED COSTS ELECTRICITY PEAK(28);FIXED COSTS ELECTRICITY PEAK(29);FIXED COSTS ELECTRICITY PEAK(30);FIXED COSTS ELECTRICITY PEAK(31);FIXED COSTS ELECTRICITY PEAK(32)` + costs_header = `${costs_header};FIXED COSTS ELECTRICITY MONTHLY(1);FIXED COSTS ELECTRICITY MONTHLY(2);FIXED COSTS ELECTRICITY MONTHLY(3);FIXED COSTS ELECTRICITY MONTHLY(4);FIXED COSTS ELECTRICITY MONTHLY(5);FIXED COSTS ELECTRICITY MONTHLY(6);FIXED COSTS ELECTRICITY MONTHLY(7);FIXED COSTS ELECTRICITY MONTHLY(8);FIXED COSTS ELECTRICITY MONTHLY(9);FIXED COSTS ELECTRICITY MONTHLY(10);FIXED COSTS ELECTRICITY MONTHLY(11);FIXED COSTS ELECTRICITY MONTHLY(12);FIXED COSTS ELECTRICITY MONTHLY(13);FIXED COSTS ELECTRICITY MONTHLY(14);FIXED COSTS ELECTRICITY MONTHLY(15);FIXED COSTS ELECTRICITY MONTHLY(16);FIXED COSTS ELECTRICITY MONTHLY(17);FIXED COSTS ELECTRICITY MONTHLY(18);FIXED COSTS ELECTRICITY MONTHLY(19);FIXED COSTS ELECTRICITY MONTHLY(20);FIXED COSTS ELECTRICITY MONTHLY(21);FIXED COSTS ELECTRICITY MONTHLY(22);FIXED COSTS ELECTRICITY MONTHLY(23);FIXED COSTS ELECTRICITY MONTHLY(24);FIXED COSTS ELECTRICITY MONTHLY(25);FIXED COSTS ELECTRICITY MONTHLY(26);FIXED COSTS ELECTRICITY MONTHLY(27);FIXED COSTS ELECTRICITY MONTHLY(28);FIXED COSTS ELECTRICITY MONTHLY(29);FIXED COSTS ELECTRICITY MONTHLY(30);FIXED COSTS ELECTRICITY MONTHLY(31);FIXED COSTS ELECTRICITY MONTHLY(32)` + costs_header = `${costs_header};VARIABLE COSTS ELECTRICITY(1);VARIABLE COSTS ELECTRICITY(2);VARIABLE COSTS ELECTRICITY(3);VARIABLE COSTS ELECTRICITY(4);VARIABLE COSTS ELECTRICITY(5);VARIABLE COSTS ELECTRICITY(6);VARIABLE COSTS ELECTRICITY(7);VARIABLE COSTS ELECTRICITY(8);VARIABLE COSTS ELECTRICITY(9);VARIABLE COSTS ELECTRICITY(10);VARIABLE COSTS ELECTRICITY(11);VARIABLE COSTS ELECTRICITY(12);VARIABLE COSTS ELECTRICITY(13);VARIABLE COSTS ELECTRICITY(14);VARIABLE COSTS ELECTRICITY(15);VARIABLE COSTS ELECTRICITY(16);VARIABLE COSTS ELECTRICITY(17);VARIABLE COSTS ELECTRICITY(18);VARIABLE COSTS ELECTRICITY(19);VARIABLE COSTS ELECTRICITY(20);VARIABLE COSTS ELECTRICITY(21);VARIABLE COSTS ELECTRICITY(22);VARIABLE COSTS ELECTRICITY(23);VARIABLE COSTS ELECTRICITY(24);VARIABLE COSTS ELECTRICITY(25);VARIABLE COSTS ELECTRICITY(26);VARIABLE COSTS ELECTRICITY(27);VARIABLE COSTS ELECTRICITY(28);VARIABLE COSTS ELECTRICITY(29);VARIABLE COSTS ELECTRICITY(30);VARIABLE COSTS ELECTRICITY(31);VARIABLE COSTS ELECTRICITY(32)` + costs_header = `${costs_header};FIXED COSTS GAS(1);FIXED COSTS GAS(2);FIXED COSTS GAS(3);FIXED COSTS GAS(4);FIXED COSTS GAS(5);FIXED COSTS GAS(6);FIXED COSTS GAS(7);FIXED COSTS GAS(8);FIXED COSTS GAS(9);FIXED COSTS GAS(10);FIXED COSTS GAS(11);FIXED COSTS GAS(12);FIXED COSTS GAS(13);FIXED COSTS GAS(14);FIXED COSTS GAS(15);FIXED COSTS GAS(16);FIXED COSTS GAS(17);FIXED COSTS GAS(18);FIXED COSTS GAS(19);FIXED COSTS GAS(20);FIXED COSTS GAS(21);FIXED COSTS GAS(22);FIXED COSTS GAS(23);FIXED COSTS GAS(24);FIXED COSTS GAS(25);FIXED COSTS GAS(26);FIXED COSTS GAS(27);FIXED COSTS GAS(28);FIXED COSTS GAS(29);FIXED COSTS GAS(30);FIXED COSTS GAS(31);FIXED COSTS GAS(32)` + costs_header = `${costs_header};VARIABLE COSTS GAS(1);VARIABLE COSTS GAS(2);VARIABLE COSTS GAS(3);VARIABLE COSTS GAS(4);VARIABLE COSTS GAS(5);VARIABLE COSTS GAS(6);VARIABLE COSTS GAS(7);VARIABLE COSTS GAS(8);VARIABLE COSTS GAS(9);VARIABLE COSTS GAS(10);VARIABLE COSTS GAS(11);VARIABLE COSTS GAS(12);VARIABLE COSTS GAS(13);VARIABLE COSTS GAS(14);VARIABLE COSTS GAS(15);VARIABLE COSTS GAS(16);VARIABLE COSTS GAS(17);VARIABLE COSTS GAS(18);VARIABLE COSTS GAS(19);VARIABLE COSTS GAS(20);VARIABLE COSTS GAS(21);VARIABLE COSTS GAS(22);VARIABLE COSTS GAS(23);VARIABLE COSTS GAS(24);VARIABLE COSTS GAS(25);VARIABLE COSTS GAS(26);VARIABLE COSTS GAS(27);VARIABLE COSTS GAS(28);VARIABLE COSTS GAS(29);VARIABLE COSTS GAS(30);VARIABLE COSTS GAS(31);VARIABLE COSTS GAS(32)` + costs_header = `${costs_header};HEATING MAINTENANCE(1);HEATING MAINTENANCE(2);HEATING MAINTENANCE(3);HEATING MAINTENANCE(4);HEATING MAINTENANCE(5);HEATING MAINTENANCE(6);HEATING MAINTENANCE(7);HEATING MAINTENANCE(8);HEATING MAINTENANCE(9);HEATING MAINTENANCE(10);HEATING MAINTENANCE(11);HEATING MAINTENANCE(12);HEATING MAINTENANCE(13);HEATING MAINTENANCE(14);HEATING MAINTENANCE(15);HEATING MAINTENANCE(16);HEATING MAINTENANCE(17);HEATING MAINTENANCE(18);HEATING MAINTENANCE(19);HEATING MAINTENANCE(20);HEATING MAINTENANCE(21);HEATING MAINTENANCE(22);HEATING MAINTENANCE(23);HEATING MAINTENANCE(24);HEATING MAINTENANCE(25);HEATING MAINTENANCE(26);HEATING MAINTENANCE(27);HEATING MAINTENANCE(28);HEATING MAINTENANCE(29);HEATING MAINTENANCE(30);HEATING MAINTENANCE(31);HEATING MAINTENANCE(32)` + costs_header = `${costs_header};COOLING MAINTENANCE(1);COOLING MAINTENANCE(2);COOLING MAINTENANCE(3);COOLING MAINTENANCE(4);COOLING MAINTENANCE(5);COOLING MAINTENANCE(6);COOLING MAINTENANCE(7);COOLING MAINTENANCE(8);COOLING MAINTENANCE(9);COOLING MAINTENANCE(10);COOLING MAINTENANCE(11);COOLING MAINTENANCE(12);COOLING MAINTENANCE(13);COOLING MAINTENANCE(14);COOLING MAINTENANCE(15);COOLING MAINTENANCE(16);COOLING MAINTENANCE(17);COOLING MAINTENANCE(18);COOLING MAINTENANCE(19);COOLING MAINTENANCE(20);COOLING MAINTENANCE(21);COOLING MAINTENANCE(22);COOLING MAINTENANCE(23);COOLING MAINTENANCE(24);COOLING MAINTENANCE(25);COOLING MAINTENANCE(26);COOLING MAINTENANCE(27);COOLING MAINTENANCE(28);COOLING MAINTENANCE(29);COOLING MAINTENANCE(30);COOLING MAINTENANCE(31);COOLING MAINTENANCE(32)` + costs_header = `${costs_header};PV MAINTENANCE(1);PV MAINTENANCE(2);PV MAINTENANCE(3);PV MAINTENANCE(4);PV MAINTENANCE(5);PV MAINTENANCE(6);PV MAINTENANCE(7);PV MAINTENANCE(8);PV MAINTENANCE(9);PV MAINTENANCE(10);PV MAINTENANCE(11);PV MAINTENANCE(12);PV MAINTENANCE(13);PV MAINTENANCE(14);PV MAINTENANCE(15);PV MAINTENANCE(16);PV MAINTENANCE(17);PV MAINTENANCE(18);PV MAINTENANCE(19);PV MAINTENANCE(20);PV MAINTENANCE(21);PV MAINTENANCE(22);PV MAINTENANCE(23);PV MAINTENANCE(24);PV MAINTENANCE(25);PV MAINTENANCE(26);PV MAINTENANCE(27);PV MAINTENANCE(28);PV MAINTENANCE(29);PV MAINTENANCE(30);PV MAINTENANCE(31);PV MAINTENANCE(32)` + costs_header = `${costs_header};GLOBAL OPERATIONAL INCOMES(1);GLOBAL OPERATIONAL INCOMES(2);GLOBAL OPERATIONAL INCOMES(3);GLOBAL OPERATIONAL INCOMES(4);GLOBAL OPERATIONAL INCOMES(5);GLOBAL OPERATIONAL INCOMES(6);GLOBAL OPERATIONAL INCOMES(7);GLOBAL OPERATIONAL INCOMES(8);GLOBAL OPERATIONAL INCOMES(9);GLOBAL OPERATIONAL INCOMES(10);GLOBAL OPERATIONAL INCOMES(11);GLOBAL OPERATIONAL INCOMES(12);GLOBAL OPERATIONAL INCOMES(13);GLOBAL OPERATIONAL INCOMES(14);GLOBAL OPERATIONAL INCOMES(15);GLOBAL OPERATIONAL INCOMES(16);GLOBAL OPERATIONAL INCOMES(17);GLOBAL OPERATIONAL INCOMES(18);GLOBAL OPERATIONAL INCOMES(19);GLOBAL OPERATIONAL INCOMES(20);GLOBAL OPERATIONAL INCOMES(21);GLOBAL OPERATIONAL INCOMES(22);GLOBAL OPERATIONAL INCOMES(23);GLOBAL OPERATIONAL INCOMES(24);GLOBAL OPERATIONAL INCOMES(25);GLOBAL OPERATIONAL INCOMES(26);GLOBAL OPERATIONAL INCOMES(27);GLOBAL OPERATIONAL INCOMES(28);GLOBAL OPERATIONAL INCOMES(29);GLOBAL OPERATIONAL INCOMES(30);GLOBAL OPERATIONAL INCOMES(31);GLOBAL OPERATIONAL INCOMES(32)` + costs_header = `${costs_header};SUBSIDIES CONSTRUCTION(1);SUBSIDIES CONSTRUCTION(2);SUBSIDIES CONSTRUCTION(3);SUBSIDIES CONSTRUCTION(4);SUBSIDIES CONSTRUCTION(5);SUBSIDIES CONSTRUCTION(6);SUBSIDIES CONSTRUCTION(7);SUBSIDIES CONSTRUCTION(8);SUBSIDIES CONSTRUCTION(9);SUBSIDIES CONSTRUCTION(10);SUBSIDIES CONSTRUCTION(11);SUBSIDIES CONSTRUCTION(12);SUBSIDIES CONSTRUCTION(13);SUBSIDIES CONSTRUCTION(14);SUBSIDIES CONSTRUCTION(15);SUBSIDIES CONSTRUCTION(16);SUBSIDIES CONSTRUCTION(17);SUBSIDIES CONSTRUCTION(18);SUBSIDIES CONSTRUCTION(19);SUBSIDIES CONSTRUCTION(20);SUBSIDIES CONSTRUCTION(21);SUBSIDIES CONSTRUCTION(22);SUBSIDIES CONSTRUCTION(23);SUBSIDIES CONSTRUCTION(24);SUBSIDIES CONSTRUCTION(25);SUBSIDIES CONSTRUCTION(26);SUBSIDIES CONSTRUCTION(27);SUBSIDIES CONSTRUCTION(28);SUBSIDIES CONSTRUCTION(29);SUBSIDIES CONSTRUCTION(30);SUBSIDIES CONSTRUCTION(31)` + costs_header = `${costs_header};SUBSIDIES HVAC(1);SUBSIDIES HVAC(2);SUBSIDIES HVAC(3);SUBSIDIES HVAC(4);SUBSIDIES HVAC(5);SUBSIDIES HVAC(6);SUBSIDIES HVAC(7);SUBSIDIES HVAC(8);SUBSIDIES HVAC(9);SUBSIDIES HVAC(10);SUBSIDIES HVAC(11);SUBSIDIES HVAC(12);SUBSIDIES HVAC(13);SUBSIDIES HVAC(14);SUBSIDIES HVAC(15);SUBSIDIES HVAC(16);SUBSIDIES HVAC(17);SUBSIDIES HVAC(18);SUBSIDIES HVAC(19);SUBSIDIES HVAC(20);SUBSIDIES HVAC(21);SUBSIDIES HVAC(22);SUBSIDIES HVAC(23);SUBSIDIES HVAC(24);SUBSIDIES HVAC(25);SUBSIDIES HVAC(26);SUBSIDIES HVAC(27);SUBSIDIES HVAC(28);SUBSIDIES HVAC(29);SUBSIDIES HVAC(30);SUBSIDIES HVAC(31)` + costs_header = `${costs_header};SUBSIDIES PV(1);SUBSIDIES PV(2);SUBSIDIES PV(3);SUBSIDIES PV(4);SUBSIDIES PV(5);SUBSIDIES PV(6);SUBSIDIES PV(7);SUBSIDIES PV(8);SUBSIDIES PV(9);SUBSIDIES PV(10);SUBSIDIES PV(11);SUBSIDIES PV(12);SUBSIDIES PV(13);SUBSIDIES PV(14);SUBSIDIES PV(15);SUBSIDIES PV(16);SUBSIDIES PV(17);SUBSIDIES PV(18);SUBSIDIES PV(19);SUBSIDIES PV(20);SUBSIDIES PV(21);SUBSIDIES PV(22);SUBSIDIES PV(23);SUBSIDIES PV(24);SUBSIDIES PV(25);SUBSIDIES PV(26);SUBSIDIES PV(27);SUBSIDIES PV(28);SUBSIDIES PV(29);SUBSIDIES PV(30);SUBSIDIES PV(31)` + + var operational_co2_header = "SCENARIO;BUILDING NAME;TOTAL HEATING AREA" + operational_co2_header = `${operational_co2_header};HEATING YEAR;HEATING MONTH(JAN);HEATING MONTH(FEB);HEATING MONTH(MAR);HEATING MONTH(APR);HEATING MONTH(MAY);HEATING MONTH(JUN);HEATING MONTH(JUL);HEATING MONTH(AUG);HEATING MONTH(SEPT);HEATING MONTH(OCT);HEATING MONTH(NOV);HEATING MONTH(DEC)` + operational_co2_header = `${operational_co2_header};DOMESTIC HOT WATER YEAR;DOMESTIC HOT WATER MONTH(JAN);DOMESTIC HOT WATER MONTH(FEB);DOMESTIC HOT WATER MONTH(MAR);DOMESTIC HOT WATER MONTH(APR);DOMESTIC HOT WATER MONTH(MAY);DOMESTIC HOT WATER MONTH(JUN);DOMESTIC HOT WATER MONTH(JUL);DOMESTIC HOT WATER MONTH(AUG);DOMESTIC HOT WATER MONTH(SEPT);DOMESTIC HOT WATER MONTH(OCT);DOMESTIC HOT WATER MONTH(NOV);DOMESTIC HOT WATER MONTH(DEC)` + operational_co2_header = `${operational_co2_header};COOLING YEAR;COOLING MONTH(JAN);COOLING MONTH(FEB);COOLING MONTH(MAR);COOLING MONTH(APR);COOLING MONTH(MAY);COOLING MONTH(JUN);COOLING MONTH(JUL);COOLING MONTH(AUG);COOLING MONTH(SEPT);COOLING MONTH(OCT);COOLING MONTH(NOV);COOLING MONTH(DEC)` + operational_co2_header = `${operational_co2_header};LIGHTS YEAR;LIGHTS MONTH(JAN);LIGHTS MONTH(FEB);LIGHTS MONTH(MAR);LIGHTS MONTH(APR);LIGHTS MONTH(MAY);LIGHTS MONTH(JUN);LIGHTS MONTH(JUL);LIGHTS MONTH(AUG);LIGHTS MONTH(SEPT);LIGHTS MONTH(OCT);LIGHTS MONTH(NOV);LIGHTS MONTH(DEC)` + operational_co2_header = `${operational_co2_header};APPLIANCES YEAR;APPLIANCES MONTH(JAN);APPLIANCES MONTH(FEB);APPLIANCES MONTH(MAR);APPLIANCES MONTH(APR);APPLIANCES MONTH(MAY);APPLIANCES MONTH(JUN);APPLIANCES MONTH(JUL);APPLIANCES MONTH(AUG);APPLIANCES MONTH(SEPT);APPLIANCES MONTH(OCT);APPLIANCES MONTH(NOV);APPLIANCES MONTH(DEC)` + operational_co2_header = `${operational_co2_header};ELECTRICITY YEAR;ELECTRICITY MONTH(JAN);ELECTRICITY MONTH(FEB);ELECTRICITY MONTH(MAR);ELECTRICITY MONTH(APR);ELECTRICITY MONTH(MAY);ELECTRICITY MONTH(JUN);ELECTRICITY MONTH(JUL);ELECTRICITY MONTH(AUG);ELECTRICITY MONTH(SEPT);ELECTRICITY MONTH(OCT);ELECTRICITY MONTH(NOV);ELECTRICITY MONTH(DEC)` + + + let meb_lines = [] + let cost_lines = [] + let operational_co2_lines = [] + for (var scenario in results.results) { + var value = results.results[scenario]; + value.forEach(building_info => { + const base_line = `"${scenario}";"${building_info.building}";${building_info.total_heating_area}` + let meb = `${base_line}` + building_info['insel meb'].yearly_cooling_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_heating_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_cooling_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_heating_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_cooling_peak_load.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_heating_peak_load.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_cooling_peak_load.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_heating_peak_load.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_lighting_peak_load.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_lighting_peak_load.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_cooling_consumption.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_heating_consumption.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_cooling_consumption.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_heating_consumption.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_appliances_peak_load.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_appliances_peak_load.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_lighting_electrical_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_lighting_electrical_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_appliances_electrical_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_appliances_electrical_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_on_site_electrical_production.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_on_site_electrical_production.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_domestic_hot_water_consumption.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_domestic_hot_water_heat_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_domestic_hot_water_consumption.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_domestic_hot_water_heat_demand.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].yearly_distribution_systems_electrical_consumption.forEach(element => meb = `${meb};${element}`) + building_info['insel meb'].monthly_distribution_systems_electrical_consumption.forEach(element => meb = `${meb};${element}`) + meb_lines.push(meb) + + let cost = `${base_line};${building_info.costs.total_capital_costs_skin};${building_info.costs.total_capital_costs_systems};${building_info.costs.end_of_life_costs};${building_info.costs.total_operational_costs};${building_info.costs.total_maintenance_costs};${building_info.costs.operational_incomes}` + building_info.costs.global_capital_costs.B2010_opaque_walls.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_costs.B2020_transparent.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_costs.B3010_opaque_roof.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_costs.B10_superstructure.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_costs.D3020_heat_generating_systems.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_costs.D3030_cooling_generation_systems.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_costs.D3080_other_hvac_ahu.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_costs.D5020_lighting_and_branch_wiring.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_costs.D301010_photovoltaic_system.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_end_of_life_costs.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_operational_costs.fixed_costs_electricity_peak.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_operational_costs.fixed_costs_electricity_monthly.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_operational_costs.variable_costs_electricity.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_operational_costs.fixed_costs_gas.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_operational_costs.variable_costs_gas.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_maintenance_costs.heating_maintenance.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_maintenance_costs.cooling_maintenance.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_maintenance_costs.pv_maintenance.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_operational_incomes.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_incomes.subsidies_construction.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_incomes.subsidies_hvac.forEach(element => cost = `${cost};${element}`) + building_info.costs.global_capital_incomes.subsidies_pv.forEach(element => cost = `${cost};${element}`) + cost_lines.push(cost) + + let operational_co2 = `${base_line}` + building_info.operational_co2.Heating.year.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2.Heating.month.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2['Domestic Hot Water'].year.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2['Domestic Hot Water'].month.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2.Cooling.year.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2.Cooling.month.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2.Lights.year.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2.Lights.month.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2.Appliances.year.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2.Appliances.month.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2.Electricity.year.forEach(element => operational_co2 = `${operational_co2};${element}`) + building_info.operational_co2.Electricity.month.forEach(element => operational_co2 = `${operational_co2};${element}`) + operational_co2_lines.push(operational_co2) + }) + } + require("fs").writeFile( + `${tmp_path}meb.csv`, + `${meb_header}\n${meb_lines.join('\n')}`, + function (err) { console.log(err ? err : 'meb saved') } + ) + require("fs").writeFile( + `${tmp_path}cost.csv`, + `${costs_header}\n${cost_lines.join('\n')}`, + function (err) { console.log(err ? err : 'cost saved') } + ) + require("fs").writeFile( + `${tmp_path}operational_co2.csv`, + `${operational_co2_header}\n${operational_co2_lines.join('\n')}`, + function (err) { console.log(err ? err : 'operational_co2 saved') } + ) + BrowserWindow.fromId(1).webContents.send('task-completed', 'meb
costs
operational_co2') + } + else { + console.log('unautorized retrofit') + } + } + else { + console.log(response) + console.log(JSON.stringify(response)) + console.log('unautorized session start') + } +} \ No newline at end of file diff --git a/workflows/meb/run.js b/workflows/meb/run.js new file mode 100644 index 0000000..f3c0d29 --- /dev/null +++ b/workflows/meb/run.js @@ -0,0 +1,30 @@ +let param = { + 'workflow': 'retrofit', + 'application': '', + 'buildings': [] +} +document.getElementById("runScenario").addEventListener("click", runScenario) +async function runScenario() { + try { + document.getElementById('links').innerHTML = '' + document.getElementById('buildings').style.backgroundColor = "#FFFFFF" + param['application'] = document.getElementById('application').value + let buildingsString = document.getElementById('buildings').value + if (buildingsString == "") + { + document.getElementById('links').innerHTML = '' + document.getElementById('buildings').style.backgroundColor = "#FFAAAA" + return + } + buildings = buildingsString.replace('\r', '').replace('\n', '').replace('\t', '').split(';').map(e => e.trim()) + param['buildings'] = buildings + console.log(buildings) + await window.functions.run(param) + } + catch(ex) { + alert(ex) + } +} +window.functions.onTaskCompleted((value) => { + document.getElementById('links').innerHTML = value +}) \ No newline at end of file diff --git a/workflows/retrofit/logo/retrofit.png b/workflows/retrofit/logo/logo.png similarity index 100% rename from workflows/retrofit/logo/retrofit.png rename to workflows/retrofit/logo/logo.png diff --git a/workflows/retrofit/main.html b/workflows/retrofit/main.html index dcc60bd..aba0d8f 100644 --- a/workflows/retrofit/main.html +++ b/workflows/retrofit/main.html @@ -9,7 +9,7 @@ Home -

Retrofit workflow

+

Retrofit workflow