コード例 #1
0
        public void Solve(
            IGumel2006_Context Gumel2006_Context)
        {
            IEpidemicOutbreak_Model epidemicOutbreak_Model = new C19M.M.C.A.Gumel2006.Classes.Models.EpidemicOutbreak_Model(
                Gumel2006_Context);

            MathNet.Numerics.LinearAlgebra.Vector <double>[] RungeKuttaResults =
                MathNet.Numerics.OdeSolvers.RungeKutta.FourthOrder(
                    MathNet.Numerics.LinearAlgebra.Vector <double> .Build.Dense(new[] {
                (double)epidemicOutbreak_Model.E.InitialValue.Value.Value,
                (double)epidemicOutbreak_Model.I.InitialValue.Value.Value,
                (double)epidemicOutbreak_Model.R.InitialValue.Value.Value,
                (double)epidemicOutbreak_Model.S.InitialValue.Value.Value,
                (double)epidemicOutbreak_Model.V.InitialValue.Value.Value,
            }),
                    epidemicOutbreak_Model.t.NumberDaysAfterStartDate(epidemicOutbreak_Model.t.StartDate).Value.Value,
                    epidemicOutbreak_Model.t.NumberDaysAfterStartDate(epidemicOutbreak_Model.t.EndDate).Value.Value,
                    epidemicOutbreak_Model.t.NumberDaysAfterStartDate(epidemicOutbreak_Model.t.EndDate).Value.Value - epidemicOutbreak_Model.t.NumberDaysAfterStartDate(epidemicOutbreak_Model.t.StartDate).Value.Value + 1,
                    this.f(
                        epidemicOutbreak_Model.N,
                        epidemicOutbreak_Model.p,
                        epidemicOutbreak_Model.β,
                        epidemicOutbreak_Model.γ,
                        epidemicOutbreak_Model.δ,
                        epidemicOutbreak_Model.ε,
                        epidemicOutbreak_Model.μ,
                        epidemicOutbreak_Model.τ,
                        epidemicOutbreak_Model.E,
                        epidemicOutbreak_Model.I,
                        epidemicOutbreak_Model.R,
                        epidemicOutbreak_Model.S,
                        epidemicOutbreak_Model.V));

            // E
            this.E = new C19M.M.C.A.Gumel2006.Classes.Calculations.DayLatentIndividuals.E_Calculation().Calculate(
                epidemicOutbreak_Model.t,
                RungeKuttaResults);

            // I
            this.I = new C19M.M.C.A.Gumel2006.Classes.Calculations.DayInfectedIndividuals.I_Calculation().Calculate(
                epidemicOutbreak_Model.t,
                RungeKuttaResults);

            // R
            this.R = new C19M.M.C.A.Gumel2006.Classes.Calculations.DayTreatedIndividuals.R_Calculation().Calculate(
                epidemicOutbreak_Model.t,
                RungeKuttaResults);

            // S
            this.S = new C19M.M.C.A.Gumel2006.Classes.Calculations.DaySusceptibleIndividuals.S_Calculation().Calculate(
                epidemicOutbreak_Model.t,
                RungeKuttaResults);

            // V
            this.V = new C19M.M.C.A.Gumel2006.Classes.Calculations.DayVaccinatedIndividuals.V_Calculation().Calculate(
                epidemicOutbreak_Model.t,
                RungeKuttaResults);
        }
コード例 #2
0
        public EpidemicOutbreak_Export(
            IGumel2006_Context Gumel2006_Context)
        {
            this.Log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

            this.Gumel2006_Context = Gumel2006_Context;

            this.EpidemicOutbreak_Solution = new C19M.M.C.A.Gumel2006.Classes.Solutions.EpidemicOutbreak_Solution();
        }
        public RescaledDiseaseTransmission_Export(
            IGumel2006_Context Gumel2006_Context)
        {
            this.Log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

            this.Gumel2006_Context = Gumel2006_Context;

            this.RescaledDiseaseTransmission_Solution = new C19M.M.C.A.Gumel2006.Classes.Solutions.RescaledDiseaseTransmission_Solution();
        }
コード例 #4
0
        public EpidemicOutbreak_Model(
            IGumel2006_Context context)
        {
            this.Log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

            // Indices

            // t
            this.t = new Classes.Indices.t(
                context.EndDate,
                context.NumberDaysAfterStartDate,
                context.StartDate);

            // Parameters

            // N
            this.N = new C19M.M.C.A.Gumel2006.Classes.Parameters.Rescaled.N(
                context.NaturalMortalityRate,
                context.RecruitmentRateSusceptibleHumans);

            // p
            this.p = new C19M.M.C.A.Gumel2006.Classes.Parameters.Rescaled.p(
                context.NaturalMortalityRate,
                context.VaccinationCoverageRate);

            // β
            this.β = new C19M.M.C.A.Gumel2006.Classes.Parameters.Rescaled.β(
                context.DiseaseInducedMortalityRate,
                context.EffectiveContactRate,
                context.RecoveryRate,
                context.NaturalMortalityRate);

            // γ
            this.γ = new C19M.M.C.A.Gumel2006.Classes.Parameters.Rescaled.γ(
                context.DiseaseInducedMortalityRate,
                context.DevelopmentClinicalSymptomsRate,
                context.RecoveryRate,
                context.NaturalMortalityRate);

            // δ
            this.δ = new C19M.M.C.A.Gumel2006.Classes.Parameters.RecoveryRate.δ(
                context.RecoveryRate);

            // ε
            this.ε = new C19M.M.C.A.Gumel2006.Classes.Parameters.Rescaled.ε(
                new FhirDecimal(0m));

            // μ
            this.μ = new C19M.M.C.A.Gumel2006.Classes.Parameters.NaturalMortalityRate.μ(
                context.NaturalMortalityRate);

            // τ
            this.τ = new C19M.M.C.A.Gumel2006.Classes.Parameters.VaccineEfficacy.τ(
                context.VaccineEfficacy);

            // Variables

            // E(t)
            this.E = new C19M.M.C.A.Gumel2006.Classes.Variables.LatentIndividuals.E(
                context.InitialValueLatentIndividuals);

            // I(t)
            this.I = new C19M.M.C.A.Gumel2006.Classes.Variables.InfectedIndividuals.I(
                context.InitialValueInfectedIndividuals);

            // R(t)
            this.R = new C19M.M.C.A.Gumel2006.Classes.Variables.TreatedIndividuals.R(
                context.InitialValueTreatedIndividuals);

            // S(t)
            this.S = new C19M.M.C.A.Gumel2006.Classes.Variables.SusceptibleIndividuals.S(
                context.InitialValueSusceptibleIndividuals);

            // V(t)
            this.V = new C19M.M.C.A.Gumel2006.Classes.Variables.VaccinatedIndividuals.V(
                context.InitialValueVaccinatedIndividuals);
        }
コード例 #5
0
        public DiseaseTransmission_Model(
            IGumel2006_Context context)
        {
            this.Log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

            // Indices

            // t
            this.t = new Classes.Indices.t(
                context.EndDate,
                context.NumberDaysAfterStartDate,
                context.StartDate);

            // Parameters

            // d
            this.d = new C19M.M.C.A.Gumel2006.Classes.Parameters.DiseaseInducedMortalityRate.d(
                context.DiseaseInducedMortalityRate);

            // α
            this.α = new C19M.M.C.A.Gumel2006.Classes.Parameters.DevelopmentClinicalSymptomsRate.α(
                context.DevelopmentClinicalSymptomsRate);

            // β
            this.β = new C19M.M.C.A.Gumel2006.Classes.Parameters.EffectiveContactRate.β(
                context.EffectiveContactRate);

            // δ
            this.δ = new C19M.M.C.A.Gumel2006.Classes.Parameters.RecoveryRate.δ(
                context.RecoveryRate);

            // μ
            this.μ = new C19M.M.C.A.Gumel2006.Classes.Parameters.NaturalMortalityRate.μ(
                context.NaturalMortalityRate);

            // ξ
            this.ξ = new C19M.M.C.A.Gumel2006.Classes.Parameters.VaccinationCoverageRate.ξ(
                context.VaccinationCoverageRate);

            // Π
            this.Π = new C19M.M.C.A.Gumel2006.Classes.Parameters.RecruitmentRateSusceptibleHumans.Π(
                context.RecruitmentRateSusceptibleHumans);

            // τ
            this.τ = new C19M.M.C.A.Gumel2006.Classes.Parameters.VaccineEfficacy.τ(
                context.VaccineEfficacy);

            // Variables

            // E(t)
            this.E = new C19M.M.C.A.Gumel2006.Classes.Variables.LatentIndividuals.E(
                context.InitialValueLatentIndividuals);

            // I(t)
            this.I = new C19M.M.C.A.Gumel2006.Classes.Variables.InfectedIndividuals.I(
                context.InitialValueInfectedIndividuals);

            // R(t)
            this.R = new C19M.M.C.A.Gumel2006.Classes.Variables.TreatedIndividuals.R(
                context.InitialValueTreatedIndividuals);

            // S(t)
            this.S = new C19M.M.C.A.Gumel2006.Classes.Variables.SusceptibleIndividuals.S(
                context.InitialValueSusceptibleIndividuals);

            // V(t)
            this.V = new C19M.M.C.A.Gumel2006.Classes.Variables.VaccinatedIndividuals.V(
                context.InitialValueVaccinatedIndividuals);
        }
コード例 #6
0
        public void Solve(
            IGumel2006_Context Gumel2006_Context)
        {
            IDiseaseTransmission_Model diseaseTransmission_Model = new C19M.M.C.A.Gumel2006.Classes.Models.DiseaseTransmission_Model(
                Gumel2006_Context);

            MathNet.Numerics.LinearAlgebra.Vector <double>[] RungeKuttaResults =
                MathNet.Numerics.OdeSolvers.RungeKutta.FourthOrder(
                    MathNet.Numerics.LinearAlgebra.Vector <double> .Build.Dense(new[] {
                (double)diseaseTransmission_Model.E.InitialValue.Value.Value,
                (double)diseaseTransmission_Model.I.InitialValue.Value.Value,
                (double)diseaseTransmission_Model.R.InitialValue.Value.Value,
                (double)diseaseTransmission_Model.S.InitialValue.Value.Value,
                (double)diseaseTransmission_Model.V.InitialValue.Value.Value,
            }),
                    diseaseTransmission_Model.t.NumberDaysAfterStartDate(diseaseTransmission_Model.t.StartDate).Value.Value,
                    diseaseTransmission_Model.t.NumberDaysAfterStartDate(diseaseTransmission_Model.t.EndDate).Value.Value,
                    diseaseTransmission_Model.t.NumberDaysAfterStartDate(diseaseTransmission_Model.t.EndDate).Value.Value - diseaseTransmission_Model.t.NumberDaysAfterStartDate(diseaseTransmission_Model.t.StartDate).Value.Value + 1,
                    this.f(
                        diseaseTransmission_Model.d,
                        diseaseTransmission_Model.α,
                        diseaseTransmission_Model.β,
                        diseaseTransmission_Model.δ,
                        diseaseTransmission_Model.μ,
                        diseaseTransmission_Model.ξ,
                        diseaseTransmission_Model.Π,
                        diseaseTransmission_Model.τ,
                        diseaseTransmission_Model.E,
                        diseaseTransmission_Model.I,
                        diseaseTransmission_Model.R,
                        diseaseTransmission_Model.S,
                        diseaseTransmission_Model.V));

            // E
            this.E = new C19M.M.C.A.Gumel2006.Classes.Calculations.DayLatentIndividuals.E_Calculation().Calculate(
                diseaseTransmission_Model.t,
                RungeKuttaResults);

            // I
            this.I = new C19M.M.C.A.Gumel2006.Classes.Calculations.DayInfectedIndividuals.I_Calculation().Calculate(
                diseaseTransmission_Model.t,
                RungeKuttaResults);

            // R
            this.R = new C19M.M.C.A.Gumel2006.Classes.Calculations.DayTreatedIndividuals.R_Calculation().Calculate(
                diseaseTransmission_Model.t,
                RungeKuttaResults);

            // S
            this.S = new C19M.M.C.A.Gumel2006.Classes.Calculations.DaySusceptibleIndividuals.S_Calculation().Calculate(
                diseaseTransmission_Model.t,
                RungeKuttaResults);

            // V
            this.V = new C19M.M.C.A.Gumel2006.Classes.Calculations.DayVaccinatedIndividuals.V_Calculation().Calculate(
                diseaseTransmission_Model.t,
                RungeKuttaResults);

            // DayDiseaseInducedDeaths
            this.DayDiseaseInducedDeaths = new C19M.M.C.A.Gumel2006.Classes.Calculations.DayDiseaseInducedDeaths.DayDiseaseInducedDeaths_Calculation().Calculate(
                diseaseTransmission_Model.t,
                diseaseTransmission_Model.d,
                this.I);

            // DayProbableCases
            this.DayProbableCases = new C19M.M.C.A.Gumel2006.Classes.Calculations.DayProbableCases.DayProbableCases_Calculation().Calculate(
                diseaseTransmission_Model.t,
                this.E,
                this.I,
                this.R);

            // DayCumulativeDiseaseInducedDeaths
            this.DayCumulativeDiseaseInducedDeaths = new C19M.M.C.A.Gumel2006.Classes.Calculations.DayCumulativeDiseaseInducedDeaths.DayCumulativeDiseaseInducedDeaths_Calculation().Calculate(
                diseaseTransmission_Model.t,
                this.DayDiseaseInducedDeaths);

            // DayCumulativeProbableCases
            this.DayCumulativeProbableCases = new C19M.M.C.A.Gumel2006.Classes.Calculations.DayCumulativeProbableCases.DayCumulativeProbableCases_Calculation().Calculate(
                diseaseTransmission_Model.t,
                this.DayProbableCases);
        }