esys.modellib.mechanics Package¶
Classes¶
-
class
esys.modellib.mechanics.
DruckerPrager
(**kwargs)¶ Bases:
esys.modellib.mechanics.Mechanics
-
__init__
(**kwargs)¶ set up model
-
SAFTY_FACTOR_ITERATION
= 0.01¶
-
UNDEF_DT
= 1e+300¶
-
checkLinkTargets
(models, hash)¶ Returns a set of tuples (“<self>(<name>)”, <target model>) if the parameter <name> is linked to model <target model> but <target model> is not in the list of models. If a parameter is linked to another parameter set which is not in the hash list the parameter set is checked for its models. hash gives the call history.
-
declareParameter
(**parameters)¶ Declares one or more new parameters and their initial value.
-
declareParameters
(parameters)¶ Declares a set of parameters. parameters can be a list, a dictionary or a ParameterSet.
-
doFinalization
()¶ Finalizes the time stepping.
This function may be overwritten.
-
doInitialPostprocessing
()¶ Finalises the initialization iteration process. This method is not called in case of a restart.
This function may be overwritten.
-
doInitialStep
()¶ Performs an iteration step in the initialization phase. This method is not called in case of a restart.
This function may be overwritten.
-
doInitialization
()¶
-
doStep
(dt)¶
-
doStepPostprocessing
(dt)¶ accept all the values:
-
doStepPreprocessing
(dt)¶
-
finalize
()¶ Returns False if the time stepping is finalized.
This function may be overwritten.
-
classmethod
fromDom
(esysxml, node)¶
-
getAttributeObject
(name)¶ Returns the object stored for attribute
name
.
-
getSafeTimeStepSize
(dt)¶ returns new step size
-
hasAttribute
(name)¶ Returns True if self has attribute
name
.
-
releaseParameters
(name)¶ Removes parameter name from the parameters.
-
setStress
()¶
-
setTangentialTensor
()¶
-
setUp
()¶ Sets up the model.
This function may be overwritten.
-
showParameters
()¶ Returns a description of the parameters.
-
terminateInitialIteration
()¶ Returns True if iteration at the inital phase is terminated.
-
terminateIteration
()¶ iteration is terminateIterationd if relative pressure change is less than rel_tol
-
toDom
(esysxml, node)¶ toDom
method of Model class.
-
trace
(msg)¶ If debugging is on, prints the message, otherwise does nothing.
-
writeXML
(ostream=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>)¶ Writes the object as an XML object into an output stream.
-
-
class
esys.modellib.mechanics.
IterationDivergenceError
¶ Bases:
Exception
Exception which is thrown if there is no convergence of the iteration process at a time step.
But there is a chance that a smaller step could help to reach convergence.
-
__init__
()¶ Initialize self. See help(type(self)) for accurate signature.
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
class
esys.modellib.mechanics.
LinearPDE
(domain, numEquations=None, numSolutions=None, isComplex=False, debug=False)¶ Bases:
esys.escriptcore.linearPDEs.LinearProblem
This class is used to define a general linear, steady, second order PDE for an unknown function u on a given domain defined through a
Domain
object.For a single PDE having a solution with a single component the linear PDE is defined in the following form:
-(grad(A[j,l]+A_reduced[j,l])*grad(u)[l]+(B[j]+B_reduced[j])u)[j]+(C[l]+C_reduced[l])*grad(u)[l]+(D+D_reduced)=-grad(X+X_reduced)[j,j]+(Y+Y_reduced)
where grad(F) denotes the spatial derivative of F. Einstein’s summation convention, ie. summation over indexes appearing twice in a term of a sum performed, is used. The coefficients A, B, C, D, X and Y have to be specified through
Data
objects inFunction
and the coefficients A_reduced, B_reduced, C_reduced, D_reduced, X_reduced and Y_reduced have to be specified throughData
objects inReducedFunction
. It is also allowed to use objects that can be converted into suchData
objects. A and A_reduced are rank two, B, C, X, B_reduced, C_reduced and X_reduced are rank one and D, D_reduced, Y and Y_reduced are scalar.The following natural boundary conditions are considered:
n[j]*((A[i,j]+A_reduced[i,j])*grad(u)[l]+(B+B_reduced)[j]*u)+(d+d_reduced)*u=n[j]*(X[j]+X_reduced[j])+y
where n is the outer normal field. Notice that the coefficients A, A_reduced, B, B_reduced, X and X_reduced are defined in the PDE. The coefficients d and y are each a scalar in
FunctionOnBoundary
and the coefficients d_reduced and y_reduced are each a scalar inReducedFunctionOnBoundary
.Constraints for the solution prescribe the value of the solution at certain locations in the domain. They have the form
u=r where q>0
r and q are each scalar where q is the characteristic function defining where the constraint is applied. The constraints override any other condition set by the PDE or the boundary condition.
The PDE is symmetrical if
A[i,j]=A[j,i] and B[j]=C[j] and A_reduced[i,j]=A_reduced[j,i] and B_reduced[j]=C_reduced[j]
For a system of PDEs and a solution with several components the PDE has the form
-grad((A[i,j,k,l]+A_reduced[i,j,k,l])*grad(u[k])[l]+(B[i,j,k]+B_reduced[i,j,k])*u[k])[j]+(C[i,k,l]+C_reduced[i,k,l])*grad(u[k])[l]+(D[i,k]+D_reduced[i,k]*u[k] =-grad(X[i,j]+X_reduced[i,j])[j]+Y[i]+Y_reduced[i]
A and A_reduced are of rank four, B, B_reduced, C and C_reduced are each of rank three, D, D_reduced, X_reduced and X are each of rank two and Y and Y_reduced are of rank one. The natural boundary conditions take the form:
n[j]*((A[i,j,k,l]+A_reduced[i,j,k,l])*grad(u[k])[l]+(B[i,j,k]+B_reduced[i,j,k])*u[k])+(d[i,k]+d_reduced[i,k])*u[k]=n[j]*(X[i,j]+X_reduced[i,j])+y[i]+y_reduced[i]
The coefficient d is of rank two and y is of rank one both in
FunctionOnBoundary
. The coefficients d_reduced is of rank two and y_reduced is of rank one both inReducedFunctionOnBoundary
.Constraints take the form
u[i]=r[i] where q[i]>0
r and q are each rank one. Notice that at some locations not necessarily all components must have a constraint.
The system of PDEs is symmetrical if
- A[i,j,k,l]=A[k,l,i,j]
- A_reduced[i,j,k,l]=A_reduced[k,l,i,j]
- B[i,j,k]=C[k,i,j]
- B_reduced[i,j,k]=C_reduced[k,i,j]
- D[i,k]=D[i,k]
- D_reduced[i,k]=D_reduced[i,k]
- d[i,k]=d[k,i]
- d_reduced[i,k]=d_reduced[k,i]
LinearPDE
also supports solution discontinuities over a contact region in the domain. To specify the conditions across the discontinuity we are using the generalised flux J which, in the case of a system of PDEs and several components of the solution, is defined asJ[i,j]=(A[i,j,k,l]+A_reduced[[i,j,k,l])*grad(u[k])[l]+(B[i,j,k]+B_reduced[i,j,k])*u[k]-X[i,j]-X_reduced[i,j]
For the case of single solution component and single PDE J is defined as
J[j]=(A[i,j]+A_reduced[i,j])*grad(u)[j]+(B[i]+B_reduced[i])*u-X[i]-X_reduced[i]
In the context of discontinuities n denotes the normal on the discontinuity pointing from side 0 towards side 1 calculated from
FunctionSpace.getNormal
ofFunctionOnContactZero
. For a system of PDEs the contact condition takes the formn[j]*J0[i,j]=n[j]*J1[i,j]=(y_contact[i]+y_contact_reduced[i])- (d_contact[i,k]+d_contact_reduced[i,k])*jump(u)[k]
where J0 and J1 are the fluxes on side 0 and side 1 of the discontinuity, respectively. jump(u), which is the difference of the solution at side 1 and at side 0, denotes the jump of u across discontinuity along the normal calculated by
jump
. The coefficient d_contact is of rank two and y_contact is of rank one both inFunctionOnContactZero
orFunctionOnContactOne
. The coefficient d_contact_reduced is of rank two and y_contact_reduced is of rank one both inReducedFunctionOnContactZero
orReducedFunctionOnContactOne
. In case of a single PDE and a single component solution the contact condition takes the formn[j]*J0_{j}=n[j]*J1_{j}=(y_contact+y_contact_reduced)-(d_contact+y_contact_reduced)*jump(u)
In this case the coefficient d_contact and y_contact are each scalar both in
FunctionOnContactZero
orFunctionOnContactOne
and the coefficient d_contact_reduced and y_contact_reduced are each scalar both inReducedFunctionOnContactZero
orReducedFunctionOnContactOne
.Typical usage:
p = LinearPDE(dom) p.setValue(A=kronecker(dom), D=1, Y=0.5) u = p.getSolution()
-
__init__
(domain, numEquations=None, numSolutions=None, isComplex=False, debug=False)¶ Initializes a new linear PDE.
Parameters: - domain (
Domain
) – domain of the PDE - numEquations – number of equations. If
None
the number of equations is extracted from the PDE coefficients. - numSolutions – number of solution components. If
None
the number of solution components is extracted from the PDE coefficients. - debug – if True debug information is printed
- domain (
-
addPDEToLumpedSystem
(operator, a, b, c, hrz_lumping)¶ adds a PDE to the lumped system, results depend on domain
Parameters: - mat (
OperatorAdapter
) – - rhs (
Data
) – - a (
Data
) – - b (
Data
) – - c (
Data
) – - hrz_lumping (
bool
) –
- mat (
-
addPDEToRHS
(righthandside, X, Y, y, y_contact, y_dirac)¶ adds a PDE to the right hand side, results depend on domain
Parameters: - mat (
OperatorAdapter
) – - righthandside (
Data
) – - X (
Data
) – - Y (
Data
) – - y (
Data
) – - y_contact (
Data
) – - y_dirac (
Data
) –
- mat (
-
addPDEToSystem
(operator, righthandside, A, B, C, D, X, Y, d, y, d_contact, y_contact, d_dirac, y_dirac)¶ adds a PDE to the system, results depend on domain
Parameters: - mat (
OperatorAdapter
) – - rhs (
Data
) – - A (
Data
) – - B (
Data
) – - C (
Data
) – - D (
Data
) – - X (
Data
) – - Y (
Data
) – - d (
Data
) – - y (
Data
) – - d_contact (
Data
) – - y_contact (
Data
) – - d_dirac (
Data
) – - y_dirac (
Data
) –
- mat (
-
addToRHS
(rhs, data)¶ adds a PDE to the right hand side, results depend on domain
Parameters: - mat (
OperatorAdapter
) – - righthandside (
Data
) – - data (
list
) –
- mat (
-
addToSystem
(op, rhs, data)¶ adds a PDE to the system, results depend on domain
Parameters: - mat (
OperatorAdapter
) – - rhs (
Data
) – - data (
list
) –
- mat (
-
alteredCoefficient
(name)¶ Announces that coefficient
name
has been changed.Parameters: name ( string
) – name of the coefficient affectedRaises: IllegalCoefficient – if name
is not a coefficient of the PDENote: if name
is q or r, the method will not trigger a rebuild of the system as constraints are applied to the solved system.
-
checkReciprocalSymmetry
(name0, name1, verbose=True)¶ Tests two coefficients for reciprocal symmetry.
Parameters: - name0 (
str
) – name of the first coefficient - name1 (
str
) – name of the second coefficient - verbose (
bool
) – if set to True or not present a report on coefficients which break the symmetry is printed
Returns: True if coefficients
name0
andname1
are reciprocally symmetric.Return type: bool
- name0 (
-
checkSymmetricTensor
(name, verbose=True)¶ Tests a coefficient for symmetry.
Parameters: - name (
str
) – name of the coefficient - verbose (
bool
) – if set to True or not present a report on coefficients which break the symmetry is printed.
Returns: True if coefficient
name
is symmetricReturn type: bool
- name (
-
checkSymmetry
(verbose=True)¶ Tests the PDE for symmetry.
Parameters: verbose ( bool
) – if set to True or not present a report on coefficients which break the symmetry is printed.Returns: True if the PDE is symmetric Return type: bool
Note: This is a very expensive operation. It should be used for degugging only! The symmetry flag is not altered.
-
createCoefficient
(name)¶ Creates a
Data
object corresponding to coefficientname
.Returns: the coefficient name
initialized to 0Return type: Data
Raises: IllegalCoefficient – if name
is not a coefficient of the PDE
-
createOperator
()¶ Returns an instance of a new operator.
-
createRightHandSide
()¶ Returns an instance of a new right hand side.
-
createSolution
()¶ Returns an instance of a new solution.
-
getCoefficient
(name)¶ Returns the value of the coefficient
name
.Parameters: name ( string
) – name of the coefficient requestedReturns: the value of the coefficient Return type: Data
Raises: IllegalCoefficient – if name
is not a coefficient of the PDE
-
getCurrentOperator
()¶ Returns the operator in its current state.
-
getCurrentRightHandSide
()¶ Returns the right hand side in its current state.
-
getCurrentSolution
()¶ Returns the solution in its current state.
-
getDim
()¶ Returns the spatial dimension of the PDE.
Returns: the spatial dimension of the PDE domain Return type: int
-
getDomain
()¶ Returns the domain of the PDE.
Returns: the domain of the PDE Return type: Domain
-
getDomainStatus
()¶ Return the status indicator of the domain
-
getFlux
(u=None)¶ Returns the flux J for a given u.
J[i,j]=(A[i,j,k,l]+A_reduced[A[i,j,k,l]]*grad(u[k])[l]+(B[i,j,k]+B_reduced[i,j,k])u[k]-X[i,j]-X_reduced[i,j]
or
J[j]=(A[i,j]+A_reduced[i,j])*grad(u)[l]+(B[j]+B_reduced[j])u-X[j]-X_reduced[j]
Parameters: u ( Data
or None) – argument in the flux. If u is not present or equalsNone
the current solution is used.Returns: flux Return type: Data
-
getFunctionSpaceForCoefficient
(name)¶ Returns the
FunctionSpace
to be used for coefficientname
.Parameters: name ( string
) – name of the coefficient enquiredReturns: the function space to be used for coefficient name
Return type: FunctionSpace
Raises: IllegalCoefficient – if name
is not a coefficient of the PDE
-
getFunctionSpaceForEquation
()¶ Returns the
FunctionSpace
used to discretize the equation.Returns: representation space of equation Return type: FunctionSpace
-
getFunctionSpaceForSolution
()¶ Returns the
FunctionSpace
used to represent the solution.Returns: representation space of solution Return type: FunctionSpace
-
getNumEquations
()¶ Returns the number of equations.
Returns: the number of equations Return type: int
Raises: UndefinedPDEError – if the number of equations is not specified yet
-
getNumSolutions
()¶ Returns the number of unknowns.
Returns: the number of unknowns Return type: int
Raises: UndefinedPDEError – if the number of unknowns is not specified yet
-
getOperator
()¶ Returns the operator of the linear problem.
Returns: the operator of the problem
-
getOperatorType
()¶ Returns the current system type.
-
getRequiredOperatorType
()¶ Returns the system type which needs to be used by the current set up.
-
getResidual
(u=None)¶ Returns the residual of u or the current solution if u is not present.
Parameters: u ( Data
or None) – argument in the residual calculation. It must be representable inself.getFunctionSpaceForSolution()
. If u is not present or equalsNone
the current solution is used.Returns: residual of u Return type: Data
-
getRightHandSide
()¶ Returns the right hand side of the linear problem.
Returns: the right hand side of the problem Return type: Data
-
getShapeOfCoefficient
(name)¶ Returns the shape of the coefficient
name
.Parameters: name ( string
) – name of the coefficient enquiredReturns: the shape of the coefficient name
Return type: tuple
ofint
Raises: IllegalCoefficient – if name
is not a coefficient of the PDE
-
getSolution
()¶ Returns the solution of the PDE.
Returns: the solution Return type: Data
-
getSolverOptions
()¶ Returns the solver options
Return type: SolverOptions
-
getSystem
()¶ Returns the operator and right hand side of the PDE.
Returns: the discrete version of the PDE Return type: tuple
ofOperator
andData
-
getSystemStatus
()¶ Return the domain status used to build the current system
-
hasCoefficient
(name)¶ Returns True if
name
is the name of a coefficient.Parameters: name ( string
) – name of the coefficient enquiredReturns: True if name
is the name of a coefficient of the general PDE, False otherwiseReturn type: bool
-
initializeSystem
()¶ Resets the system clearing the operator, right hand side and solution.
-
insertConstraint
(rhs_only=False)¶ Applies the constraints defined by q and r to the PDE.
Parameters: rhs_only ( bool
) – if True only the right hand side is altered by the constraint
-
introduceCoefficients
(**coeff)¶ Introduces new coefficients into the problem.
Use:
p.introduceCoefficients(A=PDECoef(…), B=PDECoef(…))
to introduce the coefficients A and B.
-
invalidateOperator
()¶ Indicates the operator has to be rebuilt next time it is used.
-
invalidateRightHandSide
()¶ Indicates the right hand side has to be rebuilt next time it is used.
-
invalidateSolution
()¶ Indicates the PDE has to be resolved if the solution is requested.
-
invalidateSystem
()¶ Announces that everything has to be rebuilt.
-
isComplex
()¶ Returns true if this is a complex-valued LinearProblem, false if real-valued.
Return type: bool
-
isHermitian
()¶ Checks if the pde is indicated to be Hermitian.
Returns: True if a Hermitian PDE is indicated, False otherwise Return type: bool
Note: the method is equivalent to use getSolverOptions().isHermitian()
-
isOperatorValid
()¶ Returns True if the operator is still valid.
-
isRightHandSideValid
()¶ Returns True if the operator is still valid.
-
isSolutionValid
()¶ Returns True if the solution is still valid.
-
isSymmetric
()¶ Checks if symmetry is indicated.
Returns: True if a symmetric PDE is indicated, False otherwise Return type: bool
Note: the method is equivalent to use getSolverOptions().isSymmetric()
-
isSystemValid
()¶ Returns True if the system (including solution) is still vaild.
-
isUsingLumping
()¶ Checks if matrix lumping is the current solver method.
Returns: True if the current solver method is lumping Return type: bool
-
preservePreconditioner
(preserve=True)¶ Notifies the PDE that the preconditioner should not be reset when making changes to the operator.
Building the preconditioner data can be quite expensive (e.g. for multigrid methods) so if it is known that changes to the operator are going to be minor calling this method can speed up successive PDE solves.
Note: Not all operator types support this. Parameters: preserve ( bool
) – if True, preconditioner will be preserved, otherwise it will be reset when making changes to the operator, which is the default behaviour.
-
reduceEquationOrder
()¶ Returns the status of order reduction for the equation.
Returns: True if reduced interpolation order is used for the representation of the equation, False otherwise Return type: bool
-
reduceSolutionOrder
()¶ Returns the status of order reduction for the solution.
Returns: True if reduced interpolation order is used for the representation of the solution, False otherwise Return type: bool
-
resetAllCoefficients
()¶ Resets all coefficients to their default values.
-
resetOperator
()¶ Makes sure that the operator is instantiated and returns it initialized with zeros.
-
resetRightHandSide
()¶ Sets the right hand side to zero.
-
resetRightHandSideCoefficients
()¶ Resets all coefficients defining the right hand side
-
resetSolution
()¶ Sets the solution to zero.
-
setDebug
(flag)¶ Switches debug output on if
flag
is True otherwise it is switched off.Parameters: flag ( bool
) – desired debug status
-
setDebugOff
()¶ Switches debug output off.
-
setDebugOn
()¶ Switches debug output on.
-
setHermitian
(flag=False)¶ Sets the Hermitian flag to
flag
.Parameters: flag ( bool
) – If True, the Hermitian flag is set otherwise reset.Note: The method overwrites the Hermitian flag set by the solver options
-
setHermitianOff
()¶ Clears the Hermitian flag. :note: The method overwrites the Hermitian flag set by the solver options
-
setHermitianOn
()¶ Sets the Hermitian flag. :note: The method overwrites the Hermitian flag set by the solver options
-
setReducedOrderForEquationOff
()¶ Switches reduced order off for equation representation.
Raises: RuntimeError – if order reduction is altered after a coefficient has been set
-
setReducedOrderForEquationOn
()¶ Switches reduced order on for equation representation.
Raises: RuntimeError – if order reduction is altered after a coefficient has been set
-
setReducedOrderForEquationTo
(flag=False)¶ Sets order reduction state for equation representation according to flag.
Parameters: flag ( bool
) – if flag is True, the order reduction is switched on for equation representation, otherwise or if flag is not present order reduction is switched offRaises: RuntimeError – if order reduction is altered after a coefficient has been set
-
setReducedOrderForSolutionOff
()¶ Switches reduced order off for solution representation
Raises: RuntimeError – if order reduction is altered after a coefficient has been set.
-
setReducedOrderForSolutionOn
()¶ Switches reduced order on for solution representation.
Raises: RuntimeError – if order reduction is altered after a coefficient has been set
-
setReducedOrderForSolutionTo
(flag=False)¶ Sets order reduction state for solution representation according to flag.
Parameters: flag ( bool
) – if flag is True, the order reduction is switched on for solution representation, otherwise or if flag is not present order reduction is switched offRaises: RuntimeError – if order reduction is altered after a coefficient has been set
-
setReducedOrderOff
()¶ Switches reduced order off for solution and equation representation
Raises: RuntimeError – if order reduction is altered after a coefficient has been set
-
setReducedOrderOn
()¶ Switches reduced order on for solution and equation representation.
Raises: RuntimeError – if order reduction is altered after a coefficient has been set
-
setReducedOrderTo
(flag=False)¶ Sets order reduction state for both solution and equation representation according to flag.
Parameters: flag ( bool
) – if True, the order reduction is switched on for both solution and equation representation, otherwise or if flag is not present order reduction is switched offRaises: RuntimeError – if order reduction is altered after a coefficient has been set
-
setSolution
(u, validate=True)¶ Sets the solution assuming that makes the system valid with the tolrance defined by the solver options
-
setSolverOptions
(options=None)¶ Sets the solver options.
Parameters: options ( SolverOptions
orNone
) – the new solver options. If equalNone
, the solver options are set to the default.Note: The symmetry flag of options is overwritten by the symmetry flag of the LinearProblem
.
-
setSymmetry
(flag=False)¶ Sets the symmetry flag to
flag
.Parameters: flag ( bool
) – If True, the symmetry flag is set otherwise reset.Note: The method overwrites the symmetry flag set by the solver options
-
setSymmetryOff
()¶ Clears the symmetry flag. :note: The method overwrites the symmetry flag set by the solver options
-
setSymmetryOn
()¶ Sets the symmetry flag. :note: The method overwrites the symmetry flag set by the solver options
-
setSystemStatus
(status=None)¶ Sets the system status to
status
ifstatus
is not present the current status of the domain is used.
-
setValue
(**coefficients)¶ Sets new values to coefficients.
Parameters: - coefficients – new values assigned to coefficients
- A (any type that can be cast to a
Data
object onFunction
) – value for coefficientA
- A_reduced (any type that can be cast to a
Data
object onReducedFunction
) – value for coefficientA_reduced
- B (any type that can be cast to a
Data
object onFunction
) – value for coefficientB
- B_reduced (any type that can be cast to a
Data
object onReducedFunction
) – value for coefficientB_reduced
- C (any type that can be cast to a
Data
object onFunction
) – value for coefficientC
- C_reduced (any type that can be cast to a
Data
object onReducedFunction
) – value for coefficientC_reduced
- D (any type that can be cast to a
Data
object onFunction
) – value for coefficientD
- D_reduced (any type that can be cast to a
Data
object onReducedFunction
) – value for coefficientD_reduced
- X (any type that can be cast to a
Data
object onFunction
) – value for coefficientX
- X_reduced (any type that can be cast to a
Data
object onReducedFunction
) – value for coefficientX_reduced
- Y (any type that can be cast to a
Data
object onFunction
) – value for coefficientY
- Y_reduced (any type that can be cast to a
Data
object onReducedFunction
) – value for coefficientY_reduced
- d (any type that can be cast to a
Data
object onFunctionOnBoundary
) – value for coefficientd
- d_reduced (any type that can be cast to a
Data
object onReducedFunctionOnBoundary
) – value for coefficientd_reduced
- y (any type that can be cast to a
Data
object onFunctionOnBoundary
) – value for coefficienty
- d_contact (any type that can be cast to a
Data
object onFunctionOnContactOne
orFunctionOnContactZero
) – value for coefficientd_contact
- d_contact_reduced (any type that can be cast to a
Data
object onReducedFunctionOnContactOne
orReducedFunctionOnContactZero
) – value for coefficientd_contact_reduced
- y_contact (any type that can be cast to a
Data
object onFunctionOnContactOne
orFunctionOnContactZero
) – value for coefficienty_contact
- y_contact_reduced (any type that can be cast to a
Data
object onReducedFunctionOnContactOne
orReducedFunctionOnContactZero
) – value for coefficienty_contact_reduced
- d_dirac (any type that can be cast to a
Data
object onDiracDeltaFunctions
) – value for coefficientd_dirac
- y_dirac (any type that can be cast to a
Data
object onDiracDeltaFunctions
) – value for coefficienty_dirac
- r (any type that can be cast to a
Data
object onSolution
orReducedSolution
depending on whether reduced order is used for the solution) – values prescribed to the solution at the locations of constraints - q (any type that can be cast to a
Data
object onSolution
orReducedSolution
depending on whether reduced order is used for the representation of the equation) – mask for location of constraints
Raises: IllegalCoefficient – if an unknown coefficient keyword is used
-
shouldPreservePreconditioner
()¶ Returns true if the preconditioner / factorisation should be kept even when resetting the operator.
Return type: bool
-
trace
(text)¶ Prints the text message if debug mode is switched on.
Parameters: text ( string
) – message to be printed
-
validOperator
()¶ Marks the operator as valid.
-
validRightHandSide
()¶ Marks the right hand side as valid.
-
validSolution
()¶ Marks the solution as valid.
-
class
esys.modellib.mechanics.
Mechanics
(**kwargs)¶ Bases:
esys.escriptcore.modelframe.Model
base class for mechanics models in updated lagrangean framework
Note: Instance variable domain - domain (in) Note: Instance variable internal_force - =Data() Note: Instance variable external_force - =Data() Note: Instance variable prescribed_velocity - =Data() Note: Instance variable location_prescribed_velocity - =Data() Note: Instance variable temperature - = None Note: Instance variable expansion_coefficient - = 0. Note: Instance variable bulk_modulus - =1. Note: Instance variable shear_modulus - =1. Note: Instance variable rel_tol - =1.e-3 Note: Instance variable abs_tol - =1.e-15 Note: Instance variable max_iter - =10 Note: Instance variable displacement - =None Note: Instance variable stress - =None -
__init__
(**kwargs)¶ set up the model
Parameters: debug ( bool
) – debug flag
-
SAFTY_FACTOR_ITERATION
= 0.01¶
-
UNDEF_DT
= 1e+300¶
-
checkLinkTargets
(models, hash)¶ Returns a set of tuples (“<self>(<name>)”, <target model>) if the parameter <name> is linked to model <target model> but <target model> is not in the list of models. If a parameter is linked to another parameter set which is not in the hash list the parameter set is checked for its models. hash gives the call history.
-
declareParameter
(**parameters)¶ Declares one or more new parameters and their initial value.
-
declareParameters
(parameters)¶ Declares a set of parameters. parameters can be a list, a dictionary or a ParameterSet.
-
doFinalization
()¶ Finalizes the time stepping.
This function may be overwritten.
-
doInitialPostprocessing
()¶ Finalises the initialization iteration process. This method is not called in case of a restart.
This function may be overwritten.
-
doInitialStep
()¶ Performs an iteration step in the initialization phase. This method is not called in case of a restart.
This function may be overwritten.
-
doInitialization
()¶ initialize model
-
doStep
(dt)¶
-
doStepPostprocessing
(dt)¶ accept all the values:
-
doStepPreprocessing
(dt)¶ step up pressure iteration
if run within a time dependend problem extrapolation of pressure from previous time steps is used to get an initial guess (that needs some work!!!!!!!)
-
finalize
()¶ Returns False if the time stepping is finalized.
This function may be overwritten.
-
classmethod
fromDom
(esysxml, node)¶
-
getAttributeObject
(name)¶ Returns the object stored for attribute
name
.
-
getSafeTimeStepSize
(dt)¶ returns new step size
-
hasAttribute
(name)¶ Returns True if self has attribute
name
.
-
releaseParameters
(name)¶ Removes parameter name from the parameters.
-
setUp
()¶ Sets up the model.
This function may be overwritten.
-
showParameters
()¶ Returns a description of the parameters.
-
terminateInitialIteration
()¶ Returns True if iteration at the inital phase is terminated.
-
terminateIteration
()¶ iteration is terminateIterationd if relative pressure change is less than rel_tol
-
toDom
(esysxml, node)¶ toDom
method of Model class.
-
trace
(msg)¶ If debugging is on, prints the message, otherwise does nothing.
-
writeXML
(ostream=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>)¶ Writes the object as an XML object into an output stream.
-
-
class
esys.modellib.mechanics.
Model
(parameters=[], **kwargs)¶ Bases:
esys.escriptcore.modelframe.ParameterSet
A Model object represents a process marching over time until a finalizing condition is fulfilled. At each time step an iterative process can be performed and the time step size can be controlled. A Model has the following work flow:
doInitialization() while not terminateInitialIteration(): doInitialStep() doInitialPostprocessing() while not finalize(): dt=getSafeTimeStepSize(dt) doStepPreprocessing(dt) while not terminateIteration(): doStep(dt) doStepPostprocessing(dt) doFinalization()
where
doInitialization
,finalize
,getSafeTimeStepSize
,doStepPreprocessing
,terminateIteration
,doStepPostprocessing
,doFinalization
are methods of the particular instance of a Model. The default implementations of these methods have to be overwritten by the subclass implementing a Model.-
__init__
(parameters=[], **kwargs)¶ Creates a model.
Just calls the parent constructor.
-
UNDEF_DT
= 1e+300¶
-
checkLinkTargets
(models, hash)¶ Returns a set of tuples (“<self>(<name>)”, <target model>) if the parameter <name> is linked to model <target model> but <target model> is not in the list of models. If a parameter is linked to another parameter set which is not in the hash list the parameter set is checked for its models. hash gives the call history.
-
declareParameter
(**parameters)¶ Declares one or more new parameters and their initial value.
-
declareParameters
(parameters)¶ Declares a set of parameters. parameters can be a list, a dictionary or a ParameterSet.
-
doFinalization
()¶ Finalizes the time stepping.
This function may be overwritten.
-
doInitialPostprocessing
()¶ Finalises the initialization iteration process. This method is not called in case of a restart.
This function may be overwritten.
-
doInitialStep
()¶ Performs an iteration step in the initialization phase. This method is not called in case of a restart.
This function may be overwritten.
-
doInitialization
()¶ Initializes the time stepping scheme. This method is not called in case of a restart.
This function may be overwritten.
-
doStep
(dt)¶ Executes an iteration step at a time step.
dt
is the currently used time step size.This function may be overwritten.
-
doStepPostprocessing
(dt)¶ Finalises the time step.
dt is the currently used time step size.
This function may be overwritten.
-
doStepPreprocessing
(dt)¶ Sets up a time step of step size dt.
This function may be overwritten.
-
finalize
()¶ Returns False if the time stepping is finalized.
This function may be overwritten.
-
classmethod
fromDom
(esysxml, node)¶
-
getAttributeObject
(name)¶ Returns the object stored for attribute
name
.
-
getSafeTimeStepSize
(dt)¶ Returns a time step size which can be safely used.
dt
gives the previously used step size.This function may be overwritten.
-
hasAttribute
(name)¶ Returns True if self has attribute
name
.
-
releaseParameters
(name)¶ Removes parameter name from the parameters.
-
setUp
()¶ Sets up the model.
This function may be overwritten.
-
showParameters
()¶ Returns a description of the parameters.
-
terminateInitialIteration
()¶ Returns True if iteration at the inital phase is terminated.
-
terminateIteration
()¶ Returns True if iteration on a time step is terminated.
-
toDom
(esysxml, node)¶ toDom
method of Model class.
-
trace
(msg)¶ If debugging is on, prints the message, otherwise does nothing.
-
writeXML
(ostream=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>)¶ Writes the object as an XML object into an output stream.
-