#include <itkFEMSolverCrankNicolson.h>
Inheritance diagram for itk::fem::SolverCrankNicolson:


Public Types | |
| typedef Element::ArrayType | ElementArray |
| typedef Element::Float | Float |
| typedef itk::Image< Element::ConstPointer, MaxGridDimensions > | InterpolationGridType |
| typedef Load::ArrayType | LoadArray |
| typedef Material::ArrayType | MaterialArray |
| typedef Node::ArrayType | NodeArray |
| typedef Element::VectorType | VectorType |
Public Member Functions | |
| *add solution vector u to the corresponding nodal which are *stored in node objects This is standard post processing of the solution *void | AddToDisplacements (Float optimum=1.0) |
| void | ApplyBC (int dim=0, unsigned int matrix=0) |
| virtual void | AssembleElementMatrix (Element::Pointer e) |
| void | AssembleF (int dim=0) |
| void | AssembleFforTimeStep (int dim=0) |
| void | AssembleK (void) |
| void | AssembleKandM () |
| virtual void | AssembleLandmarkContribution (Element::Pointer e, float) |
| void | AverageLastTwoDisplacements (Float t=0.5) |
| Float | BrentsMethod (Float tol=0.01, unsigned int MaxIters=25) |
| virtual void | Clear (void) |
| void | DecomposeK (void) |
| Float | EvaluateResidual (Float t=1.0) |
| *This function is called after the assebly has been completed *In this class it is only used to apply the BCs You may however *use it to perform other stuff in derived solver classes *virtual void | FinalizeMatrixAfterAssembly (void) |
| void | FindBracketingTriplet (Float *a, Float *b, Float *c) |
| void | GenerateGFN (void) |
| Float | GetCurrentMaxSolution () |
| Float | GetDeformationEnergy (unsigned int SolutionIndex=0) |
| Float | GetDeformationEnergy (Float t=1.0) |
| const Element * | GetElementAtPoint (const VectorType &pt) const |
| const InterpolationGridType * | GetInterpolationGrid (void) const |
| LinearSystemWrapper::Pointer | GetLinearSystemWrapper () |
| LinearSystemWrapper * | GetLS () |
| unsigned int | GetNumberOfDegreesOfFreedom (void) |
| Float | GetSolution (unsigned int i, unsigned int which=0) |
| virtual Float | GetTimeStep (void) const |
| *Float | GoldenSection (Float tol=0.01, unsigned int MaxIters=25) |
| Float | GSMax (Float a, Float b) |
| Float | GSSign (Float a, Float b) |
| void | InitializeForSolution () |
| *void | InitializeInterpolationGrid (const VectorType &size) |
| *Same as | InitializeInterpolationGrid (size,{0, 0...}, size) |
| void | InitializeInterpolationGrid (const VectorType &size, const VectorType &bb1, const VectorType &bb2) |
| virtual void | InitializeLinearSystemWrapper (void) |
| virtual void | InitializeMatrixForAssembly (unsigned int N) |
| itkStaticConstMacro (MaxGridDimensions, unsigned int, 3) | |
| void | PrintDisplacements () |
| void | PrintForce () |
| void | PrintMinMaxOfSolution () |
| void | Read (std::istream &f) |
| void | RecomputeForceVector (unsigned int index) |
| void | SetAlpha (Float a=0.5) |
| void | SetDeltatT (Float T) |
| void | SetEnergyToMin (Float xmin) |
| void | SetLinearSystemWrapper (LinearSystemWrapper::Pointer ls) |
| void | SetRho (Float rho) |
| virtual void | SetTimeStep (Float) |
| void | Solve () |
| SolverCrankNicolson () | |
| void | UpdateDisplacements (void) |
| void | Write (std::ostream &f) |
| void | ZeroVector (int which=0) |
| ~SolverCrankNicolson () | |
Public Attributes | |
| unsigned int | DifferenceMatrixIndex |
| unsigned int | DiffMatrixBySolutionTMinus1Index |
| ElementArray | el |
| unsigned int | ForceTIndex |
| unsigned int | ForceTMinus1Index |
| unsigned int | ForceTotalIndex |
| LoadArray | load |
| Float | m_alpha |
| Float | m_CurrentMaxSolution |
| Float | m_deltaT |
| Float | m_rho |
| MaterialArray | mat |
| NodeArray | node |
| Finds the optimum value between the last two solutions *and sets the current solution to that value Uses Evaluate | Residual |
| unsigned int | SolutionTIndex |
| unsigned int | SolutionTMinus1Index |
| unsigned int | SolutionVectorTMinus1Index |
| unsigned int | SumMatrixIndex |
| unsigned int | TotalSolutionIndex |
| *add solution vector u to the corresponding nodal | values |
Protected Attributes | |
| LinearSystemWrapper::Pointer | m_ls |
| unsigned int | NGFN |
| unsigned int | NMFC |
|
|
Array that holds pointers to all elements. since we want to be able to manipulate the array we have to use special pointers Definition at line 54 of file itkFEMSolver.h. |
|
|
Local float type Definition at line 48 of file itkFEMSolver.h. |
|
|
Type used to store interpolation grid Definition at line 95 of file itkFEMSolver.h. |
|
|
Array that holds special pointers to all external loads Definition at line 66 of file itkFEMSolver.h. |
|
|
Array that holds pointers to the materials Definition at line 72 of file itkFEMSolver.h. |
|
|
Array that holds special pointers to the nodes Definition at line 60 of file itkFEMSolver.h. |
|
|
VectorType from the Element base class Definition at line 78 of file itkFEMSolver.h. |
|
|
Default constructor which sets the indices for the matrix and vector storage. Time step and other parameters are also initialized. Definition at line 143 of file itkFEMSolverCrankNicolson.h. References DifferenceMatrixIndex, DiffMatrixBySolutionTMinus1Index, ForceTIndex, ForceTMinus1Index, ForceTotalIndex, m_alpha, m_CurrentMaxSolution, m_deltaT, m_rho, SolutionTIndex, SolutionTMinus1Index, SolutionVectorTMinus1Index, SumMatrixIndex, and TotalSolutionIndex. |
|
|
Definition at line 163 of file itkFEMSolverCrankNicolson.h. |
|
|
|
|
||||||||||||
|
Apply the boundary conditions to the system.
Referenced by itk::fem::Solver::FinalizeMatrixAfterAssembly(). |
|
|
Copy the element stiffness matrix into the correct position in the master stiffess matrix. Since more complex Solver classes may need to assemble many matrices and may also do some funky stuff to them, this function is virtual and can be overriden in a derived solver class. Reimplemented in itk::fem::SolverHyperbolic. |
|
|
Assemble the master force vector.
|
|
|
Assemble the master force vector at a given time.
|
|
|
Assemble the master stiffness matrix (also apply the MFCs to K) |
|
|
Assemble the master stiffness and mass matrix. We actually assemble the right hand side and left hand side of the implicit scheme equation. |
|
||||||||||||
|
Add the contribution of the landmark-containing elements to the correct position in the master stiffess matrix. Since more complex Solver classes may need to assemble many matrices and may also do some funky stuff to them, this function is virtual and can be overriden in a derived solver class. |
|
|
|
|
||||||||||||
|
|
|
|
Cleans all data members, and initializes the solver to initial state. |
|
|
Decompose matrix using svd, qr, whatever ... |
|
|
|
|
|
Reimplemented in itk::fem::SolverHyperbolic. Definition at line 189 of file itkFEMSolver.h. References itk::fem::Solver::ApplyBC(). |
|
||||||||||||||||
|
|
|
|
Assign a global freedom numbers to each DOF in a system. This must be done before any other solve function can be called. |
|
|
Definition at line 134 of file itkFEMSolverCrankNicolson.h. References m_CurrentMaxSolution. |
|
|
Get the total deformation energy using the chosen solution |
|
|
|
|
|
Returns the pointer to the element which contains global point pt.
|
|
|
Returns pointer to interpolation grid, which is an itk::Image of pointers to Element objects. Normally you would use physical coordinates to get specific points (pointers to elements) from the image. You can then use the Elemenet::InterpolateSolution member function on the returned element to obtain the solution at this point.
Definition at line 132 of file itkFEMSolver.h. |
|
|
Gets the LinearSystemWrapper object.
Definition at line 299 of file itkFEMSolver.h. References itk::fem::Solver::m_ls. |
|
|
Definition at line 132 of file itkFEMSolverCrankNicolson.h. References itk::fem::Solver::m_ls. |
|
|
Definition at line 258 of file itkFEMSolver.h. References itk::fem::Solver::NGFN. |
|
||||||||||||
|
Definition at line 253 of file itkFEMSolver.h. References itk::fem::Solution::GetSolutionValue(), and itk::fem::Solver::m_ls. |
|
|
Returns the time step used for dynamic problems. Reimplemented in itk::fem::SolverHyperbolic. Definition at line 310 of file itkFEMSolver.h. |
|
||||||||||||
|
|
|
||||||||||||
|
Definition at line 128 of file itkFEMSolverCrankNicolson.h. |
|
||||||||||||
|
Definition at line 127 of file itkFEMSolverCrankNicolson.h. |
|
|
|
|
|
Definition at line 116 of file itkFEMSolver.h. References itk::fem::Solver::InitializeInterpolationGrid(). |
|
|
|
|
||||||||||||||||
|
Initialize the interpolation grid. The interpolation grid is used to find elements that containg specific points in a mesh. The interpolation grid stores pointers to elements for each point on a grid thereby providing a fast way (lookup table) to perform interpolation of results.
Referenced by itk::fem::Solver::InitializeInterpolationGrid(). |
|
|
Performs any initialization needed for LinearSystemWrapper object i.e. sets the maximum number of matrices and vectors. Reimplemented in itk::fem::SolverHyperbolic. |
|
|
This function is called before assembling the matrices. You can override it in a derived class to account for special needs.
Reimplemented in itk::fem::SolverHyperbolic. |
|
||||||||||||||||
|
Since the itk::Image is templated over the number of dimensions, we have to know this at compile time. Solver class, however, can handle elements in any number of dimensions. In order to be able to use the Image, we choose the maximum number of space dimension that this function will be able to handle. Any unused dimensions are filled with zero. For example: If a 2D node coordinates are {1.0,3.0} then the corresponding phisycal point in an image is {1.0,3.0,0.0}; |
|
|
|
|
|
|
|
|
Compute and print the minimum and maximum of the total solution and the last solution. |
|
|
Reads the whole system (nodes, materials and elements) from input stream |
|
|
compute the current state of the right hand side and store the current force for the next iteration. |
|
|
Set stability step for the solution. Definition at line 104 of file itkFEMSolverCrankNicolson.h. References m_alpha. |
|
|
Set time step for the solution. Should be 1/2. Definition at line 107 of file itkFEMSolverCrankNicolson.h. References m_deltaT. |
|
|
|
|
|
Sets the LinearSystemWrapper object that will be used when solving the master equation. If this function is not called, a default VNL linear system representation will be used (class LinearSystemWrapperVNL).
|
|
|
Set density constant. Definition at line 110 of file itkFEMSolverCrankNicolson.h. References m_rho. |
|
|
Sets the time step used for dynamic problems.
Reimplemented in itk::fem::SolverHyperbolic. Definition at line 317 of file itkFEMSolver.h. |
|
|
Solve for the displacement vector u at a given time. Update the total solution as well. Reimplemented from itk::fem::Solver. |
|
|
Copy solution vector u to the corresponding nodal values, which are stored in node objects). This is standard post processing of the solution |
|
|
Writes everything (nodes, materials and elements) to output stream |
|
|
|
|
|
Definition at line 177 of file itkFEMSolverCrankNicolson.h. Referenced by SolverCrankNicolson(). |
|
|
Definition at line 179 of file itkFEMSolverCrankNicolson.h. Referenced by SolverCrankNicolson(). |
|
|
Definition at line 55 of file itkFEMSolver.h. |
|
|
Definition at line 170 of file itkFEMSolverCrankNicolson.h. Referenced by SolverCrankNicolson(). |
|
|
Definition at line 172 of file itkFEMSolverCrankNicolson.h. Referenced by SolverCrankNicolson(). |
|
|
Definition at line 171 of file itkFEMSolverCrankNicolson.h. Referenced by SolverCrankNicolson(). |
|
|
Definition at line 67 of file itkFEMSolver.h. |
|
|
Definition at line 167 of file itkFEMSolverCrankNicolson.h. Referenced by SetAlpha(), and SolverCrankNicolson(). |
|
|
Definition at line 168 of file itkFEMSolverCrankNicolson.h. Referenced by GetCurrentMaxSolution(), and SolverCrankNicolson(). |
|
|
Definition at line 165 of file itkFEMSolverCrankNicolson.h. Referenced by SetDeltatT(), and SolverCrankNicolson(). |
|
|
Pointer to LinearSystemWrapper object. Definition at line 333 of file itkFEMSolver.h. Referenced by itk::fem::Solver::GetLinearSystemWrapper(), GetLS(), and itk::fem::Solver::GetSolution(). |
|
|
Definition at line 166 of file itkFEMSolverCrankNicolson.h. Referenced by SetRho(), and SolverCrankNicolson(). |
|
|
Definition at line 73 of file itkFEMSolver.h. |
|
|
Number of global degrees of freedom in a system Definition at line 324 of file itkFEMSolver.h. Referenced by itk::fem::Solver::GetNumberOfDegreesOfFreedom(). |
|
|
Number of multi freedom constraints in a system. This member is set in a AssembleK function. Definition at line 330 of file itkFEMSolver.h. |
|
|
Definition at line 61 of file itkFEMSolver.h. |
|
|
Definition at line 120 of file itkFEMSolverCrankNicolson.h. |
|
|
Definition at line 173 of file itkFEMSolverCrankNicolson.h. Referenced by SolverCrankNicolson(). |
|
|
Definition at line 174 of file itkFEMSolverCrankNicolson.h. Referenced by SolverCrankNicolson(). |
|
|
Definition at line 175 of file itkFEMSolverCrankNicolson.h. Referenced by SolverCrankNicolson(). |
|
|
Definition at line 178 of file itkFEMSolverCrankNicolson.h. Referenced by SolverCrankNicolson(). |
|
|
Definition at line 176 of file itkFEMSolverCrankNicolson.h. Referenced by SolverCrankNicolson(). |
|
|
Definition at line 93 of file itkFEMSolverCrankNicolson.h. |
1.4.2 written by Dimitri van Heesch,
© 1997-2000