hp2FEM
0.1
|
Class for the global FE solver. More...
#include <GlobalSolver.h>
Public Member Functions | |
GlobalSolver () | |
Default constructor (without parameters): the class attributes are initialized with default values. | |
GlobalSolver (GlobalSolver &Instance) | |
Copy-initializer constructor. Copies the contents of Instance to the current object,. | |
GlobalSolver & | operator= (GlobalSolver &Instance) |
Copies the contents of Instance to the current object,. | |
~GlobalSolver () | |
Destructor. | |
void | Run () |
Runs the given analysis. | |
Protected Member Functions | |
void | NewtonRaphsonSolver () |
Newton-Raphson method used to solve a non-linear model. | |
void | NewtonRaphsonContactSolver () |
Newton-Raphson method used to solve a contact model. | |
void | DynamicLinearSolver () |
Runs the linear dynamic analysis using explicit CD method or the implicit Newmark method. | |
void | ProjectionSolver () |
Solves projection problems for the global sparse mass matrix. | |
void | StaticLinearSolver () |
Solves static problems for the global sparse stiffness matrix. | |
void | CentralDifferenceGlobalMethod () |
Evaluate displacement, velocity and acceleration in time using the explicit Central Difference Method in its global form. | |
void | NewmarkGlobalMethod () |
Evaluate displacement, velocity and acceleration in time using the implicit Newmark Method in its global form. | |
void | SetIterativeSparseTopology (SymmetricSparse &SPAIt, unsigned long NoBCFlag=0) |
Creates the indices (i,j) for the coefficients of global sparse matrices. | |
void | SetIterativeSparseTopology (SymmetricSparse &SPAItM, SymmetricSparse &SPAItK) |
Creates the indices (i,j) for the coefficients of global sparse matrices. | |
void | AssemblingGlbLoadVector (LoadSet &LoadSets, unsigned long LoadSetNumber, double t=0) |
Assembles the global load vector for all loads applied in finite element entities (nodes, edges, faces, element) and geometrical entities (keypoints, lines and surfaces). This method is not applied for pressure following loads. | |
void | AssemblingGlbNonLinearPressureVector (unsigned long LoadSets, unsigned long LoadSetNumber, unsigned long Delta) |
Assembling the pressure vector for all loads applied on nodes, lines, surfaces and volumes in local coordinate system. This method is applied to non-linear pressure following loads only. | |
void | AssemblingGlbPressureVector (unsigned long LoadSets, unsigned long LoadSetNumber) |
Assembling the pressure vector for all loads applied on nodes, lines, surfaces and volumes in the element coordinate system. This method is applied to linear pressure loads only. | |
void | AssemblingGlbContactData (LoadSet &LoadSets, unsigned long LoadSetNumber) |
Assembling the Contact Data. | |
void | AssemblingGlobalStiffnessMatrix () |
Method to calculate the element stiffness matrices and assemble them in the sparse global stiffness matrix. | |
void | AssemblingGlobalNonLinearStiffnessMatrix () |
Method to calculate the element tangent stiffness matrices and assemble them in the sparse global tangent stiffness matrix for the NR method. | |
void | AssemblingGlobalContactStiffnessMatrix (LoadSet &LoadSets, unsigned long LoadSetNumber) |
Method to calculate the contact stiffness matrices and assemble them in the sparse global tangent stiffness matrix for the NR method. | |
void | AssemblingGlobalStiffnessMatrixLoadVector () |
Method to calculatethe element stiffness matrices and body load vectors and assemble them in the sparse global stiffness matrix and global load vector for pressure following loads. | |
void | AssemblingGlobalMassMatrix () |
Method to calculate the element mass matrices and assemble them in the sparse global mass matrix. | |
void | AssemblingGlobalEffectiveMatrix () |
Method to calculate the element effective matrices and assemble them in the sparse global effective matrix. | |
void | ApplyNHDirichletBCLinear (double DeltaInc, unsigned short Iter=0) |
Apply the non-homogeneous Dirichlet boundary condition to linear problems. | |
void | ApplyNHDirichletBCNonLinear () |
Apply the non-homogeneous Dirichlet boundary condition for nonlinear problems. | |
void | LinearSystemSolution (SymmetricSparse &A, double *F, unsigned long LSNum) |
Solves the linear system according to the chose algorithm. | |
void | LinearSystemSolution (SymmetricSparse &A, double *b, unsigned long LSNum, double *x) |
Solves the linear system according to the chose algorithm. | |
void | LinearSystemSolution (SymmetricSparse &A, double *b, unsigned long LSNum, Vector &x, unsigned long &NIT, double &NormResidual) |
Solves the linear system according to the chose algorithm. | |
Protected Attributes | |
SymmetricSparse | StiffMatrix |
Global sparse stiffness matrix. | |
SymmetricSparse | MassMatrix |
Global sparse mass matrix. | |
SymmetricSparse | EffMatrix |
Effective matrix used for dynamic problems. |
Class for the global FE solver.
GlobalSolver::GlobalSolver | ( | GlobalSolver & | Instance | ) |
Copy-initializer constructor. Copies the contents of Instance to the current object,.
[in] | Instance | - instance of the solver class. |
void GlobalSolver::ApplyNHDirichletBCLinear | ( | double | DeltaInc, |
unsigned short | Iter = 0 |
||
) | [protected] |
Apply the non-homogeneous Dirichlet boundary condition to linear problems.
[in] | DeltaInc | - the intensity of the BC increment. |
[in] | Iter | - Iteration flag for nonlinear problems. If 0 (default), prescribes the intensity of the BC increment value. If 1, prescribes the value 0. |
void GlobalSolver::AssemblingGlbContactData | ( | LoadSet & | LoadSets, |
unsigned long | LoadSetNumber | ||
) | [protected] |
Assembling the Contact Data.
[in] | LoadSets- | Instance of LoadSets. |
[in] | LoatSetNumber | - the actual Load Set. |
void GlobalSolver::AssemblingGlbLoadVector | ( | LoadSet & | LoadSets, |
unsigned long | LoadSetNumber, | ||
double | t = 0 |
||
) | [protected] |
Assembles the global load vector for all loads applied in finite element entities (nodes, edges, faces, element) and geometrical entities (keypoints, lines and surfaces). This method is not applied for pressure following loads.
[in] | LoadSets- | Instance of LoadSets. |
[in] | LoatSetNumber | - the actual Load Set. |
[in] | t | - time step. |
void GlobalSolver::AssemblingGlbNonLinearPressureVector | ( | unsigned long | LoadSets, |
unsigned long | LoadSetNumber, | ||
unsigned long | Delta | ||
) | [protected] |
Assembling the pressure vector for all loads applied on nodes, lines, surfaces and volumes in local coordinate system. This method is applied to non-linear pressure following loads only.
[in] | LoadSets- | Instance ofr LoadSets. |
[in] | LoatSetNumber | - the actual Load Set. |
void GlobalSolver::AssemblingGlbPressureVector | ( | unsigned long | LoadSets, |
unsigned long | LoadSetNumber | ||
) | [protected] |
Assembling the pressure vector for all loads applied on nodes, lines, surfaces and volumes in the element coordinate system. This method is applied to linear pressure loads only.
[in] | LoadSets- | Instance of LoadSets. |
[in] | LoatSetNumber | - the actual Load Set. |
void GlobalSolver::AssemblingGlobalContactStiffnessMatrix | ( | LoadSet & | LoadSets, |
unsigned long | LoadSetNumber | ||
) | [protected] |
Method to calculate the contact stiffness matrices and assemble them in the sparse global tangent stiffness matrix for the NR method.
[in] | LoadSets- | Instance of LoadSets. |
[in] | LoatSetNumber | - the actual Load Set. |
void GlobalSolver::AssemblingGlobalMassMatrix | ( | ) | [protected] |
Method to calculate the element mass matrices and assemble them in the sparse global mass matrix.
end for over the number os equations
end for over the number os equations
void GlobalSolver::CentralDifferenceGlobalMethod | ( | ) | [protected] |
Evaluate displacement, velocity and acceleration in time using the explicit Central Difference Method in its global form.
[in] | LoatSetNumber | - the actual Load Set. |
void GlobalSolver::DynamicLinearSolver | ( | ) | [protected] |
Runs the linear dynamic analysis using explicit CD method or the implicit Newmark method.
Displacements
Velocities
void GlobalSolver::LinearSystemSolution | ( | SymmetricSparse & | A, |
double * | F, | ||
unsigned long | LSNum | ||
) | [protected] |
Solves the linear system according to the chose algorithm.
[in] | A | - matrix. |
[in] | F | - vector. |
void GlobalSolver::LinearSystemSolution | ( | SymmetricSparse & | A, |
double * | b, | ||
unsigned long | LSNum, | ||
double * | x | ||
) | [protected] |
Solves the linear system according to the chose algorithm.
[in] | A | - matrix. |
[in] | b | - vector. |
[out] | x | - Solution vector |
void GlobalSolver::LinearSystemSolution | ( | SymmetricSparse & | A, |
double * | b, | ||
unsigned long | LSNum, | ||
Vector & | x, | ||
unsigned long & | NIT, | ||
double & | NormResidual | ||
) | [protected] |
Solves the linear system according to the chose algorithm.
[in] | A | - matrix. |
[in] | b | - vector. |
[out] | x | - Solution vector |
[out] | NIT | - Number of iterations |
[out] | NormResidual | - Norm of the residual |
void GlobalSolver::NewmarkGlobalMethod | ( | ) | [protected] |
Evaluate displacement, velocity and acceleration in time using the implicit Newmark Method in its global form.
[in] | LoatSetNumber | - the actual Load Set. |
void GlobalSolver::NewtonRaphsonContactSolver | ( | ) | [protected] |
Newton-Raphson method used to solve a contact model.
Kt * IncU = Fe - Fint U = U + incU. where Kt is the tangent matrix, incU is the increment of primary variables, Fe is the external load vector and Fint is the internal forces for the internal stresses.
void GlobalSolver::NewtonRaphsonSolver | ( | ) | [protected] |
Newton-Raphson method used to solve a non-linear model.
Kt * IncU = Fe - Fint U = U + incU. where Kt is the tangent matrix, incU is the increment of primary variables, Fe is the external load vector and Fint is the internal forces for the internal stresses.
GlobalSolver & GlobalSolver::operator= | ( | GlobalSolver & | Instance | ) |
Copies the contents of Instance to the current object,.
[in] | Instance | - instance of the solver class. |
void GlobalSolver::SetIterativeSparseTopology | ( | SymmetricSparse & | SPAIt, |
unsigned long | NoBCFlag = 0 |
||
) | [protected] |
Creates the indices (i,j) for the coefficients of global sparse matrices.
[in] | Global | Matrix. |
[in] | NoBCFlag | - flag to store the size of the matrix, if 0 it stores only the free DOFs, if 1 it stores all DOFs. |
Use the information stored in table EquationEquation to define the (i,j) indices for the non-zero coefficients of the sparse global matrix.
void GlobalSolver::SetIterativeSparseTopology | ( | SymmetricSparse & | SPAItM, |
SymmetricSparse & | SPAItK | ||
) | [protected] |
Creates the indices (i,j) for the coefficients of global sparse matrices.
[in] | Global | mass matrix. |
[in] | Global | stiffness matrix. |
Use the information stored in table EquationEquation to define the (i,j) indices for the non-zero coefficients of the sparse global matrix.