1#ifndef LINEARALGEBRA_SRC_MOLPRO_LINALG_ITERATIVESOLVER_ITERATIVESOLVERC_H_
2#define LINEARALGEBRA_SRC_MOLPRO_LINALG_ITERATIVESOLVER_ITERATIVESOLVERC_H_
7extern "C" void IterativeSolverLinearEigensystemInitialize(
size_t nQ,
size_t nroot,
size_t* range_begin,
8 size_t* range_end,
double thresh,
double thresh_value,
9 int hermitian,
int verbosity,
const char* fname,
10 int64_t fcomm,
const char* algorithm,
const char* options);
12extern "C" void IterativeSolverLinearEquationsInitialize(
size_t n,
size_t nroot,
size_t* range_begin,
size_t* range_end,
13 const double* rhs,
double aughes,
double thresh,
14 double thresh_value,
int hermitian,
int verbosity,
15 const char* fname, int64_t fcomm,
const char* algorithm,
18extern "C" void IterativeSolverNonLinearEquationsInitialize(
size_t n,
size_t* range_begin,
size_t* range_end,
19 double thresh,
int verbosity,
const char* fname,
20 int64_t fcomm,
const char* algorithm,
const char* options);
22extern "C" void IterativeSolverOptimizeInitialize(
size_t n,
size_t* range_begin,
size_t* range_end,
double thresh,
23 double thresh_value,
int verbosity,
int minimize,
const char* fname,
24 int64_t fcomm,
const char* algorithm,
const char* options);
27extern "C" void IterativeSolverFinalize();
30extern "C" void IterativeSolverFinalizeAll();
34extern "C" int64_t IterativeSolverCurrentHandle();
38extern "C" int IterativeSolverSelect(int64_t handle);
41extern "C" void IterativeSolverFinalizeHandle(int64_t handle);
44extern "C" size_t IterativeSolverNRoots();
47extern "C" size_t IterativeSolverDimension();
49extern "C" size_t IterativeSolverAddVector(
size_t buffer_size,
double* parameters,
double* action,
int sync);
51extern "C" void IterativeSolverSolution(
int nroot,
int* roots,
double* parameters,
double* action,
int sync);
53extern "C" size_t IterativeSolverAddValue(
double value,
double* parameters,
double* action,
int sync);
55extern "C" size_t IterativeSolverEndIteration(
size_t buffer_size,
double* solution,
double* residual,
int sync);
57extern "C" int IterativeSolverEndIterationNeeded();
59typedef void (*cheesefunc)(
char *name,
void *user_data);
60extern "C" void find_cheeses(cheesefunc user_func,
void *user_data);
62typedef void (*apply_on_p_t)(
const double*,
double*,
const size_t,
const size_t*);
63extern "C" size_t IterativeSolverAddP(
size_t buffer_size,
size_t nP,
const size_t* offsets,
const size_t* indices,
64 const double* coefficients,
const double* pp,
double* parameters,
double* action,
65 int sync, apply_on_p_t func);
67extern "C" void IterativeSolverErrors(
double* errors);
69extern "C" int IterativeSolverConverged();
71extern "C" void IterativeSolverEigenvalues(
double* eigenvalues);
73extern "C" void IterativeSolverWorkingSetEigenvalues(
double* eigenvalues);
75extern "C" size_t IterativeSolverSuggestP(
const double* solution,
const double* residual,
size_t maximumNumber,
76 double threshold,
size_t* indices);
78extern "C" void IterativeSolverPrintStatistics();
80extern "C" int IterativeSolverNonLinear();
82extern "C" int IterativeSolverHasValues();
83extern "C" int IterativeSolverHasEigenvalues();
85extern "C" void IterativeSolverSetDiagonals(
const double* diagonals);
87extern "C" void IterativeSolverDiagonals(
double* diagonals);
89extern "C" double IterativeSolverValue();
91extern "C" int IterativeSolverVerbosity();
93extern "C" int IterativeSolverMaxIter();
94extern "C" void IterativeSolverSetMaxIter(
int max_iter);
96extern "C" int64_t mpicomm_self();
98extern "C" int64_t mpicomm_global();
100extern "C" int64_t IterativeSolver_mpicomm_global();
101extern "C" int64_t IterativeSolver_mpicomm_self();