Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Kirill Terekhov
INMOST
Commits
f5400034
Commit
f5400034
authored
Dec 11, 2016
by
Dmitry Bagaev
Browse files
Improvements for fcbiilu2
parent
0af669bb
Changes
2
Show whitespace changes
Inline
Side-by-side
Source/Solver/solver_fcbiilu2/SolverFCBIILU2.cpp
View file @
f5400034
#include <Source/Misc/utils.h>
#include "SolverFCBIILU2.h"
#include "SolverFCBIILU2.h"
#include "solver_fcbiilu2.h"
#include "solver_fcbiilu2.h"
...
@@ -54,7 +55,13 @@ namespace INMOST {
...
@@ -54,7 +55,13 @@ namespace INMOST {
solver_data
->
eps
=
1e-5
;
// the residual precision: ||r|| < eps * ||b||; eps=1e-6
solver_data
->
eps
=
1e-5
;
// the residual precision: ||r|| < eps * ||b||; eps=1e-6
solver_data
->
nit
=
999
;
// number of iterations permitted; nit=999
solver_data
->
nit
=
999
;
// number of iterations permitted; nit=999
solver_data
->
msglev
=
2
;
// messages level; msglev=0 for silent; msglev=1 to output solution statistics
solver_data
->
msglev
=
2
;
// messages level; msglev=0 for silent; msglev=1 to output solution statistics
if
(
p
.
internalFile
!=
""
)
{
SolverInitializeFcbiilu2
(
solver_data
,
argc
,
argv
,
p
.
internalFile
.
c_str
());
SolverInitializeFcbiilu2
(
solver_data
,
argc
,
argv
,
p
.
internalFile
.
c_str
());
}
else
{
for
(
parameters_iterator_t
parameter
=
p
.
parameters
.
begin
();
parameter
<
p
.
parameters
.
end
();
parameter
++
)
{
this
->
SetParameter
((
*
parameter
).
first
,
(
*
parameter
).
second
);
}
}
}
}
void
SolverFCBIILU2
::
SetMatrix
(
Sparse
::
Matrix
&
A
,
bool
ModifiedPattern
,
bool
OldPreconditioner
)
{
void
SolverFCBIILU2
::
SetMatrix
(
Sparse
::
Matrix
&
A
,
bool
ModifiedPattern
,
bool
OldPreconditioner
)
{
...
@@ -118,6 +125,7 @@ namespace INMOST {
...
@@ -118,6 +125,7 @@ namespace INMOST {
}
}
MatrixFinalizeFcbiilu2
(
matrix_data
);
MatrixFinalizeFcbiilu2
(
matrix_data
);
SolverSetMatrixFcbiilu2
(
solver_data
,
matrix_data
,
modified_pattern
,
OldPreconditioner
);
SolverSetMatrixFcbiilu2
(
solver_data
,
matrix_data
,
modified_pattern
,
OldPreconditioner
);
time_prec
=
solver_data
->
dstat
[
7
];
}
}
bool
SolverFCBIILU2
::
Solve
(
INMOST
::
Sparse
::
Vector
&
RHS
,
INMOST
::
Sparse
::
Vector
&
SOL
)
{
bool
SolverFCBIILU2
::
Solve
(
INMOST
::
Sparse
::
Vector
&
RHS
,
INMOST
::
Sparse
::
Vector
&
SOL
)
{
...
@@ -138,6 +146,7 @@ namespace INMOST {
...
@@ -138,6 +146,7 @@ namespace INMOST {
VectorFinalizeFcbiilu2
(
solution_data
);
VectorFinalizeFcbiilu2
(
solution_data
);
bool
result
=
SolverSolveFcbiilu2
(
solver_data
,
rhs_data
,
solution_data
);
bool
result
=
SolverSolveFcbiilu2
(
solver_data
,
rhs_data
,
solution_data
);
if
(
result
)
VectorLoadFcbiilu2
(
solution_data
,
&
SOL
[
vbeg
]);
if
(
result
)
VectorLoadFcbiilu2
(
solution_data
,
&
SOL
[
vbeg
]);
iter_time
=
solver_data
->
dstat
[
9
];
return
result
;
return
result
;
}
}
...
@@ -154,8 +163,12 @@ namespace INMOST {
...
@@ -154,8 +163,12 @@ namespace INMOST {
}
}
std
::
string
SolverFCBIILU2
::
GetParameter
(
std
::
string
name
)
const
{
std
::
string
SolverFCBIILU2
::
GetParameter
(
std
::
string
name
)
const
{
std
::
cout
<<
"SolverFCBIILU2::GetParameter unsupported operation"
<<
std
::
endl
;
if
(
name
==
"time_prec"
)
return
INMOST
::
to_string
(
time_prec
);
//throw INMOST::SolverUnsupportedOperation;
if
(
name
==
"time_iter"
)
return
INMOST
::
to_string
(
iter_time
);
if
(
name
==
"time_total"
)
return
INMOST
::
to_string
(
time_prec
+
iter_time
);
if
(
name
==
"prec_density"
)
return
INMOST
::
to_string
(
solver_data
->
dstat
[
0
]);
if
(
name
==
"pivot_mod"
)
return
INMOST
::
to_string
(
solver_data
->
istat
[
0
]);
std
::
cout
<<
"Parameter "
<<
name
<<
" is unknown"
<<
std
::
endl
;
return
""
;
return
""
;
}
}
...
@@ -167,7 +180,6 @@ namespace INMOST {
...
@@ -167,7 +180,6 @@ namespace INMOST {
else
if
(
name
==
"nit"
)
solver_data
->
nit
=
atoi
(
val
);
else
if
(
name
==
"nit"
)
solver_data
->
nit
=
atoi
(
val
);
else
if
(
name
==
"msglev"
)
solver_data
->
msglev
=
atoi
(
val
);
else
if
(
name
==
"msglev"
)
solver_data
->
msglev
=
atoi
(
val
);
else
std
::
cout
<<
"Parameter "
<<
name
<<
" is unknown"
<<
std
::
endl
;
else
std
::
cout
<<
"Parameter "
<<
name
<<
" is unknown"
<<
std
::
endl
;
//throw INMOST::SolverUnsupportedOperation;
}
}
const
INMOST_DATA_ENUM_TYPE
SolverFCBIILU2
::
Iterations
()
const
{
const
INMOST_DATA_ENUM_TYPE
SolverFCBIILU2
::
Iterations
()
const
{
...
...
Source/Solver/solver_fcbiilu2/SolverFCBIILU2.h
View file @
f5400034
...
@@ -11,6 +11,9 @@ namespace INMOST {
...
@@ -11,6 +11,9 @@ namespace INMOST {
bcg
*
solver_data
;
bcg
*
solver_data
;
matrix
*
matrix_data
;
matrix
*
matrix_data
;
INMOST_DATA_ENUM_TYPE
local_size
,
global_size
;
INMOST_DATA_ENUM_TYPE
local_size
,
global_size
;
double
time_prec
;
double
iter_time
;
public:
public:
SolverFCBIILU2
();
SolverFCBIILU2
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment