MAST
MAST::LevelSetInterfaceDofHandler Class Reference

#include <interface_dof_handler.h>

Collaboration diagram for MAST::LevelSetInterfaceDofHandler:

Public Member Functions

 LevelSetInterfaceDofHandler ()
 
virtual ~LevelSetInterfaceDofHandler ()
 
void init (const MAST::SystemInitialization &sys_init, MAST::LevelSetIntersection &intersection, MAST::FieldFunction< Real > &phi)
 
MAST::FieldFunction< Real > & get_level_set_function ()
 
bool if_factor_element (const libMesh::Elem &elem) const
 
void partition_local_elem_rows (const libMesh::Elem &elem, std::vector< libMesh::dof_id_type > &material_dofs, std::vector< libMesh::dof_id_type > &void_dofs)
 identifies which rows in the element residual vector and rows/columns in the jacobian matrix correspond to the material and void. More...
 
void partition_global_elem_rows (const libMesh::Elem &elem, std::vector< libMesh::dof_id_type > &material_dofs, std::vector< libMesh::dof_id_type > &void_dofs)
 fills the material_dofs and void_dofs with the dofs_ids in the global system corresponding to these dofs in the element. More...
 
void solution_of_factored_element (const libMesh::Elem &elem, RealVectorX &elem_sol)
 updates the components of the solution vector in elem_sol for the void domain using the stored solution for this element. More...
 
void element_factored_jacobian (const libMesh::Elem &elem, const RealMatrixX &jac, std::vector< libMesh::dof_id_type > &material_dof_ids, RealMatrixX &jac_factored_uu)
 a wrapper around the second element_factored_jacobian. More...
 
void element_factored_residual_and_jacobian (const libMesh::Elem &elem, const RealMatrixX &jac, const RealVectorX &res, std::vector< libMesh::dof_id_type > &material_dof_ids, RealMatrixX &jac_factored_uu, RealVectorX &res_factored_u)
 factorizes the residual and jacobian into the components for the dofs on material nodes. More...
 
void element_factored_jacobian (const libMesh::Elem &elem, const RealMatrixX &jac, std::vector< libMesh::dof_id_type > &material_dof_ids, std::vector< libMesh::dof_id_type > &void_dof_ids, RealMatrixX &jac_uu, RealMatrixX &jac_uf, RealMatrixX &jac_fu, RealMatrixX &jac_ff, RealMatrixX &jac_factored_uu)
 This takes the jacobian jac and factors it over the material and void domains and returns the following matrix in jac_factored_uu : $ J_{uu} - J_{uf} J_{ff}^{-1} J_{fu} $ . More...
 
void update_factored_element_solution (const libMesh::Elem &elem, const RealMatrixX &res, const RealMatrixX &jac, const RealMatrixX &sol, const RealMatrixX &dsol, RealVectorX &updated_sol)
 

Protected Member Functions

void _compute_matrix_inverse (const RealMatrixX &mat, RealMatrixX &mat_inv)
 

Protected Attributes

const MAST::SystemInitialization_sys_init
 
MAST::FieldFunction< Real > * _phi
 
std::map< const libMesh::Elem *, RealVectorX_elem_sol
 
std::map< const libMesh::Elem *, std::set< const libMesh::Node * > > _elem_void_nodes
 map of nodes on each element that will be added as independent dofs. More...
 
std::map< const libMesh::Node *, std::set< const libMesh::Elem * > > _void_node_elems
 map of elements that each node will provide a new dof for More...
 
std::map< const libMesh::Elem *, std::map< libMesh::dof_id_type, libMesh::dof_id_type > > _dof_ids
 new dof ids for each elem/old_dof pair. More...
 

Detailed Description

Definition at line 41 of file interface_dof_handler.h.

Constructor & Destructor Documentation

MAST::LevelSetInterfaceDofHandler::LevelSetInterfaceDofHandler ( )

Definition at line 33 of file interface_dof_handler.cpp.

MAST::LevelSetInterfaceDofHandler::~LevelSetInterfaceDofHandler ( )
virtual

Definition at line 41 of file interface_dof_handler.cpp.

Member Function Documentation

void MAST::LevelSetInterfaceDofHandler::_compute_matrix_inverse ( const RealMatrixX mat,
RealMatrixX mat_inv 
)
protected

Definition at line 461 of file interface_dof_handler.cpp.

Here is the caller graph for this function:

void MAST::LevelSetInterfaceDofHandler::element_factored_jacobian ( const libMesh::Elem &  elem,
const RealMatrixX jac,
std::vector< libMesh::dof_id_type > &  material_dof_ids,
RealMatrixX jac_factored_uu 
)

a wrapper around the second element_factored_jacobian.

This takes the jacobian jac and factors it over the material and void domains and returns the following matrix in jac_factored_uu : $ J_{uu} - J_{uf} J_{ff}^{-1} J_{fu} $ . The *_dof_ids are the local rows of the element vector/matrix quantities that are in the material domain.

Definition at line 245 of file interface_dof_handler.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MAST::LevelSetInterfaceDofHandler::element_factored_jacobian ( const libMesh::Elem &  elem,
const RealMatrixX jac,
std::vector< libMesh::dof_id_type > &  material_dof_ids,
std::vector< libMesh::dof_id_type > &  void_dof_ids,
RealMatrixX jac_uu,
RealMatrixX jac_uf,
RealMatrixX jac_fu,
RealMatrixX jac_ff,
RealMatrixX jac_factored_uu 
)

This takes the jacobian jac and factors it over the material and void domains and returns the following matrix in jac_factored_uu : $ J_{uu} - J_{uf} J_{ff}^{-1} J_{fu} $ .

The *_dof_ids are the local rows of the element vector/matrix quantities that are in the material/void domain.

Definition at line 326 of file interface_dof_handler.cpp.

Here is the call graph for this function:

void MAST::LevelSetInterfaceDofHandler::element_factored_residual_and_jacobian ( const libMesh::Elem &  elem,
const RealMatrixX jac,
const RealVectorX res,
std::vector< libMesh::dof_id_type > &  material_dof_ids,
RealMatrixX jac_factored_uu,
RealVectorX res_factored_u 
)

factorizes the residual and jacobian into the components for the dofs on material nodes.

The factored Jacobian is defined as jac_factored_uu : $ J_{uu} - J_{uf} J_{ff}^{-1} J_{fu} $. The factored residual is defined as res_factored_u : $ f_{u} - J_{uf} J_{ff}^{-1} f_{f} $. The material_dof_ids are the rows in the element quantity that belong to the material domain.

Definition at line 275 of file interface_dof_handler.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

MAST::FieldFunction<Real>& MAST::LevelSetInterfaceDofHandler::get_level_set_function ( )
inline

Definition at line 54 of file interface_dof_handler.h.

Here is the call graph for this function:

Here is the caller graph for this function:

bool MAST::LevelSetInterfaceDofHandler::if_factor_element ( const libMesh::Elem &  elem) const
Returns
true if the element is on the interface and some nodes of this element should be factored out of the system instead of being added to the system residual vector and Jacobian matrix.

Definition at line 132 of file interface_dof_handler.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MAST::LevelSetInterfaceDofHandler::init ( const MAST::SystemInitialization sys_init,
MAST::LevelSetIntersection intersection,
MAST::FieldFunction< Real > &  phi 
)

Definition at line 47 of file interface_dof_handler.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MAST::LevelSetInterfaceDofHandler::partition_global_elem_rows ( const libMesh::Elem &  elem,
std::vector< libMesh::dof_id_type > &  material_dofs,
std::vector< libMesh::dof_id_type > &  void_dofs 
)

fills the material_dofs and void_dofs with the dofs_ids in the global system corresponding to these dofs in the element.

Definition at line 191 of file interface_dof_handler.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MAST::LevelSetInterfaceDofHandler::partition_local_elem_rows ( const libMesh::Elem &  elem,
std::vector< libMesh::dof_id_type > &  material_dofs,
std::vector< libMesh::dof_id_type > &  void_dofs 
)

identifies which rows in the element residual vector and rows/columns in the jacobian matrix correspond to the material and void.

This is done under the assumption that the dofs are stored in an variable major sequence. For example, an element with four nodes and two variales will have the following sequence $ \{ u_1, u_2, u_3, u_4, v_1, v_2, v_3, v_4 \} $.

Definition at line 142 of file interface_dof_handler.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MAST::LevelSetInterfaceDofHandler::solution_of_factored_element ( const libMesh::Elem &  elem,
RealVectorX elem_sol 
)

updates the components of the solution vector in elem_sol for the void domain using the stored solution for this element.

Definition at line 217 of file interface_dof_handler.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MAST::LevelSetInterfaceDofHandler::update_factored_element_solution ( const libMesh::Elem &  elem,
const RealMatrixX res,
const RealMatrixX jac,
const RealMatrixX sol,
const RealMatrixX dsol,
RealVectorX updated_sol 
)

Definition at line 381 of file interface_dof_handler.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

std::map<const libMesh::Elem*, std::map<libMesh::dof_id_type, libMesh::dof_id_type> > MAST::LevelSetInterfaceDofHandler::_dof_ids
protected

new dof ids for each elem/old_dof pair.

Definition at line 175 of file interface_dof_handler.h.

std::map<const libMesh::Elem*, RealVectorX> MAST::LevelSetInterfaceDofHandler::_elem_sol
protected

Definition at line 159 of file interface_dof_handler.h.

std::map<const libMesh::Elem*, std::set<const libMesh::Node*> > MAST::LevelSetInterfaceDofHandler::_elem_void_nodes
protected

map of nodes on each element that will be added as independent dofs.

Definition at line 165 of file interface_dof_handler.h.

MAST::FieldFunction<Real>* MAST::LevelSetInterfaceDofHandler::_phi
protected

Definition at line 157 of file interface_dof_handler.h.

const MAST::SystemInitialization* MAST::LevelSetInterfaceDofHandler::_sys_init
protected

Definition at line 156 of file interface_dof_handler.h.

std::map<const libMesh::Node*, std::set<const libMesh::Elem*> > MAST::LevelSetInterfaceDofHandler::_void_node_elems
protected

map of elements that each node will provide a new dof for

Definition at line 170 of file interface_dof_handler.h.


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