G+Smo
25.01.0
Geometry + Simulation Modules
|
Assembler for incompressible nonlinear elasticity problem with a muscle material model. The material model is based on the paper by M.H.Gfrerer and B.Simeon "Fiber-based modeling and simulation of skeletal muscles".
Public Member Functions | |
const std::vector< gsMatrix< T > > & | allFixedDofs () const |
Returns all the Dirichlet values (if applicable) | |
virtual void | assemble () |
virtual void | assemble () |
virtual void | assemble (bool saveEliminationMatrix) |
virtual void | assemble (bool) |
virtual bool | assemble (const gsMatrix< T > &solutionVector, const std::vector< gsMatrix< T > > &fixedDDoFs)=0 |
virtual bool | assemble (const gsMatrix< T > &solutionVector, const std::vector< gsMatrix< T > > &fixedDoFs) |
virtual bool | assemble (const gsMatrix< T > &solutionVector, const std::vector< gsMatrix< T > > &fixedDoFs) |
virtual void | assemble (const gsMultiPatch< T > &) |
virtual void | assemble (const gsMultiPatch< T > &displacement) |
virtual void | assemble (const gsMultiPatch< T > &displacement, const gsMultiPatch< T > &pressure) |
bool | check () |
checks for consistency and legal values of the stored members. | |
virtual gsAssembler * | clone () const |
Clone this Assembler, making a deep copy. | |
void | computeDirichletDofs (short_t unk=0) |
Triggers computation of the Dirichlet dofs. | |
virtual void | constructCauchyStresses (const gsMultiPatch< T > &displacement, const gsMultiPatch< T > &pressure, gsPiecewiseFunction< T > &result, stress_components::components component=stress_components::von_mises) const |
Construct Cauchy stresses for evaluation or visualization. | |
virtual void | constructCauchyStresses (const gsMultiPatch< T > &displacement, const gsMultiPatch< T > &pressure, gsPiecewiseFunction< T > &result, stress_components::components component=stress_components::von_mises) const |
Construct Cauchy stresses for evaluation or visualization. | |
virtual void | constructCauchyStresses (const gsMultiPatch< T > &displacement, gsPiecewiseFunction< T > &result, stress_components::components component=stress_components::von_mises) const |
Construct Cauchy stresses for evaluation or visualization. | |
virtual void | constructPressure (const gsMatrix< T > &solVector, const std::vector< gsMatrix< T > > &fixedDoFs, gsMultiPatch< T > &pressure) const |
@ brief Construct pressure from computed solution vector | |
virtual void | constructSolution (const gsMatrix< T > &, gsMultiPatch< T > &, const gsVector< index_t > &) const |
Construct solution from computed solution vector for a set of unknowns. The result is a vectorfield, where each component is given the corresponding entry of. | |
virtual void | constructSolution (const gsMatrix< T > &, gsMultiPatch< T > &, short_t=0) const |
Construct solution from computed solution vector for a single unknows. | |
virtual void | constructSolution (const gsMatrix< T > &solVector, const std::vector< gsMatrix< T > > &fixedDDofs, gsMultiPatch< T > &result, const gsVector< index_t > &unknowns) const |
Constructs solution as a gsMultiPatch object from the solution vector and fixed DoFs. | |
virtual void | constructSolution (const gsMatrix< T > &solVector, const std::vector< gsMatrix< T > > &fixedDoFs, gsMultiPatch< T > &displacement) const |
Construct displacement from computed solution vector and fixed degrees of freedom. | |
virtual void | constructSolution (const gsMatrix< T > &solVector, const std::vector< gsMatrix< T > > &fixedDoFs, gsMultiPatch< T > &displacement, gsMultiPatch< T > &pressure) const |
Construct displacement and pressure from computed solution vector and fixed degrees of freedom. | |
virtual gsAssembler * | create () const |
Create an empty Assembler of the derived type and return a pointer to it. Call the initialize functions to set the members. | |
virtual void | eliminateFixedDofs () |
Eliminates new Dirichelt degrees of fredom. | |
void | finalize () |
finishes the assembling of the system matrix, i.e. calls its .makeCompressed() method. | |
const gsMatrix< T > & | fixedDofs (short_t unk=0) const |
Returns the Dirichlet values for a unknown (if applicable) | |
virtual void | getFixedDofs (index_t patch, boxSide side, gsMatrix< T > &ddofs) const |
gsMuscleAssembler (const gsMultiPatch< T > &patches, const gsMultiBasis< T > &basisDisp, const gsMultiBasis< T > &basisPres, const gsBoundaryConditions< T > &bconditions, const gsFunction< T > &body_force, const gsPiecewiseFunction< T > &tendonMuscleDistribution, const gsVector< T > &fiberDirection) | |
Constructor of mixed formulation (displacement + pressure) | |
void | homogenizeFixedDofs (short_t unk=0) |
Sets any Dirichlet values to homogeneous (if applicable) | |
void | initialize (const gsPde< T > &pde, const gsBasisRefs< T > &basis, const gsOptionList &opt=defaultOptions()) |
Intitialize function for, sets data fields using the pde, a vector of bases and assembler options. | |
void | initialize (const gsPde< T > &pde, const gsMultiBasis< T > &bases, const gsOptionList &opt=defaultOptions()) |
Intitialize function for, sets data fields using the pde, a multi-basis and assembler options. | |
void | initialize (const gsPde< T > &pde, const gsStdVectorRef< gsMultiBasis< T > > &bases, const gsOptionList &opt=defaultOptions()) |
Intitialize function for, sets data fields using the pde, a vector of multi-basis and assembler options. | |
void | initialize (typename gsPde< T >::Ptr pde, const gsStdVectorRef< gsMultiBasis< T > > &bases, const gsOptionList &opt=defaultOptions()) |
Intitialize function for, sets data fields using the pde, a vector of multi-basis and assembler options. | |
const gsSparseMatrix< T > & | matrix () const |
Returns the left-hand global matrix. | |
gsMultiBasis< T > & | multiBasis (index_t k=0) |
Return the multi-basis. Note: if the basis is altered, then refresh() should be called. | |
const gsMultiBasis< T > & | multiBasis (index_t k=0) const |
Return the multi-basis. | |
index_t | numColNz () const |
Provides an estimation of the number of non-zero matrix entries per column. This value can be used for sparse matrix memory allocation. | |
virtual int | numDofs () const |
Returns number of free degrees of freedom. | |
virtual index_t | numFixedDofs () const |
get the size of the Dirichlet vector for elimination | |
size_t | numMultiBasis () const |
Returns the number of multi-bases. | |
const gsMultiPatch< T > & | patches () const |
Return the multipatch. | |
const gsPde< T > & | pde () const |
Return the Pde. | |
void | penalizeDirichletDofs (short_t unk=0) |
T | penalty (index_t k) const |
Penalty constant for patch k, used for Nitsche and / Discontinuous Galerkin methods. | |
template<class ElementVisitor > | |
void | push () |
Iterates over all elements of the domain and applies the ElementVisitor. | |
template<class BElementVisitor > | |
void | push (const bcContainer &BCs) |
Iterates over all elements of the boundaries BCs and applies the BElementVisitor. | |
template<class BElementVisitor > | |
void | push (const BElementVisitor &visitor, const boundary_condition< T > &BC) |
Applies the BElementVisitor to the boundary condition BC. | |
template<class ElementVisitor > | |
void | push (const ElementVisitor &visitor) |
Iterates over all elements of the domain and applies the ElementVisitor. | |
template<class InterfaceVisitor > | |
void | pushInterface () |
Iterates over all elements of interfaces and applies the InterfaceVisitor. | |
virtual void | refresh () |
Refresh routine to set dof-mappers. | |
const gsMatrix< T > & | rhs () const |
Returns the left-hand side vector(s) ( multiple right hand sides possible ) | |
void | setFixedDofs (const gsMatrix< T > &coefMatrix, short_t unk=0, size_t patch=0) |
the user can manually set the dirichlet Dofs for a given patch and unknown, based on the Basis coefficients | |
virtual void | setFixedDofs (const std::vector< gsMatrix< T > > &ddofs) |
set all fixed degrees of freedom | |
virtual void | setFixedDofs (index_t patch, boxSide side, const gsMatrix< T > &ddofs, bool oneUnk=false) |
Set Dirichet degrees of freedom on a given side of a given patch from a given matrix. | |
void | setFixedDofVector (gsMatrix< T > vals, short_t unk=0) |
the user can manually set the dirichlet Dofs for a given patch and unknown. | |
void | setSparseSystem (gsSparseSystem< T > &sys) |
Swaps the actual sparse system with the given one. | |
const gsSparseSystem< T > & | system () const |
Returns the left-hand global matrix. | |
virtual void | updateSolution (const gsMatrix< T > &solVector, gsMultiPatch< T > &result, T theta=(T)(1)) const |
Update solution by adding the computed solution vector to the current solution specified by. | |
Static Public Member Functions | |
static gsOptionList | defaultOptions () |
Returns the list of default options for assembly. | |
Protected Member Functions | |
template<class ElementVisitor > | |
void | apply (ElementVisitor &visitor, size_t patchIndex=0, boxSide side=boundary::none) |
Generic assembly routine for volume or boundary integrals. | |
template<class InterfaceVisitor > | |
void | apply (InterfaceVisitor &visitor, const boundaryInterface &bi) |
Generic assembly routine for patch-interface integrals. | |
void | computeDirichletDofsIntpl (const gsDofMapper &mapper, const gsMultiBasis< T > &mbasis, const short_t unk_=0) |
calculates the values of the eliminated dofs based on Interpolation. | |
void | computeDirichletDofsL2Proj (const gsDofMapper &mapper, const gsMultiBasis< T > &mbasis, const short_t unk_=0) |
calculates the values of the eliminated dofs based on L2 Projection. | |
virtual void | reserve () |
a custom reserve function to allocate memory for the sparse matrix | |
void | scalarProblemGalerkinRefresh () |
A prototype of the refresh function for a "standard" scalar problem. Creats one mapper based on the set options and initializes the sparse system (without allocating memory. | |
Protected Attributes | |
std::vector< gsMultiBasis< T > > | m_bases |
std::vector< gsMatrix< T > > | m_ddof |
short_t | m_dim |
gsOptionList | m_options |
Options. | |
memory::shared_ptr< gsPde< T > > | m_pde_ptr |
gsSparseSystem< T > | m_system |
Global sparse linear system. | |
|
protectedinherited |
Generic assembly routine for volume or boundary integrals.
[in] | visitor | The visitor for the boundary or volume integral |
[in] | patchIndex | The considered patch |
[in] | side | The considered boundary side, only necessary for boundary integrals. |
|
inlinevirtual |
Assembles the tangential linear system for Newton's method given the current solution in the form of free and fixed/Dirichelt degrees of freedom. Checks if the current solution is valid (Newton's solver can exit safely if invalid).
Reimplemented from gsElasticityAssembler< T >.
|
inlinevirtual |
Assembles the tangential linear system for Newton's method given the current solution in the form of free and fixed/Dirichelt degrees of freedom. Checks if the current solution is valid (Newton's solver can exit safely if invalid).
Reimplemented from gsElasticityAssembler< T >.
|
virtual |
Assembles the tangential linear system for Newton's method given the current solution in the form of free and fixed/Dirichelt degrees of freedom. Checks if the current solution is valid (Newton's solver can exit safely if invalid).
Reimplemented from gsElasticityAssembler< T >.
|
inlinevirtual |
Assembles the tangential linear system for Newton's method given the current solution in the form of free and fixed/Dirichelt degrees of freedom. Checks if the current solution is valid (Newton's solver can exit safely if invalid).
Reimplemented from gsElasticityAssembler< T >.
|
virtual |
Assembles the tangential linear system for Newton's method given the current solution in the form of free and fixed/Dirichelt degrees of freedom. Checks if the current solution is valid (Newton's solver can exit safely if invalid).
Reimplemented from gsElasticityAssembler< T >.
|
virtual |
Assembles the tangential linear system for Newton's method given the current solution in the form of free and fixed/Dirichelt degrees of freedom. Checks if the current solution is valid (Newton's solver can exit safely if invalid).
Reimplemented from gsElasticityAssembler< T >.
|
virtual |
Assembles the tangential linear system for Newton's method given the current solution in the form of free and fixed/Dirichelt degrees of freedom. Checks if the current solution is valid (Newton's solver can exit safely if invalid).
Reimplemented from gsElasticityAssembler< T >.
|
inlinevirtual |
Assembles the tangential linear system for Newton's method given the current solution in the form of free and fixed/Dirichelt degrees of freedom. Checks if the current solution is valid (Newton's solver can exit safely if invalid).
Reimplemented from gsElasticityAssembler< T >.
|
virtual |
Assembles the tangential linear system for Newton's method given the current solution in the form of free and fixed/Dirichelt degrees of freedom. Checks if the current solution is valid (Newton's solver can exit safely if invalid).
Reimplemented from gsElasticityAssembler< T >.
|
virtual |
Assembles the tangential linear system for Newton's method given the current solution in the form of free and fixed/Dirichelt degrees of freedom. Checks if the current solution is valid (Newton's solver can exit safely if invalid).
Reimplemented from gsElasticityAssembler< T >.
|
inherited |
Triggers computation of the Dirichlet dofs.
[in] | unk | the considered unknown |
|
protectedinherited |
calculates the values of the eliminated dofs based on Interpolation.
[in] | mapper | the dofMapper for the considered unknown |
[in] | mbasis | the multipabasis for the considered unknown |
[in] | unk_ | the considered unknown |
|
protectedinherited |
calculates the values of the eliminated dofs based on L2 Projection.
[in] | mapper | the dofMapper for the considered unknown |
[in] | mbasis | the multipabasis for the considered unknown |
[in] | unk_ | the considered unknown |
|
inlinevirtualinherited |
Construct solution from computed solution vector for a set of unknowns. The result is a vectorfield, where each component is given the corresponding entry of.
[in] | solVector | the solution vector obtained from the linear system |
[out] | result | the solution seen as vectorfield in form of a gsMultiBasis |
[in] | unknowns | the considered vector of unknowns |
Reimplemented from gsBaseAssembler< T >.
|
inlinevirtualinherited |
Construct solution from computed solution vector for a single unknows.
[in] | solVector | the solution vector obtained from the linear system |
[out] | result | the solution in form of a gsMultiBasis |
[in] | unk | the considered unknown |
Reimplemented from gsBaseAssembler< T >.
Returns the Dirichlet values for a unknown (if applicable)
[in] | unk | the considered unknown |
|
virtualinherited |
get fixed degrees of freedom corresponding to a given part of the bdry. each column of the resulting matrix correspond to one variable/component of the vector-valued vairable
|
inlineinherited |
Sets any Dirichlet values to homogeneous (if applicable)
[in] | unk | the considered unknown |
|
inherited |
Enforce Dirichlet boundary conditions by diagonal penalization
[in] | unk | the considered unknown |
|
inherited |
the user can manually set the dirichlet Dofs for a given patch and unknown, based on the Basis coefficients
[in] | coefMatrix | the coefficients of the function |
[in] | unk | the consideren unknown |
[in] | patch | the patch index |
|
virtualinherited |
Set Dirichet degrees of freedom on a given side of a given patch from a given matrix.
A usual source of degrees of freedom is another geometry where it is known that the corresponding bases match. The function is not safe in that it assumes a correct numbering of DoFs in a given matrix. To allocate space for these DoFs in the assembler, add an empty/zero Dirichlet boundary condition to gsBoundaryCondtions container that is passed to the assembler constructor.
Reimplemented in gsNsTimeIntegrator< T >.
the user can manually set the dirichlet Dofs for a given patch and unknown.
[in] | vals | the values of the eliminated dofs. |
[in] | unk | the considered unknown |
|
virtualinherited |
Update solution by adding the computed solution vector to the current solution specified by.
[in] | solVector | the solution vector obtained from the linear system |
[out] | result | the solution in form of a gsMultiBasis, |
[in] | theta | damping factor for update, theta = 1 corresponds to a full step. |
|
protectedinherited |
The discretization bases corresponding to the patches and to the number of solution fields that are to be computed. One entry of the vector corresponds to one or more unknown (in case of a system of PDEs)
|
protectedinherited |
Fixed DoF values (if applicable, for instance eliminated Dirichlet DoFs). One entry of the vector corresponds to exactly one unknown, i.e. the size of m_ddof must fit m_system.colBlocks().
|
protectedinherited |
Dimension of the problem parametric dim = physical dim = deformation dim
|
protectedinherited |
The PDE: contains multi-patch domain, boundary conditions and coeffcient functions