covid-sim
CalcInfSusc.cpp
1 #include <math.h>
2 
3 #include "CalcInfSusc.h"
4 #include "Constants.h"
5 #include "InfStat.h"
6 #include "Model.h"
7 #include "ModelMacros.h"
8 #include "Param.h"
9 
12 double CalcHouseInf(int j, unsigned short int ts)
13 {
14  return ((HOST_ISOLATED(j) && (Hosts[j].digitalContactTraced != 1)) ? P.CaseIsolationHouseEffectiveness : 1.0)
15  * ((Hosts[j].digitalContactTraced==1) ? P.DCTCaseIsolationHouseEffectiveness : 1.0)
16  * ((HOST_QUARANTINED(j) && (Hosts[j].digitalContactTraced != 1) && (!(HOST_ISOLATED(j))))? P.HQuarantineHouseEffect : 1.0)
17  * P.HouseholdDenomLookup[Households[Hosts[j].hh].nhr - 1] * CalcPersonInf(j, ts);
18 }
19 double CalcPlaceInf(int j, int k, unsigned short int ts)
20 {
21  return ((HOST_ISOLATED(j) && (Hosts[j].digitalContactTraced != 1)) ? P.CaseIsolationEffectiveness : 1.0)
22  * ((Hosts[j].digitalContactTraced==1) ? P.DCTCaseIsolationEffectiveness : 1.0)
23  * ((HOST_QUARANTINED(j) && (Hosts[j].digitalContactTraced != 1) && (!(HOST_ISOLATED(j)))) ? P.HQuarantinePlaceEffect[k] : 1.0)
24  * ((Hosts[j].inf == InfStat_Case) ? P.SymptPlaceTypeContactRate[k] : 1.0)
25  * P.PlaceTypeTrans[k] / P.PlaceTypeGroupSizeParam1[k] * CalcPersonInf(j, ts);
26 }
27 double CalcSpatialInf(int j, unsigned short int ts)
28 {
29  return ((HOST_ISOLATED(j) && (Hosts[j].digitalContactTraced != 1)) ? P.CaseIsolationEffectiveness : 1.0)
30  * ((Hosts[j].digitalContactTraced==1) ? P.DCTCaseIsolationEffectiveness : 1.0)
31  * ((HOST_QUARANTINED(j) && (Hosts[j].digitalContactTraced != 1) && (!(HOST_ISOLATED(j)))) ? P.HQuarantineSpatialEffect : 1.0)
32  * ((Hosts[j].inf == InfStat_Case) ? P.SymptSpatialContactRate : 1.0)
33  * P.RelativeSpatialContact[HOST_AGE_GROUP(j)]
34  * CalcPersonInf(j, ts); /* *Hosts[j].spatial_norm */
35 }
36 double CalcPersonInf(int j, unsigned short int ts)
37 {
38  return (HOST_TREATED(j) ? P.TreatInfDrop : 1.0)
39  * (HOST_VACCED(j) ? P.VaccInfDrop : 1.0)
40  * fabs(Hosts[j].infectiousness)
41  * P.infectiousness[ts - Hosts[j].latent_time - 1];
42 }
43 
46 double CalcHouseSusc(int ai, unsigned short int ts, int infector, int tn)
47 {
48  return CalcPersonSusc(ai, ts, infector, tn)
49  * ((Mcells[Hosts[ai].mcell].socdist == 2) ? ((Hosts[ai].esocdist_comply) ? P.EnhancedSocDistHouseholdEffectCurrent : P.SocDistHouseholdEffectCurrent) : 1.0)
50  * (Hosts[ai].digitalContactTraced==1 ? P.DCTCaseIsolationHouseEffectiveness : 1.0);
51 }
52 double CalcPlaceSusc(int ai, int k, unsigned short int ts, int infector, int tn)
53 {
54  return ((HOST_QUARANTINED(ai) && (Hosts[ai].digitalContactTraced != 1)) ? P.HQuarantinePlaceEffect[k] : 1.0)
55  * ((Mcells[Hosts[ai].mcell].socdist == 2) ? ((Hosts[ai].esocdist_comply) ? P.EnhancedSocDistPlaceEffectCurrent[k] : P.SocDistPlaceEffectCurrent[k]) : 1.0)
56  * (Hosts[ai].digitalContactTraced==1 ? P.DCTCaseIsolationEffectiveness : 1.0);
57 }
58 double CalcSpatialSusc(int ai, unsigned short int ts, int infector, int tn)
59 {
60  return ((HOST_QUARANTINED(ai) && (Hosts[ai].digitalContactTraced != 1)) ? P.HQuarantineSpatialEffect : 1.0)
61  * ((Mcells[Hosts[ai].mcell].socdist == 2) ? ((Hosts[ai].esocdist_comply) ? P.EnhancedSocDistSpatialEffectCurrent : P.SocDistSpatialEffectCurrent) : 1.0)
62  * (Hosts[ai].digitalContactTraced==1 ? P.DCTCaseIsolationEffectiveness : 1.0);
63 }
64 double CalcPersonSusc(int ai, unsigned short int ts, int infector, int tn)
65 {
66  return P.WAIFW_Matrix[HOST_AGE_GROUP(ai)][HOST_AGE_GROUP(infector)]
67  * P.AgeSusceptibility[HOST_AGE_GROUP(ai)] * Hosts[ai].susc
68  * (HOST_TREATED(ai) ? P.TreatSuscDrop : 1.0)
69  * (HOST_VACCED(ai) ? (HOST_VACCED_SWITCH(ai) ? P.VaccSuscDrop2 : P.VaccSuscDrop) : 1.0);
70 }