/* * 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)); }
/* 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); }