covid-sim
Loading...
Searching...
No Matches
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
12double 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}
19double 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}
27double 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}
36double 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
46double 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}
52double 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}
58double 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}
64double 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}