Please see the disclaimer.
Do masks reduce oxygen intake?
Yes. First, see this article from a doctor.
Second, I myself have created a model that shows that the mix of carbon dioxide and oxygen behind a mask always goes to exactly half each minus any oxygen that leaks through between breaths.
Here is the code:
define void print_oxy(a[], iteration) {
print "Iteration: ", iteration, "\n O2: ", a[0]
print "\n CO2: ", a[1], "\n"
}
define void exchange(*a[], percent, leak) {
auto b[], c[], l
c[0] = a[0]
c[1] = a[1]
b[0] = (1 - percent) * c[0]
b[1] = (1 - percent) * c[1]
b[0] += percent * c[1]
b[1] += percent * c[0]
l = b[1] * leak
a[0] = b[0] + l
a[1] = b[1] - l
}
print "Enter exchange rate:\n"
percent = read()
print "Enter carbon dioxide leak rate:\n"
leak = read()
scale = 10
a[0] = 1.0
a[1] = 0
old_a[0] = a[1]
old_a[1] = a[0]
for (i = 0; a[0] != a[1] && old_a[0] != a[0] && old_a[1] != a[1]; ++i) {
old_a[0] = a[0]
old_a[1] = a[1]
exchange(a[], percent, leak)
print_oxy(a[], i)
}
halt
This is code for my bc
. For Android users, they can run the code below in
the Frink Programming Language app:
percent = eval[input["Enter exchange percentage: ", 0.10]]
leak = eval[input["Enter leak percentage: ", 0.0]]
print_oxy[o2, co2, iteration] :=
{
println["Iteration: $iteration"]
println[" O2: $o2"]
println[" CO2: $co2"]
}
exchange[o2, co2, percent, leak] :=
{
ao2 = o2
aco2 = co2
bo2 = (1 - percent) * ao2
bco2 = (1 - percent) * aco2
co2 = bo2 + percent * aco2
cco2 = bco2 + percent * ao2
l = cco2 * leak
return [co2 + l, cco2 - l]
}
setPrecision[10]
o2 = 1.0
co2 = 0
tempo2 = 0.5
tempco2 = 0.5
i = 0
while o2 != co2 && tempo2 != o2 && tempco2 != co2
{
tempo2 = o2
tempco2 = co2
ls = exchange[o2, co2, percent, leak]
o2 = ls@0
co2 = ls@1
print_oxy[o2, co2, i]
i = i + 1
}
There will be slight differences between the Frink and bc
results.
The “exchange rate” is the amount of air that cannot go through the mask, as a percentage (as a decimal) of the amount of air the person is breathing. The “carbon dioxide leak rate” is the percentage (as a decimal) of carbon dioxide that leaks out from behind the mask between breaths.
It turns out that, with the leak rate set to 0, no matter what you set the exchange rate to, the amount of carbon dioxide and oxygen behind the mask will always go to half and half.
Here is an example with the exchange rate set to 0.1 (10%):
Enter exchange rate:
read> .1
Enter carbon dioxide leak rate:
read> 0
Iteration: 0
O2: .90
CO2: .10
Iteration: 1
O2: .820
CO2: .180
Iteration: 2
O2: .7560
CO2: .2440
Iteration: 3
O2: .70480
CO2: .29520
Iteration: 4
O2: .663840
CO2: .336160
Iteration: 5
O2: .6310720
CO2: .3689280
Iteration: 6
O2: .60485760
CO2: .39514240
Iteration: 7
O2: .583886080
CO2: .416113920
Iteration: 8
O2: .5671088640
CO2: .4328911360
Iteration: 9
O2: .5536870912
CO2: .4463129088
Iteration: 10
O2: .5429496728
CO2: .4570503270
Iteration: 11
O2: .5343597382
CO2: .4656402615
Iteration: 12
O2: .5274877904
CO2: .4725122091
Iteration: 13
O2: .5219902322
CO2: .4780097671
Iteration: 14
O2: .5175921856
CO2: .4824078135
Iteration: 15
O2: .5140737483
CO2: .4859262506
Iteration: 16
O2: .5112589984
CO2: .4887410003
Iteration: 17
O2: .5090071985
CO2: .4909928000
Iteration: 18
O2: .5072057586
CO2: .4927942398
Iteration: 19
O2: .5057646066
CO2: .4942353916
Iteration: 20
O2: .5046116850
CO2: .4953883130
Iteration: 21
O2: .5036893478
CO2: .4963106502
Iteration: 22
O2: .5029514780
CO2: .4970485198
Iteration: 23
O2: .5023611821
CO2: .4976388156
Iteration: 24
O2: .5018889453
CO2: .4981110522
Iteration: 25
O2: .5015111559
CO2: .4984888414
Iteration: 26
O2: .5012089244
CO2: .4987910727
Iteration: 27
O2: .5009671391
CO2: .4990328578
Iteration: 28
O2: .5007737108
CO2: .4992262859
Iteration: 29
O2: .5006189682
CO2: .4993810283
Iteration: 30
O2: .5004951741
CO2: .4995048222
Iteration: 31
O2: .5003961388
CO2: .4996038573
Iteration: 32
O2: .5003169106
CO2: .4996830853
Iteration: 33
O2: .5002535280
CO2: .4997464677
Iteration: 34
O2: .5002028219
CO2: .4997971737
Iteration: 35
O2: .5001622570
CO2: .4998377384
Iteration: 36
O2: .5001298051
CO2: .4998701902
Iteration: 37
O2: .5001038435
CO2: .4998961516
Iteration: 38
O2: .5000830742
CO2: .4999169207
Iteration: 39
O2: .5000664587
CO2: .4999335360
Iteration: 40
O2: .5000531664
CO2: .4999468282
Iteration: 41
O2: .5000425325
CO2: .4999574619
Iteration: 42
O2: .5000340253
CO2: .4999659689
Iteration: 43
O2: .5000272195
CO2: .4999727745
Iteration: 44
O2: .5000217749
CO2: .4999782189
Iteration: 45
O2: .5000174192
CO2: .4999825744
Iteration: 46
O2: .5000139346
CO2: .4999860588
Iteration: 47
O2: .5000111469
CO2: .4999888463
Iteration: 48
O2: .5000089168
CO2: .4999910762
Iteration: 49
O2: .5000071327
CO2: .4999928601
Iteration: 50
O2: .5000057054
CO2: .4999942872
Iteration: 51
O2: .5000045635
CO2: .4999954289
Iteration: 52
O2: .5000036499
CO2: .4999963423
Iteration: 53
O2: .5000029191
CO2: .4999970729
Iteration: 54
O2: .5000023343
CO2: .4999976575
Iteration: 55
O2: .5000018665
CO2: .4999981251
Iteration: 56
O2: .5000014923
CO2: .4999984991
Iteration: 57
O2: .5000011929
CO2: .4999987983
Iteration: 58
O2: .5000009534
CO2: .4999990376
Iteration: 59
O2: .5000007617
CO2: .4999992291
Iteration: 60
O2: .5000006084
CO2: .4999993822
Iteration: 61
O2: .5000004857
CO2: .4999995047
Iteration: 62
O2: .5000003875
CO2: .4999996027
Iteration: 63
O2: .5000003089
CO2: .4999996811
Iteration: 64
O2: .5000002461
CO2: .4999997437
Iteration: 65
O2: .5000001957
CO2: .4999997939
Iteration: 66
O2: .5000001554
CO2: .4999998340
Iteration: 67
O2: .5000001232
CO2: .4999998661
Iteration: 68
O2: .5000000974
CO2: .4999998917
Iteration: 69
O2: .5000000767
CO2: .4999999122
Iteration: 70
O2: .5000000602
CO2: .4999999285
Iteration: 71
O2: .5000000469
CO2: .4999999416
Iteration: 72
O2: .5000000363
CO2: .4999999520
Iteration: 73
O2: .5000000278
CO2: .4999999604
Iteration: 74
O2: .5000000210
CO2: .4999999670
Iteration: 75
O2: .5000000156
CO2: .4999999724
Iteration: 76
O2: .5000000112
CO2: .4999999766
Iteration: 77
O2: .5000000076
CO2: .4999999800
Iteration: 78
O2: .5000000048
CO2: .4999999827
Iteration: 79
O2: .5000000025
CO2: .4999999848
Iteration: 80
O2: .5000000006
CO2: .4999999865
Iteration: 81
O2: .4999999991
CO2: .4999999878
Iteration: 82
O2: .4999999978
CO2: .4999999889
Iteration: 83
O2: .4999999968
CO2: .4999999897
Iteration: 84
O2: .4999999960
CO2: .4999999903
Iteration: 85
O2: .4999999954
CO2: .4999999908
Iteration: 86
O2: .4999999948
CO2: .4999999912
Iteration: 87
O2: .4999999944
CO2: .4999999914
Iteration: 88
O2: .4999999940
CO2: .4999999916
Iteration: 89
O2: .4999999937
CO2: .4999999918
Iteration: 90
O2: .4999999934
CO2: .4999999919
Iteration: 91
O2: .4999999931
CO2: .4999999920
Iteration: 92
O2: .4999999929
CO2: .4999999921
Iteration: 93
O2: .4999999928
CO2: .4999999920
Iteration: 94
O2: .4999999927
CO2: .4999999920
As you can see, it settles close to 50/50 very quickly.
With a leak, they will go to half and half, minus some amount of carbon dioxide (and plus that amount to oxygen).
Here’s an example with 0.1 exchange rate and 0.01 leak rate:
Enter exchange rate:
read> .1
Enter carbon dioxide leak rate:
read> .01
Iteration: 0
O2: .9010
CO2: .0990
Iteration: 1
O2: .8225920
CO2: .1774080
Iteration: 2
O2: .7604928640
CO2: .2395071360
Iteration: 3
O2: .7113103482
CO2: .2886896518
Iteration: 4
O2: .6723577956
CO2: .3276422042
Iteration: 5
O2: .6415073740
CO2: .3584926256
Iteration: 6
O2: .6170738401
CO2: .3829261594
Iteration: 7
O2: .5977224811
CO2: .4022775182
Iteration: 8
O2: .5823962048
CO2: .4176037943
Iteration: 9
O2: .5702577940
CO2: .4297422049
Iteration: 10
O2: .5606441726
CO2: .4393558262
Iteration: 11
O2: .5530301845
CO2: .4469698141
Iteration: 12
O2: .5469999059
CO2: .4530000925
Iteration: 13
O2: .5422239252
CO2: .4577760730
Iteration: 14
O2: .5384413484
CO2: .4615586497
Iteration: 15
O2: .5354455475
CO2: .4645544504
Iteration: 16
O2: .5330728733
CO2: .4669271244
Iteration: 17
O2: .5311937152
CO2: .4688062823
Iteration: 18
O2: .5297054220
CO2: .4702945753
Iteration: 19
O2: .5285266938
CO2: .4714733034
Iteration: 20
O2: .5275931411
CO2: .4724068559
Iteration: 21
O2: .5268537672
CO2: .4731462296
Iteration: 22
O2: .5262681831
CO2: .4737318135
Iteration: 23
O2: .5258044005
CO2: .4741955959
Iteration: 24
O2: .5254370846
CO2: .4745629116
Iteration: 25
O2: .5251461704
CO2: .4748538256
Iteration: 26
O2: .5249157664
CO2: .4750842294
Iteration: 27
O2: .5247332864
CO2: .4752667092
Iteration: 28
O2: .5245887622
CO2: .4754112332
Iteration: 29
O2: .5244742990
CO2: .4755256962
Iteration: 30
O2: .5243836442
CO2: .4756163509
Iteration: 31
O2: .5243118455
CO2: .4756881494
Iteration: 32
O2: .5242549809
CO2: .4757450138
Iteration: 33
O2: .5242099442
CO2: .4757900503
Iteration: 34
O2: .5241742750
CO2: .4758257193
Iteration: 35
O2: .5241460251
CO2: .4758539691
Iteration: 36
O2: .5241236511
CO2: .4758763429
Iteration: 37
O2: .5241059308
CO2: .4758940630
Iteration: 38
O2: .5240918964
CO2: .4759080973
Iteration: 39
O2: .5240807811
CO2: .4759192124
Iteration: 40
O2: .5240719777
CO2: .4759280156
Iteration: 41
O2: .5240650055
CO2: .4759349876
Iteration: 42
O2: .5240594834
CO2: .4759405095
Iteration: 43
O2: .5240551099
CO2: .4759448828
Iteration: 44
O2: .5240516461
CO2: .4759483464
Iteration: 45
O2: .5240489027
CO2: .4759510896
Iteration: 46
O2: .5240467300
CO2: .4759532621
Iteration: 47
O2: .5240450092
CO2: .4759549828
Iteration: 48
O2: .5240436462
CO2: .4759563456
Iteration: 49
O2: .5240425667
CO2: .4759574249
Iteration: 50
O2: .5240417117
CO2: .4759582797
Iteration: 51
O2: .5240410346
CO2: .4759589566
Iteration: 52
O2: .5240404983
CO2: .4759594927
Iteration: 53
O2: .5240400735
CO2: .4759599173
Iteration: 54
O2: .5240397371
CO2: .4759602535
Iteration: 55
O2: .5240394706
CO2: .4759605198
Iteration: 56
O2: .5240392595
CO2: .4759607307
Iteration: 57
O2: .5240390923
CO2: .4759608977
Iteration: 58
O2: .5240389598
CO2: .4759610300
Iteration: 59
O2: .5240388550
CO2: .4759611347
Iteration: 60
O2: .5240387719
CO2: .4759612177
Iteration: 61
O2: .5240387061
CO2: .4759612833
Iteration: 62
O2: .5240386539
CO2: .4759613353
Iteration: 63
O2: .5240386126
CO2: .4759613764
Iteration: 64
O2: .5240385798
CO2: .4759614090
Iteration: 65
O2: .5240385539
CO2: .4759614348
Iteration: 66
O2: .5240385333
CO2: .4759614552
Iteration: 67
O2: .5240385170
CO2: .4759614713
Iteration: 68
O2: .5240385041
CO2: .4759614841
Iteration: 69
O2: .5240384938
CO2: .4759614942
Iteration: 70
O2: .5240384857
CO2: .4759615021
Iteration: 71
O2: .5240384793
CO2: .4759615083
Iteration: 72
O2: .5240384741
CO2: .4759615133
Iteration: 73
O2: .5240384699
CO2: .4759615173
Iteration: 74
O2: .5240384667
CO2: .4759615203
Iteration: 75
O2: .5240384641
CO2: .4759615227
Iteration: 76
O2: .5240384619
CO2: .4759615247
Iteration: 77
O2: .5240384602
CO2: .4759615262
Iteration: 78
O2: .5240384588
CO2: .4759615274
Iteration: 79
O2: .5240384578
CO2: .4759615282
Iteration: 80
O2: .5240384570
CO2: .4759615288
Iteration: 81
O2: .5240384563
CO2: .4759615294
Iteration: 82
O2: .5240384557
CO2: .4759615298
Iteration: 83
O2: .5240384552
CO2: .4759615301
Iteration: 84
O2: .5240384548
CO2: .4759615303
Iteration: 85
O2: .5240384545
CO2: .4759615304
Iteration: 86
O2: .5240384542
CO2: .4759615305
Iteration: 87
O2: .5240384539
CO2: .4759615306
Iteration: 88
O2: .5240384537
CO2: .4759615306
Is this a problem? It depends on a number of factors, but the most important one, in my opinion, is the volume between the mask and the face. If that volume is small (tight-fitting mask), it is not much of a problem since the amount of additional carbon dioxide will likewise be small, whereas a large volume (loose-fitting mask) could be a big problem, though also may not be a problem.
Lesson: don’t just blindly wear masks; make sure you are wearing a tight-fitting mask and only wear it when you have to. And try to make politicians remove their mask mandates since there actually may be harm from constant mask use.
Edit, 23 Aug 2020: Added the Frink code.