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 * | GetLinearSystem () |
|
virtual Float | GetTimeStep (void) const ITK_OVERRIDE |
|
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) ITK_OVERRIDE |
|
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 () const |
|
Float | GetDeformationEnergy (unsigned int SolutionIndex=0) |
|
const Element * | GetElementAtPoint (const VectorType &pt) const |
|
FEMObjectType * | GetInput () |
|
FEMObjectType * | GetInput (unsigned int idx) |
|
LinearSystemWrapper::Pointer | GetLinearSystemWrapper () |
|
virtual const char * | GetNameOfClass () const |
|
Float | GetSolution (unsigned int i, unsigned int which=0) |
|
void | InitializeInterpolationGrid (const InterpolationGridSizeType &size, const InterpolationGridPointType &bb1, const InterpolationGridPointType &bb2) |
|
virtual void | SetInput (FEMObjectType *fem) |
|
virtual void | SetInput (unsigned int, FEMObjectType *fem) |
|
void | SetLinearSystemWrapper (LinearSystemWrapper::Pointer ls) |
|
virtual void | SetOrigin (InterpolationGridPointType _arg) |
|
virtual InterpolationGridPointType | GetOrigin () |
|
virtual void | SetSpacing (InterpolationGridSpacingType _arg) |
|
virtual
InterpolationGridSpacingType | GetSpacing () |
|
virtual void | SetRegion (InterpolationGridRegionType _arg) |
|
virtual InterpolationGridRegionType | GetRegion () |
|
virtual void | SetDirection (InterpolationGridDirectionType _arg) |
|
virtual
InterpolationGridDirectionType | GetDirection () |
|
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) override |
|
FEMObjectType * | GetOutput () |
|
FEMObjectType * | GetOutput (unsigned int idx) |
|
virtual void | AbortGenerateDataOff () |
|
virtual void | AbortGenerateDataOn () |
|
virtual void | EnlargeOutputRequestedRegion (DataObject *) |
|
virtual const bool & | GetAbortGenerateData () const |
|
DataObjectPointerArray | GetIndexedInputs () |
|
DataObjectPointerArray | GetIndexedOutputs () |
|
NameArray | GetInputNames () const |
|
DataObjectPointerArray | GetInputs () |
|
MultiThreaderType * | GetMultiThreader () const |
|
DataObjectPointerArraySizeType | GetNumberOfIndexedInputs () const |
|
DataObjectPointerArraySizeType | GetNumberOfIndexedOutputs () const |
|
DataObjectPointerArraySizeType | GetNumberOfInputs () const |
|
DataObjectPointerArraySizeType | GetNumberOfOutputs () const |
|
virtual
DataObjectPointerArraySizeType | GetNumberOfValidRequiredInputs () const |
|
NameArray | GetOutputNames () const |
|
DataObjectPointerArray | GetOutputs () |
|
virtual const float & | GetProgress () const |
|
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 | Update () |
|
virtual void | UpdateLargestPossibleRegion () |
|
virtual void | UpdateOutputData (DataObject *output) |
|
virtual void | UpdateOutputInformation () |
|
void | UpdateProgress (float progress) |
|
void | SetProgress (float progress) |
|
virtual void | SetReleaseDataFlag (bool flag) |
|
virtual bool | GetReleaseDataFlag () const |
|
void | ReleaseDataFlagOn () |
|
void | ReleaseDataFlagOff () |
|
virtual void | SetReleaseDataBeforeUpdateFlag (bool _arg) |
|
virtual const bool & | GetReleaseDataBeforeUpdateFlag () const |
|
virtual void | ReleaseDataBeforeUpdateFlagOn () |
|
virtual void | ReleaseDataBeforeUpdateFlagOff () |
|
virtual void | SetNumberOfThreads (ThreadIdType _arg) |
|
virtual const ThreadIdType & | GetNumberOfThreads () const |
|
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 () |
|
const MetaDataDictionary & | GetMetaDataDictionary () 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 override |
|
void | RemoveAllObservers () |
|
void | RemoveObserver (unsigned long tag) |
|
void | SetDebug (bool debugFlag) const |
|
void | SetMetaDataDictionary (const MetaDataDictionary &rhs) |
|
virtual void | SetReferenceCount (int) override |
|
virtual void | UnRegister () const noexceptoverride |
|
virtual void | SetObjectName (std::string _arg) |
|
virtual const std::string & | GetObjectName () const |
|
virtual void | Delete () |
|
virtual int | GetReferenceCount () const |
|
| itkCloneMacro (Self) |
|
void | Print (std::ostream &os, Indent indent=0) const |
|
|
void | AssembleFforTimeStep (int dim=0) |
|
void | AssembleKandM () |
|
void | GenerateData () ITK_OVERRIDE |
|
void | InitializeForSolution () |
|
virtual void | RunSolver (void) ITK_OVERRIDE |
|
| SolverCrankNicolson () |
|
| ~SolverCrankNicolson () ITK_OVERRIDE |
|
| Solver () |
|
virtual | ~Solver () override |
|
virtual void | PrintSelf (std::ostream &os, Indent indent) const override |
|
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 | UpdateDisplacements () |
|
void | FillInterpolationGrid () |
|
virtual void | InitializeLinearSystemWrapper () |
|
virtual void | AddInput (DataObject *input) |
|
void | AddOptionalInputName (const DataObjectIdentifierType &) |
|
void | AddOptionalInputName (const DataObjectIdentifierType &, DataObjectPointerArraySizeType idx) |
|
virtual void | AddOutput (DataObject *output) |
|
bool | AddRequiredInputName (const DataObjectIdentifierType &) |
|
bool | AddRequiredInputName (const DataObjectIdentifierType &, DataObjectPointerArraySizeType idx) |
|
virtual void | CacheInputReleaseDataFlags () |
|
virtual void | GenerateInputRequestedRegion () |
|
virtual void | GenerateOutputInformation () |
|
virtual void | GenerateOutputRequestedRegion (DataObject *output) |
|
DataObject * | GetInput (const DataObjectIdentifierType &key) |
|
const DataObject * | GetInput (const DataObjectIdentifierType &key) const |
|
virtual const
DataObjectPointerArraySizeType & | GetNumberOfRequiredInputs () const |
|
virtual const
DataObjectPointerArraySizeType & | GetNumberOfRequiredOutputs () const |
|
bool | IsIndexedInputName (const DataObjectIdentifierType &) const |
|
bool | IsIndexedOutputName (const DataObjectIdentifierType &) const |
|
bool | IsRequiredInputName (const DataObjectIdentifierType &) const |
|
| itkLegacyMacro (virtual void RemoveOutput(DataObject *output)) |
|
| itkLegacyMacro (void SetNumberOfOutputs(DataObjectPointerArraySizeType num)) |
|
| itkLegacyMacro (virtual void RemoveInput(DataObject *input)) |
|
| itkLegacyMacro (void SetNumberOfInputs(DataObjectPointerArraySizeType num)) |
|
DataObjectPointerArraySizeType | MakeIndexFromInputName (const DataObjectIdentifierType &name) const |
|
DataObjectPointerArraySizeType | MakeIndexFromOutputName (const DataObjectIdentifierType &name) const |
|
DataObjectIdentifierType | MakeNameFromInputIndex (DataObjectPointerArraySizeType idx) const |
|
DataObjectIdentifierType | MakeNameFromOutputIndex (DataObjectPointerArraySizeType idx) const |
|
virtual void | PopBackInput () |
|
virtual void | PopFrontInput () |
|
| ProcessObject () |
|
virtual void | PropagateResetPipeline () |
|
virtual void | PushBackInput (const DataObject *input) |
|
virtual void | PushFrontInput (const DataObject *input) |
|
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 () override |
|
DataObject * | GetInput (DataObjectPointerArraySizeType idx) |
|
const DataObject * | GetInput (DataObjectPointerArraySizeType idx) const |
|
DataObject * | GetPrimaryInput () |
|
const DataObject * | GetPrimaryInput () const |
|
virtual void | SetPrimaryInputName (const DataObjectIdentifierType &key) |
|
virtual const char * | GetPrimaryInputName (void) const |
|
DataObject * | GetOutput (const DataObjectIdentifierType &key) |
|
const DataObject * | GetOutput (const DataObjectIdentifierType &key) const |
|
virtual void | SetPrimaryOutputName (const DataObjectIdentifierType &key) |
|
virtual const char * | GetPrimaryOutputName (void) const |
|
DataObject * | GetOutput (DataObjectPointerArraySizeType idx) |
|
const DataObject * | GetOutput (DataObjectPointerArraySizeType idx) const |
|
DataObject * | GetPrimaryOutput () |
|
const DataObject * | GetPrimaryOutput () const |
|
| Object () |
|
bool | PrintObservers (std::ostream &os, Indent indent) const |
|
virtual void | SetTimeStamp (const TimeStamp &time) |
|
virtual | ~Object () override |
|
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 () |
|