parameters.h Source File

CPP API: parameters.h Source File
ode_secirvvs/parameters.h
Go to the documentation of this file.
1 /*
2 * Copyright (C) 2020-2026 MEmilio
3 *
4 * Authors: Wadim Koslow, Daniel Abele, Martin J. Kühn
5 *
6 * Contact: Martin J. Kuehn <Martin.Kuehn@DLR.de>
7 *
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 */
20 #ifndef MIO_ODE_SECIRVVS_PARAMETERS_H
21 #define MIO_ODE_SECIRVVS_PARAMETERS_H
22 
30 
31 namespace mio
32 {
33 namespace osecirvvs
34 {
35 
42 template <typename FP>
43 struct StartDay {
44  using Type = FP;
46  {
47  return Type(0.0);
48  }
49  static std::string name()
50  {
51  return "StartDay";
52  }
53 };
54 
61 template <typename FP>
63  using Type = FP;
65  {
67  }
68  static std::string name()
69  {
70  return "StartDayNewVariant";
71  }
72 };
73 
79 template <typename FP>
80 struct Seasonality {
83  {
84  return Type(0.);
85  }
86  static std::string name()
87  {
88  return "Seasonality";
89  }
90 };
91 
95 template <typename FP>
96 struct ICUCapacity {
99  {
101  }
102  static std::string name()
103  {
104  return "ICUCapacity";
105  }
106 };
107 
111 template <typename FP>
115  {
117  }
118  static std::string name()
119  {
120  return "TestAndTraceCapacity";
121  }
122 };
123 
127 template <typename FP>
131  {
132  return Type(2.0);
133  }
134  static std::string name()
135  {
136  return "TestAndTraceCapacityMaxRiskNoSymptoms";
137  }
138 };
139 
143 template <typename FP>
147  {
148  return Type(15.0);
149  }
150  static std::string name()
151  {
152  return "TestAndTraceCapacityMaxRiskSymptoms";
153  }
154 };
155 
159 template <typename FP>
163  {
164  return Type(1, static_cast<Eigen::Index>((size_t)size));
165  }
166  static std::string name()
167  {
168  return "ContactPatterns";
169  }
170 };
171 
175 template <typename FP>
178  static Type get_default(AgeGroup /*size*/)
179  {
180  return {};
181  }
182  static std::string name()
183  {
184  return "DynamicNPIsInfectedSymptoms";
185  }
186 };
187 
191 template <typename FP>
194  static Type get_default(AgeGroup /*size*/)
195  {
196  return Type(0.0);
197  }
198  static std::string name()
199  {
200  return "DynamicNPIsImplementationDelay";
201  }
202 };
203 
207 template <typename FP>
208 struct TimeExposed {
211  {
212  return Type(size, 1.);
213  }
214  static std::string name()
215  {
216  return "TimeExposed";
217  }
218 };
219 
224 template <typename FP>
228  {
229  return Type(size, 1.);
230  }
231  static std::string name()
232  {
233  return "TimeInfectedNoSymptoms";
234  }
235 };
236 
241 template <typename FP>
245  {
246  return Type(size, 1.);
247  }
248  static std::string name()
249  {
250  return "TimeInfectedSymptoms";
251  }
252 };
253 
258 template <typename FP>
262  {
263  return Type(size, 1.);
264  }
265  static std::string name()
266  {
267  return "TimeInfectedSevere";
268  }
269 };
270 
275 template <typename FP>
279  {
280  return Type(size, 1.);
281  }
282  static std::string name()
283  {
284  return "TimeInfectedCritical";
285  }
286 };
287 
291 template <typename FP>
295  {
296  return Type(size, 1.);
297  }
298  static std::string name()
299  {
300  return "TransmissionProbabilityOnContact";
301  }
302 };
303 
307 template <typename FP>
311  {
312  return Type(size, 1.);
313  }
314  static std::string name()
315  {
316  return "RelativeTransmissionNoSymptoms";
317  }
318 };
319 
323 template <typename FP>
327  {
328  return Type(size, 0.);
329  }
330  static std::string name()
331  {
332  return "RecoveredPerInfectedNoSymptoms";
333  }
334 };
335 
339 template <typename FP>
343  {
344  return Type(size, 1.);
345  }
346  static std::string name()
347  {
348  return "RiskOfInfectionFromSymptomatic";
349  }
350 };
351 
355 template <typename FP>
359  {
360  return Type(size, 1.);
361  }
362  static std::string name()
363  {
364  return "MaxRiskOfInfectionFromSymptomatic";
365  }
366 };
367 
371 template <typename FP>
375  {
376  return Type(size, 0.);
377  }
378  static std::string name()
379  {
380  return "SeverePerInfectedSymptoms";
381  }
382 };
383 
387 template <typename FP>
391  {
392  return Type(size, 0.);
393  }
394  static std::string name()
395  {
396  return "CriticalPerSevere";
397  }
398 };
399 
403 template <typename FP>
407  {
408  return Type(size, 0.);
409  }
410  static std::string name()
411  {
412  return "DeathsPerCritical";
413  }
414 };
415 
419 template <typename FP>
423  {
424  return Type(size, 49.0);
425  }
426  static std::string name()
427  {
428  return "VaccinationGap";
429  }
430 };
431 
435 template <typename FP>
439  {
440  return Type(size, 14.0);
441  }
442  static std::string name()
443  {
444  return "DaysUntilEffectivePartialImmunity";
445  }
446 };
447 
451 template <typename FP>
455  {
456  return Type(size, 7.0);
457  }
458  static std::string name()
459  {
460  return "DaysUntilEffectiveImprovedImmunity";
461  }
462 };
463 
467 template <typename FP>
471  {
472  return Type({size, SimulationDay(0)});
473  }
474  static std::string name()
475  {
476  return "DailyPartialVaccinations";
477  }
478 };
479 
483 template <typename FP>
487  {
488  return Type({size, SimulationDay(0)});
489  }
490  static std::string name()
491  {
492  return "DailyFullVaccinations";
493  }
494 };
495 
499 template <typename FP>
503  {
504  return Type(size, 1.);
505  }
506  static std::string name()
507  {
508  return "ReducExposedPartialImmunity";
509  }
510 };
511 
515 template <typename FP>
519  {
520  return Type(size, 1.);
521  }
522  static std::string name()
523  {
524  return "ReducExposedImprovedImmunity";
525  }
526 };
527 
531 template <typename FP>
535  {
536  return Type(size, 1.);
537  }
538  static std::string name()
539  {
540  return "ReducInfectedSymptomsPartialImmunity";
541  }
542 };
543 
547 template <typename FP>
551  {
552  return Type(size, 1.);
553  }
554  static std::string name()
555  {
556  return "ReducInfectedSymptomsImprovedImmunity";
557  }
558 };
559 
564 template <typename FP>
568  {
569  return Type(size, 1.);
570  }
571  static std::string name()
572  {
573  return "ReducInfectedSevereCriticalDeadPartialImmunity";
574  }
575 };
576 
580 template <typename FP>
584  {
585  return Type(size, 1.);
586  }
587  static std::string name()
588  {
589  return "ReducInfectedSevereCriticalDeadImprovedImmunity";
590  }
591 };
592 
596 template <typename FP>
600  {
601  return Type(size, 0.5);
602  }
603  static std::string name()
604  {
605  return "ReducTimeInfectedMild";
606  }
607 };
608 
612 template <typename FP>
616  {
617  return Type(size, 1.0);
618  }
619  static std::string name()
620  {
621  return "InfectiousnessNewVariant";
622  }
623 };
624 
625 template <typename FP>
639 
643 template <typename FP>
644 class Parameters : public ParametersBase<FP>
645 {
646 public:
647  Parameters(AgeGroup num_agegroups)
648  : ParametersBase<FP>(num_agegroups)
649  , m_num_groups{num_agegroups}
650  {
651  }
652 
654  {
655  return m_num_groups;
656  }
657 
662  {
664  }
666  {
668  }
669 
674  {
676  }
677 
679  {
681  }
682 
687  {
689  }
690 
692  {
694  }
695 
700  {
701  return m_end_dynamic_npis;
702  }
704  {
705  return m_end_dynamic_npis;
706  }
707 
722  {
723  int corrected = false;
724  if (this->template get<Seasonality<FP>>() < 0.0 || this->template get<Seasonality<FP>>() > 0.5) {
725  log_warning("Constraint check: Parameter Seasonality changed from {} to {}",
726  this->template get<Seasonality<FP>>(), 0);
727  this->template set<Seasonality<FP>>(0);
728  corrected = true;
729  }
730 
731  if (this->template get<ICUCapacity<FP>>() < 0.0) {
732  log_warning("Constraint check: Parameter ICUCapacity changed from {} to {}",
733  this->template get<ICUCapacity<FP>>(), 0);
734  this->template set<ICUCapacity<FP>>(0);
735  corrected = true;
736  }
737 
738  if (this->template get<TestAndTraceCapacity<FP>>() < 0.0) {
739  log_warning("Constraint check: Parameter TestAndTraceCapacity changed from {} to {}",
740  this->template get<TestAndTraceCapacity<FP>>(), 0);
741  this->template set<TestAndTraceCapacity<FP>>(0);
742  corrected = true;
743  }
744 
745  if (this->template get<TestAndTraceCapacityMaxRiskSymptoms<FP>>() < 0.0) {
746  log_warning("Constraint check: Parameter TestAndTraceCapacityMaxRiskSymptoms changed from {} to {}",
747  this->template get<TestAndTraceCapacityMaxRiskSymptoms<FP>>(), 0);
748  this->template set<TestAndTraceCapacityMaxRiskSymptoms<FP>>(0);
749  corrected = true;
750  }
751 
752  if (this->template get<TestAndTraceCapacityMaxRiskNoSymptoms<FP>>() < 0.0) {
753  log_warning("Constraint check: Parameter TestAndTraceCapacityMaxRiskNoSymptoms changed from {} to {}",
754  this->template get<TestAndTraceCapacityMaxRiskNoSymptoms<FP>>(), 0);
755  this->template set<TestAndTraceCapacityMaxRiskNoSymptoms<FP>>(0);
756  corrected = true;
757  }
758 
759  if (this->template get<DynamicNPIsImplementationDelay<FP>>() < 0.0) {
760  log_warning("Constraint check: Parameter DynamicNPIsImplementationDelay changed from {} to {}",
761  this->template get<DynamicNPIsImplementationDelay<FP>>(), 0);
762  this->template set<DynamicNPIsImplementationDelay<FP>>(0);
763  corrected = true;
764  }
765 
766  const FP tol_times = 1e-1; // accepted tolerance for compartment stays
767 
768  for (auto i = AgeGroup(0); i < AgeGroup(m_num_groups); ++i) {
769  if (this->template get<TimeExposed<FP>>()[i] < tol_times) {
770  log_warning("Constraint check: Parameter TimeExposed changed from {} to {}. Please "
771  "note that unreasonably small compartment stays lead to massively increased run time. "
772  "Consider to cancel and reset parameters.",
773  this->template get<TimeExposed<FP>>()[i], tol_times);
774  this->template get<TimeExposed<FP>>()[i] = tol_times;
775  corrected = true;
776  }
777 
778  if (this->template get<TimeInfectedNoSymptoms<FP>>()[i] < tol_times) {
779  log_warning("Constraint check: Parameter TimeInfectedNoSymptoms changed from {} to {}. Please "
780  "note that unreasonably small compartment stays lead to massively increased run time. "
781  "Consider to cancel and reset parameters.",
782  this->template get<TimeInfectedNoSymptoms<FP>>()[i], tol_times);
783  this->template get<TimeInfectedNoSymptoms<FP>>()[i] = tol_times;
784  corrected = true;
785  }
786 
787  if (this->template get<TimeInfectedSymptoms<FP>>()[i] < tol_times) {
788  log_warning("Constraint check: Parameter TimeInfectedSymptoms changed from {} to {}. Please "
789  "note that unreasonably small compartment stays lead to massively increased run time. "
790  "Consider to cancel and reset parameters.",
791  this->template get<TimeInfectedSymptoms<FP>>()[i], tol_times);
792  this->template get<TimeInfectedSymptoms<FP>>()[i] = tol_times;
793  corrected = true;
794  }
795 
796  if (this->template get<TimeInfectedSevere<FP>>()[i] < tol_times) {
797  log_warning("Constraint check: Parameter TimeInfectedSevere changed from {} to {}. Please "
798  "note that unreasonably small compartment stays lead to massively increased run time. "
799  "Consider to cancel and reset parameters.",
800  this->template get<TimeInfectedSevere<FP>>()[i], tol_times);
801  this->template get<TimeInfectedSevere<FP>>()[i] = tol_times;
802  corrected = true;
803  }
804 
805  if (this->template get<TimeInfectedCritical<FP>>()[i] < tol_times) {
806  log_warning("Constraint check: Parameter TimeInfectedCritical changed from {} to {}. Please "
807  "note that unreasonably small compartment stays lead to massively increased run time. "
808  "Consider to cancel and reset parameters.",
809  this->template get<TimeInfectedCritical<FP>>()[i], tol_times);
810  this->template get<TimeInfectedCritical<FP>>()[i] = tol_times;
811  corrected = true;
812  }
813 
814  if (this->template get<TransmissionProbabilityOnContact<FP>>()[i] < 0.0 ||
815  this->template get<TransmissionProbabilityOnContact<FP>>()[i] > 1.0) {
816  log_warning("Constraint check: Parameter TransmissionProbabilityOnContact changed from {} to {} ",
817  this->template get<TransmissionProbabilityOnContact<FP>>()[i], 0.0);
818  this->template get<TransmissionProbabilityOnContact<FP>>()[i] = 0.0;
819  corrected = true;
820  }
821 
822  if (this->template get<RelativeTransmissionNoSymptoms<FP>>()[i] < 0.0) {
823  log_warning("Constraint check: Parameter RelativeTransmissionNoSymptoms changed from {} to {} ",
824  this->template get<RelativeTransmissionNoSymptoms<FP>>()[i], 0);
825  this->template get<RelativeTransmissionNoSymptoms<FP>>()[i] = 0;
826  corrected = true;
827  }
828 
829  if (this->template get<RecoveredPerInfectedNoSymptoms<FP>>()[i] < 0.0 ||
830  this->template get<RecoveredPerInfectedNoSymptoms<FP>>()[i] > 1.0) {
831  log_warning("Constraint check: Parameter RecoveredPerInfectedNoSymptoms changed from {} to {} ",
832  this->template get<RecoveredPerInfectedNoSymptoms<FP>>()[i], 0);
833  this->template get<RecoveredPerInfectedNoSymptoms<FP>>()[i] = 0;
834  corrected = true;
835  }
836 
837  if (this->template get<RiskOfInfectionFromSymptomatic<FP>>()[i] < 0.0 ||
838  this->template get<RiskOfInfectionFromSymptomatic<FP>>()[i] > 1.0) {
839  log_warning("Constraint check: Parameter RiskOfInfectionFromSymptomatic changed from {} to {}",
840  this->template get<RiskOfInfectionFromSymptomatic<FP>>()[i], 0);
841  this->template get<RiskOfInfectionFromSymptomatic<FP>>()[i] = 0;
842  corrected = true;
843  }
844 
845  if (this->template get<SeverePerInfectedSymptoms<FP>>()[i] < 0.0 ||
846  this->template get<SeverePerInfectedSymptoms<FP>>()[i] > 1.0) {
847  log_warning("Constraint check: Parameter SeverePerInfectedSymptoms changed from {} to {}",
848  this->template get<SeverePerInfectedSymptoms<FP>>()[i], 0);
849  this->template get<SeverePerInfectedSymptoms<FP>>()[i] = 0;
850  corrected = true;
851  }
852 
853  if (this->template get<CriticalPerSevere<FP>>()[i] < 0.0 ||
854  this->template get<CriticalPerSevere<FP>>()[i] > 1.0) {
855  log_warning("Constraint check: Parameter CriticalPerSevere changed from {} to {}",
856  this->template get<CriticalPerSevere<FP>>()[i], 0);
857  this->template get<CriticalPerSevere<FP>>()[i] = 0;
858  corrected = true;
859  }
860 
861  if (this->template get<DeathsPerCritical<FP>>()[i] < 0.0 ||
862  this->template get<DeathsPerCritical<FP>>()[i] > 1.0) {
863  log_warning("Constraint check: Parameter DeathsPerCritical changed from {} to {}",
864  this->template get<DeathsPerCritical<FP>>()[i], 0);
865  this->template get<DeathsPerCritical<FP>>()[i] = 0;
866  corrected = true;
867  }
868 
869  if (this->template get<DaysUntilEffectivePartialImmunity<FP>>()[i] < 0.0) {
870  log_warning("Constraint check: Parameter DaysUntilEffectivePartialImmunity changed from {} to {}",
871  this->template get<DaysUntilEffectivePartialImmunity<FP>>()[i], 0);
872  this->template get<DaysUntilEffectivePartialImmunity<FP>>()[i] = 0;
873  corrected = true;
874  }
875  if (this->template get<DaysUntilEffectiveImprovedImmunity<FP>>()[i] < 0.0) {
876  log_warning("Constraint check: Parameter DaysUntilEffectiveImprovedImmunity changed from {} to {}",
877  this->template get<DaysUntilEffectiveImprovedImmunity<FP>>()[i], 0);
878  this->template get<DaysUntilEffectiveImprovedImmunity<FP>>()[i] = 0;
879  corrected = true;
880  }
881 
882  if (this->template get<ReducExposedPartialImmunity<FP>>()[i] <= 0.0 ||
883  this->template get<ReducExposedPartialImmunity<FP>>()[i] > 1.0) {
884  log_warning("Constraint check: Parameter ReducExposedPartialImmunity changed from {} to {}",
885  this->template get<ReducExposedPartialImmunity<FP>>()[i], 1);
886  this->template get<ReducExposedPartialImmunity<FP>>()[i] = 1;
887  corrected = true;
888  }
889  if (this->template get<ReducExposedImprovedImmunity<FP>>()[i] <= 0.0 ||
890  this->template get<ReducExposedImprovedImmunity<FP>>()[i] > 1.0) {
891  log_warning("Constraint check: Parameter ReducExposedImprovedImmunity changed from {} to {}",
892  this->template get<ReducExposedImprovedImmunity<FP>>()[i], 1);
893  this->template get<ReducExposedImprovedImmunity<FP>>()[i] = 1;
894  corrected = true;
895  }
896  if (this->template get<ReducInfectedSymptomsPartialImmunity<FP>>()[i] <= 0.0 ||
897  this->template get<ReducInfectedSymptomsPartialImmunity<FP>>()[i] > 1.0) {
898  log_warning("Constraint check: Parameter ReducInfectedSymptomsPartialImmunity changed from {} to {}",
899  this->template get<ReducInfectedSymptomsPartialImmunity<FP>>()[i], 1);
900  this->template get<ReducInfectedSymptomsPartialImmunity<FP>>()[i] = 1;
901  corrected = true;
902  }
903  if (this->template get<ReducInfectedSymptomsImprovedImmunity<FP>>()[i] <= 0.0 ||
904  this->template get<ReducInfectedSymptomsImprovedImmunity<FP>>()[i] > 1.0) {
905  log_warning("Constraint check: Parameter ReducInfectedSymptomsImprovedImmunity changed from {} to {}",
906  this->template get<ReducInfectedSymptomsImprovedImmunity<FP>>()[i], 1.0);
907  this->template get<ReducInfectedSymptomsImprovedImmunity<FP>>()[i] = 1.0;
908  corrected = true;
909  }
910  if (this->template get<ReducInfectedSevereCriticalDeadPartialImmunity<FP>>()[i] <= 0.0 ||
911  this->template get<ReducInfectedSevereCriticalDeadPartialImmunity<FP>>()[i] > 1.0) {
912  log_warning("Constraint check: Parameter ReducInfectedSevereCriticalDeadPartialImmunity changed from "
913  "{} to {}",
914  this->template get<ReducInfectedSevereCriticalDeadPartialImmunity<FP>>()[i], 1.0);
915  this->template get<ReducInfectedSevereCriticalDeadPartialImmunity<FP>>()[i] = 1.0;
916  corrected = true;
917  }
918  if (this->template get<ReducInfectedSevereCriticalDeadImprovedImmunity<FP>>()[i] <= 0.0 ||
919  this->template get<ReducInfectedSevereCriticalDeadImprovedImmunity<FP>>()[i] > 1.0) {
920  log_warning("Constraint check: Parameter ReducInfectedSevereCriticalDeadImprovedImmunity changed from "
921  "{} to {}",
922  this->template get<ReducInfectedSevereCriticalDeadImprovedImmunity<FP>>()[i], 1.0);
923  this->template get<ReducInfectedSevereCriticalDeadImprovedImmunity<FP>>()[i] = 1.0;
924  corrected = true;
925  }
926  if (this->template get<ReducTimeInfectedMild<FP>>()[i] <= 0.0 ||
927  this->template get<ReducTimeInfectedMild<FP>>()[i] > 1.0) {
928  log_warning("Constraint check: Parameter ReducTimeInfectedMild changed from {} to {}",
929  this->template get<ReducTimeInfectedMild<FP>>()[i], 1.0);
930  this->template get<ReducTimeInfectedMild<FP>>()[i] = 1.0;
931  corrected = true;
932  }
933  if (this->template get<InfectiousnessNewVariant<FP>>()[i] < 0.0) {
934  log_warning("Constraint check: Parameter InfectiousnessNewVariant changed from {} to {}",
935  this->template get<InfectiousnessNewVariant<FP>>()[i], 1.0);
936  this->template get<InfectiousnessNewVariant<FP>>()[i] = 1.0;
937  corrected = true;
938  }
939  if (this->template get<VaccinationGap<FP>>()[i] < 0.0) {
940  log_warning("Constraint check: Parameter VaccinationGap changed from {} to {}",
941  this->template get<VaccinationGap<FP>>()[i], 0);
942  this->template get<VaccinationGap<FP>>()[i] = 0;
943  corrected = true;
944  }
945  }
946  return corrected;
947  }
948 
954  bool check_constraints() const
955  {
956  const FP tol_times = 1e-1; // accepted tolerance for compartment stays
957  if (this->template get<Seasonality<FP>>() < 0.0 || this->template get<Seasonality<FP>>() > 0.5) {
958  log_error("Constraint check: Parameter Seasonality smaller {} or larger {}", 0, 0.5);
959  return true;
960  }
961 
962  if (this->template get<ICUCapacity<FP>>() < 0.0) {
963  log_error("Constraint check: Parameter ICUCapacity smaller {}", 0);
964  return true;
965  }
966 
967  if (this->template get<TestAndTraceCapacity<FP>>() < 0.0) {
968  log_error("Constraint check: Parameter TestAndTraceCapacity smaller {}", 0);
969  return true;
970  }
971 
972  if (this->template get<TestAndTraceCapacityMaxRiskSymptoms<FP>>() < 0.0) {
973  log_error("Constraint check: Parameter TestAndTraceCapacityMaxRiskSymptoms smaller {}", 0);
974  return true;
975  }
976 
977  if (this->template get<TestAndTraceCapacityMaxRiskNoSymptoms<FP>>() < 0.0) {
978  log_error("Constraint check: Parameter TestAndTraceCapacityMaxRiskNoSymptoms smaller {}", 0);
979  return true;
980  }
981 
982  if (this->template get<DynamicNPIsImplementationDelay<FP>>() < 0.0) {
983  log_error("Constraint check: Parameter DynamicNPIsImplementationDelay smaller {}", 0);
984  return true;
985  }
986 
987  for (auto i = AgeGroup(0); i < AgeGroup(m_num_groups); ++i) {
988 
989  if (this->template get<TimeExposed<FP>>()[i] < tol_times) {
990  log_error("Constraint check: Parameter TimeExposed {} smaller {}. Please "
991  "note that unreasonably small compartment stays lead to massively increased run time. "
992  "Consider to cancel and reset parameters.",
993  this->template get<TimeExposed<FP>>()[i], tol_times);
994  return true;
995  }
996 
997  if (this->template get<TimeInfectedNoSymptoms<FP>>()[i] < tol_times) {
998  log_error("Constraint check: Parameter TimeInfectedNoSymptoms {} smaller {}. Please "
999  "note that unreasonably small compartment stays lead to massively increased run time. "
1000  "Consider to cancel and reset parameters.",
1001  this->template get<TimeInfectedNoSymptoms<FP>>()[i], tol_times);
1002  return true;
1003  }
1004 
1005  if (this->template get<TimeInfectedSymptoms<FP>>()[i] < tol_times) {
1006  log_error("Constraint check: Parameter TimeInfectedSymptoms {} smaller {}. Please "
1007  "note that unreasonably small compartment stays lead to massively increased run time. "
1008  "Consider to cancel and reset parameters.",
1009  this->template get<TimeInfectedSymptoms<FP>>()[i], tol_times);
1010  return true;
1011  }
1012 
1013  if (this->template get<TimeInfectedSevere<FP>>()[i] < tol_times) {
1014  log_error("Constraint check: Parameter TimeInfectedSevere {} smaller {}. Please "
1015  "note that unreasonably small compartment stays lead to massively increased run time. "
1016  "Consider to cancel and reset parameters.",
1017  this->template get<TimeInfectedSevere<FP>>()[i], tol_times);
1018  return true;
1019  }
1020 
1021  if (this->template get<TimeInfectedCritical<FP>>()[i] < tol_times) {
1022  log_error("Constraint check: Parameter TimeInfectedCritical {} smaller {}. Please "
1023  "note that unreasonably small compartment stays lead to massively increased run time. "
1024  "Consider to cancel and reset parameters.",
1025  this->template get<TimeInfectedCritical<FP>>()[i], tol_times);
1026  return true;
1027  }
1028 
1029  if (this->template get<TransmissionProbabilityOnContact<FP>>()[i] < 0.0 ||
1030  this->template get<TransmissionProbabilityOnContact<FP>>()[i] > 1.0) {
1031  log_error("Constraint check: Parameter TransmissionProbabilityOnContact smaller {} or larger {}", 0, 1);
1032  return true;
1033  }
1034 
1035  if (this->template get<RelativeTransmissionNoSymptoms<FP>>()[i] < 0.0) {
1036  log_error("Constraint check: Parameter RelativeTransmissionNoSymptoms smaller {}", 0);
1037  return true;
1038  }
1039 
1040  if (this->template get<RecoveredPerInfectedNoSymptoms<FP>>()[i] < 0.0 ||
1041  this->template get<RecoveredPerInfectedNoSymptoms<FP>>()[i] > 1.0) {
1042  log_error("Constraint check: Parameter RecoveredPerInfectedNoSymptoms smaller {} or larger {}", 0, 1);
1043  return true;
1044  }
1045 
1046  if (this->template get<RiskOfInfectionFromSymptomatic<FP>>()[i] < 0.0 ||
1047  this->template get<RiskOfInfectionFromSymptomatic<FP>>()[i] > 1.0) {
1048  log_error("Constraint check: Parameter RiskOfInfectionFromSymptomatic smaller {} or larger {}", 0, 1);
1049  return true;
1050  }
1051 
1052  if (this->template get<SeverePerInfectedSymptoms<FP>>()[i] < 0.0 ||
1053  this->template get<SeverePerInfectedSymptoms<FP>>()[i] > 1.0) {
1054  log_error("Constraint check: Parameter SeverePerInfectedSymptoms smaller {} or larger {}", 0, 1);
1055  return true;
1056  }
1057 
1058  if (this->template get<CriticalPerSevere<FP>>()[i] < 0.0 ||
1059  this->template get<CriticalPerSevere<FP>>()[i] > 1.0) {
1060  log_error("Constraint check: Parameter CriticalPerSevere smaller {} or larger {}", 0, 1);
1061  return true;
1062  }
1063 
1064  if (this->template get<DeathsPerCritical<FP>>()[i] < 0.0 ||
1065  this->template get<DeathsPerCritical<FP>>()[i] > 1.0) {
1066  log_error("Constraint check: Parameter DeathsPerCritical smaller {} or larger {}", 0, 1);
1067  return true;
1068  }
1069 
1070  if (this->template get<VaccinationGap<FP>>()[i] < 1) {
1071  log_error("Constraint check: Parameter VaccinationGap smaller {}", 1);
1072  return true;
1073  }
1074 
1075  if (this->template get<DaysUntilEffectivePartialImmunity<FP>>()[i] < 0.0) {
1076  log_error("Constraint check: Parameter DaysUntilEffectivePartialImmunity smaller {}", 0);
1077  return true;
1078  }
1079  if (this->template get<DaysUntilEffectiveImprovedImmunity<FP>>()[i] < 0.0) {
1080  log_error("Constraint check: Parameter DaysUntilEffectiveImprovedImmunity smaller {}", 0);
1081  return true;
1082  }
1083 
1084  if (this->template get<ReducExposedPartialImmunity<FP>>()[i] <= 0.0 ||
1085  this->template get<ReducExposedPartialImmunity<FP>>()[i] > 1.0) {
1086  log_error("Constraint check: Parameter ReducExposedPartialImmunity smaller {} or larger {}", 0, 1);
1087  return true;
1088  }
1089  if (this->template get<ReducExposedImprovedImmunity<FP>>()[i] <= 0.0 ||
1090  this->template get<ReducExposedImprovedImmunity<FP>>()[i] > 1.0) {
1091  log_error("Constraint check: Parameter ReducExposedImprovedImmunity smaller {} or larger {}", 0, 1);
1092  return true;
1093  }
1094  if (this->template get<ReducInfectedSymptomsPartialImmunity<FP>>()[i] <= 0.0 ||
1095  this->template get<ReducInfectedSymptomsPartialImmunity<FP>>()[i] > 1.0) {
1096  log_error("Constraint check: Parameter ReducInfectedSymptomsPartialImmunity smaller {} or larger {}", 0,
1097  1);
1098  return true;
1099  }
1100  if (this->template get<ReducInfectedSymptomsImprovedImmunity<FP>>()[i] <= 0.0 ||
1101  this->template get<ReducInfectedSymptomsImprovedImmunity<FP>>()[i] > 1.0) {
1102  log_error("Constraint check: Parameter ReducInfectedSymptomsImprovedImmunity smaller {} or larger {}",
1103  0, 1);
1104  return true;
1105  }
1106  if (this->template get<ReducInfectedSevereCriticalDeadPartialImmunity<FP>>()[i] <= 0.0 ||
1107  this->template get<ReducInfectedSevereCriticalDeadPartialImmunity<FP>>()[i] > 1.0) {
1108  log_error("Constraint check: Parameter ReducInfectedSevereCriticalDeadPartialImmunity smaller {} or "
1109  "larger {}",
1110  0, 1);
1111  return true;
1112  }
1113  if (this->template get<ReducInfectedSevereCriticalDeadImprovedImmunity<FP>>()[i] <= 0.0 ||
1114  this->template get<ReducInfectedSevereCriticalDeadImprovedImmunity<FP>>()[i] > 1.0) {
1115  log_error("Constraint check: Parameter ReducInfectedSevereCriticalDeadImprovedImmunity smaller {} or "
1116  "larger {}",
1117  0, 1);
1118  return true;
1119  }
1120  if (this->template get<ReducTimeInfectedMild<FP>>()[i] <= 0.0 ||
1121  this->template get<ReducTimeInfectedMild<FP>>()[i] > 1.0) {
1122  log_error("Constraint check: Parameter ReducTimeInfectedMild smaller {} or larger {}", 0, 1);
1123  return true;
1124  }
1125  if (this->template get<InfectiousnessNewVariant<FP>>()[i] < 0.0) {
1126  log_error("Constraint check: Parameter InfectiousnessNewVariant smaller {}", 0);
1127  return true;
1128  }
1129  }
1130  return false;
1131  }
1132 
1133 private:
1135  : ParametersBase<FP>(std::move(base))
1136  , m_num_groups(this->template get<ContactPatterns<FP>>().get_cont_freq_mat().get_num_groups())
1137  {
1138  }
1139 
1140 public:
1145  template <class IOContext>
1146  static IOResult<Parameters> deserialize(IOContext& io)
1147  {
1148  BOOST_OUTCOME_TRY(auto&& base, ParametersBase<FP>::deserialize(io));
1149  return success(Parameters(std::move(base)));
1150  }
1151 
1152 private:
1158 };
1159 
1160 } // namespace osecirvvs
1161 } // namespace mio
1162 
1163 #endif // MIO_ODE_SECIRVVS_PARAMETERS_H
A class template for an array with custom indices.
Definition: custom_index_array.h:136
represents non-pharmaceutical interventions (NPI) that are activated during the simulation if some va...
Definition: dynamic_npis.h:35
a set of parameters defined at compile time
Definition: parameter_set.h:205
const ParameterTagTraits< Tag >::Type & get() const
get value of a parameter
Definition: parameter_set.h:262
Represents the simulation time as an integer index.
Definition: simulation_day.h:32
The UncertainContactMatrix class consists of a ContactMatrix with fixed baseline and uncertain Dampin...
Definition: uncertain_matrix.h:43
Parameters of an age-resolved SECIR/SECIHURD model with paths for partial and improved immunity throu...
Definition: ode_secirvvs/parameters.h:645
Parameters(AgeGroup num_agegroups)
Definition: ode_secirvvs/parameters.h:647
FP & get_start_commuter_detection()
Time in simulation before which no infected commuters are detected.
Definition: ode_secirvvs/parameters.h:673
bool apply_constraints()
Checks whether all Parameters satisfy their corresponding constraints and applies them,...
Definition: ode_secirvvs/parameters.h:721
FP m_commuter_nondetection
Definition: ode_secirvvs/parameters.h:1154
FP & get_end_dynamic_npis()
Time in simulation after which no dynamic NPIs are applied.
Definition: ode_secirvvs/parameters.h:699
FP m_end_commuter_detection
Definition: ode_secirvvs/parameters.h:1156
FP & get_end_commuter_detection()
Time in simulation after which no infected commuters are detected.
Definition: ode_secirvvs/parameters.h:686
FP m_end_dynamic_npis
Definition: ode_secirvvs/parameters.h:1157
bool check_constraints() const
Checks whether all Parameters satisfy their corresponding constraints and logs an error if constraint...
Definition: ode_secirvvs/parameters.h:954
Parameters(ParametersBase< FP > &&base)
Definition: ode_secirvvs/parameters.h:1134
FP get_end_dynamic_npis() const
Definition: ode_secirvvs/parameters.h:703
FP get_start_commuter_detection() const
Definition: ode_secirvvs/parameters.h:678
FP get_commuter_nondetection() const
Definition: ode_secirvvs/parameters.h:665
AgeGroup get_num_groups() const
Definition: ode_secirvvs/parameters.h:653
FP & get_commuter_nondetection()
Percentage of infected commuters that are not detected.
Definition: ode_secirvvs/parameters.h:661
static IOResult< Parameters > deserialize(IOContext &io)
deserialize an object of this class.
Definition: ode_secirvvs/parameters.h:1146
AgeGroup m_num_groups
Definition: ode_secirvvs/parameters.h:1153
FP m_start_commuter_detection
Definition: ode_secirvvs/parameters.h:1155
FP get_end_commuter_detection() const
Definition: ode_secirvvs/parameters.h:691
static min_max_return_type< ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 >, ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 > >::type max(const ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 > &a, const ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 > &b)
Definition: ad.hpp:2596
int size(Comm comm)
Return the size of the given communicator.
Definition: miompi.cpp:75
A collection of classes to simplify handling of matrix shapes in meta programming.
Definition: models/abm/analyze_result.h:30
auto i
Definition: io.h:809
void log_warning(spdlog::string_view_t fmt, const Args &... args)
Definition: logging.h:112
auto success()
Create an object that is implicitly convertible to a succesful IOResult<void>.
Definition: io.h:359
void log_error(spdlog::string_view_t fmt, const Args &... args)
Definition: logging.h:100
boost::outcome_v2::unchecked< T, IOStatus > IOResult
Value-or-error type for operations that return a value but can fail.
Definition: io.h:353
Definition: io.h:94
The AgeGroup struct is used as a dynamically sized tag for all age dependent categories.
Definition: age_group.h:32
the contact patterns within the society are modelled using an UncertainContactMatrix
Definition: ode_secirvvs/parameters.h:160
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:162
UncertainContactMatrix< FP > Type
Definition: ode_secirvvs/parameters.h:161
static std::string name()
Definition: ode_secirvvs/parameters.h:166
the percentage of ICU patients per hospitalized patients in the SECIR model
Definition: ode_secirvvs/parameters.h:388
static std::string name()
Definition: ode_secirvvs/parameters.h:394
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:389
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:390
Total number of full vaccinations up to the given day.
Definition: ode_secirvvs/parameters.h:484
static std::string name()
Definition: ode_secirvvs/parameters.h:490
CustomIndexArray< FP, AgeGroup, SimulationDay > Type
Definition: ode_secirvvs/parameters.h:485
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:486
Total number of first vaccinations up to the given day.
Definition: ode_secirvvs/parameters.h:468
static std::string name()
Definition: ode_secirvvs/parameters.h:474
CustomIndexArray< FP, AgeGroup, SimulationDay > Type
Definition: ode_secirvvs/parameters.h:469
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:470
Time in days until second vaccine dose takes full effect.
Definition: ode_secirvvs/parameters.h:452
static std::string name()
Definition: ode_secirvvs/parameters.h:458
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:454
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:453
Time in days until first vaccine dose takes full effect.
Definition: ode_secirvvs/parameters.h:436
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:437
static std::string name()
Definition: ode_secirvvs/parameters.h:442
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:438
the percentage of dead patients per ICU patients in the SECIR model
Definition: ode_secirvvs/parameters.h:404
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:406
static std::string name()
Definition: ode_secirvvs/parameters.h:410
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:405
The delay with which DynamicNPIs are implemented and enforced after exceedance of threshold.
Definition: ode_secirvvs/parameters.h:192
static std::string name()
Definition: ode_secirvvs/parameters.h:198
UncertainValue< FP > Type
Definition: ode_secirvvs/parameters.h:193
static Type get_default(AgeGroup)
Definition: ode_secirvvs/parameters.h:194
the NPIs that are enforced if certain infection thresholds are exceeded.
Definition: ode_secirvvs/parameters.h:176
static std::string name()
Definition: ode_secirvvs/parameters.h:182
static Type get_default(AgeGroup)
Definition: ode_secirvvs/parameters.h:178
the icu capacity in the SECIR model
Definition: ode_secirvvs/parameters.h:96
static Type get_default(AgeGroup)
Definition: ode_secirvvs/parameters.h:98
UncertainValue< FP > Type
Definition: ode_secirvvs/parameters.h:97
static std::string name()
Definition: ode_secirvvs/parameters.h:102
Represents the relative infectiousness of a new variant.
Definition: ode_secirvvs/parameters.h:613
CustomIndexArray< FP, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:614
static std::string name()
Definition: ode_secirvvs/parameters.h:619
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:615
risk of infection from symptomatic cases increases as test and trace capacity is exceeded.
Definition: ode_secirvvs/parameters.h:356
static std::string name()
Definition: ode_secirvvs/parameters.h:362
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:357
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:358
the percentage of asymptomatic cases in the SECIR model
Definition: ode_secirvvs/parameters.h:324
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:326
static std::string name()
Definition: ode_secirvvs/parameters.h:330
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:325
Factor to reduce infection risk for persons with improved immunity.
Definition: ode_secirvvs/parameters.h:516
static std::string name()
Definition: ode_secirvvs/parameters.h:522
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:517
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:518
Factor to reduce infection risk for persons with partial immunity.
Definition: ode_secirvvs/parameters.h:500
static std::string name()
Definition: ode_secirvvs/parameters.h:506
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:502
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:501
Factor to reduce risk of hospitalization for persons with improved immunity.
Definition: ode_secirvvs/parameters.h:581
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:582
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:583
static std::string name()
Definition: ode_secirvvs/parameters.h:587
Factor to reduce risk of hospitalization for persons with partial immunity.
Definition: ode_secirvvs/parameters.h:565
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:567
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:566
static std::string name()
Definition: ode_secirvvs/parameters.h:571
Factor to reduce risk of developing symptoms for persons with improved immunity.
Definition: ode_secirvvs/parameters.h:548
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:550
static std::string name()
Definition: ode_secirvvs/parameters.h:554
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:549
Factor to reduce risk of developing symptoms for persons with partial immunity.
Definition: ode_secirvvs/parameters.h:532
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:533
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:534
static std::string name()
Definition: ode_secirvvs/parameters.h:538
Factor to reduce infectious time of persons with partial or improved immunity.
Definition: ode_secirvvs/parameters.h:597
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:599
static std::string name()
Definition: ode_secirvvs/parameters.h:603
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:598
the relative InfectedNoSymptoms infectability
Definition: ode_secirvvs/parameters.h:308
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:310
static std::string name()
Definition: ode_secirvvs/parameters.h:314
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:309
the risk of infection from symptomatic cases in the SECIR model
Definition: ode_secirvvs/parameters.h:340
static std::string name()
Definition: ode_secirvvs/parameters.h:346
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:341
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:342
the seasonality in the SECIR model the seasonality is given as (1+k*sin()) where the sine curve is be...
Definition: ode_secirvvs/parameters.h:80
UncertainValue< FP > Type
Definition: ode_secirvvs/parameters.h:81
static std::string name()
Definition: ode_secirvvs/parameters.h:86
static Type get_default(AgeGroup)
Definition: ode_secirvvs/parameters.h:82
the percentage of hospitalized patients per infected patients in the SECIR model
Definition: ode_secirvvs/parameters.h:372
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:373
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:374
static std::string name()
Definition: ode_secirvvs/parameters.h:378
the start day of a new variant in the SECIRVVS model The start day of the new variant defines in whic...
Definition: ode_secirvvs/parameters.h:62
static Type get_default(AgeGroup)
Definition: ode_secirvvs/parameters.h:64
FP Type
Definition: ode_secirvvs/parameters.h:63
static std::string name()
Definition: ode_secirvvs/parameters.h:68
the start day in the SECIRVVS model The start day defines in which season the simulation can be start...
Definition: ode_secirvvs/parameters.h:43
static std::string name()
Definition: ode_secirvvs/parameters.h:49
FP Type
Definition: ode_secirvvs/parameters.h:44
static Type get_default(AgeGroup)
Definition: ode_secirvvs/parameters.h:45
Multiplier for the test and trace capacity to determine when it is considered overloaded from cases w...
Definition: ode_secirvvs/parameters.h:128
static Type get_default(AgeGroup)
Definition: ode_secirvvs/parameters.h:130
static std::string name()
Definition: ode_secirvvs/parameters.h:134
UncertainValue< FP > Type
Definition: ode_secirvvs/parameters.h:129
Multiplier for the test and trace capacity to determine when it is considered overloaded by symptomat...
Definition: ode_secirvvs/parameters.h:144
UncertainValue< FP > Type
Definition: ode_secirvvs/parameters.h:145
static std::string name()
Definition: ode_secirvvs/parameters.h:150
static Type get_default(AgeGroup)
Definition: ode_secirvvs/parameters.h:146
capacity to test and trace contacts of infected for quarantine per day.
Definition: ode_secirvvs/parameters.h:112
static Type get_default(AgeGroup)
Definition: ode_secirvvs/parameters.h:114
static std::string name()
Definition: ode_secirvvs/parameters.h:118
UncertainValue< FP > Type
Definition: ode_secirvvs/parameters.h:113
the (mean) latent time in day unit
Definition: ode_secirvvs/parameters.h:208
static std::string name()
Definition: ode_secirvvs/parameters.h:214
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:209
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:210
the time people are treated by ICU before returning home in the SECIR model in day unit
Definition: ode_secirvvs/parameters.h:276
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:277
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:278
static std::string name()
Definition: ode_secirvvs/parameters.h:282
the (mean) time in day unit for asymptomatic cases that are infected but have not yet developed sympt...
Definition: ode_secirvvs/parameters.h:225
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:226
static std::string name()
Definition: ode_secirvvs/parameters.h:231
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:227
the time people are 'simply' hospitalized before returning home in the SECIR model in day unit
Definition: ode_secirvvs/parameters.h:259
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:260
static std::string name()
Definition: ode_secirvvs/parameters.h:265
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:261
the infectious time for symptomatic cases that are infected but who do not need to be hospitalized in...
Definition: ode_secirvvs/parameters.h:242
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:244
static std::string name()
Definition: ode_secirvvs/parameters.h:248
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:243
probability of getting infected from a contact
Definition: ode_secirvvs/parameters.h:292
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:294
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:293
static std::string name()
Definition: ode_secirvvs/parameters.h:298
Time in days between first and second vaccine dose.
Definition: ode_secirvvs/parameters.h:420
CustomIndexArray< UncertainValue< FP >, AgeGroup > Type
Definition: ode_secirvvs/parameters.h:421
static Type get_default(AgeGroup size)
Definition: ode_secirvvs/parameters.h:422
static std::string name()
Definition: ode_secirvvs/parameters.h:426