32 #ifndef _OMS_ALGLOOP_H_ 33 #define _OMS_ALGLOOP_H_ 40 #include <kinsol/kinsol.h> 41 #include <nvector/nvector_serial.h> 42 #include <sunlinsol/sunlinsol_dense.h> 60 static KinsolSolver* NewKinsolSolver(
const int algLoopNum,
const unsigned int size,
double absoluteTolerance,
const bool useDirectionalDerivative);
84 static int nlsKinsolJac(N_Vector u, N_Vector fu, SUNMatrix J,
void *user_data, N_Vector tmp1, N_Vector tmp2);
85 static int nlsKinsolResiduals(N_Vector u, N_Vector fval,
void *user_data);
86 static void sundialsErrorHandlerFunction(
int error_code,
const char *module,
const char *
function,
char *msg,
void *user_data);
87 static void sundialsInfoHandlerFunction(
const char *module,
const char *
function,
char *msg,
void *user_data);
97 std::string getAlgSolverName();
SUNMatrix J
Definition: AlgLoop.h:81
struct oms::KINSOL_USER_DATA KINSOL_USER_DATA
void * user_data
Definition: AlgLoop.h:75
int size
Definition: AlgLoop.h:76
Strong connected components data type.
Definition: DirectedGraph.h:54
unsigned int iteration
Definition: AlgLoop.h:53
void * kinsolMemory
Definition: AlgLoop.h:74
N_Vector fTmp
Definition: AlgLoop.h:71
N_Vector uScale
Definition: AlgLoop.h:69
oms_status_enu_t
Definition: Types.h:43
N_Vector initialGuess
Definition: AlgLoop.h:68
const scc_t SCC
Strong connected components.
Definition: AlgLoop.h:107
N_Vector fScale
Definition: AlgLoop.h:70
double fnormtol
Definition: AlgLoop.h:65
const int algLoopNumber
Definition: AlgLoop.h:52
oms_alg_solver_enu_t
Definition: Types.h:110
N_Vector y
Definition: AlgLoop.h:80
SUNLinearSolver linSol
Definition: AlgLoop.h:79
KinsolSolver * kinsolData
Definition: AlgLoop.h:104
scc_t getSCC()
Definition: AlgLoop.h:95
System * syst
Definition: AlgLoop.h:50
const int systNumber
Definition: AlgLoop.h:108
oms_alg_solver_enu_t algSolverMethod
Definition: AlgLoop.h:101
DirectedGraph * graph
Definition: AlgLoop.h:51
Definition: DirectedGraph.h:65
double absoluteTolerance
Definition: AlgLoop.h:109