26 #ifndef _nmrHFTISolver_h
27 #define _nmrHFTISolver_h
33 #ifndef CISSTNETLIB_VERSION
34 # define NEEDS_HFTI_FORWARD_DECLARATION
36 # if (CISSTNETLIB_VERSION_MAJOR == 3)
37 # define NEEDS_HFTI_FORWARD_DECLARATION
42 #ifdef NEEDS_HFTI_FORWARD_DECLARATION
43 CISSTNETLIB_INTEGER
hfti_(CISSTNETLIB_DOUBLE * a, CISSTNETLIB_INTEGER * mda, CISSTNETLIB_INTEGER * m, CISSTNETLIB_INTEGER * n,
44 CISSTNETLIB_DOUBLE * b, CISSTNETLIB_INTEGER * mdb, CISSTNETLIB_INTEGER * nb, CISSTNETLIB_DOUBLE * tau,
45 CISSTNETLIB_INTEGER * krank, CISSTNETLIB_DOUBLE * rnorm, CISSTNETLIB_DOUBLE * h__, CISSTNETLIB_DOUBLE * g,
46 CISSTNETLIB_INTEGER * ip);
47 # undef NEEDS_HFTI_FORWARD_DECLARATION
93 CISSTNETLIB_INTEGER
M;
94 CISSTNETLIB_INTEGER
N;
95 CISSTNETLIB_INTEGER
NB;
98 CISSTNETLIB_DOUBLE
tau;
129 nmrHFTISolver(CISSTNETLIB_INTEGER m, CISSTNETLIB_INTEGER n, CISSTNETLIB_INTEGER nb) {
152 inline void Allocate(CISSTNETLIB_INTEGER m, CISSTNETLIB_INTEGER n, CISSTNETLIB_INTEGER nb) {
187 if ((
M != static_cast<CISSTNETLIB_INTEGER>(
A.
rows()))
188 || (
N !=
static_cast<CISSTNETLIB_INTEGER
>(
A.
cols()))
189 || (
NB !=
static_cast<CISSTNETLIB_INTEGER
>(
B.
cols()))) {
190 cmnThrow(std::runtime_error(
"nmrHFTISolver Solve: Sizes used for Allocate were different"));
196 cmnThrow(std::runtime_error(
"nmrHFTISolver Solve: All parameters must be Fortran compatible"));
207 #endif // _nmrHFTISolver_h
nmrHFTISolver(void)
Definition: nmrHFTISolver.h:111
Declaration of vctDynamicMatrix.
Definition: nmrHFTISolver.h:90
nmrHFTISolver(vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &B)
Definition: nmrHFTISolver.h:139
vctDynamicMatrix< CISSTNETLIB_DOUBLE > H
Definition: nmrHFTISolver.h:102
bool IsFortran(void) const
Definition: vctDynamicConstMatrixBase.h:650
vctDynamicMatrix< CISSTNETLIB_DOUBLE > RNORM
Definition: nmrHFTISolver.h:100
CISSTNETLIB_INTEGER krank
Definition: nmrHFTISolver.h:99
CISSTNETLIB_INTEGER hfti_(CISSTNETLIB_DOUBLE *a, CISSTNETLIB_INTEGER *mda, CISSTNETLIB_INTEGER *m, CISSTNETLIB_INTEGER *n, CISSTNETLIB_DOUBLE *b, CISSTNETLIB_INTEGER *mdb, CISSTNETLIB_INTEGER *nb, CISSTNETLIB_DOUBLE *tau, CISSTNETLIB_INTEGER *krank, CISSTNETLIB_DOUBLE *rnorm, CISSTNETLIB_DOUBLE *h__, CISSTNETLIB_DOUBLE *g, CISSTNETLIB_INTEGER *ip)
vctDynamicMatrix< CISSTNETLIB_DOUBLE > B
Definition: nmrHFTISolver.h:97
void Allocate(vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &B)
Definition: nmrHFTISolver.h:174
pointer Pointer(size_type rowIndex, size_type colIndex)
Definition: vctDynamicMatrixBase.h:143
CISSTNETLIB_INTEGER N
Definition: nmrHFTISolver.h:94
CISSTNETLIB_INTEGER NB
Definition: nmrHFTISolver.h:95
size_type rows() const
Definition: vctDynamicConstMatrixBase.h:238
size_type cols() const
Definition: vctDynamicConstMatrixBase.h:243
vctDynamicMatrix< CISSTNETLIB_DOUBLE > G
Definition: nmrHFTISolver.h:101
nmrHFTISolver(CISSTNETLIB_INTEGER m, CISSTNETLIB_INTEGER n, CISSTNETLIB_INTEGER nb)
Definition: nmrHFTISolver.h:129
void Allocate(CISSTNETLIB_INTEGER m, CISSTNETLIB_INTEGER n, CISSTNETLIB_INTEGER nb)
Definition: nmrHFTISolver.h:152
CISSTNETLIB_INTEGER M
Definition: nmrHFTISolver.h:93
void SetSize(size_type rows, size_type cols, bool storageOrder)
Definition: vctDynamicMatrix.h:364
#define cmnThrow(a)
Definition: MinimalCmn.h:4
vctDynamicMatrix< CISSTNETLIB_DOUBLE > X
Definition: nmrHFTISolver.h:104
CISSTNETLIB_DOUBLE tau
Definition: nmrHFTISolver.h:98
void Solve(vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &B)
Definition: nmrHFTISolver.h:185
vctDynamicMatrix< CISSTNETLIB_DOUBLE > A
Definition: nmrHFTISolver.h:96
const bool VCT_COL_MAJOR
Definition: vctForwardDeclarations.h:46
vctDynamicMatrix< CISSTNETLIB_INTEGER > IP
Definition: nmrHFTISolver.h:103