Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        /// <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();
        }
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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]));
            }
        }
Exemplo n.º 7
0
 public void ReleaseMemory()
 {
     SimulationImports.ReleaseSimulationMemory(_simulation, out var success, out var errorMessage);
     evaluateCppCallResult(success, errorMessage);
 }
Exemplo n.º 8
0
 /// <summary>
 /// Cancels current simulation run
 /// </summary>
 public void Cancel()
 {
     SimulationImports.CancelSimulationRun(_simulation);
 }
Exemplo n.º 9
0
 /// <summary>
 /// Finalize simulation (perform internal optimizations etc.)
 /// </summary>
 public void FinalizeSimulation()
 {
     SimulationImports.FinalizeSimulation(_simulation, out var success, out var errorMessage);
     evaluateCppCallResult(success, errorMessage);
 }
Exemplo n.º 10
0
 private void setOptions(Action action)
 {
     action();
     SimulationImports.SetSimulationOptions(_simulation, _simulationOptions);
 }
Exemplo n.º 11
0
 public SimulationOptions(IntPtr simulation)
 {
     _simulation = simulation;
     //_simulationOptions = SimulationImports.GetSimulationOptions(_simulation);
     SimulationImports.FillSimulationOptions(_simulation, ref _simulationOptions);
 }