Skip to content

Commit

Permalink
more work on transmission func
Browse files Browse the repository at this point in the history
  • Loading branch information
atmyers committed Oct 31, 2023
1 parent dc24ae5 commit 94d9080
Showing 1 changed file with 50 additions and 51 deletions.
101 changes: 50 additions & 51 deletions src/AgentContainer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -972,7 +972,7 @@ void AgentContainer::interactAgentsHomeWork (MultiFab& mask_behavior, bool home)
auto nborhood_ptr = soa.GetIntData(IntIdx::nborhood).data();
auto school_ptr = soa.GetIntData(IntIdx::school).data();
auto withdrawn_ptr = soa.GetIntData(IntIdx::withdrawn).data();
//auto workgroup_ptr = soa.GetIntData(IntIdx::workgroup).data();
auto workgroup_ptr = soa.GetIntData(IntIdx::workgroup).data();
auto prob_ptr = soa.GetRealData(RealIdx::prob).data();
auto counter_ptr = soa.GetRealData(RealIdx::disease_counter).data();

Expand Down Expand Up @@ -1002,6 +1002,7 @@ void AgentContainer::interactAgentsHomeWork (MultiFab& mask_behavior, bool home)
infect *= j_mask;

amrex::Real social_scale = 1.0; // TODO this should vary based on cell
amrex::Real work_scale = 1.0; // TODO this should vary based on cell

/* Determine what connections these individuals have */
if ((nborhood_ptr[i] == nborhood_ptr[j]) && (family_ptr[i] == family_ptr[2]) && (!DAYTIME)) {
Expand All @@ -1022,7 +1023,7 @@ void AgentContainer::interactAgentsHomeWork (MultiFab& mask_behavior, bool home)
}
/* check for common neighborhood cluster: */
else if ((nborhood_ptr[i] == nborhood_ptr[j]) && (family_ptr[i] == family_ptr[j]) &&
withdrawn_ptr[i] && withdrawn_ptr[j] && (!DAYTIME)) {
(!withdrawn_ptr[i]) && (!withdrawn_ptr[j]) && (!DAYTIME)) {
if (age_group_ptr[i] == 0) { /* Transmitter i is a child */
if (school_ptr[i] < 0) // not attending school, use _SC contacts
prob_ptr[j] *= 1.0 - infect * lparm->xmit_nc_child_SC[age_group_ptr[j]] * social_scale;
Expand All @@ -1038,55 +1039,53 @@ void AgentContainer::interactAgentsHomeWork (MultiFab& mask_behavior, bool home)
}

// /* Home isolation or household quarantine? */
// if ( (!(pt1->status & AT_HOME)) && (!(pt2->status & AT_HOME)) ) {

// /* Should always be in the same community = same cell */
// if (pt1->school < 0) // not attending school, use _SC contacts
// prob_ptr[j] *= 1.0 - infect * xmit_comm_SC[pt2->status & 7] * cd->social_scale;
// else
// prob_ptr[j] *= 1.0 - infect * xmit_comm[pt2->status & 7] * cd->social_scale;

// /* Workgroup transmission */
// if (DAYTIME && pt1->workgroup && (pt1->comm_work.i >= 0)) { // transmitter i at work
// if ((pt2->comm_work.i >= 0) && (pt1->workgroup == pt2->workgroup)) { // coworker
// prob_ptr[j] *= 1.0 - infect * xmit_work * cd->work_scale;
// }
// }

// /* Neighborhood? */
// if (nborhood_ptr[i] == nborhood_ptr[j]) {
// if (pt1->school < 0) // not attending school, use _SC contacts
// prob_ptr[j] *= 1.0 - infect * xmit_hood_SC[pt2->status & 7] * cd->social_scale;
// else
// prob_ptr[j] *= 1.0 - infect * xmit_hood[pt2->status & 7] * cd->social_scale;

// if ((pt1->school == pt2->school) && DAYTIME) {
// if (pt1->school > 5) {
// /* Playgroup */
// prob_ptr[j] *= 1.0 - infect * xmit_school[6] * cd->social_scale;
// } else if (pt1->school == 5) {
// /* Day care */
// prob_ptr[j] *= 1.0 - infect * xmit_school[5] * cd->social_scale;
// }
// }
// } /* same neighborhood */

// /* Elementary/middle/high school in common */
// if ((pt1->school == pt2->school) && DAYTIME &&
// (pt1->school > 0) && (pt1->school < 5)) {
// if (!(pt1->status & 6)) { /* Transmitter i is a child */
// if (!(pt2->status & 6)) { /* Receiver j is a child */
// prob_ptr[j] *= 1.0 - infect * xmit_school[pt1->school] * cd->social_scale;
// } else { // Child student -> adult teacher/staff transmission
// prob_ptr[j] *= 1.0 - infect * xmit_sch_c2a[pt1->school] * cd->social_scale;
// }
// } else if (!(pt2->status & 6)) { // Adult teacher/staff -> child student
// prob_ptr[j] *= 1.0 - infect * xmit_sch_a2c[pt1->school] * cd->social_scale;
// }
// }
// } /* within society */

prob_ptr[j] *= 1.0 - infect*lparm->xmit_comm[age_group_ptr[j]];
if ( (!withdrawn_ptr[i]) && (!withdrawn_ptr[j]) ) {

/* Should always be in the same community = same cell */
if (school_ptr[i] < 0) // not attending school, use _SC contacts
prob_ptr[j] *= 1.0 - infect * lparm->xmit_comm_SC[age_group_ptr[j]] * social_scale;
else
prob_ptr[j] *= 1.0 - infect * lparm->xmit_comm[age_group_ptr[j]] * social_scale;

/* Workgroup transmission */
if (DAYTIME && workgroup_ptr[i] && (work_i_ptr[i] >= 0)) { // transmitter i at work
if ((work_i_ptr[j] >= 0) && (workgroup_ptr[i] == workgroup_ptr[j])) { // coworker
prob_ptr[j] *= 1.0 - infect * lparm->xmit_work * work_scale;
}
}

// /* Neighborhood? */
if (nborhood_ptr[i] == nborhood_ptr[j]) {
if (school_ptr[i] < 0) // not attending school, use _SC contacts
prob_ptr[j] *= 1.0 - infect * lparm->xmit_hood_SC[age_group_ptr[j]] * social_scale;
else
prob_ptr[j] *= 1.0 - infect * lparm->xmit_hood[age_group_ptr[j]] * social_scale;

if ((school_ptr[i] == school_ptr[j]) && DAYTIME) {
if (school_ptr[i] > 5) {
/* Playgroup */
prob_ptr[j] *= 1.0 - infect * lparm->xmit_school[6] * social_scale;
} else if (school_ptr[i] == 5) {
/* Day care */
prob_ptr[j] *= 1.0 - infect * lparm->xmit_school[5] * social_scale;
}
}
} /* same neighborhood */

/* Elementary/middle/high school in common */
if ((school_ptr[i] == school_ptr[j]) && DAYTIME &&
(school_ptr[i] > 0) && (school_ptr[i] < 5)) {
if (age_group_ptr[i] == 1) { /* Transmitter i is a child */
if (age_group_ptr[j] == 1) { /* Receiver j is a child */
prob_ptr[j] *= 1.0 - infect * lparm->xmit_school[school_ptr[i]] * social_scale;
} else { // Child student -> adult teacher/staff transmission
prob_ptr[j] *= 1.0 - infect * lparm->xmit_sch_c2a[school_ptr[i]] * social_scale;
}
} else if (age_group_ptr[j] == 1) { // Adult teacher/staff -> child student
prob_ptr[j] *= 1.0 - infect * lparm->xmit_sch_a2c[school_ptr[i]] * social_scale;
}
}
} /* within society */
} else if (status_ptr[j] == Status::infected && status_ptr[i] != Status::infected) {
// j can infect i
amrex::Real infect = lparm->infect;
Expand Down

0 comments on commit 94d9080

Please sign in to comment.