MechSys  1.0
Computing library for simulations in continuum and discrete mechanics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Types | Public Member Functions | Public Attributes
FEM::STDSolver Class Reference

#include <stdsolver.h>

Inheritance diagram for FEM::STDSolver:
FEM::Solver

List of all members.

Public Types

enum  Scheme_t { FE_t, ME_t, NR_t }
enum  TScheme_t { TH_t }
enum  DScheme_t { GN22_t, RK_t }
enum  Damping_t { None_t, Rayleigh_t, HMCoup_t }

Public Member Functions

 STDSolver (Domain &Dom, SDPair const &Flags, pOutFun OutFun=NULL, void *OutDat=NULL, pOutFun DbgFun=NULL, void *DbgDat=NULL)
 Allocate solver object.
String Name () const
void Solve (size_t NInc=1, char const *FileKey=NULL)
 Solve quasi-static problem.
void TransSolve (double tf, double dt, double dtOut, char const *FileKey=NULL)
 Solve transient problem.
void DynSolve (double tf, double dt, double dtOut, char const *FileKey=NULL)
 Solve dynamic problem.
void AssembleKA ()
 A = K11.
void AssembleKMA (double Coef1, double Coef2)
 A = Coef1*M + Coef2*K.
void AssembleKCMA (double Coef1, double Coef2, double Coef3)
 A = Coef1*M + Coef2*C + Coef3*K.
void TgIncs (double dT, Vec_t &dU, Vec_t &dF)
 Tangent increments: dU = inv(K)*dF.
void UpdateNodes (bool Transient=false)
 Copy U, V and F values into Nodes' U, V and F structures.
void UpdateElements (Vec_t const &dU, bool CalcFint)
 Update elements.
void Initialize (bool Transient=false)
 Initialize global matrices and vectors.
void SetIncsW (size_t NInc, bool NonLinWei=false)
 Set weights for quasi-static problem (If Weights.Size()==0: generate weights)
bool ResidOK () const
 Check if the residual is OK.
void DebugPrintMatrices (bool Stop=true)
 Debug method.

Public Attributes

size_t Inc
 Current increment.
size_t Stp
 Current (sub) step.
size_t It
 Current iteration.
size_t NEq
 Total number of equations (DOFs)
size_t NIv
 Total number of internal variables of elements.
size_t NLag
 Number of Lagrange multipliers.
Array< long > pEQ
 prescribed equations
Array< long > pEQproc
 prescribed equations: processor which will handle the equation (in case of shared nodes)
Array< bool > pU
 prescribed U
double NormR
 Euclidian norm of residual (R)
double MaxNormF
 Max(Norm(F), Norm(Fint))
Scheme_t Scheme
 Scheme: FE_t (Forward-Euler), ME_t (Modified-Euler)
bool CalcWork
 Calc work done == twice the stored (elastic) strain energy ?
size_t nSS
 FE and NR: number of substeps.
double STOL
 ME:
double dTini
 ME:
double dTlast
 ME:
double mMin
 ME:
double mMax
 ME:
size_t MaxSS
 ME:
bool SSOut
 SubSteps ouput in ME ?
bool CteTg
 Constant tangent matrices (linear problems) => K will be calculated once.
bool ModNR
 Modified Newton-Rhapson ?
double TolR
 Tolerance for the norm of residual.
bool CorR
 Correct residual ?
size_t MaxIt
 Max iterations (for Newton-Rhapson)
TScheme_t TScheme
 Transient scheme.
double TransTh
 Transient scheme constant (theta)
DScheme_t DScheme
 Dynamic scheme.
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)
double DynTh1
 Dynamic coefficient Theta 1.
double DynTh2
 Dynamic coefficient Theta 2.
Array< double > IncsW
 Increments weights used in Solve.
bool WithInfo
 Print information ?
bool WarnRes
 Warning if residual exceeds limit ?
double WrnTol
 Warning tolerance.
String RKScheme
 Runge-Kutta scheme.
double RKSTOL
 Runge-Kutta tolerance.
SDPair NLSteps
 Nonlinear steps.
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.
Sparse::Triplet< double, int > A11
 A=K or A=C1*M+C2*K or A=C1*M+C2*C+C3*K.
Vec_t R
 Residual.
Vec_t F0
 External force at the beginning of the stage.
Vec_t F
Vec_t F_int
 External and internal forces.
Vec_t W
Vec_t U
 Workspace, displacement.
Vec_t V
Vec_t A
 (Transient/Dynamic) velocity and acceleration
Vec_t dU
Vec_t dF
 Increments of U and F.
Vec_t Us
Vec_t Vs
 starred variables (for GN22)
Vec_t TmpVec
 Temporary vector (for parallel Allreduce)

Member Enumeration Documentation

Enumerator:
None_t 
Rayleigh_t 
HMCoup_t 
Enumerator:
GN22_t 
RK_t 
Enumerator:
FE_t 
ME_t 
NR_t 
Enumerator:
TH_t 

Constructor & Destructor Documentation

FEM::STDSolver::STDSolver ( Domain Dom,
SDPair const &  Flags,
pOutFun  OutFun = NULL,
void *  OutDat = NULL,
pOutFun  DbgFun = NULL,
void *  DbgDat = NULL 
) [inline]

Allocate solver object.


Member Function Documentation

void FEM::STDSolver::AssembleKA ( ) [inline]

A = K11.

void FEM::STDSolver::AssembleKCMA ( double  Coef1,
double  Coef2,
double  Coef3 
) [inline]

A = Coef1*M + Coef2*C + Coef3*K.

void FEM::STDSolver::AssembleKMA ( double  Coef1,
double  Coef2 
) [inline]

A = Coef1*M + Coef2*K.

void FEM::STDSolver::DebugPrintMatrices ( bool  Stop = true) [inline]

Debug method.

void FEM::STDSolver::DynSolve ( double  tf,
double  dt,
double  dtOut,
char const *  FileKey = NULL 
) [inline, virtual]

Solve dynamic problem.

Reimplemented from FEM::Solver.

void FEM::STDSolver::Initialize ( bool  Transient = false) [inline]

Initialize global matrices and vectors.

String FEM::STDSolver::Name ( ) const [inline, virtual]

Implements FEM::Solver.

bool FEM::STDSolver::ResidOK ( ) const [inline]

Check if the residual is OK.

void FEM::STDSolver::SetIncsW ( size_t  NInc,
bool  NonLinWei = false 
) [inline]

Set weights for quasi-static problem (If Weights.Size()==0: generate weights)

void FEM::STDSolver::Solve ( size_t  NInc = 1,
char const *  FileKey = NULL 
) [inline, virtual]

Solve quasi-static problem.

Reimplemented from FEM::Solver.

void FEM::STDSolver::TgIncs ( double  dT,
Vec_t dU,
Vec_t dF 
) [inline]

Tangent increments: dU = inv(K)*dF.

void FEM::STDSolver::TransSolve ( double  tf,
double  dt,
double  dtOut,
char const *  FileKey = NULL 
) [inline]

Solve transient problem.

void FEM::STDSolver::UpdateElements ( Vec_t const &  dU,
bool  CalcFint 
) [inline]

Update elements.

void FEM::STDSolver::UpdateNodes ( bool  Transient = false) [inline]

Copy U, V and F values into Nodes' U, V and F structures.


Member Data Documentation

(Transient/Dynamic) velocity and acceleration

A=K or A=C1*M+C2*K or A=C1*M+C2*C+C3*K.

Damping matrices.

Calc work done == twice the stored (elastic) strain energy ?

Correct residual ?

Constant tangent matrices (linear problems) => K will be calculated once.

Rayleigh damping Ak coefficient (C = Am*M + Ak*K)

Rayleigh damping Am coefficient (C = Am*M + Ak*K)

Damping type.

Increments of U and F.

Dynamic scheme.

ME:

ME:

Dynamic coefficient Theta 1.

Dynamic coefficient Theta 2.

External force at the beginning of the stage.

External and internal forces.

Current increment.

Increments weights used in Solve.

Current iteration.

Stiffness matrices.

Mass matrices.

Max iterations (for Newton-Rhapson)

Max(Norm(F), Norm(Fint))

ME:

ME:

ME:

Modified Newton-Rhapson ?

Total number of equations (DOFs)

Total number of internal variables of elements.

Number of Lagrange multipliers.

Nonlinear steps.

Euclidian norm of residual (R)

FE and NR: number of substeps.

prescribed equations

prescribed equations: processor which will handle the equation (in case of shared nodes)

prescribed U

Residual.

Runge-Kutta scheme.

Runge-Kutta tolerance.

Scheme: FE_t (Forward-Euler), ME_t (Modified-Euler)

SubSteps ouput in ME ?

ME:

Current (sub) step.

Temporary vector (for parallel Allreduce)

Tolerance for the norm of residual.

Transient scheme constant (theta)

Transient scheme.

Workspace, displacement.

starred variables (for GN22)

Warning if residual exceeds limit ?

Print information ?

Warning tolerance.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines