Exemple #1
0
        public void Run(Clock clock, IImpactCardiovascularRespiratoryState state, IDimensions dimensions)
        {
            var s = state;
            var t = clock.Current;

            if (clock.IsFirstTimestep)
            {
            }
            else
            {
                foreach (var r in dimensions.GetValues <Region>())
                {
                    s.basecardvasc[t, r] = s.cardvasc90[r] + s.cvlin * (s.plus[t, r] - s.plus90[r]);
                    if (s.basecardvasc[t, r] > 1.0)
                    {
                        s.basecardvasc[t, r] = 1.0;
                    }

                    s.baseresp[t, r] = s.resp90[r] + s.rlin * (s.plus[t, r] - s.plus90[r]);
                    if (s.baseresp[t, r] > 1.0)
                    {
                        s.baseresp[t, r] = 1.0;
                    }

                    s.cardheat[t, r] = (s.chplbm[r] * s.plus[t, r] + s.chmlbm[r] * (1.0 - s.plus[t, r])) * s.temp[t, r] +
                                       (s.chpqbm[r] * s.plus[t, r] + s.chmqbm[r] * (1.0 - s.plus[t, r])) * Math.Pow(s.temp[t, r], 2);
                    s.cardheat[t, r] = s.cardheat[t, r] * s.urbpop[t, r] * s.population[t, r] * 10;
                    if (s.cardheat[t, r] > 1000.0 * s.maxcardvasc * s.basecardvasc[t, r] * s.urbpop[t, r] * s.population[t, r])
                    {
                        s.cardheat[t, r] = 1000 * s.maxcardvasc * s.basecardvasc[t, r] * s.urbpop[t, r] * s.population[t, r];
                    }
                    if (s.cardheat[t, r] < 0.0)
                    {
                        s.cardheat[t, r] = 0;
                    }

                    s.resp[t, r] = s.rlbm[r] * s.temp[t, r] + s.rqbm[r] * Math.Pow(s.temp[t, r], 2);
                    s.resp[t, r] = s.resp[t, r] * s.urbpop[t, r] * s.population[t, r] * 10;
                    if (s.resp[t, r] > 1000 * s.maxcardvasc * s.baseresp[t, r] * s.urbpop[t, r] * s.population[t, r])
                    {
                        s.resp[t, r] = 1000 * s.maxcardvasc * s.baseresp[t, r] * s.urbpop[t, r] * s.population[t, r];
                    }
                    if (s.resp[t, r] < 0)
                    {
                        s.resp[t, r] = 0;
                    }

                    s.cardcold[t, r] = (s.ccplbm[r] * s.plus[t, r] + s.ccmlbm[r] * (1.0 - s.plus[t, r])) * s.temp[t, r] +
                                       (s.ccpqbm[r] * s.plus[t, r] + s.ccmqbm[r] * (1.0 - s.plus[t, r])) * Math.Pow(s.temp[t, r], 2);
                    s.cardcold[t, r] = s.cardcold[t, r] * s.population[t, r] * 10;
                    if (s.cardcold[t, r] < -1000 * s.maxcardvasc * s.basecardvasc[t, r] * s.population[t, r])
                    {
                        s.cardcold[t, r] = -1000 * s.maxcardvasc * s.basecardvasc[t, r] * s.population[t, r];
                    }
                    if (s.cardcold[t, r] > 0)
                    {
                        s.cardcold[t, r] = 0;
                    }
                }
            }
        }
        public void Run(Clock clock, IImpactCardiovascularRespiratoryState state, IDimensions dimensions)
        {
            var s = state;
            var t = clock.Current;

            if (clock.IsFirstTimestep)
            {

            }
            else
            {
                foreach (var r in dimensions.GetValues<Region>())
                {
                    s.basecardvasc[t, r] = s.cardvasc90[r] + s.cvlin * (s.plus[t, r] - s.plus90[r]);
                    if (s.basecardvasc[t, r] > 1.0)
                        s.basecardvasc[t, r] = 1.0;

                    s.baseresp[t, r] = s.resp90[r] + s.rlin * (s.plus[t, r] - s.plus90[r]);
                    if (s.baseresp[t, r] > 1.0)
                        s.baseresp[t, r] = 1.0;

                    s.cardheat[t, r] = (s.chplbm[r] * s.plus[t, r] + s.chmlbm[r] * (1.0 - s.plus[t, r])) * s.temp[t, r] +
                               (s.chpqbm[r] * s.plus[t, r] + s.chmqbm[r] * (1.0 - s.plus[t, r])) * Math.Pow(s.temp[t, r], 2);
                    s.cardheat[t, r] = s.cardheat[t, r] * s.urbpop[t, r] * s.population[t, r] * 10;
                    if (s.cardheat[t, r] > 1000.0 * s.maxcardvasc * s.basecardvasc[t, r] * s.urbpop[t, r] * s.population[t, r])
                        s.cardheat[t, r] = 1000 * s.maxcardvasc * s.basecardvasc[t, r] * s.urbpop[t, r] * s.population[t, r];
                    if (s.cardheat[t, r] < 0.0)
                        s.cardheat[t, r] = 0;

                    s.resp[t, r] = s.rlbm[r] * s.temp[t, r] + s.rqbm[r] * Math.Pow(s.temp[t, r], 2);
                    s.resp[t, r] = s.resp[t, r] * s.urbpop[t, r] * s.population[t, r] * 10;
                    if (s.resp[t, r] > 1000 * s.maxcardvasc * s.baseresp[t, r] * s.urbpop[t, r] * s.population[t, r])
                        s.resp[t, r] = 1000 * s.maxcardvasc * s.baseresp[t, r] * s.urbpop[t, r] * s.population[t, r];
                    if (s.resp[t, r] < 0)
                        s.resp[t, r] = 0;

                    s.cardcold[t, r] = (s.ccplbm[r] * s.plus[t, r] + s.ccmlbm[r] * (1.0 - s.plus[t, r])) * s.temp[t, r] +
                               (s.ccpqbm[r] * s.plus[t, r] + s.ccmqbm[r] * (1.0 - s.plus[t, r])) * Math.Pow(s.temp[t, r], 2);
                    s.cardcold[t, r] = s.cardcold[t, r] * s.population[t, r] * 10;
                    if (s.cardcold[t, r] < -1000 * s.maxcardvasc * s.basecardvasc[t, r] * s.population[t, r])
                        s.cardcold[t, r] = -1000 * s.maxcardvasc * s.basecardvasc[t, r] * s.population[t, r];
                    if (s.cardcold[t, r] > 0)
                        s.cardcold[t, r] = 0;
                }
            }
        }