Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
I
INMOST
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kirill Terekhov
INMOST
Commits
0785d371
Commit
0785d371
authored
Sep 30, 2016
by
Dmitry Bagaev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Style fix
parent
4a1aff21
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
191 additions
and
87 deletions
+191
-87
Source/Headers/inmost_solver.h
Source/Headers/inmost_solver.h
+79
-35
Source/Headers/inmost_solver_factory.h
Source/Headers/inmost_solver_factory.h
+6
-0
Source/Headers/inmost_solver_interface.h
Source/Headers/inmost_solver_interface.h
+14
-4
Source/Solver/solver_inner/solver_ddpqiluc2/SolverDDPQILUC2.h
...ce/Solver/solver_inner/solver_ddpqiluc2/SolverDDPQILUC2.h
+12
-3
Source/Solver/solver_inner/solver_ilu2/SolverILU2.h
Source/Solver/solver_inner/solver_ilu2/SolverILU2.h
+29
-20
Source/Solver/solver_inner/solver_mptilu2/SolverMPTILU2.h
Source/Solver/solver_inner/solver_mptilu2/SolverMPTILU2.h
+12
-4
Source/Solver/solver_inner/solver_mptiluc/SolverMPTILUC.h
Source/Solver/solver_inner/solver_mptiluc/SolverMPTILUC.h
+12
-3
Source/Solver/solver_petsc/SolverPETSc.h
Source/Solver/solver_petsc/SolverPETSc.h
+27
-18
No files found.
Source/Headers/inmost_solver.h
View file @
0785d371
This diff is collapsed.
Click to expand it.
Source/Headers/inmost_solver_factory.h
View file @
0785d371
...
...
@@ -5,7 +5,9 @@ namespace INMOST {
struct
SolverBaseFactory
{
virtual
SolverInterface
*
create
()
=
0
;
virtual
SolverInterface
*
copy
(
const
SolverInterface
*
other
)
=
0
;
virtual
~
SolverBaseFactory
()
{};
};
...
...
@@ -28,9 +30,13 @@ namespace INMOST {
static
void
registerSolver
(
std
::
string
name
)
{
solvers
.
insert
(
std
::
make_pair
(
name
,
new
SolverCreateFactory
<
T
>
));
};
static
SolverInterface
*
getSolver
(
std
::
string
name
);
static
SolverInterface
*
copySolver
(
const
SolverInterface
*
other
);
static
std
::
vector
<
std
::
string
>
getAvailableSolvers
();
static
bool
isSolverAvailable
(
std
::
string
name
);
};
...
...
Source/Headers/inmost_solver_interface.h
View file @
0785d371
...
...
@@ -13,29 +13,39 @@ namespace INMOST {
INMOST_MPI_Comm
communicator
;
public:
SolverInterface
()
{};
SolverInterface
(
const
SolverInterface
*
other
)
{};
virtual
void
Assign
(
const
SolverInterface
*
other
)
=
0
;
SolverInterface
(
const
SolverInterface
*
other
)
{};
virtual
void
Assign
(
const
SolverInterface
*
other
)
=
0
;
virtual
void
Initialize
(
int
*
argc
,
char
***
argv
,
const
char
*
parameters_file
,
std
::
string
prefix
)
=
0
;
virtual
void
SetMatrix
(
Sparse
::
Matrix
&
A
,
bool
ModifiedPattern
,
bool
OldPreconditioner
)
=
0
;
virtual
bool
Solve
(
INMOST
::
Sparse
::
Vector
&
RHS
,
INMOST
::
Sparse
::
Vector
&
SOL
)
=
0
;
virtual
void
SetMatrix
(
Sparse
::
Matrix
&
A
,
bool
ModifiedPattern
,
bool
OldPreconditioner
)
=
0
;
virtual
bool
Solve
(
INMOST
::
Sparse
::
Vector
&
RHS
,
INMOST
::
Sparse
::
Vector
&
SOL
)
=
0
;
virtual
bool
Clear
()
=
0
;
virtual
bool
isMatrixSet
()
=
0
;
virtual
INMOST_DATA_REAL_TYPE
GetPropertyReal
(
std
::
string
property
)
const
=
0
;
virtual
INMOST_DATA_ENUM_TYPE
GetPropertyEnum
(
std
::
string
property
)
const
=
0
;
virtual
void
SetPropertyReal
(
std
::
string
property
,
INMOST_DATA_REAL_TYPE
value
)
=
0
;
virtual
void
SetPropertyEnum
(
std
::
string
property
,
INMOST_DATA_ENUM_TYPE
value
)
=
0
;
virtual
const
INMOST_DATA_ENUM_TYPE
Iterations
()
const
=
0
;
virtual
const
INMOST_DATA_REAL_TYPE
Residual
()
const
=
0
;
virtual
const
std
::
string
ReturnReason
()
const
=
0
;
virtual
const
std
::
string
SolverName
()
const
=
0
;
virtual
void
Finalize
()
=
0
;
virtual
~
SolverInterface
()
{};
...
...
Source/Solver/solver_inner/solver_ddpqiluc2/SolverDDPQILUC2.h
View file @
0785d371
...
...
@@ -32,30 +32,39 @@ namespace INMOST {
INMOST_DATA_ENUM_TYPE
solver_gmres_substeps
;
public:
SolverDDPQILUC2
();
SolverDDPQILUC2
(
const
SolverInterface
*
other
);
virtual
void
Assign
(
const
SolverInterface
*
other
);
SolverDDPQILUC2
(
const
SolverInterface
*
other
);
virtual
void
Assign
(
const
SolverInterface
*
other
);
virtual
void
Initialize
(
int
*
argc
,
char
***
argv
,
const
char
*
parameters_file
,
std
::
string
prefix
);
virtual
void
SetMatrix
(
Sparse
::
Matrix
&
A
,
bool
ModifiedPattern
,
bool
OldPreconditioner
);
virtual
void
SetMatrix
(
Sparse
::
Matrix
&
A
,
bool
ModifiedPattern
,
bool
OldPreconditioner
);
virtual
bool
Solve
(
Sparse
::
Vector
&
RHS
,
Sparse
::
Vector
&
SOL
);
virtual
bool
Clear
();
virtual
bool
isMatrixSet
();
virtual
INMOST_DATA_REAL_TYPE
GetPropertyReal
(
std
::
string
property
)
const
;
virtual
INMOST_DATA_ENUM_TYPE
GetPropertyEnum
(
std
::
string
property
)
const
;
virtual
void
SetPropertyReal
(
std
::
string
property
,
INMOST_DATA_REAL_TYPE
value
);
virtual
void
SetPropertyEnum
(
std
::
string
property
,
INMOST_DATA_ENUM_TYPE
value
);
virtual
const
INMOST_DATA_ENUM_TYPE
Iterations
()
const
;
virtual
const
INMOST_DATA_REAL_TYPE
Residual
()
const
;
virtual
const
std
::
string
ReturnReason
()
const
;
virtual
const
std
::
string
SolverName
()
const
;
virtual
void
Finalize
();
virtual
~
SolverDDPQILUC2
();
};
...
...
Source/Solver/solver_inner/solver_ilu2/SolverILU2.h
View file @
0785d371
...
...
@@ -7,13 +7,13 @@
namespace
INMOST
{
class
SolverILU2
:
public
SolverInterface
{
private:
Sparse
::
Matrix
*
matrix
;
BCGS_solver
*
solver
;
Solver
::
OrderInfo
info
;
class
SolverILU2
:
public
SolverInterface
{
private:
Sparse
::
Matrix
*
matrix
;
BCGS_solver
*
solver
;
Solver
::
OrderInfo
info
;
INMOST_DATA_ENUM_TYPE
additive_schwartz_overlap
;
INMOST_DATA_ENUM_TYPE
additive_schwartz_overlap
;
INMOST_DATA_ENUM_TYPE
maximum_iterations
;
INMOST_DATA_REAL_TYPE
absolute_tolerance
;
...
...
@@ -25,34 +25,43 @@ namespace INMOST {
INMOST_DATA_REAL_TYPE
preconditioner_fill_level
;
INMOST_DATA_ENUM_TYPE
preconditioner_rescale_iterations
;
INMOST_DATA_ENUM_TYPE
solver_gmres_substeps
;
public:
public:
SolverILU2
();
SolverILU2
(
const
SolverInterface
*
other
);
virtual
void
Assign
(
const
SolverInterface
*
other
);
SolverILU2
(
const
SolverInterface
*
other
);
virtual
void
Assign
(
const
SolverInterface
*
other
);
virtual
void
Initialize
(
int
*
argc
,
char
***
argv
,
const
char
*
parameters_file
,
std
::
string
prefix
);
virtual
void
SetMatrix
(
Sparse
::
Matrix
&
A
,
bool
ModifiedPattern
,
bool
OldPreconditioner
);
virtual
void
SetMatrix
(
Sparse
::
Matrix
&
A
,
bool
ModifiedPattern
,
bool
OldPreconditioner
);
virtual
bool
Solve
(
Sparse
::
Vector
&
RHS
,
Sparse
::
Vector
&
SOL
);
virtual
bool
Clear
();
virtual
bool
isMatrixSet
();
virtual
bool
isMatrixSet
();
virtual
INMOST_DATA_REAL_TYPE
GetPropertyReal
(
std
::
string
property
)
const
;
virtual
INMOST_DATA_REAL_TYPE
GetPropertyReal
(
std
::
string
property
)
const
;
virtual
INMOST_DATA_ENUM_TYPE
GetPropertyEnum
(
std
::
string
property
)
const
;
virtual
INMOST_DATA_ENUM_TYPE
GetPropertyEnum
(
std
::
string
property
)
const
;
virtual
void
SetPropertyReal
(
std
::
string
property
,
INMOST_DATA_REAL_TYPE
value
);
virtual
void
SetPropertyReal
(
std
::
string
property
,
INMOST_DATA_REAL_TYPE
value
);
virtual
void
SetPropertyEnum
(
std
::
string
property
,
INMOST_DATA_ENUM_TYPE
value
);
virtual
const
INMOST_DATA_ENUM_TYPE
Iterations
()
const
;
virtual
const
INMOST_DATA_REAL_TYPE
Residual
()
const
;
virtual
const
std
::
string
ReturnReason
()
const
;
virtual
const
INMOST_DATA_ENUM_TYPE
Iterations
()
const
;
virtual
const
INMOST_DATA_REAL_TYPE
Residual
()
const
;
virtual
const
std
::
string
ReturnReason
()
const
;
virtual
const
std
::
string
SolverName
()
const
;
virtual
const
std
::
string
SolverName
()
const
;
virtual
void
Finalize
()
;
virtual
void
Finalize
();
virtual
~
SolverILU2
();
};
};
}
...
...
Source/Solver/solver_inner/solver_mptilu2/SolverMPTILU2.h
View file @
0785d371
...
...
@@ -2,7 +2,6 @@
#define INMOST_SOLVERMPTILU2_H
#include <inmost.h>
#include "solver_mtilu2.hpp"
#include "../solver_bcgsl.hpp"
...
...
@@ -29,30 +28,39 @@ namespace INMOST {
INMOST_DATA_ENUM_TYPE
solver_gmres_substeps
;
public:
SolverMPTILU2
();
SolverMPTILU2
(
const
SolverInterface
*
other
);
virtual
void
Assign
(
const
SolverInterface
*
other
);
SolverMPTILU2
(
const
SolverInterface
*
other
);
virtual
void
Assign
(
const
SolverInterface
*
other
);
virtual
void
Initialize
(
int
*
argc
,
char
***
argv
,
const
char
*
parameters_file
,
std
::
string
prefix
);
virtual
void
SetMatrix
(
Sparse
::
Matrix
&
A
,
bool
ModifiedPattern
,
bool
OldPreconditioner
);
virtual
void
SetMatrix
(
Sparse
::
Matrix
&
A
,
bool
ModifiedPattern
,
bool
OldPreconditioner
);
virtual
bool
Solve
(
Sparse
::
Vector
&
RHS
,
Sparse
::
Vector
&
SOL
);
virtual
bool
Clear
();
virtual
bool
isMatrixSet
();
virtual
INMOST_DATA_REAL_TYPE
GetPropertyReal
(
std
::
string
property
)
const
;
virtual
INMOST_DATA_ENUM_TYPE
GetPropertyEnum
(
std
::
string
property
)
const
;
virtual
void
SetPropertyReal
(
std
::
string
property
,
INMOST_DATA_REAL_TYPE
value
);
virtual
void
SetPropertyEnum
(
std
::
string
property
,
INMOST_DATA_ENUM_TYPE
value
);
virtual
const
INMOST_DATA_ENUM_TYPE
Iterations
()
const
;
virtual
const
INMOST_DATA_REAL_TYPE
Residual
()
const
;
virtual
const
std
::
string
ReturnReason
()
const
;
virtual
const
std
::
string
SolverName
()
const
;
virtual
void
Finalize
();
virtual
~
SolverMPTILU2
();
};
...
...
Source/Solver/solver_inner/solver_mptiluc/SolverMPTILUC.h
View file @
0785d371
...
...
@@ -27,30 +27,39 @@ namespace INMOST {
INMOST_DATA_ENUM_TYPE
solver_gmres_substeps
;
public:
SolverMPTILUC
();
SolverMPTILUC
(
const
SolverInterface
*
other
);
virtual
void
Assign
(
const
SolverInterface
*
other
);
SolverMPTILUC
(
const
SolverInterface
*
other
);
virtual
void
Assign
(
const
SolverInterface
*
other
);
virtual
void
Initialize
(
int
*
argc
,
char
***
argv
,
const
char
*
parameters_file
,
std
::
string
prefix
);
virtual
void
SetMatrix
(
Sparse
::
Matrix
&
A
,
bool
ModifiedPattern
,
bool
OldPreconditioner
);
virtual
void
SetMatrix
(
Sparse
::
Matrix
&
A
,
bool
ModifiedPattern
,
bool
OldPreconditioner
);
virtual
bool
Solve
(
Sparse
::
Vector
&
RHS
,
Sparse
::
Vector
&
SOL
);
virtual
bool
Clear
();
virtual
bool
isMatrixSet
();
virtual
INMOST_DATA_REAL_TYPE
GetPropertyReal
(
std
::
string
property
)
const
;
virtual
INMOST_DATA_ENUM_TYPE
GetPropertyEnum
(
std
::
string
property
)
const
;
virtual
void
SetPropertyReal
(
std
::
string
property
,
INMOST_DATA_REAL_TYPE
value
);
virtual
void
SetPropertyEnum
(
std
::
string
property
,
INMOST_DATA_ENUM_TYPE
value
);
virtual
const
INMOST_DATA_ENUM_TYPE
Iterations
()
const
;
virtual
const
INMOST_DATA_REAL_TYPE
Residual
()
const
;
virtual
const
std
::
string
ReturnReason
()
const
;
virtual
const
std
::
string
SolverName
()
const
;
virtual
void
Finalize
();
virtual
~
SolverMPTILUC
();
};
...
...
Source/Solver/solver_petsc/SolverPETSc.h
View file @
0785d371
...
...
@@ -10,40 +10,49 @@ namespace INMOST {
class
SolverPETSc
:
public
SolverInterface
{
private:
//TODO
//may be should find another way to count petsc solvers and finalize them
static
unsigned
int
petscSolversCount
;
//TODO
//may be should find another way to count petsc solvers and finalize them
static
unsigned
int
petscSolversCount
;
std
::
string
parametersFile
;
KSP
*
ksp
;
Mat
*
matrix
;
KSP
*
ksp
;
Mat
*
matrix
;
INMOST_DATA_ENUM_TYPE
local_size
,
global_size
;
INMOST_DATA_ENUM_TYPE
local_size
,
global_size
;
public:
SolverPETSc
();
SolverPETSc
(
const
SolverInterface
*
other
);
virtual
void
Assign
(
const
SolverInterface
*
other
);
SolverPETSc
(
const
SolverInterface
*
other
);
virtual
void
Assign
(
const
SolverInterface
*
other
);
virtual
void
Initialize
(
int
*
argc
,
char
***
argv
,
const
char
*
parameters_file
,
std
::
string
prefix
);
virtual
void
SetMatrix
(
Sparse
::
Matrix
&
A
,
bool
ModifiedPattern
,
bool
OldPreconditioner
);
virtual
void
SetMatrix
(
Sparse
::
Matrix
&
A
,
bool
ModifiedPattern
,
bool
OldPreconditioner
);
virtual
bool
Solve
(
Sparse
::
Vector
&
RHS
,
Sparse
::
Vector
&
SOL
);
virtual
bool
Clear
();
virtual
bool
isMatrixSet
();
virtual
bool
isMatrixSet
();
virtual
INMOST_DATA_REAL_TYPE
GetPropertyReal
(
std
::
string
property
)
const
;
virtual
INMOST_DATA_REAL_TYPE
GetPropertyReal
(
std
::
string
property
)
const
;
virtual
INMOST_DATA_ENUM_TYPE
GetPropertyEnum
(
std
::
string
property
)
const
;
virtual
INMOST_DATA_ENUM_TYPE
GetPropertyEnum
(
std
::
string
property
)
const
;
virtual
void
SetPropertyReal
(
std
::
string
property
,
INMOST_DATA_REAL_TYPE
value
);
virtual
void
SetPropertyReal
(
std
::
string
property
,
INMOST_DATA_REAL_TYPE
value
);
virtual
void
SetPropertyEnum
(
std
::
string
property
,
INMOST_DATA_ENUM_TYPE
value
);
virtual
const
INMOST_DATA_ENUM_TYPE
Iterations
()
const
;
virtual
const
INMOST_DATA_REAL_TYPE
Residual
()
const
;
virtual
const
std
::
string
ReturnReason
()
const
;
virtual
const
INMOST_DATA_ENUM_TYPE
Iterations
()
const
;
virtual
const
INMOST_DATA_REAL_TYPE
Residual
()
const
;
virtual
const
std
::
string
ReturnReason
()
const
;
virtual
const
std
::
string
SolverName
()
const
;
virtual
const
std
::
string
SolverName
()
const
;
virtual
void
Finalize
()
;
virtual
void
Finalize
();
virtual
~
SolverPETSc
();
};
...
...
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