ITK  4.9.0
Insight Segmentation and Registration Toolkit
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
itk::fem::LoadBCMFC Class Reference

#include <itkFEMLoadBCMFC.h>

+ Inheritance diagram for itk::fem::LoadBCMFC:
+ Collaboration diagram for itk::fem::LoadBCMFC:

Detailed Description

Generic linear multi freedom displacement constraint in global coordinate system.

These constraints are implemented using the Lagrange multiplier method. We treat displacement constraints (or essential boundary conditions, which are exactly the same but with less functionality) as a special kind of load on the system.

How to store data in a LoadBCMFC object... Suppose you want to impose the following constraint to the system:

0.5*u1x + 2.1*u5y = 10.0

u1x is the first DOF in the element with global number 1, and u5y is the second DOF in an element with GN=5.

... then use the following lines of code itk::LoadBCMFC m; m.lhs.push_back( LoadBCMFC::MFCTerm( elements.Find(1), 0, 0.5 ) ); m.lhs.push_back( LoadBCMFC::MFCTerm( elements.Find(5), 1, 2.1 ) ); m.rhs=10.0;

Definition at line 56 of file itkFEMLoadBCMFC.h.

Classes

class  MFCTerm
 

Public Types

typedef SmartPointer< const SelfConstPointer
 
typedef std::vector< MFCTermLhsType
 
typedef SmartPointer< SelfPointer
 
typedef LoadBCMFC Self
 
typedef Load Superclass
 
- Public Types inherited from itk::fem::Load
typedef FEMPArray< SelfArrayType
 
typedef SmartPointer< const SelfConstPointer
 
typedef SmartPointer< SelfPointer
 
typedef Load Self
 
typedef FEMLightObject Superclass
 
- Public Types inherited from itk::fem::FEMLightObject
typedef Self Baseclass
 
typedef SmartPointer< const SelfConstPointer
 
typedef SmartPointer< SelfPointer
 
typedef FEMLightObject Self
 
typedef itk::LightObject Superclass
 
- Public Types inherited from itk::LightObject
typedef SmartPointer< const SelfConstPointer
 
typedef SmartPointer< SelfPointer
 
typedef LightObject Self
 

Public Member Functions

void AddLeftHandSideTerm (LoadBCMFC::MFCTerm term)
 
void AddRightHandSideTerm (Element::Float term)
 
virtual ::itk::LightObject::Pointer CreateAnother (void) const override
 
int GetIndex ()
 
const MFCTerm GetLeftHandSideTerm (int lhs) const
 
virtual const char * GetNameOfClass () const
 
int GetNumberOfLeftHandSideTerms () const
 
int GetNumberOfRightHandSideTerms () const
 
vnl_vector< Element::Float > & GetRightHandSideArray ()
 
Element::Float GetRightHandSideTerm (int rhs) const
 
 LoadBCMFC ()
 
 LoadBCMFC (Element::ConstPointer element, int dof, vnl_vector< Element::Float > val)
 
void SetIndex (int ind)
 
const std::vector< MFCTerm > & GetLeftHandSideArray () const
 
std::vector< MFCTerm > & GetLeftHandSideArray ()
 
- Public Member Functions inherited from itk::fem::Load
const ElementGetElement () const
 
virtual Solution::ConstPointer GetSolution ()
 
void SetElement (const Element *el)
 
virtual void SetSolution (Solution::ConstPointer)
 
- Public Member Functions inherited from itk::fem::FEMLightObject
int GetGlobalNumber () const
 
void SetGlobalNumber (int)
 
- Public Member Functions inherited from itk::LightObject
virtual void Delete ()
 
virtual int GetReferenceCount () const
 
 itkCloneMacro (Self)
 
void Print (std::ostream &os, Indent indent=0) const
 
virtual void Register () const
 
virtual void SetReferenceCount (int)
 
virtual void UnRegister () const noexcept
 

Static Public Member Functions

static Pointer New ()
 
- Static Public Member Functions inherited from itk::LightObject
static void BreakOnError ()
 
static Pointer New ()
 

Protected Member Functions

virtual void PrintSelf (std::ostream &os, Indent indent) const override
 
- Protected Member Functions inherited from itk::fem::FEMLightObject
 FEMLightObject ()
 
 FEMLightObject (const FEMLightObject &o)
 
virtual ~FEMLightObject ()
 
- Protected Member Functions inherited from itk::LightObject
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 ()
 

Protected Attributes

int m_Index
 
LhsType m_LeftHandSide
 
vnl_vector< Element::Floatm_RightHandSide
 
- Protected Attributes inherited from itk::fem::Load
Element::ConstPointer m_Element
 
- Protected Attributes inherited from itk::fem::FEMLightObject
int m_GlobalNumber
 
- Protected Attributes inherited from itk::LightObject
AtomicInt< int > m_ReferenceCount
 

Member Typedef Documentation

Definition at line 63 of file itkFEMLoadBCMFC.h.

typedef std::vector<MFCTerm> itk::fem::LoadBCMFC::LhsType

Left hand side of the MFC constraint equation

Definition at line 112 of file itkFEMLoadBCMFC.h.

Definition at line 62 of file itkFEMLoadBCMFC.h.

Standard class typedefs.

Definition at line 60 of file itkFEMLoadBCMFC.h.

Definition at line 61 of file itkFEMLoadBCMFC.h.

Constructor & Destructor Documentation

itk::fem::LoadBCMFC::LoadBCMFC ( )
inline

Default constructor

Definition at line 115 of file itkFEMLoadBCMFC.h.

itk::fem::LoadBCMFC::LoadBCMFC ( Element::ConstPointer  element,
int  dof,
vnl_vector< Element::Float val 
)

With this constructor, we can easy fix the global displacement dof given by node to a value val.

Parameters
elementPointer to an element, which holds a displacements that needs to be fixed.
dofLocal DOF number in an element.
valThe fixed value of a DOF.

Member Function Documentation

void itk::fem::LoadBCMFC::AddLeftHandSideTerm ( LoadBCMFC::MFCTerm  term)

Add terms to the left hand side of multi freedom displacement constraint

void itk::fem::LoadBCMFC::AddRightHandSideTerm ( Element::Float  term)

Add terms to the right hand side of multi freedom displacement constraint

virtual::itk::LightObject::Pointer itk::fem::LoadBCMFC::CreateAnother ( void  ) const
overridevirtual

CreateAnother method will clone the existing instance of this type, including its internal member variables.

Reimplemented from itk::LightObject.

int itk::fem::LoadBCMFC::GetIndex ( )

Get the index variable for the multi freedom displacement constraint. This is used internally by itk::FEM::Solver

const std::vector<MFCTerm>& itk::fem::LoadBCMFC::GetLeftHandSideArray ( ) const

Returns the array containing the left hand side boundary condition values

std::vector<MFCTerm>& itk::fem::LoadBCMFC::GetLeftHandSideArray ( )

Returns the array containing the left hand side boundary condition values

const MFCTerm itk::fem::LoadBCMFC::GetLeftHandSideTerm ( int  lhs) const

Returns the specified left hand side term

virtual const char* itk::fem::LoadBCMFC::GetNameOfClass ( ) const
virtual

Run-time type information (and related methods).

Reimplemented from itk::fem::Load.

int itk::fem::LoadBCMFC::GetNumberOfLeftHandSideTerms ( ) const

Returns the number of terms used to define the left hand side

int itk::fem::LoadBCMFC::GetNumberOfRightHandSideTerms ( ) const

Returns the number of terms used to define the right hand side

vnl_vector<Element::Float>& itk::fem::LoadBCMFC::GetRightHandSideArray ( )

Returns the array containing the right hand side boundary condition values

Element::Float itk::fem::LoadBCMFC::GetRightHandSideTerm ( int  rhs) const

Returns the number of terms used to define the right hand side

static Pointer itk::fem::LoadBCMFC::New ( )
static

Method for creation through the object factory.

virtual void itk::fem::LoadBCMFC::PrintSelf ( std::ostream &  os,
Indent  indent 
) const
overrideprotectedvirtual

Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from itk::fem::Load.

void itk::fem::LoadBCMFC::SetIndex ( int  ind)

Set the index variable for the multi freedom displacement constraint. This is used internally by itk::FEM::Solver

Member Data Documentation

int itk::fem::LoadBCMFC::m_Index
protected

used internally by the Solver class

Definition at line 173 of file itkFEMLoadBCMFC.h.

LhsType itk::fem::LoadBCMFC::m_LeftHandSide
protected

Definition at line 175 of file itkFEMLoadBCMFC.h.

vnl_vector<Element::Float> itk::fem::LoadBCMFC::m_RightHandSide
protected

Right hand side of the linear equation that defines the constraints. It is a vector so that implementation of BC on isotropic elements is easy. Which value is applied to the master force vector is defined by optional dim parameter (defaults to 0) in AssembleF function in solver.

Definition at line 183 of file itkFEMLoadBCMFC.h.


The documentation for this class was generated from the following file: