/// <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); } } }
public SimulationsFactory(IMapper <Exporter> exporterMapper) { var temp = new CreateSimulationsForAllTemperaturesFactory(); CreateSimulationsForAllParameterSweepsAndTemperaturesFactory = new CreateSimulationsForAllParameterSweepsAndTemperaturesFactory(temp); CreateSimulationsForMonteCarloFactory = new CreateSimulationsForMonteCarloFactory(CreateSimulationsForAllParameterSweepsAndTemperaturesFactory, new ExportFactory(), exporterMapper); }