Beispiel #1
0
        private void SetSimulationNamesInView()
        {
            // populate the simulation names in the view.
            IModel scopedParent = ScopingRules.FindScopedParentModel(summaryModel);

            if (scopedParent is Simulation parentSimulation)
            {
                if (scopedParent.Parent is Experiment)
                {
                    scopedParent = scopedParent.Parent;
                }
                else
                {
                    summaryView.SimulationDropDown.Values        = new string[] { parentSimulation.Name };
                    summaryView.SimulationDropDown.SelectedValue = parentSimulation.Name;
                    return;
                }
            }

            if (scopedParent is Experiment experiment)
            {
                string[] simulationNames = experiment.GenerateSimulationDescriptions().Select(s => s.Name).ToArray();
                summaryView.SimulationDropDown.Values = simulationNames;
                if (simulationNames != null && simulationNames.Count() > 0)
                {
                    summaryView.SimulationDropDown.SelectedValue = simulationNames.First();
                }
            }
            else
            {
                List <ISimulationDescriptionGenerator> simulations = summaryModel.FindAllInScope <ISimulationDescriptionGenerator>().Cast <ISimulationDescriptionGenerator>().ToList();
                simulations.RemoveAll(s => s is Simulation && (s as IModel).Parent is Experiment);
                List <string> simulationNames = simulations.SelectMany(m => m.GenerateSimulationDescriptions()).Select(m => m.Name).ToList();
                simulationNames.AddRange(summaryModel.FindAllInScope <Models.Optimisation.CroptimizR>().Select(x => x.Name));
                summaryView.SimulationDropDown.Values = simulationNames.ToArray();
                if (simulationNames != null && simulationNames.Count > 0)
                {
                    summaryView.SimulationDropDown.SelectedValue = simulationNames[0];
                }
            }
        }
Beispiel #2
0
 /// <summary>
 /// Locates and returns all models in scope.
 /// </summary>
 /// <param name="model">The reference model</param>
 /// <returns>The found models or an empty array if not found.</returns>
 public static List<IModel> FindAll(IModel model)
 {
     var simulation = Apsim.Parent(model, typeof(Simulation)) as Simulation;
     if (simulation == null || simulation.Scope == null)
     {
         ScopingRules scope = new ScopingRules();
         return scope.FindAll(model).ToList();
     }
     return simulation.Scope.FindAll(model).ToList();
 }
Beispiel #3
0
 /// <summary>Constructor</summary>
 public Simulation()
 {
     locater = new Locater();
     scope = new ScopingRules();
 }
Beispiel #4
0
 /// <summary>Connect all links and events in simulation</summary>
 public void ConnectLinksAndEvents()
 {
     scope = new ScopingRules();
     events = new Events(this);
     events.ConnectEvents();
     links = new Core.Links();
     links.Resolve(this);
 }