Class ae108::solve::NonlinearSolver
template <class Assembler>
ClassList > ae108 > solve > NonlinearSolver
Public Types
| Type | Name |
|---|---|
| typedef std::vector< cpppetsc::MeshBoundaryCondition< mesh_type > > | BoundaryConditionContainer |
| typedef std::function< void(const cpppetsc::distributed< vector_type > &, double, cpppetsc::distributed< vector_type > *)> | DistributedForceVectorAssembler |
| typedef std::function< void(const cpppetsc::distributed< vector_type > &, double, matrix_type *)> | DistributedStiffnessMatrixAssembler |
| typedef std::function< void(const cpppetsc::local< vector_type > &, double, cpppetsc::local< vector_type > *)> | LocalForceVectorAssembler |
| typedef std::function< void(const cpppetsc::local< vector_type > &, double, matrix_type *)> | LocalStiffnessMatrixAssembler |
| typedef typename mesh_type::matrix_type | matrix_type |
| typedef typename assembly::MeshTypeTrait< Assembler >::type | mesh_type |
| typedef typename assembly::PolicyTypeTrait< Assembler >::type | policy_type |
| typedef typename mesh_type::size_type | size_type |
| typedef typename mesh_type::value_type | value_type |
| typedef typename mesh_type::vector_type | vector_type |
Public Functions
| Type | Name |
|---|---|
| NonlinearSolver (const mesh_type * mesh) |
|
| cpppetsc::distributed< vector_type > | computeSolution (const BoundaryConditionContainer & boundaryConditions, cpppetsc::distributed< vector_type > initialGuess, const double time, const Assembler *const assembler) const Calls computeSolution with the default assembler calls (ie. calls assembleForceVector or assembleStiffnessMatrix). Passes on the rest of the arguments. |
| cpppetsc::distributed< vector_type > | computeSolution (const BoundaryConditionContainer & boundaryConditions, cpppetsc::distributed< vector_type > initialGuess, const double time, LocalForceVectorAssembler assembleForceVector, LocalStiffnessMatrixAssembler assembleStiffnessMatrix) const Calls computeSolution wrapping up the local assembler calls into distributed assembler calls. Passes on the rest of the arguments. |
| cpppetsc::distributed< vector_type > | computeSolution (const BoundaryConditionContainer & boundaryConditions, cpppetsc::distributed< vector_type > initialGuess, const double time, DistributedForceVectorAssembler assembleForceVector, DistributedStiffnessMatrixAssembler assembleStiffnessMatrix) const The goal of this function is to solve E(x) = min under the condition that all the essential boundary conditions x_i = a_i are met. |
Public Types Documentation
typedef BoundaryConditionContainer
using ae108::solve::NonlinearSolver< Assembler >::BoundaryConditionContainer = std::vector<cpppetsc::MeshBoundaryCondition<mesh_type> >;
typedef DistributedForceVectorAssembler
using ae108::solve::NonlinearSolver< Assembler >::DistributedForceVectorAssembler = std::function<void(const cpppetsc::distributed<vector_type> &, double, cpppetsc::distributed<vector_type> *)>;
typedef DistributedStiffnessMatrixAssembler
using ae108::solve::NonlinearSolver< Assembler >::DistributedStiffnessMatrixAssembler = std::function<void( const cpppetsc::distributed<vector_type> &, double, matrix_type *)>;
typedef LocalForceVectorAssembler
using ae108::solve::NonlinearSolver< Assembler >::LocalForceVectorAssembler = std::function<void(const cpppetsc::local<vector_type> &, double, cpppetsc::local<vector_type> *)>;
typedef LocalStiffnessMatrixAssembler
using ae108::solve::NonlinearSolver< Assembler >::LocalStiffnessMatrixAssembler = std::function<void( const cpppetsc::local<vector_type> &, double, matrix_type *)>;
typedef matrix_type
using ae108::solve::NonlinearSolver< Assembler >::matrix_type = typename mesh_type::matrix_type;
typedef mesh_type
using ae108::solve::NonlinearSolver< Assembler >::mesh_type = typename assembly::MeshTypeTrait<Assembler>::type;
typedef policy_type
using ae108::solve::NonlinearSolver< Assembler >::policy_type = typename assembly::PolicyTypeTrait<Assembler>::type;
typedef size_type
using ae108::solve::NonlinearSolver< Assembler >::size_type = typename mesh_type::size_type;
typedef value_type
using ae108::solve::NonlinearSolver< Assembler >::value_type = typename mesh_type::value_type;
typedef vector_type
using ae108::solve::NonlinearSolver< Assembler >::vector_type = typename mesh_type::vector_type;
Public Functions Documentation
function NonlinearSolver
explicit ae108::solve::NonlinearSolver::NonlinearSolver (
const mesh_type * mesh
)
Parameters:
meshA valid nonzero pointer to a mesh_type instance.
function computeSolution [1/3]
Calls computeSolution with the default assembler calls (ie. calls assembleForceVector or assembleStiffnessMatrix). Passes on the rest of the arguments.
cpppetsc::distributed < vector_type > ae108::solve::NonlinearSolver::computeSolution (
const BoundaryConditionContainer & boundaryConditions,
cpppetsc::distributed < vector_type > initialGuess,
const double time,
const Assembler *const assembler
) const
Parameters:
boundaryConditionsThe local essential boundary conditions to apply.initialGuessThe global vector to start iterating at.timeThis will be used to configure the assembler. @para assembler Valid nonzero pointer.
function computeSolution [2/3]
Calls computeSolution wrapping up the local assembler calls into distributed assembler calls. Passes on the rest of the arguments.
cpppetsc::distributed < vector_type > ae108::solve::NonlinearSolver::computeSolution (
const BoundaryConditionContainer & boundaryConditions,
cpppetsc::distributed < vector_type > initialGuess,
const double time,
LocalForceVectorAssembler assembleForceVector,
LocalStiffnessMatrixAssembler assembleStiffnessMatrix
) const
Parameters:
boundaryConditionsThe local essential boundary conditions to apply.initialGuessThe global vector to start iterating at.timeThis will be used to configure the assembler.assembleForceVectorA valid callable. It will be called to assemble the local force vector.assembleStiffnessMatrixA valid callable. It will be called to assemble the stiffness matrix.
function computeSolution [3/3]
The goal of this function is to solve E(x) = min under the condition that all the essential boundary conditions x_i = a_i are met.
cpppetsc::distributed < vector_type > ae108::solve::NonlinearSolver::computeSolution (
const BoundaryConditionContainer & boundaryConditions,
cpppetsc::distributed < vector_type > initialGuess,
const double time,
DistributedForceVectorAssembler assembleForceVector,
DistributedStiffnessMatrixAssembler assembleStiffnessMatrix
) const
Remark:
Applying a nonlinear solver, we actually solve F(x) := grad E(x) = 0 on the subspace where the boundary conditions are satisfied. We turn this problem into a problem for all x by defining f_i(x) := F_i(x) for subspace coordinates i and f_i(x) = x_i - a_i else. The equation to solve therefore is: f(x) = 0.
Remark:
Does not update internal variables.
Parameters:
boundaryConditionsThe local essential boundary conditions to apply.initialGuessThe global vector to start iterating at.timeThis will be used to configure the assembler.assembleForceVectorA valid callable. It will be called to assemble the distributed force vector.assembleStiffnessMatrixA valid callable. It will be called to assemble the stiffness matrix.
The documentation for this class was generated from the following file solve/src/include/ae108/solve/NonlinearSolver.h