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);
26extern "C" void IterativeSolverFinalize();
28extern "C" size_t IterativeSolverAddVector(
size_t buffer_size,
double* parameters,
double* action,
int sync);
30extern "C" void IterativeSolverSolution(
int nroot,
int* roots,
double* parameters,
double* action,
int sync);
32extern "C" size_t IterativeSolverAddValue(
double value,
double* parameters,
double* action,
int sync);
34extern "C" size_t IterativeSolverEndIteration(
size_t buffer_size,
double* solution,
double* residual,
int sync);
36extern "C" int IterativeSolverEndIterationNeeded();
38typedef void (*cheesefunc)(
char *name,
void *user_data);
39extern "C" void find_cheeses(cheesefunc user_func,
void *user_data);
41typedef void (*apply_on_p_t)(
const double*,
double*,
const size_t,
const size_t*);
42extern "C" size_t IterativeSolverAddP(
size_t buffer_size,
size_t nP,
const size_t* offsets,
const size_t* indices,
43 const double* coefficients,
const double* pp,
double* parameters,
double* action,
44 int sync, apply_on_p_t func);
46extern "C" void IterativeSolverErrors(
double* errors);
48extern "C" int IterativeSolverConverged();
50extern "C" void IterativeSolverEigenvalues(
double* eigenvalues);
52extern "C" void IterativeSolverWorkingSetEigenvalues(
double* eigenvalues);
54extern "C" size_t IterativeSolverSuggestP(
const double* solution,
const double* residual,
size_t maximumNumber,
55 double threshold,
size_t* indices);
57extern "C" void IterativeSolverPrintStatistics();
59extern "C" int IterativeSolverNonLinear();
61extern "C" int IterativeSolverHasValues();
62extern "C" int IterativeSolverHasEigenvalues();
64extern "C" void IterativeSolverSetDiagonals(
const double* diagonals);
66extern "C" void IterativeSolverDiagonals(
double* diagonals);
68extern "C" double IterativeSolverValue();
70extern "C" int IterativeSolverVerbosity();
72extern "C" int IterativeSolverMaxIter();
73extern "C" void IterativeSolverSetMaxIter(
int max_iter);
75extern "C" int64_t mpicomm_self();
77extern "C" int64_t mpicomm_global();
79extern "C" int64_t IterativeSolver_mpicomm_global();
80extern "C" int64_t IterativeSolver_mpicomm_self();