20 #ifndef __mast_level_set_interface_dof_handler_h__ 21 #define __mast_level_set_interface_dof_handler_h__ 29 #include "libmesh/elem.h" 30 #include "libmesh/numeric_vector.h" 36 class SystemInitialization;
37 template <
typename ValType>
class FieldFunction;
38 class LevelSetIntersection;
39 class NonlinearImplicitAssemblyElemOperations;
75 std::vector<libMesh::dof_id_type>& material_dofs,
76 std::vector<libMesh::dof_id_type>& void_dofs);
84 std::vector<libMesh::dof_id_type>& material_dofs,
85 std::vector<libMesh::dof_id_type>& void_dofs);
106 std::vector<libMesh::dof_id_type>& material_dof_ids,
122 std::vector<libMesh::dof_id_type>& material_dof_ids,
135 std::vector<libMesh::dof_id_type>& material_dof_ids,
136 std::vector<libMesh::dof_id_type>& void_dof_ids,
175 std::map<const libMesh::Elem*, std::map<libMesh::dof_id_type, libMesh::dof_id_type>>
_dof_ids;
180 #endif // __mast_level_set_interface_dof_handler_h__ 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.
void update_factored_element_solution(const libMesh::Elem &elem, const RealMatrixX &res, const RealMatrixX &jac, const RealMatrixX &sol, const RealMatrixX &dsol, RealVectorX &updated_sol)
std::map< const libMesh::Elem *, RealVectorX > _elem_sol
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 soluti...
LevelSetInterfaceDofHandler()
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
void _compute_matrix_inverse(const RealMatrixX &mat, RealMatrixX &mat_inv)
MAST::FieldFunction< Real > * _phi
Matrix< Real, Dynamic, Dynamic > RealMatrixX
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.
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...
Matrix< Real, Dynamic, 1 > RealVectorX
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 d...
void init(const MAST::SystemInitialization &sys_init, MAST::LevelSetIntersection &intersection, MAST::FieldFunction< Real > &phi)
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.
const MAST::SystemInitialization * _sys_init
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 correspo...
MAST::FieldFunction< Real > & get_level_set_function()
virtual ~LevelSetInterfaceDofHandler()