@@ -1073,6 +1073,54 @@ TEST(TestOdeSECIRTS, model_initialization)
10731073 MatrixNear (print_wrap (expected_values), 1e-5 , 1e-5 ));
10741074}
10751075
1076+ TEST (TestOdeSECIRTS, set_vaccination_data_not_avail)
1077+ {
1078+ const auto num_age_groups = 2 ;
1079+ const auto num_days = 5 ;
1080+ mio::osecirts::Model<double > model (num_age_groups);
1081+ std::vector<mio::osecirts::Model<double >> model_vector = {model};
1082+
1083+ // Setup initial non-zero vaccination data
1084+ auto & params = model_vector[0 ].parameters ;
1085+ params.get <mio::osecirts::DailyPartialVaccinations<double >>().resize (mio::SimulationDay (num_days + 1 ));
1086+ params.get <mio::osecirts::DailyFullVaccinations<double >>().resize (mio::SimulationDay (num_days + 1 ));
1087+ params.get <mio::osecirts::DailyBoosterVaccinations<double >>().resize (mio::SimulationDay (num_days + 1 ));
1088+
1089+ const double initial_partial_vacc_val = 10.0 ;
1090+ const double initial_full_vacc_val = 5.0 ;
1091+ const double initial_booster_vacc_val = 2.0 ;
1092+
1093+ for (auto g = mio::AgeGroup (0 ); g < mio::AgeGroup (num_age_groups); ++g) {
1094+ for (auto d = mio::SimulationDay (0 ); d < mio::SimulationDay (num_days + 1 ); ++d) {
1095+ params.get <mio::osecirts::DailyPartialVaccinations<double >>()[{g, d}] = initial_partial_vacc_val;
1096+ params.get <mio::osecirts::DailyFullVaccinations<double >>()[{g, d}] = initial_full_vacc_val;
1097+ params.get <mio::osecirts::DailyBoosterVaccinations<double >>()[{g, d}] = initial_booster_vacc_val;
1098+ }
1099+ }
1100+
1101+ // call set_vaccination_data with an unavailable date
1102+ mio::Date unavailable_date (2019 , 1 , 1 ); // Date before vaccinations started
1103+ std::vector<int > region = {1001 };
1104+ std::string any_path = " dummy_vacc_path.json" ;
1105+
1106+ auto result =
1107+ mio::osecirts::details::set_vaccination_data (model_vector, any_path, unavailable_date, region, num_days);
1108+
1109+ ASSERT_THAT (result, IsSuccess ());
1110+
1111+ // Check that vaccinations are set to zero for all days and age groups
1112+ for (auto d = mio::SimulationDay (0 ); d < mio::SimulationDay (num_days + 1 ); ++d) {
1113+ for (auto a = mio::AgeGroup (0 ); a < mio::AgeGroup (num_age_groups); ++a) {
1114+ auto partial_vacc = params.get <mio::osecirts::DailyPartialVaccinations<double >>()[{a, d}];
1115+ auto full_vacc = params.get <mio::osecirts::DailyFullVaccinations<double >>()[{a, d}];
1116+ auto booster_vacc = params.get <mio::osecirts::DailyBoosterVaccinations<double >>()[{a, d}];
1117+ EXPECT_NEAR (partial_vacc, 0.0 , 1e-10 );
1118+ EXPECT_NEAR (full_vacc, 0.0 , 1e-10 );
1119+ EXPECT_NEAR (booster_vacc, 0.0 , 1e-10 );
1120+ }
1121+ }
1122+ }
1123+
10761124#endif
10771125
10781126TEST (TestOdeSECIRTS, parameter_percentiles)
@@ -1587,51 +1635,3 @@ TEST(TestOdeSECIRTS, apply_variant_function)
15871635 sim.get_model ().parameters .get <mio::osecirts::TransmissionProbabilityOnContact<double >>()[mio::AgeGroup (0 )],
15881636 0.4 , 1e-10 );
15891637}
1590-
1591- TEST (TestOdeSECIRTS, set_vaccination_data_not_avail)
1592- {
1593- const auto num_age_groups = 2 ;
1594- const auto num_days = 5 ;
1595- mio::osecirts::Model<double > model (num_age_groups);
1596- std::vector<mio::osecirts::Model<double >> model_vector = {model};
1597-
1598- // Setup initial non-zero vaccination data
1599- auto & params = model_vector[0 ].parameters ;
1600- params.get <mio::osecirts::DailyPartialVaccinations<double >>().resize (mio::SimulationDay (num_days + 1 ));
1601- params.get <mio::osecirts::DailyFullVaccinations<double >>().resize (mio::SimulationDay (num_days + 1 ));
1602- params.get <mio::osecirts::DailyBoosterVaccinations<double >>().resize (mio::SimulationDay (num_days + 1 ));
1603-
1604- const double initial_partial_vacc_val = 10.0 ;
1605- const double initial_full_vacc_val = 5.0 ;
1606- const double initial_booster_vacc_val = 2.0 ;
1607-
1608- for (auto g = mio::AgeGroup (0 ); g < mio::AgeGroup (num_age_groups); ++g) {
1609- for (auto d = mio::SimulationDay (0 ); d < mio::SimulationDay (num_days + 1 ); ++d) {
1610- params.get <mio::osecirts::DailyPartialVaccinations<double >>()[{g, d}] = initial_partial_vacc_val;
1611- params.get <mio::osecirts::DailyFullVaccinations<double >>()[{g, d}] = initial_full_vacc_val;
1612- params.get <mio::osecirts::DailyBoosterVaccinations<double >>()[{g, d}] = initial_booster_vacc_val;
1613- }
1614- }
1615-
1616- // call set_vaccination_data with an unavailable date
1617- mio::Date unavailable_date (2019 , 1 , 1 ); // Date before vaccinations started
1618- std::vector<int > region = {1001 };
1619- std::string any_path = " dummy_vacc_path.json" ;
1620-
1621- auto result =
1622- mio::osecirts::details::set_vaccination_data (model_vector, any_path, unavailable_date, region, num_days);
1623-
1624- ASSERT_THAT (result, IsSuccess ());
1625-
1626- // Check that vaccinations are set to zero for all days and age groups
1627- for (auto d = mio::SimulationDay (0 ); d < mio::SimulationDay (num_days + 1 ); ++d) {
1628- for (auto a = mio::AgeGroup (0 ); a < mio::AgeGroup (num_age_groups); ++a) {
1629- auto partial_vacc = params.get <mio::osecirts::DailyPartialVaccinations<double >>()[{a, d}];
1630- auto full_vacc = params.get <mio::osecirts::DailyFullVaccinations<double >>()[{a, d}];
1631- auto booster_vacc = params.get <mio::osecirts::DailyBoosterVaccinations<double >>()[{a, d}];
1632- EXPECT_NEAR (partial_vacc, 0.0 , 1e-10 );
1633- EXPECT_NEAR (full_vacc, 0.0 , 1e-10 );
1634- EXPECT_NEAR (booster_vacc, 0.0 , 1e-10 );
1635- }
1636- }
1637- }
0 commit comments