24 class NonlinearBlockSolverBase;
25 class BoundaryConditionManager;
26 class DirichletBoundaryConditions;
47 std::vector<FieldState>
block_solve(
const std::vector<WeakForm*>& residual_evals,
48 const std::vector<std::vector<size_t>> block_indices,
const FieldState& shape_disp,
49 const std::vector<std::vector<FieldState>>& states,
50 const std::vector<std::vector<FieldState>>& params,
const TimeInfo& time_info,
51 const NonlinearBlockSolverBase* solver,
52 const std::vector<const BoundaryConditionManager*>& bc_managers);
65 const std::vector<FieldState>& states,
const std::vector<FieldState>& params,
70 auto solutions =
block_solve({
const_cast<WeakForm*
>(&residual_eval)}, {{unknown_state_index}}, shape_disp, {states},
71 {params}, time_info, &solver, bc_managers);
77 const std::vector<FieldState>& weak_form_inputs,
const TimeInfo& time_info,
81 return solve(residual_eval, shape_disp, weak_form_inputs, {}, time_info, solver, bcs, unknown_state_index);
A generic class for setting Dirichlet boundary conditions on arbitrary physics.
const smith::BoundaryConditionManager & getBoundaryConditionManager() const
Return the smith BoundaryConditionManager.
Abstract interface for nonlinear block solvers that provide both forward and adjoint solves.
A file defining some enums and structs that are used by the different physics modules.
Contains DirichletBoundaryConditions class for interaction with the differentiable solve interfaces.
Accelerator functionality.
gretl::State< FEFieldPtr, FEDualPtr > FieldState
typedef
SMITH_HOST_DEVICE auto max(dual< gradient_type > a, double b)
Implementation of max for dual numbers.
std::vector< FieldState > solve(const std::vector< std::shared_ptr< WeakForm >> &weak_forms, const FieldStore &field_store, const CoupledSystemSolver *solver, const TimeInfo &time_info, const std::vector< FieldState > ¶ms)
Solve a set of weak forms.
std::vector< FieldState > block_solve(const std::vector< WeakForm * > &residual_evals, const std::vector< std::vector< size_t >> block_indices, const FieldState &shape_disp, const std::vector< std::vector< FieldState >> &states, const std::vector< std::vector< FieldState >> ¶ms, const TimeInfo &time_info, const NonlinearBlockSolverBase *solver, const std::vector< const BoundaryConditionManager * > &bc_managers)
Solve a block nonlinear system of equations as defined by the vector of weak form.
struct storing time and timestep information