Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
| Download

GEP475GROUPINEEDANAP

Views: 1463
Kernel: Python 3 (Anaconda)

This is just brain drain of the analysis process and is not detailed enough for exact units at the moment since I don't know all the units yet; we can clean it up, amend it, or scrap it later.

We ultimately want to find cfms per hour. How do we go about that? Breaking down what the question is asking us, we get cubic feet per minute per hour. Essentially though, in order to get a CFM number for a ventilation fan that is appropriate for a total circulation of the ETC air space in one hour, we would need to acquire only one variable:

  • total approximate volume of the ETC, all rooms included or no?

Because of the assumed steadiness of our real question of air changes per hour using CO2 escape rates, using one hour for an air change is fine... as the ETC's will probably be a little over an hour for one full air change.

Using x volume of the ETC in Cubic Feet, we multiply by 1 air change, and then divide by 60 minutes to get the ideal ETC CFM!

But wait, our question of study is to determine the ACTUAL CFMs through infiltration of the ETC using the CO2 decay rates, and so our analysis will stem from data we collect from NetAtmo to begin with.

Assuming we get a steady rate of decrease from the CO2 decay data, we can get a change of CO2 per hour; per hour because it'll help in our conversion to CFM later on.

Now we need a ratio of the peak CO2 per cubic foot of the ETC, assuming the CO2 is spread evenly throughout the volume of the ETC; this ratio will allow us to compare it with the change of CO2 per hour we got above.

The amount of CO2 decrease per hour can then be divided up by the ratio above to get the cubic feet per hour infiltration rate.

With our cubic feet per hour we can divide once more by 60 minutes to get our result of cubic feet per minute aka a true CFM infiltration rate; or we can just keep it at CFM per hour, whatever suits our needs.

An example problem of rudimentary coding for 2016 data is started in NetAtmo_2016.ipynb at the bottom.

#%matplotlib notebook %matplotlib inline import matplotlib.pyplot as plt import numpy as np import pandas as pd data = pd.read_csv('NetAtmo_2016.csv', index_col=1, # use column 1 as the dates to index the data parse_dates=True) # convert the date string into a date object data[-5:]
Timestamp Temperature Humidity CO2 Noise Pressure
Timezone : America/Los_Angeles
2016-12-31 23:35:00 1483256148 21.7 34 483.0 37.0 1009.3
2016-12-31 23:40:00 1483256449 21.7 34 485.0 38.0 1009.2
2016-12-31 23:45:00 1483256751 21.7 34 489.0 37.0 1009.0
2016-12-31 23:50:00 1483257054 21.8 34 475.0 38.0 1008.9
2016-12-31 23:55:00 1483257356 21.8 34 475.0 37.0 1008.9

Starting with the calculations of three samples of CO2 decay after EMD forum to get an average CO2 decay per hour.

time2 = '2016-03-02 18:09:00' #Date for: Peak CO2 reading, first Wed of March at end of EMD forum last spring time1 = '2016-03-02 19:09:00' #Date for: CO2 reading an hour after conclusion of EMD forum data[time2:time1]
Timestamp Temperature Humidity CO2 Noise Pressure
Timezone : America/Los_Angeles
2016-03-02 18:09:00 1456970953 24.4 58 1072.0 45.0 1014.2
2016-03-02 18:14:00 1456971255 24.4 58 1036.0 72.0 1014.2
2016-03-02 18:19:00 1456971556 24.4 58 998.0 46.0 1014.2
2016-03-02 18:24:00 1456971858 24.5 58 972.0 39.0 1014.1
2016-03-02 18:29:00 1456972159 24.4 58 968.0 42.0 1014.0
2016-03-02 18:34:00 1456972461 24.4 58 947.0 44.0 1014.1
2016-03-02 18:39:00 1456972763 24.4 58 967.0 40.0 1014.1
2016-03-02 18:44:00 1456973065 24.4 58 952.0 40.0 1014.2
2016-03-02 18:49:00 1456973366 24.3 58 954.0 38.0 1014.1
2016-03-02 18:54:00 1456973669 24.3 58 961.0 37.0 1014.1
2016-03-02 18:59:00 1456973970 24.3 58 957.0 37.0 1014.2
2016-03-02 19:04:00 1456974272 24.3 58 945.0 37.0 1014.2
2016-03-02 19:09:00 1456974573 24.2 58 943.0 37.0 1014.2
first_peakCO2_EMDforum = 1072 first_CO2_hourafterEMDforum = 943 first_CO2decay_per_hour = first_peakCO2_EMDforum - first_CO2_hourafterEMDforum first_peakCO2_EMDforum - first_CO2_hourafterEMDforum
129
first_CO2decay_per_hour = 129 #doors open or not?
time2 = '2016-03-09 18:18:00' #Date for: Peak CO2 reading, second Wed of March at end of EMD forum last spring time1 = '2016-03-09 19:18:00' #Date for: CO2 reading an hour after conclusion of EMD forum data[time2:time1]
Timestamp Temperature Humidity CO2 Noise Pressure
Timezone : America/Los_Angeles
2016-03-09 18:18:00 1457576280 26.0 53 771.0 75.0 1012.9
2016-03-09 18:23:00 1457576582 26.0 53 759.0 62.0 1013.0
2016-03-09 18:28:00 1457576883 26.1 53 761.0 45.0 1012.9
2016-03-09 18:33:00 1457577185 26.1 53 758.0 40.0 1013.0
2016-03-09 18:38:00 1457577486 26.1 53 751.0 39.0 1013.0
2016-03-09 18:43:00 1457577789 26.0 53 748.0 37.0 1013.0
2016-03-09 18:48:00 1457578090 26.0 53 747.0 37.0 1013.0
2016-03-09 18:53:00 1457578393 25.9 53 744.0 37.0 1013.3
2016-03-09 18:58:00 1457578695 25.9 53 736.0 37.0 1013.4
2016-03-09 19:03:00 1457578997 25.9 53 740.0 36.0 1013.4
2016-03-09 19:08:00 1457579298 25.8 53 733.0 39.0 1013.4
2016-03-09 19:13:00 1457579599 25.8 53 728.0 36.0 1013.3
2016-03-09 19:18:00 1457579900 25.8 53 730.0 36.0 1013.3
secnd_peakCO2_EMDforum = 771 secnd_CO2_hourafterEMDforum = 730 secnd_CO2decay_per_hour = secnd_peakCO2_EMDforum - secnd_CO2_hourafterEMDforum secnd_peakCO2_EMDforum - secnd_CO2_hourafterEMDforum
41
secnd_CO2decay_per_hour = 41 #doors closed or something?
time2 = '2016-03-23 17:28:00' #Date for: Peak CO2 reading, fourth Wed of March at end of EMD forum last spring; no class third Wed time1 = '2016-03-23 18:28:00' #Date for: CO2 reading an hour after conclusion of EMD forum data[time2:time1]
Timestamp Temperature Humidity CO2 Noise Pressure
Timezone : America/Los_Angeles
2016-03-23 17:28:00 1458779296 24.2 45 587.0 60.0 1020.7
2016-03-23 17:33:00 1458779600 24.2 45 557.0 71.0 1020.6
2016-03-23 17:38:00 1458779901 24.0 45 521.0 66.0 1020.6
2016-03-23 17:43:00 1458780202 23.9 45 479.0 63.0 1020.5
2016-03-23 17:48:00 1458780504 23.9 45 470.0 39.0 1020.5
2016-03-23 17:53:00 1458780807 23.9 46 514.0 42.0 1020.5
2016-03-23 17:58:00 1458781108 23.9 46 519.0 42.0 1020.4
2016-03-23 18:03:00 1458781410 24.0 46 506.0 39.0 1020.3
2016-03-23 18:08:00 1458781711 24.1 46 501.0 37.0 1020.4
2016-03-23 18:13:00 1458782014 24.2 46 516.0 37.0 1020.4
2016-03-23 18:18:00 1458782316 24.2 46 514.0 36.0 1020.4
2016-03-23 18:23:00 1458782617 24.2 46 505.0 37.0 1020.5
2016-03-23 18:28:00 1458782918 24.2 46 509.0 36.0 1020.6
third_peakCO2_EMDforum = 587 third_CO2_hourafterEMDforum = 509 third_CO2decay_per_hour = third_peakCO2_EMDforum - third_CO2_hourafterEMDforum third_peakCO2_EMDforum - third_CO2_hourafterEMDforum
78
third_CO2decay_per_hour = 78 #door cracked or something?
first_CO2decay_per_hour = 129 secnd_CO2decay_per_hour = 41 third_CO2decay_per_hour = 78 avg_CO2decay_per_hour = (first_CO2decay_per_hour + secnd_CO2decay_per_hour + third_CO2decay_per_hour) / 3 (first_CO2decay_per_hour + secnd_CO2decay_per_hour + third_CO2decay_per_hour) / 3
82.66666666666667
avg_CO2decay_per_hour = 82.7

Because I used the average of three sample CO2 decays, now we need to get the average of the peak CO2 in the ETC at the end of each EMD forum to be a representative peak CO2 that we can ratio with the volume of the ETC.

first_peakCO2_EMDforum = 1072 secnd_peakCO2_EMDforum = 771 third_peakCO2_EMDforum = 587 avg_peakCO2_EMDforum = (first_peakCO2_EMDforum + secnd_peakCO2_EMDforum + third_peakCO2_EMDforum) / 3 (first_peakCO2_EMDforum + secnd_peakCO2_EMDforum + third_peakCO2_EMDforum) / 3
810.0
avg_peakCO2_EMDforum = 810
avg_peakCO2_EMDforum = 810 ETC_vlme_cubicft = 41163 #Got through calculating finding sums w/ simpler shapes of the large complex shapes of the ETC's shape CO2_per_cubicft = avg_peakCO2_EMDforum / ETC_vlme_cubicft avg_peakCO2_EMDforum / ETC_vlme_cubicft
0.019677866044748926
CO2_per_cubicft = 0.02

With the CO2 decay per hour and CO2 per cubic feet, we can then divide the two figures and get to an infiltration rate of cubic feet per hour!

  • We can take the calculation further to get a CFM if we want by further dividing by 60 minutes

avg_CO2decay_per_hour = 82.7 CO2_per_cubicft = 0.02 infiltration_rate_cfh = avg_CO2decay_per_hour / CO2_per_cubicft avg_CO2decay_per_hour / CO2_per_cubicft
4135.0
infiltration_rate_cfh = 4135 min_per_hr = 60 infiltration_rate_cfm = infiltration_rate_cfh / min_per_hr infiltration_rate_cfh / min_per_hr
68.91666666666667