![]() |
MechSys
1.0
Computing library for simulations in continuum and discrete mechanics
|
#include <stdsolver.h>
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) | |
| FEM::STDSolver::STDSolver | ( | Domain & | Dom, |
| SDPair const & | Flags, | ||
| pOutFun | OutFun = NULL, |
||
| void * | OutDat = NULL, |
||
| pOutFun | DbgFun = NULL, |
||
| void * | DbgDat = NULL |
||
| ) | [inline] |
Allocate solver object.
| 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.
(Transient/Dynamic) velocity and acceleration
| Sparse::Triplet<double,int> FEM::STDSolver::A11 |
A=K or A=C1*M+C2*K or A=C1*M+C2*C+C3*K.
| Sparse::Triplet<double,int> FEM::STDSolver::C11 |
| Sparse::Triplet<double,int> FEM::STDSolver::C12 |
| Sparse::Triplet<double,int> FEM::STDSolver::C21 |
| Sparse::Triplet<double,int> FEM::STDSolver::C22 |
Damping matrices.
Calc work done == twice the stored (elastic) strain energy ?
| bool FEM::STDSolver::CorR |
Correct residual ?
Constant tangent matrices (linear problems) => K will be calculated once.
| double FEM::STDSolver::DampAk |
Rayleigh damping Ak coefficient (C = Am*M + Ak*K)
| double FEM::STDSolver::DampAm |
Rayleigh damping Am coefficient (C = Am*M + Ak*K)
Damping type.
Increments of U and F.
Dynamic scheme.
| double FEM::STDSolver::dTini |
ME:
| double FEM::STDSolver::dTlast |
ME:
| double FEM::STDSolver::DynTh1 |
Dynamic coefficient Theta 1.
| double FEM::STDSolver::DynTh2 |
Dynamic coefficient Theta 2.
External force at the beginning of the stage.
External and internal forces.
| size_t FEM::STDSolver::Inc |
Current increment.
| Array<double> FEM::STDSolver::IncsW |
Increments weights used in Solve.
| size_t FEM::STDSolver::It |
Current iteration.
| Sparse::Triplet<double,int> FEM::STDSolver::K11 |
| Sparse::Triplet<double,int> FEM::STDSolver::K12 |
| Sparse::Triplet<double,int> FEM::STDSolver::K21 |
| Sparse::Triplet<double,int> FEM::STDSolver::K22 |
Stiffness matrices.
| Sparse::Triplet<double,int> FEM::STDSolver::M11 |
| Sparse::Triplet<double,int> FEM::STDSolver::M12 |
| Sparse::Triplet<double,int> FEM::STDSolver::M21 |
| Sparse::Triplet<double,int> FEM::STDSolver::M22 |
Mass matrices.
| size_t FEM::STDSolver::MaxIt |
Max iterations (for Newton-Rhapson)
| double FEM::STDSolver::MaxNormF |
Max(Norm(F), Norm(Fint))
| size_t FEM::STDSolver::MaxSS |
ME:
| double FEM::STDSolver::mMax |
ME:
| double FEM::STDSolver::mMin |
ME:
Modified Newton-Rhapson ?
| size_t FEM::STDSolver::NEq |
Total number of equations (DOFs)
| size_t FEM::STDSolver::NIv |
Total number of internal variables of elements.
| size_t FEM::STDSolver::NLag |
Number of Lagrange multipliers.
Nonlinear steps.
| double FEM::STDSolver::NormR |
Euclidian norm of residual (R)
| size_t FEM::STDSolver::nSS |
FE and NR: number of substeps.
| Array<long> FEM::STDSolver::pEQ |
prescribed equations
| Array<long> FEM::STDSolver::pEQproc |
prescribed equations: processor which will handle the equation (in case of shared nodes)
| Array<bool> FEM::STDSolver::pU |
prescribed U
Residual.
Runge-Kutta scheme.
| double FEM::STDSolver::RKSTOL |
Runge-Kutta tolerance.
Scheme: FE_t (Forward-Euler), ME_t (Modified-Euler)
SubSteps ouput in ME ?
| double FEM::STDSolver::STOL |
ME:
| size_t FEM::STDSolver::Stp |
Current (sub) step.
Temporary vector (for parallel Allreduce)
| double FEM::STDSolver::TolR |
Tolerance for the norm of residual.
| double FEM::STDSolver::TransTh |
Transient scheme constant (theta)
Transient scheme.
Workspace, displacement.
starred variables (for GN22)
Warning if residual exceeds limit ?
Print information ?
| double FEM::STDSolver::WrnTol |
Warning tolerance.
1.7.6.1