Class ae108::solve::TransformingSolver
template <class Assembler>
ClassList > ae108 > solve > TransformingSolver
Public Types
| Type | Name |
|---|---|
| typedef AffineTransform< policy_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 |
|---|---|
| TransformingSolver (const mesh_type * mesh) |
|
| cpppetsc::distributed< vector_type > | computeSolution (const BoundaryConditionContainer & transform, 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 & transform, 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 & transform, cpppetsc::distributed< vector_type > initialGuess, const double time, DistributedForceVectorAssembler assembleForceVector, DistributedStiffnessMatrixAssembler assembleStiffnessMatrix) const The goal of this function is to find the minimizer y of E(P * y + c) -> min, where (P, c) is the provided affine transformation transform . The transform can be used to specify boundary conditions by fixing degrees of freedom in the output of the transform. |
Public Types Documentation
typedef BoundaryConditionContainer
using ae108::solve::TransformingSolver< Assembler >::BoundaryConditionContainer = AffineTransform<policy_type>;
typedef DistributedForceVectorAssembler
using ae108::solve::TransformingSolver< Assembler >::DistributedForceVectorAssembler = std::function<void(const cpppetsc::distributed<vector_type> &, double, cpppetsc::distributed<vector_type> *)>;
typedef DistributedStiffnessMatrixAssembler
using ae108::solve::TransformingSolver< Assembler >::DistributedStiffnessMatrixAssembler = std::function<void( const cpppetsc::distributed<vector_type> &, double, matrix_type *)>;
typedef LocalForceVectorAssembler
using ae108::solve::TransformingSolver< Assembler >::LocalForceVectorAssembler = std::function<void(const cpppetsc::local<vector_type> &, double, cpppetsc::local<vector_type> *)>;
typedef LocalStiffnessMatrixAssembler
using ae108::solve::TransformingSolver< Assembler >::LocalStiffnessMatrixAssembler = std::function<void( const cpppetsc::local<vector_type> &, double, matrix_type *)>;
typedef matrix_type
using ae108::solve::TransformingSolver< Assembler >::matrix_type = typename mesh_type::matrix_type;
typedef mesh_type
using ae108::solve::TransformingSolver< Assembler >::mesh_type = typename assembly::MeshTypeTrait<Assembler>::type;
typedef policy_type
using ae108::solve::TransformingSolver< Assembler >::policy_type = typename assembly::PolicyTypeTrait<Assembler>::type;
typedef size_type
using ae108::solve::TransformingSolver< Assembler >::size_type = typename mesh_type::size_type;
typedef value_type
using ae108::solve::TransformingSolver< Assembler >::value_type = typename mesh_type::value_type;
typedef vector_type
using ae108::solve::TransformingSolver< Assembler >::vector_type = typename mesh_type::vector_type;
Public Functions Documentation
function TransformingSolver
explicit ae108::solve::TransformingSolver::TransformingSolver (
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::TransformingSolver::computeSolution (
const BoundaryConditionContainer & transform,
cpppetsc::distributed < vector_type > initialGuess,
const double time,
const Assembler *const assembler
) const
Parameters:
transformThe affine transform to apply.initialGuessThe global (untransformed) 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::TransformingSolver::computeSolution (
const BoundaryConditionContainer & transform,
cpppetsc::distributed < vector_type > initialGuess,
const double time,
LocalForceVectorAssembler assembleForceVector,
LocalStiffnessMatrixAssembler assembleStiffnessMatrix
) const
Parameters:
transformThe affine transform to apply.initialGuessThe global (untransformed) 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 find the minimizer y of E(P * y + c) -> min, where (P, c) is the provided affine transformation transform . The transform can be used to specify boundary conditions by fixing degrees of freedom in the output of the transform.
cpppetsc::distributed < vector_type > ae108::solve::TransformingSolver::computeSolution (
const BoundaryConditionContainer & transform,
cpppetsc::distributed < vector_type > initialGuess,
const double time,
DistributedForceVectorAssembler assembleForceVector,
DistributedStiffnessMatrixAssembler assembleStiffnessMatrix
) const
More precisely, this function solves the equation E' = 0, which is equivalent to P^t * F(P * y + c) = 0, where F(P * y + c) are the forces at P * y + c.
Parameters:
transformThe affine transform to apply.initialGuessThe global (untransformed) 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/TransformingSolver.h