23 #include "smith/smith_config.hpp"
26 #ifdef SMITH_USE_TRIBOL
75 const std::set<int>& bdry_attr_surf2,
ContactOptions contact_opts);
88 std::optional<std::reference_wrapper<const mfem::Vector>> u_shape = std::nullopt,
89 std::optional<std::reference_wrapper<const mfem::Vector>> u = std::nullopt,
90 bool eval_jacobian =
false);
104 std::optional<std::reference_wrapper<const mfem::Vector>> u_shape = std::nullopt,
105 std::optional<std::reference_wrapper<const mfem::Vector>> u = std::nullopt,
106 std::optional<std::reference_wrapper<const mfem::Vector>> p = std::nullopt);
148 mfem::HypreParVector
mergedGaps(
bool zero_inactive =
false)
const;
177 void residualFunction(
const mfem::Vector& u_shape,
const mfem::Vector& u, mfem::Vector& r);
188 std::unique_ptr<mfem::BlockOperator>
jacobianFunction(std::unique_ptr<mfem::HypreParMatrix> orig_J)
const;
205 #ifdef SMITH_USE_TRIBOL
206 return !interactions_.empty();
212 #ifdef SMITH_USE_TRIBOL
218 const std::vector<ContactInteraction>& getContactInteractions()
const {
return interactions_; }
248 void setPressures(
const mfem::Vector& merged_pressures)
const;
259 #ifdef SMITH_USE_TRIBOL
265 void updateDofOffsets()
const;
270 const mfem::ParMesh& mesh_;
276 const mfem::ParGridFunction* reference_nodes_;
278 #ifdef SMITH_USE_TRIBOL
282 mfem::ParGridFunction current_coords_;
289 std::vector<ContactInteraction> interactions_;
296 bool have_lagrange_multipliers_;
301 int num_pressure_dofs_;
309 mutable bool offsets_up_to_date_;
318 mutable mfem::Array<int> jacobian_offsets_;
328 mutable mfem::Array<int> pressure_dof_offsets_;
338 mutable mfem::Array<HYPRE_BigInt> global_pressure_dof_offsets_;
343 mfem::Array<int> contact_dofs_;
Class for encapsulating the dual vector space of a finite element space (i.e. the space of linear for...
This contains a class that represents the dual of a finite element vector space, i....
Accelerator functionality.