![]() |
MechSys
1.0
Computing library for simulations in continuum and discrete mechanics
|
#include <rksolver.h>
Public Types | |
enum | Damping_t { None_t, Rayleigh_t, HMCoup_t } |
Public Member Functions | |
RKSolver (Domain &dom) | |
~RKSolver () | |
void | SteadySolve (int NInc=1, char const *FKey=NULL) |
void | TransSolve (double tf, double dt, double dtOut, char const *FKey=NULL) |
void | DynSolve (double tf, double dt, double dtOut, char const *FKey=NULL) |
void | VWPSolve (double tf, double dt, double dtOut, char const *FKey=NULL) |
void | DebugPrintMatrices (bool Stop=true) |
Debug method. | |
int | SteadyFunc (double t, double const Y[], double dYdt[]) |
Steady problems: callback for RK solver. | |
int | TransFunc (double t, double const Y[], double dYdt[]) |
Transient problems: callback for RK solver. | |
int | DynFunc (double t, double const Y[], double dYdt[]) |
Dynamic problems: callback for RK solver. | |
void | DynUpFunc (double t, double Y[]) |
Dynamic problems: callback for RK solver (update) | |
int | VWPFunc (double t, double const Y[], double dYdt[]) |
v-w-p formulation: callback for RK solver | |
void | Initialize () |
Allocate memory. | |
void | AssembleK () |
Assemble K. | |
void | AssembleKM () |
Assemble K and M. | |
void | AssembleMC () |
Assemble M and maybe C. | |
void | AugMatrix (Sparse::Triplet< double, int > &A11) |
Augment A matrix with BCs and Lag multipliers. | |
Public Attributes | |
bool | WithInfo |
Print information ? | |
bool | LinProb |
Linear problems => constant matrices. | |
Damping_t | DampTy |
Damping type. | |
double | DampAm |
Rayleigh damping Am coefficient (C = Am*M + Ak*K) | |
double | DampAk |
Rayleigh damping Ak coefficient (C = Am*M + Ak*K) | |
String | Scheme |
Runge-Kutta scheme. | |
double | STOL |
Error tolerance for RK scheme. | |
bool | DynCteM |
M and C matrices are constants in dynsolver? | |
Domain & | Dom |
Domain. | |
size_t | NEq |
Total number of equations (DOFs) | |
size_t | NIv |
Total number of internal variables of elements. | |
size_t | NNu |
Number of nodal unknowns. | |
size_t | NLag |
Number of Lagrange multipliers. | |
size_t | NnzLag |
number of extra non-zero values due to Lagrange multipliers | |
Array< int > | pEQ |
prescribed equations; size = NEq2 | |
Array< bool > | pU |
prescribed U; size = NEq (all equations) | |
Array< int > | Eq1_to_V1 |
Array< int > | Eq1_to_U1 |
Vec_t | A |
Vec_t | V |
Vec_t | U |
Vec_t | F |
Vec_t | Fi |
size_t | K11_size |
size_t | K12_size |
size_t | K21_size |
size_t | K22_size |
Size of triplets. | |
Sparse::Triplet< double, int > | K11 |
Sparse::Triplet< double, int > | K12 |
Sparse::Triplet< double, int > | K21 |
Sparse::Triplet< double, int > | K22 |
Stiffness matrices. | |
Sparse::Triplet< double, int > | C11 |
Sparse::Triplet< double, int > | C12 |
Sparse::Triplet< double, int > | C21 |
Sparse::Triplet< double, int > | C22 |
Damping matrices. | |
Sparse::Triplet< double, int > | M11 |
Sparse::Triplet< double, int > | M12 |
Sparse::Triplet< double, int > | M21 |
Sparse::Triplet< double, int > | M22 |
Mass matrices. | |
UMFPACK::Sys * | USys |
System to be solved: X = A^(-1) * B. |
FEM::RKSolver::RKSolver | ( | Domain & | dom | ) | [inline] |
FEM::RKSolver::~RKSolver | ( | ) | [inline] |
void FEM::RKSolver::AssembleK | ( | ) | [inline] |
Assemble K.
void FEM::RKSolver::AssembleKM | ( | ) | [inline] |
Assemble K and M.
void FEM::RKSolver::AssembleMC | ( | ) | [inline] |
Assemble M and maybe C.
void FEM::RKSolver::AugMatrix | ( | Sparse::Triplet< double, int > & | A11 | ) | [inline] |
Augment A matrix with BCs and Lag multipliers.
void FEM::RKSolver::DebugPrintMatrices | ( | bool | Stop = true | ) | [inline] |
Debug method.
int FEM::RKSolver::DynFunc | ( | double | t, |
double const | Y[], | ||
double | dYdt[] | ||
) | [inline] |
Dynamic problems: callback for RK solver.
void FEM::RKSolver::DynSolve | ( | double | tf, |
double | dt, | ||
double | dtOut, | ||
char const * | FKey = NULL |
||
) | [inline] |
void FEM::RKSolver::DynUpFunc | ( | double | t, |
double | Y[] | ||
) | [inline] |
Dynamic problems: callback for RK solver (update)
void FEM::RKSolver::Initialize | ( | ) | [inline] |
Allocate memory.
int FEM::RKSolver::SteadyFunc | ( | double | t, |
double const | Y[], | ||
double | dYdt[] | ||
) | [inline] |
Steady problems: callback for RK solver.
void FEM::RKSolver::SteadySolve | ( | int | NInc = 1 , |
char const * | FKey = NULL |
||
) | [inline] |
int FEM::RKSolver::TransFunc | ( | double | t, |
double const | Y[], | ||
double | dYdt[] | ||
) | [inline] |
Transient problems: callback for RK solver.
void FEM::RKSolver::TransSolve | ( | double | tf, |
double | dt, | ||
double | dtOut, | ||
char const * | FKey = NULL |
||
) | [inline] |
int FEM::RKSolver::VWPFunc | ( | double | t, |
double const | Y[], | ||
double | dYdt[] | ||
) | [inline] |
v-w-p formulation: callback for RK solver
void FEM::RKSolver::VWPSolve | ( | double | tf, |
double | dt, | ||
double | dtOut, | ||
char const * | FKey = NULL |
||
) | [inline] |
Sparse::Triplet<double,int> FEM::RKSolver::C11 |
Sparse::Triplet<double,int> FEM::RKSolver::C12 |
Sparse::Triplet<double,int> FEM::RKSolver::C21 |
Sparse::Triplet<double,int> FEM::RKSolver::C22 |
Damping matrices.
double FEM::RKSolver::DampAk |
Rayleigh damping Ak coefficient (C = Am*M + Ak*K)
double FEM::RKSolver::DampAm |
Rayleigh damping Am coefficient (C = Am*M + Ak*K)
Damping type.
M and C matrices are constants in dynsolver?
Sparse::Triplet<double,int> FEM::RKSolver::K11 |
size_t FEM::RKSolver::K11_size |
Sparse::Triplet<double,int> FEM::RKSolver::K12 |
size_t FEM::RKSolver::K12_size |
Sparse::Triplet<double,int> FEM::RKSolver::K21 |
size_t FEM::RKSolver::K21_size |
Sparse::Triplet<double,int> FEM::RKSolver::K22 |
Stiffness matrices.
size_t FEM::RKSolver::K22_size |
Size of triplets.
Linear problems => constant matrices.
Sparse::Triplet<double,int> FEM::RKSolver::M11 |
Sparse::Triplet<double,int> FEM::RKSolver::M12 |
Sparse::Triplet<double,int> FEM::RKSolver::M21 |
Sparse::Triplet<double,int> FEM::RKSolver::M22 |
Mass matrices.
size_t FEM::RKSolver::NEq |
Total number of equations (DOFs)
size_t FEM::RKSolver::NIv |
Total number of internal variables of elements.
size_t FEM::RKSolver::NLag |
Number of Lagrange multipliers.
size_t FEM::RKSolver::NNu |
Number of nodal unknowns.
size_t FEM::RKSolver::NnzLag |
number of extra non-zero values due to Lagrange multipliers
Array<int> FEM::RKSolver::pEQ |
prescribed equations; size = NEq2
Array<bool> FEM::RKSolver::pU |
prescribed U; size = NEq (all equations)
Runge-Kutta scheme.
double FEM::RKSolver::STOL |
Error tolerance for RK scheme.
System to be solved: X = A^(-1) * B.
Print information ?