Class ae108::solve::TransformingSolver
template <class Assembler>
ClassList > ae108 > solve > TransformingSolver
Public Types
| Type | Name |
|---|---|
| typedef AffineTransform | BoundaryConditionContainer |
| typedef std::function< void(const cpppetsc::distributed< cpppetsc::Vector > &, double, cpppetsc::distributed< cpppetsc::Vector > *)> | DistributedForceVectorAssembler |
| typedef std::function< void(const cpppetsc::distributed< cpppetsc::Vector > &, double, cpppetsc::Matrix *)> | DistributedStiffnessMatrixAssembler |
| typedef std::function< void(const cpppetsc::local< cpppetsc::Vector > &, double, cpppetsc::local< cpppetsc::Vector > *)> | LocalForceVectorAssembler |
| typedef std::function< void(const cpppetsc::local< cpppetsc::Vector > &, double, cpppetsc::Matrix *)> | LocalStiffnessMatrixAssembler |
| typedef typename cpppetsc::Mesh::size_type | size_type |
| typedef typename cpppetsc::Mesh::value_type | value_type |
Public Functions
| Type | Name |
|---|---|
| TransformingSolver (const cpppetsc::Mesh * mesh) |
|
| cpppetsc::distributed< cpppetsc::Vector > | computeSolution (const BoundaryConditionContainer & transform, cpppetsc::distributed< cpppetsc::Vector > 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< cpppetsc::Vector > | computeSolution (const BoundaryConditionContainer & transform, cpppetsc::distributed< cpppetsc::Vector > 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< cpppetsc::Vector > | computeSolution (const BoundaryConditionContainer & transform, cpppetsc::distributed< cpppetsc::Vector > initialGuess, const double time, const DistributedForceVectorAssembler & assembleForceVector, const 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;
typedef DistributedForceVectorAssembler
using ae108::solve::TransformingSolver< Assembler >::DistributedForceVectorAssembler = std::function<void(const cpppetsc::distributed<cpppetsc::Vector> &, double, cpppetsc::distributed<cpppetsc::Vector> *)>;
typedef DistributedStiffnessMatrixAssembler
using ae108::solve::TransformingSolver< Assembler >::DistributedStiffnessMatrixAssembler = std::function<void(const cpppetsc::distributed<cpppetsc::Vector> &, double, cpppetsc::Matrix *)>;
typedef LocalForceVectorAssembler
using ae108::solve::TransformingSolver< Assembler >::LocalForceVectorAssembler = std::function<void(const cpppetsc::local<cpppetsc::Vector> &, double, cpppetsc::local<cpppetsc::Vector> *)>;
typedef LocalStiffnessMatrixAssembler
using ae108::solve::TransformingSolver< Assembler >::LocalStiffnessMatrixAssembler = std::function<void( const cpppetsc::local<cpppetsc::Vector> &, double, cpppetsc::Matrix *)>;
typedef size_type
using ae108::solve::TransformingSolver< Assembler >::size_type = typename cpppetsc::Mesh::size_type;
typedef value_type
using ae108::solve::TransformingSolver< Assembler >::value_type = typename cpppetsc::Mesh::value_type;
Public Functions Documentation
function TransformingSolver
explicit ae108::solve::TransformingSolver::TransformingSolver (
const cpppetsc::Mesh * mesh
)
Parameters:
meshA valid nonzero pointer to a cpppetsc::Mesh 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 < cpppetsc::Vector > ae108::solve::TransformingSolver::computeSolution (
const BoundaryConditionContainer & transform,
cpppetsc::distributed < cpppetsc::Vector > 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 < cpppetsc::Vector > ae108::solve::TransformingSolver::computeSolution (
const BoundaryConditionContainer & transform,
cpppetsc::distributed < cpppetsc::Vector > 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 < cpppetsc::Vector > ae108::solve::TransformingSolver::computeSolution (
const BoundaryConditionContainer & transform,
cpppetsc::distributed < cpppetsc::Vector > initialGuess,
const double time,
const DistributedForceVectorAssembler & assembleForceVector,
const 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