35 #ifndef nlinearstatic_h 36 #define nlinearstatic_h 38 #include "../sm/EngineeringModels/linearstatic.h" 43 #define _IFT_NonLinearStatic_Name "nonlinearstatic" 44 #define _IFT_NonLinearStatic_controlmode "controlmode" 45 #define _IFT_NonLinearStatic_deltat "deltat" 46 #define _IFT_NonLinearStatic_stiffmode "stiffmode" 47 #define _IFT_NonLinearStatic_refloadmode "refloadmode" 48 #define _IFT_NonLinearStatic_keepll "keepll" 49 #define _IFT_NonLinearStatic_donotfixload "donotfixload" 50 #define _IFT_NonLinearStatic_nonlocstiff "nonlocstiff" 51 #define _IFT_NonLinearStatic_nonlocalext "nonlocalext" 52 #define _IFT_NonLinearStatic_loadBalancingFlag "loadbalancingflag" 53 #define _IFT_NonLinearStatic_forceloadBalancingFlag "forceloadbalancingflag" 54 #define _IFT_NonLinearStatic_updateElasticStiffnessFlag "updateelasticstiffnessflag" 175 #ifdef __PARALLEL_MODE 188 FloatArray &_incrementalLoadVectorOfPrescribed,
196 #endif // nlinearstatic_h virtual int useNonlocalStiffnessOption()
Returns nonzero if nonlocal stiffness option activated.
virtual LoadBalancer * giveLoadBalancer()
Returns reference to receiver's load balancer.
virtual TimeStep * giveNextStep()
Returns next time step (next to current step) of receiver.
Base class for all matrices stored in sparse format.
virtual const char * giveClassName() const
Returns class name of the receiver.
enum fMode nonLinFormulation
Type of non linear formulation (total or updated formulation).
virtual void solveYourself()
Starts solution process.
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
The secant stiffness is used and updated only at the beginning of new load step.
int nonlocalStiffnessFlag
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
The tangent stiffness is used and updated whenever requested.
virtual void showSparseMtrxStructure(int type, oofegGraphicContext &gc, TimeStep *tStep)
Shows the sparse structure of required matrix, type == 1 stiffness.
NonLinearStatic_controlType controlMode
Characterizes the type of control used.
FloatArray internalForces
This base class is an abstraction for numerical algorithm.
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
NonLinearStatic_stiffnessMode stiffMode
virtual int estimateMaxPackSize(IntArray &commMap, DataStream &buff, int packUnpackType)
Determines the space necessary for send/receive buffer.
virtual NumericalMethod * giveNumericalMethod(MetaStep *mStep)
Returns reference to receiver's numerical method.
virtual double giveUnknownComponent(ValueModeType type, TimeStep *tStep, Domain *d, Dof *dof)
Returns requested unknown.
virtual void terminate(TimeStep *tStep)
Terminates the solution of time step.
unsigned long NM_Status
Mask defining NumMetod Status; which can be asked after finishing computation by Numerical Method...
Class implementing an array of integers.
bool updateElasticStiffnessFlag
FloatArray incrementalLoadVector
Incremental load vector which is applied in loading step (as a whole for direct control or proportion...
double cumulatedLoadLevel
NonLinearStatic_controlType
Type determining type of loading control. This type determines the solver to be used.
NonLinearStatic_stiffnessMode
Type determining the stiffness mode.
virtual void solveYourselfAt(TimeStep *tStep)
Solves problem for given time step.
FloatArray initialLoadVectorOfPrescribed
A load vector which does not scale for prescribed DOFs.
FloatArray incrementalLoadVectorOfPrescribed
Incremental Load Vector for prescribed DOFs.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description in input reader.
SparseNonLinearSystemNM::referenceLoadInputModeType refLoadInputMode
The following parameter allows to specify how the reference load vector is obtained from given totalL...
void assembleIncrementalReferenceLoadVectors(FloatArray &_incrementalLoadVector, FloatArray &_incrementalLoadVectorOfPrescribed, SparseNonLinearSystemNM::referenceLoadInputModeType _refMode, Domain *sourceDomain, TimeStep *tStep)
void proceedStep(int di, TimeStep *tStep)
NumericalCmpn
Type representing numerical component.
SparseNonLinearSystemNM * nMethod
Numerical method used to solve the problem.
Callback class for assembling specific types of matrices.
virtual void packMigratingData(TimeStep *tStep)
Packs receiver data when rebalancing load.
bool mstepCumulateLoadLevelFlag
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode)
Stores the state of model to output stream.
Abstract base class allowing to control the way, how equations are assigned to individual DOFs...
InitialGuess
Means to choose methods for finding a good initial guess.
FloatArray totalDisplacement
virtual fMode giveFormulation()
Indicates type of non linear computation (total or updated formulation).
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Prints output of receiver to output domain stream, for given time step.
referenceLoadInputModeType
The following parameter allows to specify how the reference load vector is obtained from given totalL...
The initial elastic stiffness is used in the whole solution.
double deltaT
Intrinsic time increment.
Abstract base class representing general load balancer.
Describes the direct control where load or displacement (or both) are controlled. ...
virtual void updateComponent(TimeStep *tStep, NumericalCmpn, Domain *d)
Updates components mapped to numerical method if necessary during solution process.
Class representing vector of real numbers.
virtual void updateDomainLinks()
Updates domain links after the domains of receiver have changed.
virtual void computeExternalLoadReactionContribution(FloatArray &reactions, TimeStep *tStep, int di)
Computes the contribution external loading to reaction forces in given domain.
FloatArray incrementOfDisplacement
IRResultType
Type defining the return values of InputRecord reading operations.
InitialGuess initialGuessType
The initial guess type to use before starting the nonlinear solver.
NonLinearStatic(int i, EngngModel *_master=NULL)
virtual double giveLoadLevel()
Returns the current load level.
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode)
Restores the state of model from output stream.
fMode
Type representing the type of formulation (total or updated) of non-linear computation.
This class implements linear static engineering problem.
virtual int giveUnknownDictHashIndx(ValueModeType mode, TimeStep *tStep)
For load balancing purposes we store all values so hash is computed from mode value only...
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
virtual ~NonLinearStatic()
virtual void assemble(SparseMtrx &answer, TimeStep *tStep, const MatrixAssembler &ma, const UnknownNumberingScheme &, Domain *domain)
Assembles characteristic matrix of required type into given sparse matrix.
virtual LoadBalancerMonitor * giveLoadBalancerMonitor()
Returns reference to receiver's load balancer monitor.
This class implements nonlinear static engineering problem.
A generalized norm of displacement and loading vectors is controlled. In current implementation, the CALM solver is used, the reference load vector is FIXED.
Abstract base class representing the "problem" under consideration.
The secant stiffness is used and updated whenever requested.
virtual void updateAttributes(MetaStep *mStep)
Update receiver attributes according to step metaStep attributes.
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual int giveCurrentNumberOfIterations()
Returns number of iterations that was required to reach equilibrium - used for adaptive step length i...
virtual void updateLoadVectors(TimeStep *tStep)
FloatArray initialLoadVector
A load vector already applied, which does not scales.
Abstract class Dof represents Degree Of Freedom in finite element mesh.
virtual TimeStep * giveSolutionStepWhenIcApply(bool force=false)
Returns the solution step when Initial Conditions (IC) apply.
Class representing solution step.
This base class is an abstraction for all numerical methods solving sparse nonlinear system of equati...
Abstract base class representing general load balancer monitor.
virtual void unpackMigratingData(TimeStep *tStep)
Unpacks receiver data when rebalancing load.