Skip to content

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:


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:

  • transform The affine transform to apply.
  • initialGuess The global (untransformed) vector to start iterating at.
  • time This 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:

  • transform The affine transform to apply.
  • initialGuess The global (untransformed) vector to start iterating at.
  • time This will be used to configure the assembler.
  • assembleForceVector A valid callable. It will be called to assemble the local force vector.
  • assembleStiffnessMatrix A 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:

  • transform The affine transform to apply.
  • initialGuess The global (untransformed) vector to start iterating at.
  • time This will be used to configure the assembler.
  • assembleForceVector A valid callable. It will be called to assemble the distributed force vector.
  • assembleStiffnessMatrix A 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