Merge branch 'develop/hinged_window' of https://gitlab.cern.ch/cara/cara into develop/hinged_window

This commit is contained in:
Nicolas Mounet 2020-12-03 08:59:06 +01:00
commit e02e542eea
5 changed files with 42 additions and 30 deletions

View file

@ -52,21 +52,24 @@ Please bear in mind that any of the two inputs only consider the supply of fresh
Natural ventilation refers to rooms which have openable windows.
There are many possibilities to calculate natural ventilation air flows, for simplification this tool assumes a single-sided natural ventilation scheme which is a conservative approach for the purpose of this tool.
Please choose the type of window (see illustration below):
* Sliding or side-hung
* Top- or bottom-hung
![Window type](static/images/window_type.PNG "How to determine the window type")
Please enter the number, height and width and opening distance of the windows (in m).
If there are multiple windows of different sizes, you should take an average.
The window opening distance (in m) is:
* In the case of windows that slide, the length the window is moved open.
* For articulated windows, it is the distance between the fixed frame and the movable glazed part when open. Window opening distance example (image of open window and measuring tape):
* In the case of Sliding or Side-Hung option, the length the window is moved open
* In case of Top- or Bottom-Hung, the distance between the fixed frame and the movable glazed part when open
Window opening distance example (image of open window and measuring tape):
![Window Opening Distance](static/images/window_opening.png "How to measure window opening distance")
**Notes**: If you are unsure about the opening distance for the window, it is recommended to choose a conservative value (5 cms, 0.05m or 10cms, 0.10m).
If you open the window at different distances throughout the day, choose an average value.
The width of the window is not currently used as an input to the model (height and opening distance is sufficient to calculate the free area).
When using natural ventilation, the circulation of air is simulated as a function of the difference between the temperature inside the room and the outside air temperature. The average outdoor temperature for each hour of the day has been computed for every month of the year based on historical data for Geneva, Switzerland.
It is therefore very important to enter the correct time and date in the event data section.
Finally, you must specify when the windows are open - all the time (always), or for 10 minutes every 2 hours.

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View file

@ -90,14 +90,14 @@ function unrequire_fields(obj) {
function require_room_volume(option) {
require_input_field("#room_volume", option);
disable_input_field("#room_volume", option);
disable_input_field("#room_volume", !option);
}
function require_room_dimensions(option) {
require_input_field("#floor_area", option);
require_input_field("#ceiling_height", option);
disable_input_field("#floor_area", option);
disable_input_field("#ceiling_height", option);
disable_input_field("#floor_area", !option);
disable_input_field("#ceiling_height", !option);
}
function require_mechanical_ventilation(option) {
@ -117,31 +117,34 @@ function require_natural_ventilation(option) {
$("#window_hinged").prop('required', option);
$("#always").prop('required', option);
$("#interval").prop('required', option);
$("#window_sliding").prop('checked', option);
require_window_width(false);
}
function require_window_width(option) {
require_input_field("#window_width", option);
disable_input_field("#window_width", option);
disable_input_field("#window_width", !option);
}
function require_air_changes(option) {
require_input_field("#air_changes", option);
disable_input_field("#air_changes", option);
disable_input_field("#air_changes", !option);
}
function require_air_supply(option) {
require_input_field("#air_supply", option);
disable_input_field("#air_supply", option);
disable_input_field("#air_supply", !option);
}
function require_single_event(option) {
require_input_field("#single_event_date", option);
disable_input_field("#single_event_date", option);
disable_input_field("#single_event_date", !option);
}
function require_recurrent_event(option) {
$("#recurrent_event_month").prop('required', option);
disable_input_field("#recurrent_event_month", option);
disable_input_field("#recurrent_event_month", !option);
}
function require_lunch(option) {
@ -170,7 +173,7 @@ function require_mask(option) {
function require_hepa(option) {
require_input_field("#hepa_amount", option);
disable_input_field("#hepa_amount", option);
disable_input_field("#hepa_amount", !option);
}
function require_input_field(id, option) {
@ -182,9 +185,9 @@ function require_input_field(id, option) {
function disable_input_field(id, option) {
if (option)
$(id).removeClass("disabled");
else
$(id).addClass("disabled");
else
$(id).removeClass("disabled");
}
function setMaxInfectedPeople() {
@ -270,6 +273,9 @@ function click_radio(id) {
case "air_changes":
$("#air_type_changes").click();
break;
case "window_width":
$("#window_hinged").click();
break;
case "hepa_amount":
$("#hepa_yes").click();
break;

View file

@ -80,11 +80,11 @@
Number of windows: <input type="number" id="windows_number" class="non_zero" name="windows_number" min="1"><br>
Height of window: <input type="number" step="any" id="window_height" class="non_zero" name="window_height" placeholder="meters" min="0"><br>
Window type:
<input type="radio" id="window_sliding" name="window_type" value="sliding" onclick="require_fields(this)">
<label for="window_sliding">Sliding</label>&nbsp;&nbsp;
<input type="radio" id="window_sliding" name="window_type" value="sliding" onclick="require_fields(this)" checked="checked">
<label for="window_sliding">Sliding / Side-Hung</label>&nbsp;&nbsp;
<input type="radio" id="window_hinged" name="window_type" value="hinged" onclick="require_fields(this)">
<label for="window_hinged">Hinged</label>&nbsp;&nbsp;<br>
Width of window: <input type="number" step="any" id="window_width" class="non_zero" name="window_width" placeholder="meters" min="0"><br>
<label for="window_hinged">Top- or Bottom-Hung</label>&nbsp;&nbsp;<br>
Width of window: <input type="number" step="any" id="window_width" class="non_zero has_radio disabled" name="window_width" placeholder="meters" min="0"><br>
Opening distance: <input type="number" step="any" id="opening_distance" class="non_zero" name="opening_distance" placeholder="meters" min="0"><br>
Windows open: <input type="radio" id="always" name="windows_open" value="always">
<label for="always">Always</label> &nbsp;&nbsp;
@ -215,8 +215,8 @@
This tool simulates the long range airborne spread SARS-CoV-2 virus in a finite volume and estimates the risk of COVID-19 infection. It is based on current scientific data and can be used to compare the effectiveness of different mitigation measures.<br>
<b>Ventilation data:</b> <br>
<ul>
<li>Mechanical ventilation = check the rates with a specialist.</li>
<li>Natural ventilation = the window opening distance is between the fixed frame and movable part when open (commonly used values are window height = 1.6m and window opening = 0.15m).</li>
<li>Mechanical ventilation = check the flow rates with the concerned technical department.</li>
<li>Natural ventilation = the type of window. The opening distance is between the fixed frame and movable part when open (commonly used values are window height = 1.6m and window opening = 0.15m).</li>
<li>HEPA filtration = the air flow of the device. The following values are based on the different fan velocities of a specific commercial device proposed by the HSE Unit:</li>
<ul>
<li>Level 6 (max) = 430 m<sup>3</sup>/h (noisy)</li>
@ -263,4 +263,4 @@
<div class="text-component text-component-page clearfix"></div>
<br>
</div>
{% endblock main %}
{% endblock main %}

View file

@ -38,9 +38,9 @@
<ul>
<li><p class="data_subtext">
{% if form.mechanical_ventilation_type == "air_supply"%}
Air supply flow rate: {{ form.air_supply }}
Air supply flow rate: {{ form.air_supply }} m³ / hour
{% elif form.mechanical_ventilation_type == "air_changes"%}
Air changes per hour: {{ form.air_changes }}
Air changes per hour: {{ form.air_changes }} h⁻¹
{% endif %}
</p></li>
</ul>
@ -52,12 +52,15 @@
Yes </p></li>
<ul>
<li><p class="data_subtext">Number of windows: {{ form.windows_number }}</p></li>
<li><p class="data_subtext">Height of window: {{ form.window_height }}</p></li>
<li><p class="data_subtext">Window type: {{ form.window_type }}</p></li>
<li><p class="data_subtext">Height of window: {{ form.window_height }} m</p></li>
<li><p class="data_subtext">Window type:
{% if form.window_type == "hinged" %}
<li><p class="data_subtext">Width of window: {{ form.window_width }}</p></li>
Top- or Bottom-Hung</p></li>
<li><p class="data_subtext">Width of window: {{ form.window_width }} m</p></li>
{% elif form.window_type == "sliding" %}
Sliding / Side-Hung</p></li>
{% endif %}
<li><p class="data_subtext">Opening distance: {{ form.opening_distance }}</p></li>
<li><p class="data_subtext">Opening distance: {{ form.opening_distance }} m</p></li>
<li><p class="data_subtext">Windows open: {{ form.windows_open }}</p></li>
</ul>
<p class="data_subtext data_italic">When using the natural ventilation option, air flows are calculated using averaged hourly temperatures for the Geneva region, based on historical data for the month selected.</p>
@ -67,7 +70,7 @@
<li><p class="data_text">HEPA Filtration: {{ 'Yes' if form.hepa_option else 'No' }}</li>
{% if form.hepa_option %}
<ul>
<li><p class="data_text">HEPA amount: {{ form.hepa_amount }}</p></li>
<li><p class="data_text">HEPA amount: {{ form.hepa_amount }} m³ / hour</p></li>
</ul>
{% endif %}
</ul>