Smith  0.1
Smith is an implicit thermal structural mechanics simulation code.
lumped_mass_explicit_newmark_state_advancer.hpp
Go to the documentation of this file.
1 // Copyright (c) Lawrence Livermore National Security, LLC and
2 // other Smith Project Developers. See the top-level LICENSE file for
3 // details.
4 //
5 // SPDX-License-Identifier: (BSD-3-Clause)
6 
13 #pragma once
14 
15 #include <vector>
16 #include "gretl/double_state.hpp"
17 #include "smith/physics/common.hpp"
20 
21 namespace smith {
22 
23 class WeakForm;
24 class TimestepEstimator;
25 class BoundaryConditionManager;
26 
29  public:
31  LumpedMassExplicitNewmarkStateAdvancer(const std::shared_ptr<WeakForm>& r, const std::shared_ptr<WeakForm>& mr,
32  const std::shared_ptr<TimestepEstimator>& ts,
33  std::shared_ptr<BoundaryConditionManager> bc)
34  : residual_eval_(r), mass_residual_eval_(mr), ts_estimator_(ts), bc_manager_(bc)
35  {
36  }
37 
39  std::vector<FieldState> advanceState(const TimeInfo& time_info, const FieldState& shape_disp,
40  const std::vector<FieldState>& states,
41  const std::vector<FieldState>& params) const override;
42 
43  private:
44  const std::shared_ptr<WeakForm> residual_eval_;
45  const std::shared_ptr<WeakForm> mass_residual_eval_;
46  const std::shared_ptr<TimestepEstimator> ts_estimator_;
47  const std::shared_ptr<BoundaryConditionManager> bc_manager_;
48  mutable std::unique_ptr<FieldState>
49  m_diag_inv;
51 };
52 
53 } // namespace smith
Lumped mass explicit dynamics implementation for the StateAdvancer interface.
LumpedMassExplicitNewmarkStateAdvancer(const std::shared_ptr< WeakForm > &r, const std::shared_ptr< WeakForm > &mr, const std::shared_ptr< TimestepEstimator > &ts, std::shared_ptr< BoundaryConditionManager > bc)
Constructor for lumped mass explicit Newmark implementation.
std::vector< FieldState > advanceState(const TimeInfo &time_info, const FieldState &shape_disp, const std::vector< FieldState > &states, const std::vector< FieldState > &params) const override
This is an overloaded member function, provided for convenience. It differs from the above function o...
Base state advancer class, allows specification for quasi-static solve strategies,...
A file defining some enums and structs that are used by the different physics modules.
Accelerator functionality.
Definition: smith.cpp:36
gretl::State< FEFieldPtr, FEDualPtr > FieldState
typedef
Definition: field_state.hpp:22
Interface and implementations for advancing from one step to the next. Typically these are time integ...
struct storing time and timestep information
Definition: common.hpp:18