23 #include "smith/smith_config.hpp"
26 #ifdef SMITH_USE_TRIBOL
75 const std::set<int>& bdry_attr_surf2,
ContactOptions contact_opts);
87 void updateGaps(
int cycle,
double time,
double& dt,
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);
102 void update(
int cycle,
double time,
double& dt,
103 std::optional<std::reference_wrapper<const mfem::Vector>> u_shape = std::nullopt,
104 std::optional<std::reference_wrapper<const mfem::Vector>> u = std::nullopt,
105 std::optional<std::reference_wrapper<const mfem::Vector>> p = std::nullopt);
145 mfem::HypreParVector
mergedGaps(
bool zero_inactive =
false)
const;
173 void residualFunction(
const mfem::Vector& u_shape,
const mfem::Vector& u, mfem::Vector& r);
183 std::unique_ptr<mfem::BlockOperator>
jacobianFunction(std::unique_ptr<mfem::HypreParMatrix> orig_J)
const;
200 #ifdef SMITH_USE_TRIBOL
201 return !interactions_.empty();
207 #ifdef SMITH_USE_TRIBOL
213 const std::vector<ContactInteraction>& getContactInteractions()
const {
return interactions_; }
243 void setPressures(
const mfem::Vector& merged_pressures)
const;
254 #ifdef SMITH_USE_TRIBOL
260 void updateDofOffsets()
const;
265 const mfem::ParMesh& mesh_;
271 const mfem::ParGridFunction* reference_nodes_;
273 #ifdef SMITH_USE_TRIBOL
277 mfem::ParGridFunction current_coords_;
284 std::vector<ContactInteraction> interactions_;
291 bool have_lagrange_multipliers_;
296 int num_pressure_dofs_;
304 mutable bool offsets_up_to_date_;
313 mutable mfem::Array<int> jacobian_offsets_;
323 mutable mfem::Array<int> pressure_dof_offsets_;
333 mutable mfem::Array<HYPRE_BigInt> global_pressure_dof_offsets_;
338 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.