Public Member Functions |
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 unsigned long | 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 |
Protected Member Functions |
void | AssembleFforTimeStep (int dim=0) |
void | AssembleKandM () |
void | GenerateData () |
void | InitializeForSolution () |
virtual void | RunSolver (void) |
| SolverCrankNicolson () |
| ~SolverCrankNicolson () |
| Solver () |
virtual | ~Solver () |
void | PrintSelf (std::ostream &os, Indent indent) const |
void | AssembleK () |
virtual void | InitializeMatrixForAssembly (unsigned int N) |
virtual void | FinalizeMatrixAfterAssembly (void) |
virtual void | AssembleElementMatrix (Element::Pointer e) |
virtual void | AssembleLandmarkContribution (Element::ConstPointer e, float) |
void | ApplyBC (int dim=0, unsigned int matrix=0) |
void | AssembleF (int dim=0) |
void | DecomposeK (void) |
void | UpdateDisplacements (void) |
void | FillInterpolationGrid (void) |
virtual void | InitializeLinearSystemWrapper (void) |
virtual void | AddInput (DataObject *input) |
virtual void | AddOutput (DataObject *output) |
bool | AddRequiredInputName (const DataObjectIdentifierType &) |
virtual void | CacheInputReleaseDataFlags () |
virtual void | GenerateInputRequestedRegion () |
virtual void | GenerateOutputInformation () |
virtual void | GenerateOutputRequestedRegion (DataObject *output) |
virtual const
DataObjectPointerArraySizeType & | GetNumberOfRequiredInputs () |
virtual const
DataObjectPointerArraySizeType & | GetNumberOfRequiredOutputs () |
bool | IsIndexedName (const DataObjectIdentifierType &) const |
bool | IsRequiredInputName (const DataObjectIdentifierType &) const |
| itkLegacyMacro (virtual void RemoveInput(DataObject *input)) |
| itkLegacyMacro (virtual void RemoveOutput(DataObject *output)) |
| itkLegacyMacro (void SetNumberOfInputs(DataObjectPointerArraySizeType num)) |
| itkLegacyMacro (void SetNumberOfOutputs(DataObjectPointerArraySizeType num)) |
DataObjectPointerArraySizeType | MakeIndexFromName (const DataObjectIdentifierType &) const |
DataObjectIdentifierType | MakeNameFromIndex (DataObjectPointerArraySizeType) const |
| ProcessObject () |
virtual void | PropagateResetPipeline () |
virtual void | ReleaseInputs () |
virtual void | RemoveInput (const DataObjectIdentifierType &key) |
virtual void | RemoveInput (DataObjectPointerArraySizeType) |
virtual void | RemoveOutput (const DataObjectIdentifierType &key) |
virtual void | RemoveOutput (DataObjectPointerArraySizeType idx) |
bool | RemoveRequiredInputName (const DataObjectIdentifierType &) |
virtual void | RestoreInputReleaseDataFlags () |
virtual void | SetInput (const DataObjectIdentifierType &key, DataObject *input) |
virtual void | SetNthInput (DataObjectPointerArraySizeType num, DataObject *input) |
virtual void | SetNthOutput (DataObjectPointerArraySizeType num, DataObject *output) |
void | SetNumberOfIndexedInputs (DataObjectPointerArraySizeType num) |
void | SetNumberOfIndexedOutputs (DataObjectPointerArraySizeType num) |
virtual void | SetNumberOfRequiredInputs (DataObjectPointerArraySizeType) |
virtual void | SetNumberOfRequiredOutputs (DataObjectPointerArraySizeType _arg) |
virtual void | SetOutput (const DataObjectIdentifierType &key, DataObject *output) |
virtual void | SetPrimaryInput (DataObject *input) |
virtual void | SetPrimaryOutput (DataObject *output) |
void | SetRequiredInputNames (const NameArray &) |
virtual void | VerifyInputInformation () |
virtual void | VerifyPreconditions () |
| ~ProcessObject () |
DataObject * | GetInput (const DataObjectIdentifierType &key) |
const DataObject * | GetInput (const DataObjectIdentifierType &key) const |
DataObject * | GetInput (DataObjectPointerArraySizeType) |
const DataObject * | GetInput (DataObjectPointerArraySizeType idx) const |
DataObject * | GetPrimaryInput () |
const DataObject * | GetPrimaryInput () const |
DataObject * | GetOutput (const DataObjectIdentifierType &key) |
const DataObject * | GetOutput (const DataObjectIdentifierType &key) const |
DataObject * | GetOutput (DataObjectPointerArraySizeType idx) |
const DataObject * | GetOutput (DataObjectPointerArraySizeType idx) const |
DataObject * | GetPrimaryOutput () |
const DataObject * | GetPrimaryOutput () const |
virtual void | PushBackInput (const DataObject *input) |
virtual void | PopBackInput () |
virtual void | PushFrontInput (const DataObject *input) |
virtual void | PopFrontInput () |
| Object () |
bool | PrintObservers (std::ostream &os, Indent indent) const |
virtual void | SetTimeStamp (const TimeStamp &time) |
virtual | ~Object () |
virtual LightObject::Pointer | InternalClone () const |
| LightObject () |
virtual void | PrintHeader (std::ostream &os, Indent indent) const |
virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
virtual | ~LightObject () |
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.