46 #ifndef SSP_MA28_SOLVER_H
47 #define SSP_MA28_SOLVER_H
49 #include "AbstractLinAlgPack_MA28CommonBlockEncap.hpp"
54 using MA28_CppDecl::f_int;
55 using MA28_CppDecl::f_logical;
56 using MA28_CppDecl::f_real;
57 using MA28_CppDecl::f_dbl_prec;
81 void ma28ad(
const f_int& n,
const f_int& nz, f_dbl_prec a[],
const f_int& licn
82 , f_int irn[],
const f_int& lirn, f_int icn[],
const f_dbl_prec& u
83 , f_int ikeep[], f_int iw[], f_dbl_prec w[], f_int* iflag)
85 set_common_block_data();
86 MA28_CppDecl::ma28ad(n,nz,a,licn,irn,lirn,icn,u,ikeep,iw,w,iflag);
87 get_common_block_data();
91 void ma28bd(
const f_int& n,
const f_int& nz, f_dbl_prec a[],
const f_int& licn
92 ,
const f_int ivect[],
const f_int jvect[],
const f_int icn[]
93 ,
const f_int ikeep[], f_int iw[], f_dbl_prec w[], f_int* iflag)
95 set_common_block_data();
96 MA28_CppDecl::ma28bd(n,nz,a,licn,ivect,jvect,icn,ikeep,iw,w,iflag);
97 get_common_block_data();
101 void ma28cd(
const f_int& n,
const f_dbl_prec a[],
const f_int& licn,
const f_int icn[]
102 ,
const f_int ikeep[], f_dbl_prec rhs[], f_dbl_prec w[],
const f_int& mtype)
104 set_common_block_data();
105 MA28_CppDecl::ma28cd(n,a,licn,icn,ikeep,rhs,w,mtype);
106 get_common_block_data();
113 { changed_=
true; common_blocks_.ma28ed_.lp=
lp; }
116 {
return common_blocks_.ma28ed_.lp; }
119 { changed_=
true; common_blocks_.ma28ed_.mp=
mp; }
122 {
return common_blocks_.ma28ed_.mp; }
125 { changed_=
true; common_blocks_.ma28ed_.lblock=
lblock; }
128 {
return common_blocks_.ma28ed_.lblock; }
131 { changed_=
true; common_blocks_.ma28ed_.grow=
grow; }
134 {
return common_blocks_.ma28ed_.grow; }
137 { changed_=
true; common_blocks_.ma28fd_.eps=
eps; }
140 {
return common_blocks_.ma28fd_.eps; }
143 { changed_=
true; common_blocks_.ma28fd_.rmin=
rmin; }
146 {
return common_blocks_.ma28fd_.rmin; }
149 { changed_=
true; common_blocks_.ma28fd_.resid=
resid; }
152 {
return common_blocks_.ma28fd_.resid; }
155 { changed_=
true; common_blocks_.ma28fd_.irncp=
irncp; }
158 {
return common_blocks_.ma28fd_.irncp; }
161 { changed_=
true; common_blocks_.ma28fd_.icncp=
icncp; }
164 {
return common_blocks_.ma28fd_.icncp; }
167 { changed_=
true; common_blocks_.ma28fd_.minirn=
minirn; }
170 {
return common_blocks_.ma28fd_.minirn; }
173 { changed_=
true; common_blocks_.ma28fd_.minicn=
minicn; }
176 {
return common_blocks_.ma28fd_.minicn; }
179 { changed_=
true; common_blocks_.ma28fd_.irank=
irank; }
182 {
return common_blocks_.ma28fd_.irank; }
185 { changed_=
true; common_blocks_.ma28fd_.abort1=
abort1; }
188 {
return common_blocks_.ma28fd_.abort1; }
191 { changed_=
true; common_blocks_.ma28fd_.abort2=
abort2; }
194 {
return common_blocks_.ma28fd_.abort2; }
197 { changed_=
true; common_blocks_.ma28gd_.idisp[i]=val; }
200 {
return common_blocks_.ma28gd_.idisp[i]; }
203 { changed_=
true; common_blocks_.ma28hd_.tol=
tol; }
206 {
return common_blocks_.ma28hd_.tol; }
209 { changed_=
true; common_blocks_.ma28hd_.themax=
themax; }
212 {
return common_blocks_.ma28hd_.themax; }
215 { changed_=
true; common_blocks_.ma28hd_.big=
big; }
218 {
return common_blocks_.ma28hd_.big; }
221 { changed_=
true; common_blocks_.ma28hd_.dxmax=
dxmax; }
224 {
return common_blocks_.ma28hd_.dxmax; }
227 { changed_=
true; common_blocks_.ma28hd_.errmax=
errmax; }
230 {
return common_blocks_.ma28hd_.errmax; }
233 { changed_=
true; common_blocks_.ma28hd_.dres=
dres; }
236 {
return common_blocks_.ma28hd_.dres; }
239 { changed_=
true; common_blocks_.ma28hd_.cgce=
cgce; }
242 {
return common_blocks_.ma28hd_.cgce; }
245 { changed_=
true; common_blocks_.ma28hd_.ndrop=
ndrop; }
248 {
return common_blocks_.ma28hd_.ndrop; }
251 { changed_=
true; common_blocks_.ma28hd_.maxit=
maxit; }
254 {
return common_blocks_.ma28hd_.maxit; }
257 { changed_=
true; common_blocks_.ma28hd_.noiter=
noiter; }
260 {
return common_blocks_.ma28hd_.noiter; }
263 { changed_=
true; common_blocks_.ma28hd_.nsrch=
nsrch; }
266 {
return common_blocks_.ma28hd_.nsrch; }
269 { changed_=
true; common_blocks_.ma28hd_.istart=
istart; }
272 {
return common_blocks_.ma28hd_.istart; }
275 { changed_=
true; common_blocks_.ma28hd_.lbig=
lbig; }
278 {
return common_blocks_.ma28hd_.lbig; }
282 { common_blocks_.dump_values(o); }
286 { changed_ =
true; common_blocks_ = solver.common_blocks_;
return *
this; }
293 { ma28_common_blocks_.dump_values(o); }
301 void set_common_block_data();
304 void get_common_block_data();
310 MA28CommonBlockStorage common_blocks_;
320 static MA28CommonBlockStorage default_common_blocks_;
323 static MA28CommonBlockReferences ma28_common_blocks_;
333 #endif // SSP_MA28_SOLVER_H
void ma28ad(const f_int &n, const f_int &nz, f_dbl_prec a[], const f_int &licn, f_int irn[], const f_int &lirn, f_int icn[], const f_dbl_prec &u, f_int ikeep[], f_int iw[], f_dbl_prec w[], f_int *iflag)
void ma28bd(const f_int &n, const f_int &nz, f_dbl_prec a[], const f_int &licn, const f_int ivect[], const f_int jvect[], const f_int icn[], const f_int ikeep[], f_int iw[], f_dbl_prec w[], f_int *iflag)
void abort1(f_logical abort1)
MA28Solver & operator=(const MA28Solver &solver)
Copy the state of one solver to another.
void themax(f_dbl_prec themax)
void rmin(f_dbl_prec rmin)
void istart(f_int istart)
void abort2(f_logical abort2)
void idisp(f_int val, f_int i)
void errmax(f_dbl_prec errmax)
void dump_common_blocks(std::ostream &o)
Dump the common block infomation for this solver object.
void dxmax(f_dbl_prec dxmax)
void lbig(f_logical lbig)
void lblock(f_logical lblock)
void dres(f_dbl_prec dres)
void grow(f_logical grow)
static void dump_ma28_common_blocks(std::ostream &o)
Dump the common block infomation for ma28 common blocks.
void resid(f_dbl_prec resid)
void minicn(f_int minicn)
void cgce(f_dbl_prec cgce)
void noiter(f_int noiter)
void ma28cd(const f_int &n, const f_dbl_prec a[], const f_int &licn, const f_int icn[], const f_int ikeep[], f_dbl_prec rhs[], f_dbl_prec w[], const f_int &mtype)
void minirn(f_int minirn)
MA28Solver()
Construct a solver object that is initialized with the default common block data variables.
MA28 Basic Encapsulation Class.