ITK
4.6.0
Insight Segmentation and Registration Toolkit
|
#include <itkFEMLoadBCMFC.h>
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 55 of file itkFEMLoadBCMFC.h.
Classes | |
class | MFCTerm |
Public Types | |
typedef SmartPointer< const Self > | ConstPointer |
typedef std::vector< MFCTerm > | LhsType |
typedef SmartPointer< Self > | Pointer |
typedef LoadBCMFC | Self |
typedef Load | Superclass |
Public Types inherited from itk::fem::Load | |
typedef FEMPArray< Self > | ArrayType |
typedef SmartPointer< const Self > | ConstPointer |
typedef SmartPointer< Self > | Pointer |
typedef Load | Self |
typedef FEMLightObject | Superclass |
Public Types inherited from itk::fem::FEMLightObject | |
typedef Self | Baseclass |
typedef SmartPointer< const Self > | ConstPointer |
typedef SmartPointer< Self > | Pointer |
typedef FEMLightObject | Self |
typedef itk::LightObject | Superclass |
Public Types inherited from itk::LightObject | |
typedef SmartPointer< const Self > | ConstPointer |
typedef SmartPointer< Self > | Pointer |
typedef LightObject | Self |
Public Member Functions | |
void | AddLeftHandSideTerm (LoadBCMFC::MFCTerm term) |
void | AddRightHandSideTerm (Element::Float term) |
virtual ::itk::LightObject::Pointer | CreateAnother (void) const ITK_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 Element * | GetElement () 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 |
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 ITK_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::Float > | m_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 | |
InternalReferenceCountType | m_ReferenceCount |
SimpleFastMutexLock | m_ReferenceCountLock |
Additional Inherited Members | |
Protected Types inherited from itk::LightObject | |
typedef int | InternalReferenceCountType |
typedef SmartPointer<const Self> itk::fem::LoadBCMFC::ConstPointer |
Definition at line 62 of file itkFEMLoadBCMFC.h.
typedef std::vector<MFCTerm> itk::fem::LoadBCMFC::LhsType |
Left hand side of the MFC constraint equation
Definition at line 111 of file itkFEMLoadBCMFC.h.
typedef SmartPointer<Self> itk::fem::LoadBCMFC::Pointer |
Definition at line 61 of file itkFEMLoadBCMFC.h.
typedef LoadBCMFC itk::fem::LoadBCMFC::Self |
Standard class typedefs.
Definition at line 59 of file itkFEMLoadBCMFC.h.
typedef Load itk::fem::LoadBCMFC::Superclass |
Definition at line 60 of file itkFEMLoadBCMFC.h.
|
inline |
Default constructor
Definition at line 114 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.
element | Pointer to an element, which holds a displacements that needs to be fixed. |
dof | Local DOF number in an element. |
val | The fixed value of a DOF. |
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 |
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 |
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 |
Method for creation through the object factory.
|
protectedvirtual |
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
|
protected |
used internally by the Solver class
Definition at line 172 of file itkFEMLoadBCMFC.h.
|
protected |
Definition at line 174 of file itkFEMLoadBCMFC.h.
|
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 182 of file itkFEMLoadBCMFC.h.