diff --git a/cara/mc-output.py b/cara/mc-output.py index ecace3ca..30b1e8d2 100644 --- a/cara/mc-output.py +++ b/cara/mc-output.py @@ -21,26 +21,32 @@ compare_viruses_qr() #composite_plot_pi_vs_viral_load([shared_office_worst_model[1], shared_office_model[1], shared_office_better_model[1]], # labels=['No mask &\nwindows closed', 'Baseline', 'Baseline +\nHEPA filter'], # colors=['tomato', '#1f77b4', 'limegreen'], -# title='$P(I|qID)$ vs $vl$ - Shared office scenario', +# title='Shared office scenario', # vl_points=200) -#composite_plot_pi_vs_viral_load([classroom_model_no_vent[1], classroom_model[1], classroom_model_with_hepa[1], classroom_model_full_open_hepa[1]], -# labels=['Windows closed', 'Baseline:\n(windows 10min/2h)', 'Baseline:\n(windows 10min/2h)+\nHEPA', 'Multiple windows open +\nHEPA filter'], -# colors=['tomato','#1f77b4', 'seagreen', 'limegreen'], -# title='', +#composite_plot_pi_vs_viral_load([classroom_model_no_vent[1], classroom_model[1], classroom_model_with_hepa[1], classroom_model_full_open_multi[1], classroom_model_full_open_multi_masks[1]], +# labels=['Windows closed', 'Baseline:(windows 10min/2h)', 'Baseline:(windows 10min/2h)\n+ HEPA', 'Multiple windows open', 'Multiple windows open\n+masks'], +# colors=['tomato','#1f77b4', 'dodgerblue', 'seagreen', 'limegreen'], +# title='Classroom scenario', # vl_points=200) -#compare_concentration_curves([classroom_model_no_vent[1], classroom_model[1], classroom_model_with_hepa[1], classroom_model_full_open_hepa[1]], -# labels=['Windows closed', 'Baseline:(windows 10min/2h)', 'Baseline:(windows 10min/2h) + HEPA', 'Multiple windows open + HEPA filter'], +composite_plot_pi_vs_viral_load([ski_cabin_model_60[1], ski_cabin_model_30[1], ski_cabin_model_20[1], ski_cabin_model_10[1]], + labels=['60 min', '30 min', 'Baseline: 20 min', '10 min'], + colors=['tomato', 'lightsalmon', '#1f77b4', 'limegreen'], + title='Ski cabin scenario', + vl_points=200) + +#compare_concentration_curves([classroom_model_no_vent[1], classroom_model[1], classroom_model_with_hepa[1], classroom_model_full_open_multi[1]], +# labels=['Windows closed', 'Baseline:(windows 10min/2h)', 'Baseline:(windows 10min/2h) + HEPA', 'Multiple windows open'], # colors=['tomato','#1f77b4', 'seagreen', 'limegreen'], # title='Classroom scenario' # ) -# compare_concentration_curves([waiting_room_model[1], waiting_room_model_full_summer[1], -# waiting_room_model_full_winter[1], waiting_room_model_periodic_winter[1]], -# labels=['Baseline:(windows closed)', 'Windows open (summer)', 'Windows open (winter)', 'Windows open 5min/20min (winter)'], -# colors=['#1f77b4', 'darkorange', 'deepskyblue', 'lightskyblue'], -# title='Waiting room scenario' -# ) +#compare_concentration_curves([waiting_room_model[1], waiting_room_model_full_summer[1], +# waiting_room_model_full_winter[1], waiting_room_model_periodic_winter[1]], +# labels=['Baseline:(windows closed)', 'Windows open (summer)', 'Windows open (winter)', 'Windows open 5min/20min (winter)'], +# colors=['#1f77b4', 'darkorange', 'deepskyblue', 'lightskyblue'], +# title='Waiting room scenario' +# ) #plot_pi_vs_viral_load([shared_office_model[1]], labels=['Baseline'],title='') diff --git a/cara/model_scenarios.py b/cara/model_scenarios.py index 0c39393d..fcc624da 100644 --- a/cara/model_scenarios.py +++ b/cara/model_scenarios.py @@ -311,7 +311,7 @@ classroom_model_with_hepa = [MCExposureModel( ) )for qid in (100, 60)] -classroom_model_full_open_hepa = [MCExposureModel( +classroom_model_full_open_multi = [MCExposureModel( concentration_model=MCConcentrationModel( room=models.Room(volume=160), ventilation=models.MultipleVentilation( @@ -323,7 +323,7 @@ classroom_model_full_open_hepa = [MCExposureModel( window_height=1.6, opening_length=4*0.6, ), models.HEPAFilter(active=models.PeriodicInterval(period=120, duration=120), - q_air_mech=800) + q_air_mech=0) ) ), infected=MCInfectedPopulation( @@ -344,6 +344,39 @@ classroom_model_full_open_hepa = [MCExposureModel( ) )for qid in (100, 60)] +classroom_model_full_open_multi_masks = [MCExposureModel( + concentration_model=MCConcentrationModel( + room=models.Room(volume=160), + ventilation=models.MultipleVentilation( + ventilations=( + models.SlidingWindow( + active=models.PeriodicInterval(period=120, duration=120), + inside_temp=models.PiecewiseConstant((0, 24), (293,)), + outside_temp=models.PiecewiseConstant((0, 24), (283,)), + window_height=1.6, opening_length=4*0.6, + ), + models.HEPAFilter(active=models.PeriodicInterval(period=120, duration=120), + q_air_mech=0) + ) + ), + infected=MCInfectedPopulation( + number=1, + presence=models.SpecificInterval(((0, 2), (2.5, 4), (5, 7), (7.5, 9))), + masked=True, + virus=MCVirus(halflife=1.1, qID=qid), + expiratory_activity=2, + samples=200000, + breathing_category=3, + ) + ), + exposed=models.Population( + number=19, + presence=models.SpecificInterval(((0, 2), (2.5, 4), (5, 7), (7.5, 9))), + activity=models.Activity.types['Seated'], + mask=models.Mask.types['Type I'] + ) +)for qid in (100, 60)] + ######### Shared office exposure models ########### shared_office_model = [MCExposureModel( concentration_model=MCConcentrationModel( @@ -434,7 +467,7 @@ shared_office_better_model = [MCExposureModel( ) for qid in (100, 60)] ######### Ski cabine exposure models ########### -ski_cabin_model = [MCExposureModel( +ski_cabin_model_20 = [MCExposureModel( concentration_model=MCConcentrationModel( room=models.Room(volume=10), ventilation=models.HVACMechanical( @@ -443,7 +476,7 @@ ski_cabin_model = [MCExposureModel( ), infected=MCInfectedPopulation( number=1, - presence=models.SpecificInterval(((0, 0.33),)), + presence=models.SpecificInterval(((0, 20/60),)), masked=True, virus=MCVirus(halflife=1.1, qID=qid), expiratory_activity=2, @@ -454,7 +487,111 @@ ski_cabin_model = [MCExposureModel( ), exposed=models.Population( number=3, - presence=models.SpecificInterval(((0, 0.33),)), + presence=models.SpecificInterval(((0, 20/60),)), + activity=models.Activity.types['Moderate activity'], + mask=models.Mask.types['Type I'] + ) +)for qid in (100, 60)] + +ski_cabin_model_10 = [MCExposureModel( + concentration_model=MCConcentrationModel( + room=models.Room(volume=10), + ventilation=models.HVACMechanical( + active=models.PeriodicInterval(period=120, duration=120), + q_air_mech=0., + ), + infected=MCInfectedPopulation( + number=1, + presence=models.SpecificInterval(((0, 10/60),)), + masked=True, + virus=MCVirus(halflife=1.1, qID=qid), + expiratory_activity=2, + samples=200000, + breathing_category=4, + expiratory_activity_weights=(0.7, 0.3, 0) + ) + ), + exposed=models.Population( + number=3, + presence=models.SpecificInterval(((0, 10/60),)), + activity=models.Activity.types['Moderate activity'], + mask=models.Mask.types['Type I'] + ) +)for qid in (100, 60)] + +ski_cabin_model_25 = [MCExposureModel( + concentration_model=MCConcentrationModel( + room=models.Room(volume=10), + ventilation=models.HVACMechanical( + active=models.PeriodicInterval(period=120, duration=120), + q_air_mech=0., + ), + infected=MCInfectedPopulation( + number=1, + presence=models.SpecificInterval(((0, 25/60),)), + masked=True, + virus=MCVirus(halflife=1.1, qID=qid), + expiratory_activity=2, + samples=200000, + breathing_category=4, + expiratory_activity_weights=(0.7, 0.3, 0) + ) + ), + exposed=models.Population( + number=3, + presence=models.SpecificInterval(((0, 25/60),)), + activity=models.Activity.types['Moderate activity'], + mask=models.Mask.types['Type I'] + ) +)for qid in (100, 60)] + +ski_cabin_model_30 = [MCExposureModel( + concentration_model=MCConcentrationModel( + room=models.Room(volume=10), + ventilation=models.HVACMechanical( + active=models.PeriodicInterval(period=120, duration=120), + q_air_mech=0., + ), + infected=MCInfectedPopulation( + number=1, + presence=models.SpecificInterval(((0, 30/60),)), + masked=True, + virus=MCVirus(halflife=1.1, qID=qid), + expiratory_activity=2, + samples=200000, + breathing_category=4, + expiratory_activity_weights=(0.7, 0.3, 0) + ) + ), + exposed=models.Population( + number=3, + presence=models.SpecificInterval(((0, 30/60),)), + activity=models.Activity.types['Moderate activity'], + mask=models.Mask.types['Type I'] + ) +)for qid in (100, 60)] + +ski_cabin_model_60 = [MCExposureModel( + concentration_model=MCConcentrationModel( + room=models.Room(volume=10), + ventilation=models.HVACMechanical( + active=models.PeriodicInterval(period=120, duration=120), + q_air_mech=0., + ), + infected=MCInfectedPopulation( + number=1, + presence=models.SpecificInterval(((0, 1),)), + masked=True, + virus=MCVirus(halflife=1.1, qID=qid), + expiratory_activity=2, + samples=200000, + breathing_category=4, + expiratory_activity_weights=(0.7, 0.3, 0) + ) + ), + exposed=models.Population( + number=3, + presence=models.SpecificInterval(((0, 1),)), activity=models.Activity.types['Moderate activity'], mask=models.Mask.types['Type I'] ) @@ -555,7 +692,7 @@ waiting_room_model_full_summer = [MCExposureModel( number=1, presence=models.SpecificInterval(((0, 2),)), masked=False, - virus=MCVirus(halflife=3.8, qID=qid), + virus=MCVirus(halflife=1.1, qID=qid), expiratory_activity=4, samples=200000, breathing_category=1, @@ -611,7 +748,7 @@ waiting_room_model_periodic_summer = [MCExposureModel( number=1, presence=models.SpecificInterval(((0, 2),)), masked=False, - virus=MCVirus(halflife=3.8, qID=qid), + virus=MCVirus(halflife=1.1, qID=qid), expiratory_activity=4, samples=200000, breathing_category=1,