コード例 #1
0
        /*
         * static void Compute()
         * {
         *  lock (_model)
         *  {
         *      double t = _model.StartTime;
         *      var turbines = _model.Turbines.Count;
         *      var res = new double[turbines];
         *
         *      while (t < _model.StopTime)
         *      {
         *          double sum = 0;
         *          for (int i = 0; i < turbines; i++)
         *          {
         *              var x = _model.Turbines[i];
         *              double val = (Math.PI/2)*x.rho*x.radius*x.radius*x.speed*x.speed*x.speed*x.Cp;
         *              res[i] = Math.Min(x.rated, val);
         *              sum += res[i];
         *          }
         *          for (int i = 0; i < turbines; i++)
         *          {
         *              var x = _model.Turbines[i];
         *              res[i] = Math.Max(0, Math.Min(x.rated, _model.Scale*res[i]/sum));
         *          }
         *          t = t + _model.TimeStep;
         *      }
         *  }
         * }
         */

        public JsonResult Run()
        {
            /*
             * if (_thread == null)
             * {
             *  _thread = new Thread(Compute);
             * }
             * _thread.Start();
             */

            process = _model.StartTime;
            var turbines = _model.Turbines.Count;
            var res      = new double[turbines];

            var randomDir = Guid.NewGuid().ToString();

            Session["WindFarmDir"] = randomDir;

            decimal delta = 0;

            while (process < _model.StopTime)
            {
                double sum = 0;
                for (var i = 0; i < turbines; i++)
                {
                    var t   = _model.Turbines[i];
                    var val = (Math.PI / 2) * t.rho * t.radius * t.radius * t.speed * t.speed * t.speed * t.Cp;
                    res[i] = Math.Min(t.rated, val);
                    sum   += res[i];
                }
                var wfc = new WindFarmControl();
                wfc.Time = delta * _model.TimeStep;
                delta   += 1;

                for (var i = 0; i < turbines; i++)
                {
                    var t = _model.Turbines[i];
                    wfc.Power = Math.Max(0, Math.Min(t.rated, _model.Scale * res[i] / sum));
                }
                process += _model.TimeStep;
            }

            return(Json("OK", JsonRequestBehavior.AllowGet));
        }
コード例 #2
0
        /*
        static void Compute()
        {
            lock (_model)
            {
                double t = _model.StartTime;
                var turbines = _model.Turbines.Count;
                var res = new double[turbines];

                while (t < _model.StopTime)
                {
                    double sum = 0;
                    for (int i = 0; i < turbines; i++)
                    {
                        var x = _model.Turbines[i];
                        double val = (Math.PI/2)*x.rho*x.radius*x.radius*x.speed*x.speed*x.speed*x.Cp;
                        res[i] = Math.Min(x.rated, val);
                        sum += res[i];
                    }
                    for (int i = 0; i < turbines; i++)
                    {
                        var x = _model.Turbines[i];
                        res[i] = Math.Max(0, Math.Min(x.rated, _model.Scale*res[i]/sum));
                    }
                    t = t + _model.TimeStep;
                }
            }
        }
         */

        public JsonResult Run()
        {
            /*
            if (_thread == null)
            {
                _thread = new Thread(Compute);
            }
            _thread.Start();
             */

            process = _model.StartTime;
            var turbines = _model.Turbines.Count;
            var res = new double[turbines];

            var randomDir = Guid.NewGuid().ToString();
            Session["WindFarmDir"] = randomDir;

            decimal delta = 0;
            while (process < _model.StopTime)
            {
                double sum = 0;
                for (var i = 0; i < turbines; i++)
                {
                    var t = _model.Turbines[i];
                    var val = (Math.PI/2)*t.rho*t.radius*t.radius*t.speed*t.speed*t.speed*t.Cp;
                    res[i] = Math.Min(t.rated, val);
                    sum += res[i];
                }
                var wfc = new WindFarmControl();
                wfc.Time = delta * _model.TimeStep;
                delta += 1;

                for (var i = 0; i < turbines; i++)
                {
                    var t = _model.Turbines[i];
                    wfc.Power = Math.Max(0, Math.Min(t.rated, _model.Scale * res[i] / sum));
                }
                process += _model.TimeStep;
            }

            return Json("OK", JsonRequestBehavior.AllowGet);
        }