25#ifndef _nmrHFTISolver_h
26#define _nmrHFTISolver_h
32#ifndef CISSTNETLIB_VERSION
33# define NEEDS_HFTI_FORWARD_DECLARATION
35# if (CISSTNETLIB_VERSION_MAJOR == 3)
36# define NEEDS_HFTI_FORWARD_DECLARATION
41#ifdef NEEDS_HFTI_FORWARD_DECLARATION
42CISSTNETLIB_INTEGER
hfti_(CISSTNETLIB_DOUBLE * a, CISSTNETLIB_INTEGER * mda, CISSTNETLIB_INTEGER * m, CISSTNETLIB_INTEGER * n,
43 CISSTNETLIB_DOUBLE * b, CISSTNETLIB_INTEGER * mdb, CISSTNETLIB_INTEGER * nb, CISSTNETLIB_DOUBLE * tau,
44 CISSTNETLIB_INTEGER * krank, CISSTNETLIB_DOUBLE * rnorm, CISSTNETLIB_DOUBLE * h__, CISSTNETLIB_DOUBLE * g,
45 CISSTNETLIB_INTEGER * ip);
46# undef NEEDS_HFTI_FORWARD_DECLARATION
92 CISSTNETLIB_INTEGER
M;
93 CISSTNETLIB_INTEGER
N;
94 CISSTNETLIB_INTEGER
NB;
97 CISSTNETLIB_DOUBLE
tau;
128 nmrHFTISolver(CISSTNETLIB_INTEGER m, CISSTNETLIB_INTEGER n, CISSTNETLIB_INTEGER nb) {
151 inline void Allocate(CISSTNETLIB_INTEGER m, CISSTNETLIB_INTEGER n, CISSTNETLIB_INTEGER nb) {
186 if ((
M !=
static_cast<CISSTNETLIB_INTEGER
>(
A.rows()))
187 || (
N !=
static_cast<CISSTNETLIB_INTEGER
>(
A.cols()))
188 || (
NB !=
static_cast<CISSTNETLIB_INTEGER
>(
B.cols()))) {
189 cmnThrow(std::runtime_error(
"nmrHFTISolver Solve: Sizes used for Allocate were different"));
195 cmnThrow(std::runtime_error(
"nmrHFTISolver Solve: All parameters must be Fortran compatible"));
200 H.Pointer(),
G.Pointer(),
IP.Pointer());
nmrHFTISolver(CISSTNETLIB_INTEGER m, CISSTNETLIB_INTEGER n, CISSTNETLIB_INTEGER nb)
Definition nmrHFTISolver.h:128
vctDynamicMatrix< CISSTNETLIB_DOUBLE > B
Definition nmrHFTISolver.h:96
void Allocate(vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &B)
Definition nmrHFTISolver.h:173
vctDynamicMatrix< CISSTNETLIB_DOUBLE > A
Definition nmrHFTISolver.h:95
CISSTNETLIB_INTEGER M
Definition nmrHFTISolver.h:92
vctDynamicMatrix< CISSTNETLIB_INTEGER > IP
Definition nmrHFTISolver.h:102
vctDynamicMatrix< CISSTNETLIB_DOUBLE > RNORM
Definition nmrHFTISolver.h:99
vctDynamicMatrix< CISSTNETLIB_DOUBLE > X
Definition nmrHFTISolver.h:103
vctDynamicMatrix< CISSTNETLIB_DOUBLE > H
Definition nmrHFTISolver.h:101
vctDynamicMatrix< CISSTNETLIB_DOUBLE > G
Definition nmrHFTISolver.h:100
void Solve(vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &B) CISST_THROW(std
Definition nmrHFTISolver.h:184
CISSTNETLIB_INTEGER NB
Definition nmrHFTISolver.h:94
CISSTNETLIB_INTEGER krank
Definition nmrHFTISolver.h:98
void Allocate(CISSTNETLIB_INTEGER m, CISSTNETLIB_INTEGER n, CISSTNETLIB_INTEGER nb)
Definition nmrHFTISolver.h:151
nmrHFTISolver(void)
Definition nmrHFTISolver.h:110
CISSTNETLIB_DOUBLE tau
Definition nmrHFTISolver.h:97
nmrHFTISolver(vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &B)
Definition nmrHFTISolver.h:138
CISSTNETLIB_INTEGER N
Definition nmrHFTISolver.h:93
Definition vctForwardDeclarations.h:157
#define CISST_THROW(exceptionParameter)
Somewhat portable compilation warning message. This works with very recent versions of gcc (4....
Definition cmnPortability.h:559
void cmnThrow(const _exceptionType &except, cmnLogLevel lod=CMN_LOG_LEVEL_INIT_ERROR)
Definition cmnThrow.h:76
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)
Declaration of vctDynamicMatrix.
const bool VCT_COL_MAJOR
Definition vctForwardDeclarations.h:44