/// <summary> /// Species or observer time course for a given ID /// - Species also includes parameters with RHS /// - Observer also includes persistable parameters /// </summary> public VariableValues ValuesFor(int id) { var quantity = SimulationImports.GetSpeciesFromId(_simulation, id, out var success, out _); var variableType = VariableValues.VariableTypes.Species; if (!success) { //entity is not a species. Try observer quantity = SimulationImports.GetObserverFromId(_simulation, id, out success, out _); if (success) { variableType = VariableValues.VariableTypes.Observer; } } if (!success) { throw new OSPSuiteException($"{id} is not a valid species or observer entity id"); } SimulationImports.GetQuantityProperties(quantity, out var containerPath, out var name, out var entityId); VariableValues variableValues = new VariableValues(quantity, variableType, entityId, containerPath, name); return(variableValues); }
private void fillParameterAndSpeciesProperties() { SimulationImports.FillParameterProperties(_simulation, _allParameters, out var success, out var errorMessage); evaluateCppCallResult(success, errorMessage); SimulationImports.FillSpeciesProperties(_simulation, _allSpecies, out success, out errorMessage); evaluateCppCallResult(success, errorMessage); }
/// <summary> /// Load simulation from a SimModel-XML string /// </summary> public void LoadFromXMLString(string xmlString) { SimulationImports.LoadSimulationFromXMLString(_simulation, xmlString, out var success, out var errorMessage); evaluateCppCallResult(success, errorMessage); //initial filling of parameter and species properties (must be done between load and finalize) fillParameterAndSpeciesProperties(); }
public void RunSimulation() { SimulationImports.RunSimulation(_simulation, out var toleranceWasReduced, out var newAbsTol, out var newRelTol, out var success, out var errorMessage); evaluateCppCallResult(success, errorMessage); RunStatistics.ToleranceWasReduced = toleranceWasReduced; RunStatistics.UsedAbsoluteTolerance = newAbsTol; RunStatistics.UsedRelativeTolerance = newRelTol; fillSolverWarnings(); }
public Simulation() { _simulation = SimulationImports.CreateSimulation(); _allParameters = SimulationImports.CreateParameterInfoVector(); _variableParameters = new List <ParameterProperties>(); _allSpecies = SimulationImports.CreateSpeciesInfoVector(); _variableSpecies = new List <SpeciesProperties>(); _solverWarnings = new List <SolverWarning>(); Options = new SimulationOptions(_simulation); RunStatistics = new SimulationRunStatistics(_simulation); }
private void fillSolverWarnings() { var numberOfWarnings = SimulationImports.GetNumberOfSolverWarnings(_simulation); _solverWarnings.Clear(); if (numberOfWarnings == 0) { return; } var times = new double[numberOfWarnings]; var warnings = new string[numberOfWarnings]; SimulationImports.FillSolverWarnings(_simulation, numberOfWarnings, times, warnings, out var success, out var errorMessage); evaluateCppCallResult(success, errorMessage); for (var i = 0; i < numberOfWarnings; i++) { _solverWarnings.Add(new SolverWarning(times[i], warnings[i])); } }
public void ReleaseMemory() { SimulationImports.ReleaseSimulationMemory(_simulation, out var success, out var errorMessage); evaluateCppCallResult(success, errorMessage); }
/// <summary> /// Cancels current simulation run /// </summary> public void Cancel() { SimulationImports.CancelSimulationRun(_simulation); }
/// <summary> /// Finalize simulation (perform internal optimizations etc.) /// </summary> public void FinalizeSimulation() { SimulationImports.FinalizeSimulation(_simulation, out var success, out var errorMessage); evaluateCppCallResult(success, errorMessage); }
private void setOptions(Action action) { action(); SimulationImports.SetSimulationOptions(_simulation, _simulationOptions); }
public SimulationOptions(IntPtr simulation) { _simulation = simulation; //_simulationOptions = SimulationImports.GetSimulationOptions(_simulation); SimulationImports.FillSimulationOptions(_simulation, ref _simulationOptions); }