public Gumel2004_Export( IGumel2004_Context Gumel2004_Context) { this.Log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); this.Gumel2004_Context = Gumel2004_Context; this.Gumel2004_Solution = new C19M.M.C.A.Gumel2004.Classes.Solutions.Gumel2004_Solution(); }
public void Solve( IGumel2004_Context Gumel2004_Context) { IGumel2004_Model Gumel2004_Model = new C19M.M.C.A.Gumel2004.Classes.Models.Gumel2004_Model( Gumel2004_Context); MathNet.Numerics.LinearAlgebra.Vector <double>[] RungeKuttaResults = MathNet.Numerics.OdeSolvers.RungeKutta.FourthOrder( MathNet.Numerics.LinearAlgebra.Vector <double> .Build.Dense(new[] { (double)Gumel2004_Model.E.InitialValue.Value.Value, (double)Gumel2004_Model.I.InitialValue.Value.Value, (double)Gumel2004_Model.J.InitialValue.Value.Value, (double)Gumel2004_Model.Q.InitialValue.Value.Value, (double)Gumel2004_Model.R.InitialValue.Value.Value, (double)Gumel2004_Model.S.InitialValue.Value.Value }), Gumel2004_Model.t.NumberDaysAfterStartDate(Gumel2004_Model.t.StartDate).Value.Value, Gumel2004_Model.t.NumberDaysAfterStartDate(Gumel2004_Model.t.EndDate).Value.Value, Gumel2004_Model.t.NumberDaysAfterStartDate(Gumel2004_Model.t.EndDate).Value.Value - Gumel2004_Model.t.NumberDaysAfterStartDate(Gumel2004_Model.t.StartDate).Value.Value + 1, this.f( Gumel2004_Model.t, Gumel2004_Model.d_1, Gumel2004_Model.d_2, Gumel2004_Model.p, Gumel2004_Model.β, Gumel2004_Model.γ_1, Gumel2004_Model.γ_2, Gumel2004_Model.ε_E, Gumel2004_Model.ε_J, Gumel2004_Model.ε_Q, Gumel2004_Model.κ_1, Gumel2004_Model.κ_2, Gumel2004_Model.μ, Gumel2004_Model.Π, Gumel2004_Model.σ_1, Gumel2004_Model.σ_2, Gumel2004_Model.E, Gumel2004_Model.I, Gumel2004_Model.J, Gumel2004_Model.Q, Gumel2004_Model.R, Gumel2004_Model.S)); // E this.E = new C19M.M.C.A.Gumel2004.Classes.Calculations.DayAsymptomaticIndividuals.E_Calculation().Calculate( Gumel2004_Model.t, RungeKuttaResults); // I this.I = new C19M.M.C.A.Gumel2004.Classes.Calculations.DaySymptomaticIndividuals.I_Calculation().Calculate( Gumel2004_Model.t, RungeKuttaResults); // J this.J = new C19M.M.C.A.Gumel2004.Classes.Calculations.DayIsolatedIndividuals.J_Calculation().Calculate( Gumel2004_Model.t, RungeKuttaResults); // Q this.Q = new C19M.M.C.A.Gumel2004.Classes.Calculations.DayQuarantinedIndividuals.Q_Calculation().Calculate( Gumel2004_Model.t, RungeKuttaResults); // R this.R = new C19M.M.C.A.Gumel2004.Classes.Calculations.DayRecoveredIndividuals.R_Calculation().Calculate( Gumel2004_Model.t, RungeKuttaResults); // S this.S = new C19M.M.C.A.Gumel2004.Classes.Calculations.DaySusceptibleIndividuals.S_Calculation().Calculate( Gumel2004_Model.t, RungeKuttaResults); // DayDiseaseInducedDeaths this.DayDiseaseInducedDeaths = new C19M.M.C.A.Gumel2004.Classes.Calculations.DayDiseaseInducedDeaths.DayDiseaseInducedDeaths_Calculation().Calculate( Gumel2004_Model.t, Gumel2004_Model.d_1, Gumel2004_Model.d_2, this.I, this.J); // DayProbableCases this.DayProbableCases = new C19M.M.C.A.Gumel2004.Classes.Calculations.DayProbableCases.DayProbableCases_Calculation().Calculate( Gumel2004_Model.t, this.I, this.J, this.Q, this.R); // DayCumulativeDiseaseInducedDeaths this.DayCumulativeDiseaseInducedDeaths = new C19M.M.C.A.Gumel2004.Classes.Calculations.DayCumulativeDiseaseInducedDeaths.DayCumulativeDiseaseInducedDeaths_Calculation().Calculate( Gumel2004_Model.t, this.DayDiseaseInducedDeaths); // DayCumulativeProbableCases this.DayCumulativeProbableCases = new C19M.M.C.A.Gumel2004.Classes.Calculations.DayCumulativeProbableCases.DayCumulativeProbableCases_Calculation().Calculate( Gumel2004_Model.t, this.DayProbableCases); }
public Gumel2004_Model( IGumel2004_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_1 this.d_1 = new C19M.M.C.A.Gumel2004.Classes.Parameters.DiseaseInducedDeathRateSymptomaticIndividuals.d( context.DiseaseInducedDeathRateSymptomaticIndividuals); // d_2 this.d_2 = new C19M.M.C.A.Gumel2004.Classes.Parameters.DiseaseInducedDeathRateIsolatedIndividuals.d( context.DiseaseInducedDeathRateIsolatedIndividuals); // p this.p = new p( context.RecruitmentRateAsymptomaticIndividuals); // β this.β = new β( context.BasicTransmissionCoefficient); // γ_1 this.γ_1 = new C19M.M.C.A.Gumel2004.Classes.Parameters.QuarantineRateAsymptomaticIndividuals.γ( context.QuarantineRateAsymptomaticIndividuals); // γ_2 this.γ_2 = new C19M.M.C.A.Gumel2004.Classes.Parameters.IsolationRateSymptomaticIndividuals.γ( context.IsolationRateSymptomaticIndividuals); // ε_E this.ε_E = new C19M.M.C.A.Gumel2004.Classes.Parameters.TransmissionCoefficientModificationFactorAsymptomaticIndividuals.ε( context.TransmissionCoefficientModificationFactorAsymptomaticIndividuals); // ε_J this.ε_J = new C19M.M.C.A.Gumel2004.Classes.Parameters.TransmissionCoefficientModificationFactorIsolatedIndividuals.ε( context.TransmissionCoefficientModificationFactorIsolatedIndividuals); // ε_Q this.ε_Q = new C19M.M.C.A.Gumel2004.Classes.Parameters.TransmissionCoefficientModificationFactorQuarantinedIndividuals.ε( context.TransmissionCoefficientModificationFactorQuarantinedIndividuals); // κ_1 this.κ_1 = new C19M.M.C.A.Gumel2004.Classes.Parameters.DevelopmentClinicalSymptomsRateAsymptomaticIndividuals.κ( context.DevelopmentClinicalSymptomsRateAsymptomaticIndividuals); // κ_2 this.κ_2 = new C19M.M.C.A.Gumel2004.Classes.Parameters.DevelopmentClinicalSymptomsRateQuarantinedIndividuals.κ( context.DevelopmentClinicalSymptomsRateQuarantinedIndividuals); // μ this.μ = new μ( context.NaturalDeathRate); // Π this.Π = new Π( context.NetInflowRateSusceptibleIndividuals); // σ_1 this.σ_1 = new C19M.M.C.A.Gumel2004.Classes.Parameters.RecoveryRateSymptomaticIndividuals.σ( context.RecoveryRateSymptomaticIndividuals); // σ_2 this.σ_2 = new C19M.M.C.A.Gumel2004.Classes.Parameters.RecoveryRateIsolatedIndividuals.σ( context.RecoveryRateIsolatedIndividuals); // Variables // E(t) this.E = new C19M.M.C.A.Gumel2004.Classes.Variables.AsymptomaticIndividuals.E( context.InitialValueAsymptomaticIndividuals); // I(t) this.I = new C19M.M.C.A.Gumel2004.Classes.Variables.SymptomaticIndividuals.I( context.InitialValueSymptomaticIndividuals); // J(t) this.J = new C19M.M.C.A.Gumel2004.Classes.Variables.IsolatedIndividuals.J( context.InitialValueIsolatedIndividuals); // N(t) this.N = new C19M.M.C.A.Gumel2004.Classes.Variables.TotalPopulationSize.N( new FhirDecimal( context.InitialValueAsymptomaticIndividuals.Value.Value // E(0) + context.InitialValueSymptomaticIndividuals.Value.Value // I(0) + context.InitialValueIsolatedIndividuals.Value.Value // J(0) + context.InitialValueQuarantinedIndividuals.Value.Value // Q(0) + context.InitialValueRecoveredIndividuals.Value.Value // R(0) + context.InitialValueSusceptibleIndividuals.Value.Value)); // S(0) // Q(t) this.Q = new C19M.M.C.A.Gumel2004.Classes.Variables.QuarantinedIndividuals.Q( context.InitialValueQuarantinedIndividuals); // R(t) this.R = new C19M.M.C.A.Gumel2004.Classes.Variables.RecoveredIndividuals.R( context.InitialValueRecoveredIndividuals); // S(t) this.S = new C19M.M.C.A.Gumel2004.Classes.Variables.SusceptibleIndividuals.S( context.InitialValueSusceptibleIndividuals); }