#include <AbstractNonlinearElasticitySolver.hpp>
Public Member Functions | |
AbstractNonlinearElasticitySolver (QuadraticMesh< DIM > *pQuadMesh, c_vector< double, DIM > bodyForce, double density, std::string outputDirectory, std::vector< unsigned > &fixedNodes, CompressibilityType compressibilityType) | |
virtual | ~AbstractNonlinearElasticitySolver () |
void | Solve (double tol=-1.0, unsigned maxNumNewtonIterations=INT_MAX, bool quitIfNoConvergence=true) |
void | WriteCurrentDeformation (std::string fileName, int counterToAppend=-1) |
unsigned | GetNumNewtonIterations () |
void | SetFunctionalBodyForce (c_vector< double, DIM >(*pFunction)(c_vector< double, DIM > &X, double t)) |
void | SetWriteOutput (bool writeOutput=true) |
void | SetWriteOutputEachNewtonIteration (bool writeOutputEachNewtonIteration=true) |
void | SetKspAbsoluteTolerance (double kspAbsoluteTolerance) |
std::vector< double > & | rGetCurrentSolution () |
void | SetSurfaceTractionBoundaryConditions (std::vector< BoundaryElement< DIM-1, DIM > * > &rBoundaryElements, std::vector< c_vector< double, DIM > > &rSurfaceTractions) |
void | SetFunctionalTractionBoundaryCondition (std::vector< BoundaryElement< DIM-1, DIM > * > rBoundaryElements, c_vector< double, DIM >(*pFunction)(c_vector< double, DIM > &X, double t)) |
std::vector< c_vector< double, DIM > > & | rGetDeformedPosition () |
void | SetCurrentTime (double time) |
void | CreateCmguiOutput () |
Protected Member Functions | |
virtual void | AssembleSystem (bool assembleResidual, bool assembleLinearSystem)=0 |
void | Initialise (std::vector< c_vector< double, DIM > > *pFixedNodeLocations) |
void | AllocateMatrixMemory () |
void | ApplyBoundaryConditions (bool applyToMatrix) |
void | FinishAssembleSystem (bool assembleResidual, bool assembleLinearSystem) |
double | ComputeResidualAndGetNorm (bool allowException) |
double | CalculateResidualNorm () |
void | VectorSum (std::vector< double > &rX, ReplicatableVector &rY, double a, std::vector< double > &rZ) |
void | PrintLineSearchResult (double s, double residNorm) |
double | TakeNewtonStep () |
double | UpdateSolutionUsingLineSearch (Vec solution) |
virtual void | PostNewtonStep (unsigned counter, double normResidual) |
virtual void | ComputeStressAndStressDerivative (AbstractMaterialLaw< DIM > *pMaterialLaw, c_matrix< double, DIM, DIM > &rC, c_matrix< double, DIM, DIM > &rInvC, double pressure, unsigned elementIndex, unsigned currentQuadPointGlobalIndex, c_matrix< double, DIM, DIM > &rT, FourthOrderTensor< DIM, DIM, DIM, DIM > &rDTdE, bool computeDTdE) |
Protected Attributes | |
QuadraticMesh< DIM > * | mpQuadMesh |
std::vector< BoundaryElement < DIM-1, DIM > * > | mBoundaryElements |
GaussianQuadratureRule< DIM > * | mpQuadratureRule |
GaussianQuadratureRule< DIM-1 > * | mpBoundaryQuadratureRule |
double | mKspAbsoluteTol |
unsigned | mNumDofs |
Vec | mResidualVector |
Vec | mLinearSystemRhsVector |
Mat | mJacobianMatrix |
Vec | mDirichletBoundaryConditionsVector |
Mat | mPreconditionMatrix |
c_vector< double, DIM > | mBodyForce |
double | mDensity |
std::vector< unsigned > | mFixedNodes |
std::vector< c_vector< double, DIM > > | mFixedNodeDisplacements |
bool | mWriteOutput |
std::string | mOutputDirectory |
OutputFileHandler * | mpOutputFileHandler |
bool | mWriteOutputEachNewtonIteration |
std::vector< double > | mCurrentSolution |
FourthOrderTensor< DIM, DIM, DIM, DIM > | dTdE |
unsigned | mNumNewtonIterations |
std::vector< c_vector< double, DIM > > | mDeformedPosition |
std::vector< c_vector< double, DIM > > | mSurfaceTractions |
c_vector< double, DIM >(* | mpBodyForceFunction )(c_vector< double, DIM > &X, double t) |
c_vector< double, DIM >(* | mpTractionBoundaryConditionFunction )(c_vector< double, DIM > &X, double t) |
bool | mUsingBodyForceFunction |
bool | mUsingTractionBoundaryConditionFunction |
double | mCurrentTime |
CompressibilityType | mCompressibilityType |
Static Protected Attributes | |
static const size_t | NUM_VERTICES_PER_ELEMENT = DIM+1 |
static const size_t | NUM_NODES_PER_ELEMENT = (DIM+1)*(DIM+2)/2 |
static const size_t | NUM_NODES_PER_BOUNDARY_ELEMENT = DIM*(DIM+1)/2 |
static double | MAX_NEWTON_ABS_TOL = 1e-7 |
static double | MIN_NEWTON_ABS_TOL = 1e-10 |
static double | NEWTON_REL_TOL = 1e-4 |
Definition at line 76 of file AbstractNonlinearElasticitySolver.hpp.
AbstractNonlinearElasticitySolver< DIM >::AbstractNonlinearElasticitySolver | ( | QuadraticMesh< DIM > * | pQuadMesh, | |
c_vector< double, DIM > | bodyForce, | |||
double | density, | |||
std::string | outputDirectory, | |||
std::vector< unsigned > & | fixedNodes, | |||
CompressibilityType | compressibilityType | |||
) | [inline] |
Constructor.
pQuadMesh | the quadratic mesh | |
bodyForce | Body force density (for example, acceleration due to gravity) | |
density | density | |
outputDirectory | output directory | |
fixedNodes | std::vector of nodes which have a dirichlet boundary condition imposed on them | |
compressibilityType | Should be equal to COMPRESSIBLE or INCOMPRESSIBLE (see enumeration defined at top of file) (depending on which concrete class is inheriting from this) and is only used in computing mNumDofs and allocating matrix memory. |
Definition at line 1262 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractNonlinearElasticitySolver< DIM >::mCompressibilityType, AbstractNonlinearElasticitySolver< DIM >::mNumDofs, AbstractNonlinearElasticitySolver< DIM >::mOutputDirectory, AbstractNonlinearElasticitySolver< DIM >::mpOutputFileHandler, AbstractNonlinearElasticitySolver< DIM >::mpQuadMesh, and AbstractNonlinearElasticitySolver< DIM >::mWriteOutput.
AbstractNonlinearElasticitySolver< DIM >::~AbstractNonlinearElasticitySolver | ( | ) | [inline, virtual] |
Destructor.
Definition at line 1311 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractNonlinearElasticitySolver< DIM >::mCompressibilityType, AbstractNonlinearElasticitySolver< DIM >::mDirichletBoundaryConditionsVector, AbstractNonlinearElasticitySolver< DIM >::mJacobianMatrix, AbstractNonlinearElasticitySolver< DIM >::mLinearSystemRhsVector, AbstractNonlinearElasticitySolver< DIM >::mpBoundaryQuadratureRule, AbstractNonlinearElasticitySolver< DIM >::mpOutputFileHandler, AbstractNonlinearElasticitySolver< DIM >::mpQuadratureRule, AbstractNonlinearElasticitySolver< DIM >::mPreconditionMatrix, and AbstractNonlinearElasticitySolver< DIM >::mResidualVector.
virtual void AbstractNonlinearElasticitySolver< DIM >::AssembleSystem | ( | bool | assembleResidual, | |
bool | assembleLinearSystem | |||
) | [protected, pure virtual] |
Assemble the residual vector and/or Jacobian matrix (using the current solution stored in mCurrentSolution, output going to mResidualVector and/or mJacobianMatrix).
Must be overridden in concrete derived classes.
assembleResidual | A bool stating whether to assemble the residual vector. | |
assembleLinearSystem | A bool stating whether to assemble the Jacobian matrix and the RHS vector of the linear system (which is based on the residual but could be slightly different due to the way dirichlet boundary conditions are applied to the linear system - see comments in ApplyBoundaryConditions). |
Implemented in CompressibleNonlinearElasticitySolver< DIM >, and NonlinearElasticitySolver< DIM >.
Referenced by AbstractNonlinearElasticitySolver< DIM >::ComputeResidualAndGetNorm(), and AbstractNonlinearElasticitySolver< DIM >::TakeNewtonStep().
void AbstractNonlinearElasticitySolver< DIM >::Initialise | ( | std::vector< c_vector< double, DIM > > * | pFixedNodeLocations | ) | [inline, protected] |
Initialise the solver.
pFixedNodeLocations |
Definition at line 561 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractNonlinearElasticitySolver< DIM >::AllocateMatrixMemory(), AbstractNonlinearElasticitySolver< DIM >::mCurrentSolution, AbstractNonlinearElasticitySolver< DIM >::mFixedNodeDisplacements, AbstractNonlinearElasticitySolver< DIM >::mFixedNodes, AbstractNonlinearElasticitySolver< DIM >::mNumDofs, AbstractNonlinearElasticitySolver< DIM >::mpBoundaryQuadratureRule, AbstractNonlinearElasticitySolver< DIM >::mpQuadMesh, and AbstractNonlinearElasticitySolver< DIM >::mpQuadratureRule.
Referenced by CompressibleNonlinearElasticitySolver< DIM >::CompressibleNonlinearElasticitySolver(), and NonlinearElasticitySolver< DIM >::NonlinearElasticitySolver().
void AbstractNonlinearElasticitySolver< DIM >::AllocateMatrixMemory | ( | ) | [inline, protected] |
Allocates memory for the Jacobian and preconditioner matrices (larger number of non-zeros per row than with say linear problems)
We want to allocate different numbers of non-zeros per row, which means PetscTools::SetupMat isn't that useful. We could call
but we would get warnings due to the lack allocation
Definition at line 603 of file AbstractNonlinearElasticitySolver.hpp.
References PetscTools::CreateVec(), PetscTools::IsSequential(), AbstractNonlinearElasticitySolver< DIM >::mCompressibilityType, AbstractNonlinearElasticitySolver< DIM >::mDirichletBoundaryConditionsVector, AbstractNonlinearElasticitySolver< DIM >::mJacobianMatrix, AbstractNonlinearElasticitySolver< DIM >::mLinearSystemRhsVector, AbstractNonlinearElasticitySolver< DIM >::mNumDofs, AbstractNonlinearElasticitySolver< DIM >::mpQuadMesh, AbstractNonlinearElasticitySolver< DIM >::mPreconditionMatrix, AbstractNonlinearElasticitySolver< DIM >::mResidualVector, and PetscTools::SetupMat().
Referenced by AbstractNonlinearElasticitySolver< DIM >::Initialise().
void AbstractNonlinearElasticitySolver< DIM >::ApplyBoundaryConditions | ( | bool | applyToMatrix | ) | [inline, protected] |
Apply the Dirichlet boundary conditions to the linear system.
This will always apply the Dirichlet boundary conditions to the residual vector (basically, setting a component to the difference between the current value and the correct value).
If the boolean parameter is true, this will apply the boundary conditions to the Jacobian and the linear system RHS vector (which should be equal to the residual on entering this function). In the compressible case the boundary conditions are applied by zeroing both rows and columns of the Jacobian matrix (to maintain) symmetry, which means additional changes are needed for the RHS vector.
applyToMatrix | Whether to apply the boundary conditions to the linear system (as well as the residual). |
Definition at line 755 of file AbstractNonlinearElasticitySolver.hpp.
References PetscVecTools::AddScaledVector(), PetscMatTools::AssembleFinal(), PetscMatTools::GetMatrixRowDistributed(), AbstractNonlinearElasticitySolver< DIM >::mCompressibilityType, AbstractNonlinearElasticitySolver< DIM >::mCurrentSolution, AbstractNonlinearElasticitySolver< DIM >::mDirichletBoundaryConditionsVector, AbstractNonlinearElasticitySolver< DIM >::mFixedNodeDisplacements, AbstractNonlinearElasticitySolver< DIM >::mFixedNodes, AbstractNonlinearElasticitySolver< DIM >::mJacobianMatrix, AbstractNonlinearElasticitySolver< DIM >::mLinearSystemRhsVector, AbstractNonlinearElasticitySolver< DIM >::mPreconditionMatrix, AbstractNonlinearElasticitySolver< DIM >::mResidualVector, PetscVecTools::SetElement(), PetscVecTools::Zero(), PetscMatTools::ZeroRowsAndColumnsWithValueOnDiagonal(), and PetscMatTools::ZeroRowsWithValueOnDiagonal().
Referenced by AbstractNonlinearElasticitySolver< DIM >::FinishAssembleSystem().
void AbstractNonlinearElasticitySolver< DIM >::FinishAssembleSystem | ( | bool | assembleResidual, | |
bool | assembleLinearSystem | |||
) | [inline, protected] |
To be called at the end of AssembleSystem. Calls (Petsc) assemble methods on the Vecs and Mat, and calls ApplyBoundaryConditions.
assembleResidual | see documentation for AssembleSystem | |
assembleLinearSystem | see documentation for AssembleSystem |
Definition at line 866 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractNonlinearElasticitySolver< DIM >::ApplyBoundaryConditions(), PetscVecTools::Assemble(), PetscMatTools::AssembleFinal(), PetscMatTools::AssembleIntermediate(), AbstractNonlinearElasticitySolver< DIM >::mJacobianMatrix, AbstractNonlinearElasticitySolver< DIM >::mLinearSystemRhsVector, AbstractNonlinearElasticitySolver< DIM >::mPreconditionMatrix, and AbstractNonlinearElasticitySolver< DIM >::mResidualVector.
Referenced by NonlinearElasticitySolver< DIM >::AssembleSystem(), and CompressibleNonlinearElasticitySolver< DIM >::AssembleSystem().
double AbstractNonlinearElasticitySolver< DIM >::ComputeResidualAndGetNorm | ( | bool | allowException | ) | [inline, protected] |
Set up the residual vector (using the current solution), and get its scaled norm (Calculate |r|_2 / length(r), where r is residual vector)
allowException | Sometimes the current solution solution will be such that the residual vector cannot be computed, as (say) the material law will throw an exception as the strains are too large. If this bool is set to true, the exception will be caught, and DBL_MAX returned as the residual norm |
Definition at line 896 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractNonlinearElasticitySolver< DIM >::AssembleSystem(), and AbstractNonlinearElasticitySolver< DIM >::CalculateResidualNorm().
Referenced by AbstractNonlinearElasticitySolver< DIM >::Solve(), and AbstractNonlinearElasticitySolver< DIM >::UpdateSolutionUsingLineSearch().
double AbstractNonlinearElasticitySolver< DIM >::CalculateResidualNorm | ( | ) | [inline, protected] |
Calculate |r|_2 / length(r), where r is the current residual vector
Definition at line 923 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractNonlinearElasticitySolver< DIM >::mNumDofs, and AbstractNonlinearElasticitySolver< DIM >::mResidualVector.
Referenced by AbstractNonlinearElasticitySolver< DIM >::ComputeResidualAndGetNorm(), and AbstractNonlinearElasticitySolver< DIM >::UpdateSolutionUsingLineSearch().
void AbstractNonlinearElasticitySolver< DIM >::VectorSum | ( | std::vector< double > & | rX, | |
ReplicatableVector & | rY, | |||
double | a, | |||
std::vector< double > & | rZ | |||
) | [inline, protected] |
Simple helper function, computes Z = X + aY, where X and Z are std::vectors and Y a ReplicatableVector
rX | X | |
rY | Y (replicatable vector) | |
a | a | |
rZ | Z the returned vector |
Definition at line 931 of file AbstractNonlinearElasticitySolver.hpp.
References ReplicatableVector::GetSize().
Referenced by AbstractNonlinearElasticitySolver< DIM >::UpdateSolutionUsingLineSearch().
void AbstractNonlinearElasticitySolver< DIM >::PrintLineSearchResult | ( | double | s, | |
double | residNorm | |||
) | [inline, protected] |
Print to std::cout the residual norm for this s, ie ||f(x+su)|| where f is the residual vector, x the current solution and u the update vector
s | s | |
residNorm | residual norm. |
Definition at line 1102 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::UpdateSolutionUsingLineSearch().
double AbstractNonlinearElasticitySolver< DIM >::TakeNewtonStep | ( | ) | [inline, protected] |
Take one newton step, by solving the linear system -Ju=f, (J the jacobian, f the residual, u the update), and picking s such that a_new = a_old + su (a the current solution) such |f(a)| is the smallest.
Definition at line 946 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractNonlinearElasticitySolver< DIM >::AssembleSystem(), GenericEventHandler< 7, MechanicsEventHandler >::BeginEvent(), GenericEventHandler< 7, MechanicsEventHandler >::EndEvent(), EXCEPTION, PetscTools::GetMyRank(), AbstractNonlinearElasticitySolver< DIM >::mCompressibilityType, AbstractNonlinearElasticitySolver< DIM >::mJacobianMatrix, AbstractNonlinearElasticitySolver< DIM >::mKspAbsoluteTol, AbstractNonlinearElasticitySolver< DIM >::mLinearSystemRhsVector, AbstractNonlinearElasticitySolver< DIM >::mPreconditionMatrix, AbstractNonlinearElasticitySolver< DIM >::mResidualVector, Timer::PrintAndReset(), Timer::Reset(), and AbstractNonlinearElasticitySolver< DIM >::UpdateSolutionUsingLineSearch().
Referenced by AbstractNonlinearElasticitySolver< DIM >::Solve().
double AbstractNonlinearElasticitySolver< DIM >::UpdateSolutionUsingLineSearch | ( | Vec | solution | ) | [inline, protected] |
Using the update vector (of Newton's method), choose s such that ||f(x+su)|| is most decreased, where f is the residual vector, x the current solution (mCurrentSolution) and u the update vector. This checks s=1 first (most likely to be the current solution, then 0.9, 0.8.. until ||f|| starts increasing.
solution | The solution of the linear solve in newton's method, ie the update vector u. |
Definition at line 1110 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractNonlinearElasticitySolver< DIM >::CalculateResidualNorm(), AbstractNonlinearElasticitySolver< DIM >::ComputeResidualAndGetNorm(), AbstractNonlinearElasticitySolver< DIM >::mCurrentSolution, AbstractNonlinearElasticitySolver< DIM >::PrintLineSearchResult(), and AbstractNonlinearElasticitySolver< DIM >::VectorSum().
Referenced by AbstractNonlinearElasticitySolver< DIM >::TakeNewtonStep().
void AbstractNonlinearElasticitySolver< DIM >::PostNewtonStep | ( | unsigned | counter, | |
double | normResidual | |||
) | [inline, protected, virtual] |
This function may be overloaded by subclasses. It is called after each Newton iteration.
counter | current newton iteration number | |
normResidual | norm of the residual |
Definition at line 1256 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::Solve().
virtual void AbstractNonlinearElasticitySolver< DIM >::ComputeStressAndStressDerivative | ( | AbstractMaterialLaw< DIM > * | pMaterialLaw, | |
c_matrix< double, DIM, DIM > & | rC, | |||
c_matrix< double, DIM, DIM > & | rInvC, | |||
double | pressure, | |||
unsigned | elementIndex, | |||
unsigned | currentQuadPointGlobalIndex, | |||
c_matrix< double, DIM, DIM > & | rT, | |||
FourthOrderTensor< DIM, DIM, DIM, DIM > & | rDTdE, | |||
bool | computeDTdE | |||
) | [inline, protected, virtual] |
Simple (one-line function which just calls ComputeStressAndStressDerivative() on the material law given, using C, inv(C), and p as the input and with rT and rDTdE as the output. Overloaded by other assemblers (eg cardiac mechanics) which need to add extra terms to the stress.
pMaterialLaw | The material law for this element | |
rC | The Lagrangian deformation tensor (F^T F) | |
rInvC | The inverse of C. Should be computed by the user. | |
pressure | The current pressure | |
elementIndex | Index of the current element | |
currentQuadPointGlobalIndex | The index (assuming an outer loop over elements and an inner loop over quadrature points), of the current quadrature point. | |
rT | The stress will be returned in this parameter | |
rDTdE | the stress derivative will be returned in this parameter, assuming the final parameter is true | |
computeDTdE | A boolean flag saying whether the stress derivative is required or not. |
Definition at line 396 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractMaterialLaw< DIM >::ComputeStressAndStressDerivative().
Referenced by NonlinearElasticitySolver< DIM >::AssembleOnElement(), and CompressibleNonlinearElasticitySolver< DIM >::AssembleOnElement().
void AbstractNonlinearElasticitySolver< DIM >::Solve | ( | double | tol = -1.0 , |
|
unsigned | maxNumNewtonIterations = INT_MAX , |
|||
bool | quitIfNoConvergence = true | |||
) | [inline] |
Solve the problem.
tol | tolerance used in Newton solve (defaults to -1.0) | |
maxNumNewtonIterations | (defaults to INT_MAX) | |
quitIfNoConvergence | (defaults to true) |
Definition at line 1338 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractNonlinearElasticitySolver< DIM >::ComputeResidualAndGetNorm(), EXCEPTION, AbstractNonlinearElasticitySolver< DIM >::MAX_NEWTON_ABS_TOL, AbstractNonlinearElasticitySolver< DIM >::MIN_NEWTON_ABS_TOL, AbstractNonlinearElasticitySolver< DIM >::mNumNewtonIterations, AbstractNonlinearElasticitySolver< DIM >::mWriteOutputEachNewtonIteration, AbstractNonlinearElasticitySolver< DIM >::NEWTON_REL_TOL, AbstractNonlinearElasticitySolver< DIM >::PostNewtonStep(), AbstractNonlinearElasticitySolver< DIM >::TakeNewtonStep(), and AbstractNonlinearElasticitySolver< DIM >::WriteCurrentDeformation().
void AbstractNonlinearElasticitySolver< DIM >::WriteCurrentDeformation | ( | std::string | fileName, | |
int | counterToAppend = -1 | |||
) | [inline] |
Write the current deformation of the nodes.
fileName | (stem) | |
counterToAppend | append a counter to the file name |
Definition at line 1424 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractNonlinearElasticitySolver< DIM >::mpOutputFileHandler, AbstractNonlinearElasticitySolver< DIM >::mWriteOutput, OutputFileHandler::OpenOutputFile(), and AbstractNonlinearElasticitySolver< DIM >::rGetDeformedPosition().
Referenced by AbstractNonlinearElasticitySolver< DIM >::Solve().
unsigned AbstractNonlinearElasticitySolver< DIM >::GetNumNewtonIterations | ( | ) | [inline] |
Get number of Newton iterations taken in last solve.
Definition at line 1456 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractNonlinearElasticitySolver< DIM >::mNumNewtonIterations.
void AbstractNonlinearElasticitySolver< DIM >::SetFunctionalBodyForce | ( | c_vector< double, DIM >(*)(c_vector< double, DIM > &X, double t) | pFunction | ) | [inline] |
Set a function which gives body force as a function of X (undeformed position) Whatever body force was provided in the constructor will now be ignored.
pFunction | the function, which should be a function of space and time Note that SetCurrentTime() should be called each timestep if the force changes with time |
Definition at line 1463 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractNonlinearElasticitySolver< DIM >::mpBodyForceFunction, and AbstractNonlinearElasticitySolver< DIM >::mUsingBodyForceFunction.
void AbstractNonlinearElasticitySolver< DIM >::SetWriteOutput | ( | bool | writeOutput = true |
) | [inline] |
Set whether to write any output.
writeOutput | (defaults to true) |
Definition at line 1471 of file AbstractNonlinearElasticitySolver.hpp.
References EXCEPTION, AbstractNonlinearElasticitySolver< DIM >::mOutputDirectory, and AbstractNonlinearElasticitySolver< DIM >::mWriteOutput.
void AbstractNonlinearElasticitySolver< DIM >::SetWriteOutputEachNewtonIteration | ( | bool | writeOutputEachNewtonIteration = true |
) | [inline] |
By default only the original and converged solutions are written. Call this by get node positions written after every Newton step (mostly for debugging).
writeOutputEachNewtonIteration | whether to write each iteration |
Definition at line 487 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractNonlinearElasticitySolver< DIM >::mWriteOutputEachNewtonIteration.
void AbstractNonlinearElasticitySolver< DIM >::SetKspAbsoluteTolerance | ( | double | kspAbsoluteTolerance | ) | [inline] |
Set the absolute tolerance to be used when solving the linear system. If this is not called a relative tolerance is used.
kspAbsoluteTolerance | the tolerance |
Definition at line 497 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractNonlinearElasticitySolver< DIM >::mKspAbsoluteTol.
std::vector<double>& AbstractNonlinearElasticitySolver< DIM >::rGetCurrentSolution | ( | ) | [inline] |
Get the current solution vector (advanced use only - for getting the deformed position use rGetDeformedPosition()
Definition at line 507 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractNonlinearElasticitySolver< DIM >::mCurrentSolution.
void AbstractNonlinearElasticitySolver< DIM >::SetSurfaceTractionBoundaryConditions | ( | std::vector< BoundaryElement< DIM-1, DIM > * > & | rBoundaryElements, | |
std::vector< c_vector< double, DIM > > & | rSurfaceTractions | |||
) | [inline] |
Specify traction boundary conditions (if this is not called zero surface tractions are assumed. This method takes in a list of boundary elements and a corresponding list of surface tractions.
rBoundaryElements | the boundary elements | |
rSurfaceTractions | the corresponding tractions |
Definition at line 1481 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractNonlinearElasticitySolver< DIM >::mBoundaryElements, and AbstractNonlinearElasticitySolver< DIM >::mSurfaceTractions.
void AbstractNonlinearElasticitySolver< DIM >::SetFunctionalTractionBoundaryCondition | ( | std::vector< BoundaryElement< DIM-1, DIM > * > | rBoundaryElements, | |
c_vector< double, DIM >(*)(c_vector< double, DIM > &X, double t) | pFunction | |||
) | [inline] |
Set a function which gives the surface traction as a function of X (undeformed position), together with the surface elements which make up the Neumann part of the boundary.
rBoundaryElements | the boundary elements | |
pFunction | the function, which should be a function of space and time. Note that SetCurrentTime() should be called each timestep if the traction changes with time |
Definition at line 1491 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractNonlinearElasticitySolver< DIM >::mBoundaryElements, AbstractNonlinearElasticitySolver< DIM >::mpTractionBoundaryConditionFunction, and AbstractNonlinearElasticitySolver< DIM >::mUsingTractionBoundaryConditionFunction.
std::vector< c_vector< double, DIM > > & AbstractNonlinearElasticitySolver< DIM >::rGetDeformedPosition | ( | ) | [inline] |
Get the deformed position. Note returnvalue[i](j) = x_j for node i.
Definition at line 1502 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractNonlinearElasticitySolver< DIM >::mCurrentSolution, AbstractNonlinearElasticitySolver< DIM >::mDeformedPosition, and AbstractNonlinearElasticitySolver< DIM >::mpQuadMesh.
Referenced by AbstractNonlinearElasticitySolver< DIM >::CreateCmguiOutput(), and AbstractNonlinearElasticitySolver< DIM >::WriteCurrentDeformation().
void AbstractNonlinearElasticitySolver< DIM >::SetCurrentTime | ( | double | time | ) | [inline] |
This solver is for static problems, however the body force or surface tractions could be a function of time. This method is for setting the time.
time | current time |
Definition at line 543 of file AbstractNonlinearElasticitySolver.hpp.
References AbstractNonlinearElasticitySolver< DIM >::mCurrentTime.
void AbstractNonlinearElasticitySolver< DIM >::CreateCmguiOutput | ( | ) | [inline] |
Convert the output to Cmgui format (placed in a folder called cmgui in the output directory). Writes the original mesh as solution_0.exnode and the (current) solution as solution_1.exnode
Definition at line 1517 of file AbstractNonlinearElasticitySolver.hpp.
References EXCEPTION, AbstractNonlinearElasticitySolver< DIM >::mOutputDirectory, AbstractNonlinearElasticitySolver< DIM >::mpQuadMesh, AbstractNonlinearElasticitySolver< DIM >::rGetDeformedPosition(), CmguiDeformedSolutionsWriter< DIM >::WriteCmguiScript(), CmguiDeformedSolutionsWriter< DIM >::WriteDeformationPositions(), and CmguiDeformedSolutionsWriter< DIM >::WriteInitialMesh().
const size_t AbstractNonlinearElasticitySolver< DIM >::NUM_VERTICES_PER_ELEMENT = DIM+1 [static, protected] |
Number of vertices per element
Reimplemented in CompressibleNonlinearElasticitySolver< DIM >, and NonlinearElasticitySolver< DIM >.
Definition at line 80 of file AbstractNonlinearElasticitySolver.hpp.
const size_t AbstractNonlinearElasticitySolver< DIM >::NUM_NODES_PER_ELEMENT = (DIM+1)*(DIM+2)/2 [static, protected] |
Number of nodes per element
Reimplemented in CompressibleNonlinearElasticitySolver< DIM >, and NonlinearElasticitySolver< DIM >.
Definition at line 82 of file AbstractNonlinearElasticitySolver.hpp.
const size_t AbstractNonlinearElasticitySolver< DIM >::NUM_NODES_PER_BOUNDARY_ELEMENT = DIM*(DIM+1)/2 [static, protected] |
Number of nodes per boundary element
Reimplemented in CompressibleNonlinearElasticitySolver< DIM >, and NonlinearElasticitySolver< DIM >.
Definition at line 84 of file AbstractNonlinearElasticitySolver.hpp.
double AbstractNonlinearElasticitySolver< DIM >::MAX_NEWTON_ABS_TOL = 1e-7 [inline, static, protected] |
Maximum absolute tolerance for Newton solve. The Newton solver uses the absolute tolerance corresponding to the specified relative tolerance, but has a max and min allowable absolute tolerance. (ie: if max_abs = 1e-7, min_abs = 1e-10, rel=1e-4: then if the norm of the initial_residual (=a) is 1e-2, it will solve with tolerance 1e-7; if a=1e-5, it will solve with tolerance 1e-9; a=1e-9, it will solve with tolerance 1e-10.
Definition at line 92 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::Solve().
double AbstractNonlinearElasticitySolver< DIM >::MIN_NEWTON_ABS_TOL = 1e-10 [inline, static, protected] |
Minimum absolute tolerance for Newton solve. See documentation for MAX_NEWTON_ABS_TOL.
Definition at line 95 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::Solve().
double AbstractNonlinearElasticitySolver< DIM >::NEWTON_REL_TOL = 1e-4 [inline, static, protected] |
Relative tolerance for Newton solve. See documentation for MAX_NEWTON_ABS_TOL.
Definition at line 98 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::Solve().
QuadraticMesh<DIM>* AbstractNonlinearElasticitySolver< DIM >::mpQuadMesh [protected] |
The mesh to be solved on. Requires 6 nodes per triangle (or 10 per tetrahedron) as quadratic bases are used.
Definition at line 105 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::AbstractNonlinearElasticitySolver(), AbstractNonlinearElasticitySolver< DIM >::AllocateMatrixMemory(), NonlinearElasticitySolver< DIM >::AssembleOnBoundaryElement(), CompressibleNonlinearElasticitySolver< DIM >::AssembleOnBoundaryElement(), NonlinearElasticitySolver< DIM >::AssembleOnElement(), CompressibleNonlinearElasticitySolver< DIM >::AssembleOnElement(), NonlinearElasticitySolver< DIM >::AssembleSystem(), CompressibleNonlinearElasticitySolver< DIM >::AssembleSystem(), AbstractNonlinearElasticitySolver< DIM >::CreateCmguiOutput(), NonlinearElasticitySolver< DIM >::FormInitialGuess(), AbstractNonlinearElasticitySolver< DIM >::Initialise(), AbstractNonlinearElasticitySolver< DIM >::rGetDeformedPosition(), and NonlinearElasticitySolver< DIM >::rGetPressures().
std::vector<BoundaryElement<DIM-1,DIM>*> AbstractNonlinearElasticitySolver< DIM >::mBoundaryElements [protected] |
Boundary elements with (non-zero) surface tractions defined on them
Definition at line 108 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by NonlinearElasticitySolver< DIM >::AssembleSystem(), CompressibleNonlinearElasticitySolver< DIM >::AssembleSystem(), AbstractNonlinearElasticitySolver< DIM >::SetFunctionalTractionBoundaryCondition(), and AbstractNonlinearElasticitySolver< DIM >::SetSurfaceTractionBoundaryConditions().
GaussianQuadratureRule<DIM>* AbstractNonlinearElasticitySolver< DIM >::mpQuadratureRule [protected] |
Gaussian quadrature rule
Definition at line 111 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by NonlinearElasticitySolver< DIM >::AssembleOnElement(), CompressibleNonlinearElasticitySolver< DIM >::AssembleOnElement(), AbstractNonlinearElasticitySolver< DIM >::Initialise(), and AbstractNonlinearElasticitySolver< DIM >::~AbstractNonlinearElasticitySolver().
GaussianQuadratureRule<DIM-1>* AbstractNonlinearElasticitySolver< DIM >::mpBoundaryQuadratureRule [protected] |
Boundary Gaussian quadrature rule
Definition at line 114 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by NonlinearElasticitySolver< DIM >::AssembleOnBoundaryElement(), CompressibleNonlinearElasticitySolver< DIM >::AssembleOnBoundaryElement(), AbstractNonlinearElasticitySolver< DIM >::Initialise(), and AbstractNonlinearElasticitySolver< DIM >::~AbstractNonlinearElasticitySolver().
double AbstractNonlinearElasticitySolver< DIM >::mKspAbsoluteTol [protected] |
Absolute tolerance for linear systems. Can be set by calling SetKspAbsoluteTolerances(), but default to -1, in which case a relative tolerance is used.
Definition at line 120 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::SetKspAbsoluteTolerance(), and AbstractNonlinearElasticitySolver< DIM >::TakeNewtonStep().
unsigned AbstractNonlinearElasticitySolver< DIM >::mNumDofs [protected] |
Number of degrees of freedom (equal to, in the incompressible case: DIM*N + M if quadratic-linear bases are used, where there are N total nodes and M vertices; or DIM*N in the compressible case).
Definition at line 127 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::AbstractNonlinearElasticitySolver(), AbstractNonlinearElasticitySolver< DIM >::AllocateMatrixMemory(), NonlinearElasticitySolver< DIM >::AssembleSystem(), CompressibleNonlinearElasticitySolver< DIM >::AssembleSystem(), AbstractNonlinearElasticitySolver< DIM >::CalculateResidualNorm(), NonlinearElasticitySolver< DIM >::FormInitialGuess(), and AbstractNonlinearElasticitySolver< DIM >::Initialise().
Vec AbstractNonlinearElasticitySolver< DIM >::mResidualVector [protected] |
Residual vector for the full nonlinear system, also the RHS vector in the linear system used to solve the nonlinear problem using Newton's method.
Definition at line 134 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::AllocateMatrixMemory(), AbstractNonlinearElasticitySolver< DIM >::ApplyBoundaryConditions(), NonlinearElasticitySolver< DIM >::AssembleSystem(), CompressibleNonlinearElasticitySolver< DIM >::AssembleSystem(), AbstractNonlinearElasticitySolver< DIM >::CalculateResidualNorm(), AbstractNonlinearElasticitySolver< DIM >::FinishAssembleSystem(), AbstractNonlinearElasticitySolver< DIM >::TakeNewtonStep(), and AbstractNonlinearElasticitySolver< DIM >::~AbstractNonlinearElasticitySolver().
Vec AbstractNonlinearElasticitySolver< DIM >::mLinearSystemRhsVector [protected] |
The RHS side in the linear system that is solved each Newton iteration. Since Newton's method is Ju = f, where J is the Jacobian, u the (negative of the) update and f the residual, it might seem necessary to store this as well as the residual. However, when applying Dirichlet boundary conditions in the compressible case, we alter the rows of the matrix, but also alter the columns in order to maintain symmetry. This requires making further changes to the right-hand vector, meaning that it no longer properly represents the residual. Hence, we have to use two vectors.
Overall, this can be represents as
mLinearSystemRhsVector represents f*.
Definition at line 152 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::AllocateMatrixMemory(), AbstractNonlinearElasticitySolver< DIM >::ApplyBoundaryConditions(), AbstractNonlinearElasticitySolver< DIM >::FinishAssembleSystem(), AbstractNonlinearElasticitySolver< DIM >::TakeNewtonStep(), and AbstractNonlinearElasticitySolver< DIM >::~AbstractNonlinearElasticitySolver().
Mat AbstractNonlinearElasticitySolver< DIM >::mJacobianMatrix [protected] |
Jacobian matrix of the nonlinear system, LHS matrix for the linear system.
Definition at line 157 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::AllocateMatrixMemory(), AbstractNonlinearElasticitySolver< DIM >::ApplyBoundaryConditions(), NonlinearElasticitySolver< DIM >::AssembleSystem(), CompressibleNonlinearElasticitySolver< DIM >::AssembleSystem(), AbstractNonlinearElasticitySolver< DIM >::FinishAssembleSystem(), AbstractNonlinearElasticitySolver< DIM >::TakeNewtonStep(), and AbstractNonlinearElasticitySolver< DIM >::~AbstractNonlinearElasticitySolver().
Vec AbstractNonlinearElasticitySolver< DIM >::mDirichletBoundaryConditionsVector [protected] |
Helper vector (see ApplyBoundaryConditions code)
Definition at line 162 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::AllocateMatrixMemory(), AbstractNonlinearElasticitySolver< DIM >::ApplyBoundaryConditions(), and AbstractNonlinearElasticitySolver< DIM >::~AbstractNonlinearElasticitySolver().
Mat AbstractNonlinearElasticitySolver< DIM >::mPreconditionMatrix [protected] |
Precondition matrix for the linear system
In the incompressible case: the preconditioner is the petsc LU factorisation of
Jp = [A B] in displacement-pressure block form, [C M]
where the A, B and C are the matrices in the normal jacobian, ie
J = [A B] [C 0]
and M is the MASS MATRIX (ie integral phi_i phi_j dV, where phi_i are the pressure basis functions).
Definition at line 183 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::AllocateMatrixMemory(), AbstractNonlinearElasticitySolver< DIM >::ApplyBoundaryConditions(), NonlinearElasticitySolver< DIM >::AssembleSystem(), CompressibleNonlinearElasticitySolver< DIM >::AssembleSystem(), AbstractNonlinearElasticitySolver< DIM >::FinishAssembleSystem(), AbstractNonlinearElasticitySolver< DIM >::TakeNewtonStep(), and AbstractNonlinearElasticitySolver< DIM >::~AbstractNonlinearElasticitySolver().
c_vector<double,DIM> AbstractNonlinearElasticitySolver< DIM >::mBodyForce [protected] |
Body force vector
Definition at line 186 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by NonlinearElasticitySolver< DIM >::AssembleOnElement(), and CompressibleNonlinearElasticitySolver< DIM >::AssembleOnElement().
double AbstractNonlinearElasticitySolver< DIM >::mDensity [protected] |
Mass density of the undeformed body (equal to the density of deformed body in the incompressible case)
Definition at line 189 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by NonlinearElasticitySolver< DIM >::AssembleOnElement(), and CompressibleNonlinearElasticitySolver< DIM >::AssembleOnElement().
std::vector<unsigned> AbstractNonlinearElasticitySolver< DIM >::mFixedNodes [protected] |
All nodes (including non-vertices) which are fixed
Definition at line 192 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::ApplyBoundaryConditions(), and AbstractNonlinearElasticitySolver< DIM >::Initialise().
std::vector<c_vector<double,DIM> > AbstractNonlinearElasticitySolver< DIM >::mFixedNodeDisplacements [protected] |
The displacements of those nodes with displacement boundary conditions
Definition at line 195 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::ApplyBoundaryConditions(), and AbstractNonlinearElasticitySolver< DIM >::Initialise().
bool AbstractNonlinearElasticitySolver< DIM >::mWriteOutput [protected] |
Whether to write any output
Definition at line 198 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::AbstractNonlinearElasticitySolver(), AbstractNonlinearElasticitySolver< DIM >::SetWriteOutput(), and AbstractNonlinearElasticitySolver< DIM >::WriteCurrentDeformation().
std::string AbstractNonlinearElasticitySolver< DIM >::mOutputDirectory [protected] |
Where to write output, relative to CHASTE_TESTOUTPUT
Definition at line 201 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::AbstractNonlinearElasticitySolver(), AbstractNonlinearElasticitySolver< DIM >::CreateCmguiOutput(), and AbstractNonlinearElasticitySolver< DIM >::SetWriteOutput().
OutputFileHandler* AbstractNonlinearElasticitySolver< DIM >::mpOutputFileHandler [protected] |
Output file handler
Definition at line 204 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::AbstractNonlinearElasticitySolver(), AbstractNonlinearElasticitySolver< DIM >::WriteCurrentDeformation(), and AbstractNonlinearElasticitySolver< DIM >::~AbstractNonlinearElasticitySolver().
bool AbstractNonlinearElasticitySolver< DIM >::mWriteOutputEachNewtonIteration [protected] |
By default only the initial and final solutions are written. However, we may want to write the solutions after every Newton iteration, in which case the following should be set to true
Definition at line 209 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::SetWriteOutputEachNewtonIteration(), and AbstractNonlinearElasticitySolver< DIM >::Solve().
std::vector<double> AbstractNonlinearElasticitySolver< DIM >::mCurrentSolution [protected] |
The current solution, in the form (assuming 2d): Incompressible problem: [u1 v1 u2 v2 ... uN vN p1 p2 .. pM] Compressible problem: [u1 v1 u2 v2 ... uN vN] where there are N total nodes and M vertices
Definition at line 218 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::ApplyBoundaryConditions(), NonlinearElasticitySolver< DIM >::AssembleOnElement(), CompressibleNonlinearElasticitySolver< DIM >::AssembleOnElement(), NonlinearElasticitySolver< DIM >::AssembleSystem(), CompressibleNonlinearElasticitySolver< DIM >::AssembleSystem(), NonlinearElasticitySolver< DIM >::FormInitialGuess(), AbstractNonlinearElasticitySolver< DIM >::Initialise(), AbstractNonlinearElasticitySolver< DIM >::rGetCurrentSolution(), AbstractNonlinearElasticitySolver< DIM >::rGetDeformedPosition(), NonlinearElasticitySolver< DIM >::rGetPressures(), and AbstractNonlinearElasticitySolver< DIM >::UpdateSolutionUsingLineSearch().
FourthOrderTensor<DIM,DIM,DIM,DIM> AbstractNonlinearElasticitySolver< DIM >::dTdE [protected] |
Storage space for a 4th order tensor used in assembling the Jacobian (to avoid repeated memory allocation)
Definition at line 223 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by NonlinearElasticitySolver< DIM >::AssembleOnElement(), and CompressibleNonlinearElasticitySolver< DIM >::AssembleOnElement().
unsigned AbstractNonlinearElasticitySolver< DIM >::mNumNewtonIterations [protected] |
Number of Newton iterations taken in last solve
Definition at line 226 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::GetNumNewtonIterations(), and AbstractNonlinearElasticitySolver< DIM >::Solve().
std::vector<c_vector<double,DIM> > AbstractNonlinearElasticitySolver< DIM >::mDeformedPosition [protected] |
Deformed position: mDeformedPosition[i](j) = x_j for node i
Definition at line 229 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::rGetDeformedPosition().
std::vector<c_vector<double,DIM> > AbstractNonlinearElasticitySolver< DIM >::mSurfaceTractions [protected] |
The surface tractions (which should really be non-zero) for the boundary elements in mBoundaryElements.
Definition at line 235 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by NonlinearElasticitySolver< DIM >::AssembleSystem(), CompressibleNonlinearElasticitySolver< DIM >::AssembleSystem(), and AbstractNonlinearElasticitySolver< DIM >::SetSurfaceTractionBoundaryConditions().
c_vector<double,DIM>(* AbstractNonlinearElasticitySolver< DIM >::mpBodyForceFunction)(c_vector< double, DIM > &X, double t) [protected] |
An optionally provided (pointer to a) function, giving the body force as a function of undeformed position.
Referenced by NonlinearElasticitySolver< DIM >::AssembleOnElement(), CompressibleNonlinearElasticitySolver< DIM >::AssembleOnElement(), and AbstractNonlinearElasticitySolver< DIM >::SetFunctionalBodyForce().
c_vector<double,DIM>(* AbstractNonlinearElasticitySolver< DIM >::mpTractionBoundaryConditionFunction)(c_vector< double, DIM > &X, double t) [protected] |
An optionally provided (pointer to a) function, giving the surface traction as a function of undeformed position.
Referenced by NonlinearElasticitySolver< DIM >::AssembleOnBoundaryElement(), CompressibleNonlinearElasticitySolver< DIM >::AssembleOnBoundaryElement(), and AbstractNonlinearElasticitySolver< DIM >::SetFunctionalTractionBoundaryCondition().
bool AbstractNonlinearElasticitySolver< DIM >::mUsingBodyForceFunction [protected] |
Whether the functional version of the body force is being used or not
Definition at line 247 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by NonlinearElasticitySolver< DIM >::AssembleOnElement(), CompressibleNonlinearElasticitySolver< DIM >::AssembleOnElement(), and AbstractNonlinearElasticitySolver< DIM >::SetFunctionalBodyForce().
bool AbstractNonlinearElasticitySolver< DIM >::mUsingTractionBoundaryConditionFunction [protected] |
Whether the functional version of the surface traction is being used or not
Definition at line 250 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by NonlinearElasticitySolver< DIM >::AssembleOnBoundaryElement(), CompressibleNonlinearElasticitySolver< DIM >::AssembleOnBoundaryElement(), and AbstractNonlinearElasticitySolver< DIM >::SetFunctionalTractionBoundaryCondition().
double AbstractNonlinearElasticitySolver< DIM >::mCurrentTime [protected] |
This solver is for static problems, however the body force or surface tractions could be a function of time. The user should call SetCurrentTime() if this is the case
Definition at line 256 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by NonlinearElasticitySolver< DIM >::AssembleOnBoundaryElement(), CompressibleNonlinearElasticitySolver< DIM >::AssembleOnBoundaryElement(), NonlinearElasticitySolver< DIM >::AssembleOnElement(), CompressibleNonlinearElasticitySolver< DIM >::AssembleOnElement(), and AbstractNonlinearElasticitySolver< DIM >::SetCurrentTime().
CompressibilityType AbstractNonlinearElasticitySolver< DIM >::mCompressibilityType [protected] |
This is equal to either COMPRESSIBLE or INCOMPRESSIBLE (see enumeration defined at top of file) and is only used in computing mNumDofs and allocating matrix memory.
Definition at line 261 of file AbstractNonlinearElasticitySolver.hpp.
Referenced by AbstractNonlinearElasticitySolver< DIM >::AbstractNonlinearElasticitySolver(), AbstractNonlinearElasticitySolver< DIM >::AllocateMatrixMemory(), AbstractNonlinearElasticitySolver< DIM >::ApplyBoundaryConditions(), AbstractNonlinearElasticitySolver< DIM >::TakeNewtonStep(), and AbstractNonlinearElasticitySolver< DIM >::~AbstractNonlinearElasticitySolver().