template<unsigned int TDimension = 3>
class itk::fem::SolverCrankNicolson< TDimension >
FEM Solver for time dependent problems; uses Crank-Nicolson implicit discretization scheme.
This is the main class used for solving FEM time-dependent problems. It solves the following problem:
which is the Crank-Nicolson formulation of the static problem if . The static solution is gained if : ; ; ; Practically, it is good to set rho to something small (for the itpack solver). The advantage of choosing is that the solution is then stable for any choice of time step, dt. This class inherits and uses most of the Solver class functionality.
Updated: The calls to to AssembleKandM (or AssembleK) and AssembleFforTimeStep (or AssembleF) are now handled internally by calling Update().
FIXME: 1) We should also account for the contribution to the force from essential BCs. Basically there are terms involving and where is the essential BC vector.
Definition at line 72 of file itkFEMSolverCrankNicolson.h.
|
void | AddToDisplacements (Float optimum=1.0) |
|
void | AverageLastTwoDisplacements (Float t=0.5) |
|
Float | BrentsMethod (Float tol=0.01, unsigned int MaxIters=25) |
|
Float | EvaluateResidual (Float t=1.0) |
|
void | FindBracketingTriplet (Float *a, Float *b, Float *c) |
|
Float | GetCurrentMaxSolution () |
|
Float | GetDeformationEnergy (Float t=1.0) |
|
LinearSystemWrapper * | GetLS () |
|
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) |
|
| itkGetConstMacro (Iterations, unsigned int) |
|
| itkGetMacro (TotalSolutionIndex, unsigned int) |
|
| itkGetMacro (SolutionTMinus1Index, unsigned int) |
|
| itkNewMacro (Self) |
|
| itkTypeMacro (SolverCrankNicolson, Solver< TDimension >) |
|
void | PrintDisplacements () |
|
void | PrintForce () |
|
void | PrintMinMaxOfSolution () |
|
void | RecomputeForceVector (unsigned int index) |
|
void | ResetIterations (void) |
|
void | SetEnergyToMin (Float xmin) |
|
virtual void | SetTimeStep (Float dt) |
|
void | ZeroVector (int which=0) |
|
|
| itkSetMacro (UseMassMatrix, bool) |
|
| itkGetMacro (UseMassMatrix, bool) |
|
|
| itkSetMacro (Alpha, Float) |
|
| itkGetMacro (Alpha, Float) |
|
|
| itkSetMacro (Rho, Float) |
|
| itkGetMacro (Rho, Float) |
|
virtual ::itk::LightObject::Pointer | CreateAnother (void) const |
|
Float | GetDeformationEnergy (unsigned int SolutionIndex=0) |
|
virtual
InterpolationGridDirectionType | GetDirection () |
|
const Element * | GetElementAtPoint (const VectorType &pt) const |
|
FEMObjectType * | GetInput (void) |
|
FEMObjectType * | GetInput (unsigned int idx) |
|
LinearSystemWrapper::Pointer | GetLinearSystemWrapper () |
|
virtual const char * | GetNameOfClass () const |
|
virtual InterpolationGridPointType | GetOrigin () |
|
virtual InterpolationGridRegionType | GetRegion () |
|
Float | GetSolution (unsigned int i, unsigned int which=0) |
|
virtual
InterpolationGridSpacingType | GetSpacing () |
|
void | InitializeInterpolationGrid (const InterpolationGridSizeType &size, const InterpolationGridPointType &bb1, const InterpolationGridPointType &bb2) |
|
virtual void | SetDirection (InterpolationGridDirectionType _arg) |
|
virtual void | SetInput (FEMObjectType *fem) |
|
virtual void | SetInput (unsigned int, FEMObjectType *fem) |
|
void | SetLinearSystemWrapper (LinearSystemWrapper::Pointer ls) |
|
virtual void | SetOrigin (InterpolationGridPointType _arg) |
|
virtual void | SetRegion (InterpolationGridRegionType _arg) |
|
virtual void | SetSpacing (InterpolationGridSpacingType _arg) |
|
void | InitializeInterpolationGrid (const InterpolationGridSizeType &size) |
|
void | InitializeInterpolationGrid (const InterpolationGridRegionType ®ion, const InterpolationGridPointType &origin, const InterpolationGridSpacingType &spacing, const InterpolationGridDirectionType &direction) |
|
const InterpolationGridType * | GetInterpolationGrid (void) const |
|
virtual DataObjectPointer | MakeOutput (DataObjectPointerArraySizeType) |
|
FEMObjectType * | GetOutput (void) |
|
FEMObjectType * | GetOutput (unsigned int idx) |
|
virtual void | AbortGenerateDataOff () |
|
virtual void | AbortGenerateDataOn () |
|
virtual void | EnlargeOutputRequestedRegion (DataObject *) |
|
virtual const bool & | GetAbortGenerateData () |
|
NameArray | GetInputNames () const |
|
MultiThreader * | GetMultiThreader () const |
|
DataObjectPointerArraySizeType | GetNumberOfIndexedInputs () const |
|
DataObjectPointerArraySizeType | GetNumberOfInputs () const |
|
DataObjectPointerArraySizeType | GetNumberOfOutputs () const |
|
virtual
DataObjectPointerArraySizeType | GetNumberOfValidRequiredInputs () const |
|
NameArray | GetOutputNames () const |
|
virtual const float & | GetProgress () |
|
NameArray | GetRequiredInputNames () const |
|
bool | HasInput (const DataObjectIdentifierType &key) const |
|
bool | HasOutput (const DataObjectIdentifierType &key) const |
|
virtual DataObjectPointer | MakeOutput (const DataObjectIdentifierType &) |
|
virtual void | PrepareOutputs () |
|
virtual void | PropagateRequestedRegion (DataObject *output) |
|
virtual void | ResetPipeline () |
|
virtual void | SetAbortGenerateData (bool _arg) |
|
virtual void | SetProgress (float _arg) |
|
virtual void | Update () |
|
virtual void | UpdateLargestPossibleRegion () |
|
virtual void | UpdateOutputData (DataObject *output) |
|
virtual void | UpdateOutputInformation () |
|
void | UpdateProgress (float amount) |
|
DataObjectPointerArray | GetInputs () |
|
DataObjectPointerArray | GetOutputs () |
|
DataObjectPointerArray | GetIndexedInputs () |
|
DataObjectPointerArray | GetIndexedOutputs () |
|
DataObjectPointerArraySizeType | GetNumberOfIndexedOutputs () const |
|
virtual void | SetReleaseDataFlag (bool flag) |
|
virtual bool | GetReleaseDataFlag () const |
|
void | ReleaseDataFlagOn () |
|
void | ReleaseDataFlagOff () |
|
virtual void | SetReleaseDataBeforeUpdateFlag (bool _arg) |
|
virtual const bool & | GetReleaseDataBeforeUpdateFlag () |
|
virtual void | ReleaseDataBeforeUpdateFlagOn () |
|
virtual void | ReleaseDataBeforeUpdateFlagOff () |
|
virtual void | SetNumberOfThreads (ThreadIdType _arg) |
|
virtual const ThreadIdType & | GetNumberOfThreads () |
|
unsigned long | AddObserver (const EventObject &event, Command *) |
|
unsigned long | AddObserver (const EventObject &event, Command *) const |
|
virtual void | DebugOff () const |
|
virtual void | DebugOn () const |
|
Command * | GetCommand (unsigned long tag) |
|
bool | GetDebug () const |
|
MetaDataDictionary & | GetMetaDataDictionary (void) |
|
const MetaDataDictionary & | GetMetaDataDictionary (void) const |
|
virtual ModifiedTimeType | GetMTime () const |
|
virtual const TimeStamp & | GetTimeStamp () const |
|
bool | HasObserver (const EventObject &event) const |
|
void | InvokeEvent (const EventObject &) |
|
void | InvokeEvent (const EventObject &) const |
|
virtual void | Modified () const |
|
virtual void | Register () const |
|
void | RemoveAllObservers () |
|
void | RemoveObserver (unsigned long tag) |
|
void | SetDebug (bool debugFlag) const |
|
void | SetMetaDataDictionary (const MetaDataDictionary &rhs) |
|
virtual void | SetReferenceCount (int) |
|
virtual void | UnRegister () const |
|
virtual void | Delete () |
|
virtual int | GetReferenceCount () const |
|
| itkCloneMacro (Self) |
|
void | Print (std::ostream &os, Indent indent=0) const |
|