예제 #1
0
        /// <summary>
        /// Creates simulations.
        /// </summary>
        /// <param name="statement">Simulation statement.</param>
        /// <param name="context">Context.</param>
        /// <param name="createSimulation">Simulation factory.</param>
        public void Create(Control statement, ICircuitContext context, Func <string, Control, ICircuitContext, Simulation> createSimulation)
        {
            if (!IsMonteCarloEnabledForSimulation(statement, context))
            {
                var simulations = CreateSimulationsForAllParameterSweepsAndTemperaturesFactory.CreateSimulations(statement, context, createSimulation);
                foreach (var simulation in simulations)
                {
                    var stochasticDecorator = new EnableStochasticModelsSimulationDecorator(context);
                    stochasticDecorator.Decorate(simulation);

                    context.SimulationPreparations.Prepare(simulation);
                }
            }
            else
            {
                var simulations = CreateSimulationsForMonteCarloFactory.Create(statement, context, createSimulation);
                foreach (var simulation in simulations)
                {
                    var stochasticDecorator = new EnableStochasticModelsSimulationDecorator(context);
                    stochasticDecorator.Decorate(simulation);

                    context.SimulationPreparations.Prepare(simulation);
                }
            }
        }
예제 #2
0
        public SimulationsFactory(IMapper <Exporter> exporterMapper)
        {
            var temp = new CreateSimulationsForAllTemperaturesFactory();

            CreateSimulationsForAllParameterSweepsAndTemperaturesFactory = new CreateSimulationsForAllParameterSweepsAndTemperaturesFactory(temp);
            CreateSimulationsForMonteCarloFactory = new CreateSimulationsForMonteCarloFactory(CreateSimulationsForAllParameterSweepsAndTemperaturesFactory, new ExportFactory(), exporterMapper);
        }