51#define _IFT_CylindricalALM_Name "calm"
52#define _IFT_CylindricalALM_psi "psi"
53#define _IFT_CylindricalALM_maxiter "maxiter"
54#define _IFT_CylindricalALM_maxrestarts "maxrestarts"
55#define _IFT_CylindricalALM_minsteplength "minsteplength"
56#define _IFT_CylindricalALM_steplength "steplength"
57#define _IFT_CylindricalALM_initialsteplength "initialsteplength"
58#define _IFT_CylindricalALM_forcedinitialsteplength "forcedinitialsteplength"
59#define _IFT_CylindricalALM_reqiterations "reqiterations"
60#define _IFT_CylindricalALM_miniterations "miniter"
61#define _IFT_CylindricalALM_manrmsteps "manrmsteps"
62#define _IFT_CylindricalALM_hpcmode "hpcmode"
63#define _IFT_CylindricalALM_hpc "hpc"
64#define _IFT_CylindricalALM_hpcw "hpcw"
65#define _IFT_CylindricalALM_lstype "lstype"
66#define _IFT_CylindricalALM_linesearch "linesearch"
67#define _IFT_CylindricalALM_lsearchtol "lsearchtol"
68#define _IFT_CylindricalALM_lsearchamp "lsearchamp"
69#define _IFT_CylindricalALM_lsearchmaxeta "lsearchmaxeta"
70#define _IFT_CylindricalALM_nccdg "nccdg"
71#define _IFT_CylindricalALM_ccdg "ccdg"
72#define _IFT_CylindricalALM_rtolv "rtolv"
73#define _IFT_CylindricalALM_rtolf "rtolf"
74#define _IFT_CylindricalALM_rtold "rtold"
75#define _IFT_CylindricalALM_rootselectiontype "rootselectiontype"
84#define calm_SMALL_NUM 1.e-20
85#define calm_SMALL_ERROR_NUM 1.e-6
262 void convertHPCMap();
269 double deltaL,
double DeltaLambda0,
int neq);
272 double maxeta,
double mineta,
int &status);
277 double Lambda,
double RR0,
double RR,
double drProduct,
278 const FloatArray &internalForcesEBENorm,
int nite,
bool &errorOutOfRange);
284 double &DeltaLambda,
double &DeltaLambdam1,
double &deltaLambda,
285 double &Lambda,
double &ReachedLambda,
double RR,
double &drProduct,
TimeStep *tStep);
#define _IFT_CylindricalALM_Name
void setDomain(Domain *d) override
FloatArray rtold
Relative iterative displacement change tolerance for each group.
void setStepLength(double s) override
int minIterations
Minimum hard number of iteration.s.
FloatArray calm_HPCDmanWeightSrcArray
Input array of dofman weights (for hpcmode 2).
ParallelContext * parallel_context
Parallel context for computing norms, dot products and such.
std ::set< DofIDItem > __DofIDSet
ConvergedReason solve(SparseMtrx &K, FloatArray &R, FloatArray *R0, FloatArray &X, FloatArray &dX, FloatArray &F, const FloatArray &internalForcesEBENorm, double &ReachedLambda, referenceLoadInputModeType rlm, int &nite, TimeStep *) override
const char * giveInputRecordName() const
FloatArray calm_HPCWeights
double ls_tolerance
Line search tolerance.
calm_NR_ModeType calm_NR_Mode
CylindricalALM(Domain *d, EngngModel *m)
calm_ControlType
CALM mode type; determines the calm step length control.
@ calml_hpc
Linearized ALM (only displacements), taking into account only selected dofs with given weight.
@ calm_hpc_on
Full ALM with quadratic constrain, taking into account only selected dofs.
@ calm_hpc_off
Full ALM with quadratic constrain and all dofs.
calm_NR_ModeType calm_NR_OldMode
int numberOfRequiredIterations
double amplifFactor
Line search amplification factor.
int calm_hpc_init
Variables for HyperPlaneControl.
double giveCurrentStepLength() override
int lsFlag
Line search flag.
int nccdg
Number of convergence criteria dof groups.
calm_NR_ModeType
Controlling mode of Newton-Raphson Method.
@ calm_modifiedNRM
Keeps the old tangent.
@ calm_accelNRM
Updates the tangent after a few steps.
@ calm_fullNRM
Updates the tangent every iteration.
IntArray calm_HPCDmanDofSrcArray
Input array containing dofmanagers and corresponding dof numbers under indirect control.
calm_ControlType calm_Control
void reinitialize() override
LinSystSolverType solverType
linear system solver ID.
std ::unique_ptr< SparseLinearSystemNM > linSolver
Linear system solver.
IntArray calm_HPCIndirectDofMask
Array containing equation numbers of dofs under indirect control.
FloatArray old_dX
previous increment of dX, needed by root selection type 1
std ::vector< __DofIDSet > ccDofGroups
Convergence criteria dof groups.
bool referenceLoad() const override
double maxEta
Line search parameters (limits).
const char * giveClassName() const override
RootSelectionType rootselectiontype
Root selection type.
FloatArray rtolf
Relative unbalanced force tolerance for each group.
Domain * domain
Pointer to domain.
SparseNonLinearSystemNM(Domain *d, EngngModel *m)
Constructor.
referenceLoadInputModeType