コード例 #1
0
        public ActionResult Simulation(VGeneralProperties model)
        {
            if (_model == null)
            {
                return(RedirectToAction("Simulation"));
            }
            ViewBag.Title = SimulationPageTitle;
            lock (_model)
            {
                model.WindFarm = _model.WindFarm;
                ObjectMapperManager.DefaultInstance.GetMapper <VGeneralProperties, VGeneralProperties>().Map(model, _model);
            }
            var dWindFarm           = _ctx.DWindFarms.First(e => _model.WindFarm == e.Name);
            var turbines            = dWindFarm.DWindFarmTurbines.OrderBy(t => t.Number).Select(t => new decimal[] { t.Number, t.X, t.Y }).ToList();
            var turbinesCoordinates = new double[turbines.Count, 2];

            for (var index = 0; index < turbinesCoordinates.GetLength(0); index++)
            {
                var turbine = turbines[index];
                turbinesCoordinates[index, 0] = (double)(turbine[1]);
                turbinesCoordinates[index, 1] = (double)(turbine[2]);
            }

            var config = new WakeFarmControlR.WakeFarmControlConfig()
            {
                Turbines = turbinesCoordinates,
            };

            config.enablePowerDistribution = _model.EnablePowerDistribution;
            config.enableTurbineDynamics   = _model.EnableTurbineDynamics;
            config.powerRefInterpolation   = _model.PowerRefInterpolation;
            config.enableVaryingDemand     = _model.EnableVaryingDemand;

            config.SimParm.timeStep    = (double)_model.TimeStep;
            config.SimParm.tEnd        = (double)_model.StopTime;
            config.SimParm.ctrlUpdate  = (double)_model.ControlUpdateInterval;
            config.SimParm.powerUpdate = (double)_model.PowerUpdateInterval;
            config.InitialPowerDemand  = (double)_model.InitialPowerDemand;

            config.NREL5MW_MatFile = WebConfigurationManager.AppSettings["WakeFarmControlRNREL5MW"]; // @"c:\farmcontrol\NREL5MW_Runc.mat";
            config.Wind_MatFile    = WebConfigurationManager.AppSettings["WakeFarmControlRWind"];    // @"c:\farmcontrol\wind_Runc.mat";

            double[][]    simulationDataOut;
            List <string> simulationInformationMessages;

            _simulation                    = WakeFarmControlR.FarmControl.Simulation(config, out simulationDataOut, out simulationInformationMessages);
            _simulationTurbines            = turbines;
            _simulationTimeStep            = _model.TimeStep;
            _simulationDataOut             = simulationDataOut;
            _simulationInformationMessages = simulationInformationMessages;
            return(RedirectToAction("Results"));
        }
コード例 #2
0
        public ActionResult Simulation(VGeneralProperties model)
        {
            if (_model == null)
            {
                return RedirectToAction("Simulation");
            }
            ViewBag.Title = SimulationPageTitle;
            lock (_model)
            {
                model.WindFarm = _model.WindFarm;
                ObjectMapperManager.DefaultInstance.GetMapper<VGeneralProperties, VGeneralProperties>().Map(model, _model);
            }
            var dWindFarm = _ctx.DWindFarms.First(e => _model.WindFarm == e.Name);
            var turbines = dWindFarm.DWindFarmTurbines.OrderBy(t => t.Number).Select(t => new decimal[] { t.Number, t.X, t.Y }).ToList();
            var turbinesCoordinates = new double[turbines.Count, 2];
            for (var index = 0; index < turbinesCoordinates.GetLength(0); index++)
            {
                var turbine = turbines[index];
                turbinesCoordinates[index, 0] = (double)(turbine[1]);
                turbinesCoordinates[index, 1] = (double)(turbine[2]);
            }

            var config = new WakeFarmControlR.WakeFarmControlConfig()
            {
                Turbines = turbinesCoordinates,
            };
            config.enablePowerDistribution = _model.EnablePowerDistribution;
            config.enableTurbineDynamics = _model.EnableTurbineDynamics;
            config.powerRefInterpolation = _model.PowerRefInterpolation;
            config.enableVaryingDemand = _model.EnableVaryingDemand;

            config.SimParm.timeStep = (double)_model.TimeStep;
            config.SimParm.tEnd = (double)_model.StopTime;
            config.SimParm.ctrlUpdate = (double)_model.ControlUpdateInterval;
            config.SimParm.powerUpdate = (double)_model.PowerUpdateInterval;
            config.InitialPowerDemand = (double)_model.InitialPowerDemand;

            config.NREL5MW_MatFile = WebConfigurationManager.AppSettings["WakeFarmControlRNREL5MW"]; // @"c:\farmcontrol\NREL5MW_Runc.mat";
            config.Wind_MatFile = WebConfigurationManager.AppSettings["WakeFarmControlRWind"]; // @"c:\farmcontrol\wind_Runc.mat";

            double[][] simulationDataOut;
            List<string> simulationInformationMessages;
            _simulation = WakeFarmControlR.FarmControl.Simulation(config, out simulationDataOut, out simulationInformationMessages);
            _simulationTurbines = turbines;
            _simulationTimeStep = _model.TimeStep;
            _simulationDataOut = simulationDataOut;
            _simulationInformationMessages = simulationInformationMessages;
            return RedirectToAction("Results");
        }