35#ifndef nlinearstatic_h
36#define nlinearstatic_h
44#define _IFT_NonLinearStatic_Name "nonlinearstatic"
45#define _IFT_NonLinearStatic_controlmode "controlmode"
46#define _IFT_NonLinearStatic_deltat "deltat"
47#define _IFT_NonLinearStatic_deltatfunction "deltatfunction"
48#define _IFT_NonLinearStatic_stiffmode "stiffmode"
49#define _IFT_NonLinearStatic_refloadmode "refloadmode"
50#define _IFT_NonLinearStatic_keepll "keepll"
51#define _IFT_NonLinearStatic_donotfixload "donotfixload"
52#define _IFT_NonLinearStatic_nonlocstiff "nonlocstiff"
53#define _IFT_NonLinearStatic_nonlocalext "nonlocalext"
54#define _IFT_NonLinearStatic_loadBalancingFlag "loadbalancingflag"
55#define _IFT_NonLinearStatic_forceloadBalancingFlag "forceloadbalancingflag"
56#define _IFT_NonLinearStatic_updateElasticStiffnessFlag "updateelasticstiffnessflag"
182#ifdef __MPI_PARALLEL_MODE
195 FloatArray &_incrementalLoadVectorOfPrescribed,
196 SparseNonLinearSystemNM :: referenceLoadInputModeType _refMode,
enum fMode nonLinFormulation
Type of non linear formulation (total or updated formulation).
double giveDeltaT()
Returns time step size from the time step controlelr.
EngngModel * master
Master e-model; if defined receiver is in maintained (slave) mode.
LinearStatic(int i, EngngModel *master=nullptr)
SparseNonLinearSystemNM::referenceLoadInputModeType refLoadInputMode
FloatArray initialLoadVectorOfPrescribed
A load vector which does not scale for prescribed DOFs.
void restoreContext(DataStream &stream, ContextMode mode) override
int giveUnknownDictHashIndx(ValueModeType mode, TimeStep *tStep) override
For load balancing purposes we store all values so hash is computed from mode value only.
void printOutputAt(FILE *file, TimeStep *tStep) override
TimeStep * giveNextStep() override
Returns next time step (next to current step) of receiver.
FloatArray internalForces
FloatArray incrementalLoadVector
FloatArray incrementalLoadVectorOfPrescribed
Incremental Load Vector for prescribed DOFs.
void initializeFrom(InputRecord &ir) override
const char * giveClassName() const override
Returns class name of the receiver.
int nonlocalStiffnessFlag
double giveLoadLevel() override
Returns the current load level.
int dtFunction
Associated time function for time step increment.
double deltaT
Intrinsic time increment.
void showSparseMtrxStructure(int type, oofegGraphicContext &gc, TimeStep *tStep) override
double giveInitialTime() override
return time at the begining of analysis
void packMigratingData(TimeStep *tStep) override
double giveUnknownComponent(ValueModeType type, TimeStep *tStep, Domain *d, Dof *dof) override
void terminate(TimeStep *tStep) override
double cumulatedLoadLevel
NonLinearStatic(int i, EngngModel *master=nullptr)
TimeStep * giveSolutionStepWhenIcApply(bool force=false) override
void updateComponent(TimeStep *tStep, NumericalCmpn, Domain *d) override
void proceedStep(int di, TimeStep *tStep)
fMode giveFormulation() override
LoadBalancer * giveLoadBalancer() override
void assembleIncrementalReferenceLoadVectors(FloatArray &_incrementalLoadVector, FloatArray &_incrementalLoadVectorOfPrescribed, SparseNonLinearSystemNM ::referenceLoadInputModeType _refMode, Domain *sourceDomain, TimeStep *tStep)
bool mstepCumulateLoadLevelFlag
FloatArray totalDisplacement
virtual ~NonLinearStatic()
NonLinearStatic_controlType controlMode
Characterizes the type of control used.
int giveCurrentNumberOfIterations() override
NumericalMethod * giveNumericalMethod(MetaStep *mStep) override
Returns reference to receiver's numerical method.
virtual void updateLoadVectors(TimeStep *tStep)
void updateAttributes(MetaStep *mStep) override
void updateSolution(FloatArray &solutionVector, TimeStep *tStep, Domain *d) override
InitialGuess initialGuessType
The initial guess type to use before starting the nonlinear solver.
void unpackMigratingData(TimeStep *tStep) override
NonLinearStatic_stiffnessMode stiffMode
void saveContext(DataStream &stream, ContextMode mode) override
int estimateMaxPackSize(IntArray &commMap, DataStream &buff, int packUnpackType) override
void solveYourself() override
void updateMatrix(SparseMtrx &mat, TimeStep *tStep, Domain *d) override
void updateDomainLinks() override
LoadBalancerMonitor * giveLoadBalancerMonitor() override
int useNonlocalStiffnessOption() override
Returns nonzero if nonlocal stiffness option activated.
ConvergedReason numMetStatus
void computeExternalLoadReactionContribution(FloatArray &reactions, TimeStep *tStep, int di) override
void solveYourselfAt(TimeStep *tStep) override
bool updateElasticStiffnessFlag
Function * giveDtFunction()
FloatArray incrementOfDisplacement
void assemble(SparseMtrx &answer, TimeStep *tStep, const MatrixAssembler &ma, const UnknownNumberingScheme &, Domain *domain) override
SparseNonLinearSystemNM * nMethod
Numerical method used to solve the problem.
FloatArray initialLoadVector
A load vector already applied, which does not scales.
NonLinearStatic_stiffnessMode
Type determining the stiffness mode.
@ nls_secantInitialStiffness
The secant stiffness is used and updated only at the beginning of new load step.
@ nls_secantStiffness
The secant stiffness is used and updated whenever requested.
@ nls_tangentStiffness
The tangent stiffness is used and updated whenever requested.
@ nls_elasticStiffness
The initial elastic stiffness is used in the whole solution.
NonLinearStatic_controlType
Type determining type of loading control. This type determines the solver to be used.
@ nls_indirectControl
A generalized norm of displacement and loading vectors is controlled. In current implementation,...
@ nls_directControl
Describes the direct control where load or displacement (or both) are controlled.
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]