36#ifndef _OMS_SYSTEM_SC_H_
37#define _OMS_SYSTEM_SC_H_
41#include "OMSimulator/Types.h"
45#include <sundials/sundials_context.h>
46#include <sundials/sundials_logger.h>
47#include <cvode/cvode.h>
48#include <nvector/nvector_serial.h>
49#include <sunlinsol/sunlinsol_dense.h>
56 int cvode_rhs(sunrealtype t, N_Vector y, N_Vector ydot,
void* user_data);
58 int cvode_roots(sunrealtype t, N_Vector y, sunrealtype *gout,
void* user_data);
72 oms_status_enu_t
reset();
74 oms_status_enu_t
stepUntil(
double stopTime);
81 oms_status_enu_t
setSolver(oms_solver_enu_t solver) {
if (solver > oms_solver_sc_min && solver < oms_solver_sc_max) {
solverMethod=solver;
return oms_status_ok;}
return oms_status_error;}
95 std::vector<Component*>
fmus;
133 friend int oms::cvode_rhs(sunrealtype t, N_Vector y, N_Vector ydot,
void* user_data);
135 friend int oms::cvode_roots(sunrealtype t, N_Vector y, sunrealtype *gout,
void* user_data);
ComRef - component reference.
Definition ComRef.h:51
Definition DirectedGraph.h:71
std::unique_ptr< bool[]> callEventUpdate
Definition SystemSC.h:98
oms_status_enu_t importFromSSD_SimulationInformation(const pugi::xml_node &node, const std::string &sspVersion)
Definition SystemSC.cpp:228
oms_status_enu_t setSolverMethod(std::string)
Definition SystemSC.cpp:195
oms_status_enu_t doStepEuler()
Definition SystemSC.cpp:632
std::vector< double * > event_indicators
Definition SystemSC.h:107
bool algebraic
Definition SystemSC.h:110
std::string getSolverName() const
Definition SystemSC.cpp:182
oms_status_enu_t terminate()
Definition SystemSC.cpp:482
static System * NewSystem(const oms::ComRef &cref, Model *parentModel, System *parentSystem)
Definition SystemSC.cpp:164
oms_status_enu_t reset()
Definition SystemSC.cpp:548
oms_status_enu_t setSolver(oms_solver_enu_t solver)
Definition SystemSC.h:81
oms_status_enu_t exportToSSD_SimulationInformation(pugi::xml_node &node) const
Definition SystemSC.cpp:207
union oms::SystemSC::SolverData_t solverData
~SystemSC()
Definition SystemSC.cpp:160
std::vector< double * > event_indicators_prev
Definition SystemSC.h:108
std::vector< size_t > nStates
Definition SystemSC.h:101
std::vector< Component * > fmus
Definition SystemSC.h:95
std::vector< double * > states
Definition SystemSC.h:104
SystemSC(SystemSC const ©)
not implemented
SystemSC & operator=(SystemSC const ©)
not implemented
std::unique_ptr< bool[]> terminateSimulation
Definition SystemSC.h:99
oms_status_enu_t doStepCVODE()
Definition SystemSC.cpp:855
oms_status_enu_t initialize()
Definition SystemSC.cpp:278
oms_status_enu_t instantiate()
Definition SystemSC.cpp:255
std::vector< double * > states_nominal
Definition SystemSC.h:106
oms_status_enu_t updateInputs(DirectedGraph &graph)
Definition SystemSC.cpp:1046
oms_status_enu_t stepUntil(double stopTime)
Definition SystemSC.cpp:1020
std::vector< double * > states_der
Definition SystemSC.h:105
oms_status_enu_t doStep()
Definition SystemSC.cpp:617
std::vector< size_t > nEventIndicators
Definition SystemSC.h:102
ComRef cref
Definition System.h:232
oms_solver_enu_t solverMethod
Definition System.h:221
System * parentSystem
Definition System.h:235
Model * parentModel
Definition System.h:234
int cvode_rhs_algebraic(sunrealtype t, N_Vector y, N_Vector ydot, void *user_data)
Definition SystemSC.cpp:113
int cvode_rhs(sunrealtype t, N_Vector y, N_Vector ydot, void *user_data)
Definition SystemSC.cpp:65
int cvode_roots(sunrealtype t, N_Vector y, sunrealtype *gout, void *user_data)
Definition SystemSC.cpp:125
Definition SystemSC.h:117
SUNContext sunctx
Definition SystemSC.h:118
SUNMatrix J
Definition SystemSC.h:122
SUNLinearSolver linSol
Definition SystemSC.h:121
N_Vector y
Definition SystemSC.h:120
N_Vector abstol
Definition SystemSC.h:124
void * mem
Definition SystemSC.h:119
N_Vector liny
Definition SystemSC.h:123
Definition SystemSC.h:113
Definition SystemSC.h:128
SolverDataEuler_t euler
Definition SystemSC.h:129
SolverDataCVODE_t cvode
Definition SystemSC.h:130