Smith  0.1
Smith is an implicit thermal structural mechanics simulation code.
nonlinear_solve.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 
14 #pragma once
15 
16 #include <vector>
18 
19 namespace smith {
20 
21 class WeakForm;
22 class DifferentiableSolver;
23 class DifferentiableBlockSolver;
24 class BoundaryConditionManager;
25 class DirichletBoundaryConditions;
26 
28 static constexpr size_t invalid_block_index = std::numeric_limits<size_t>::max() - 1;
29 
42 FieldState solve(const WeakForm& residual_eval, const FieldState& shape_disp, const std::vector<FieldState>& states,
43  const std::vector<FieldState>& params, const TimeInfo& time_info, const DifferentiableSolver& solver,
44  const DirichletBoundaryConditions& bcs, size_t unknown_state_index = 0);
45 
52 // with unknowns (with respect to the solver) being a, and b.
53 // r1 has unknowns a,b in the ‘slots’ 0, 1
54 // r2 has unknowns a,b, in the ‘slots’ 3,0
62 std::vector<FieldState> block_solve(const std::vector<WeakForm*>& residual_evals,
63  const std::vector<std::vector<size_t>> block_indices, const FieldState& shape_disp,
64  const std::vector<std::vector<FieldState>>& states,
65  const std::vector<std::vector<FieldState>>& params, const TimeInfo& time_info,
66  const DifferentiableBlockSolver* solver,
67  const std::vector<const BoundaryConditionManager*>& bc_managers);
68 
69 } // namespace smith
Accelerator functionality.
Definition: smith.cpp:36
gretl::State< FEFieldPtr, FEDualPtr > FieldState
typedef
Definition: field_state.hpp:22
SMITH_HOST_DEVICE auto max(dual< gradient_type > a, double b)
Implementation of max for dual numbers.
Definition: dual.hpp:229
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 >> &params, const TimeInfo &time_info, const DifferentiableBlockSolver *solver, const std::vector< const BoundaryConditionManager * > &bc_managers)
Solve a block nonlinear system of equations as defined by the vector of weak form.
FieldState solve(const WeakForm &weak_form, const FieldState &shape_disp, const std::vector< FieldState > &states, const std::vector< FieldState > &params, const TimeInfo &time_info, const DifferentiableSolver &solver, const DirichletBoundaryConditions &bcs, size_t unknown_state_index)
Solve a nonlinear system of equations as defined by the weak form, assuming that the field indexed by...