 |
Ice Sheet System Model
4.18
Code documentation
|
: core of the thermal solution
More...
Go to the source code of this file.
: core of the thermal solution
Definition in file solutionsequence_thermal_nonlinear.cpp.
◆ solutionsequence_thermal_nonlinear()
void solutionsequence_thermal_nonlinear |
( |
FemModel * |
femmodel | ) |
|
Definition at line 11 of file solutionsequence_thermal_nonlinear.cpp.
27 bool isenthalpy, isdynamicbasalspc;
28 int constraints_converged;
29 int num_unstable_constraints;
31 int thermal_penalty_threshold;
63 delete tf_old;tf_old=tf;
68 if(isdynamicbasalspc){
82 convergence(&converged,Kff,pf,tf,tf_old,0.05,eps_rel,NAN);
85 delete Kff;
delete pf;
delete df;
95 bool max_iteration_state=
false;
96 if(count>=thermal_maxiter){
97 _printf0_(
" maximum number of nonlinear iterations (" << thermal_maxiter <<
") exceeded\n");
101 max_iteration_state=
true;
113 if(num_unstable_constraints<=thermal_penalty_threshold) converged=
true;
114 if(count>=thermal_maxiter){
116 _printf0_(
" maximum number of iterations (" << thermal_maxiter <<
") exceeded\n");
void Mergesolutionfromftogx(Vector< IssmDouble > **pug, Vector< IssmDouble > *uf, Vector< IssmDouble > *ys, Nodes *nodes, Parameters *parameters, bool flag_ys0)
void ConstraintsStatex(int *pconverged, int *pnum_unstable_constraints, FemModel *femmodel)
static void UpdateBasalConstraints(FemModel *femmodel)
#define _printf0_(StreamArgs)
bool VerboseConvergence(void)
void ResetZigzagCounterx(FemModel *femmodel)
@ TimesteppingTimeStepEnum
@ ThermalIsdynamicbasalspcEnum
static void ComputeBasalMeltingrate(FemModel *femmodel)
void Solverx(Vector< IssmDouble > **puf, Matrix< IssmDouble > *Kff, Vector< IssmDouble > *pf, Vector< IssmDouble > *uf0, Vector< IssmDouble > *df, Parameters *parameters)
@ ThermalPenaltyThresholdEnum
void SetParam(bool boolean, int enum_type)
void UpdateConstraintsx(void)
void Stop(int tagenum, bool dontmpisync=true)
void Reducevectorgtofx(Vector< IssmDouble > **puf, Vector< IssmDouble > *ug, Nodes *nodes, Parameters *parameters)
void Reduceloadx(Vector< IssmDouble > *pf, Matrix< IssmDouble > *Kfs, Vector< IssmDouble > *y_s, bool flag_ys0)
void Start(int tagenum, bool dontmpisync=true)
void FindParam(bool *pinteger, int enum_type)
void CreateNodalConstraintsx(Vector< IssmDouble > **pys, Nodes *nodes)
void SystemMatricesx(Matrix< IssmDouble > **pKff, Matrix< IssmDouble > **pKfs, Vector< IssmDouble > **ppf, Vector< IssmDouble > **pdf, IssmDouble *pkmax, FemModel *femmodel, bool isAllocated)
void convergence(bool *pconverged, Matrix< IssmDouble > *Kff, Vector< IssmDouble > *pf, Vector< IssmDouble > *uf, Vector< IssmDouble > *old_uf, IssmDouble eps_res, IssmDouble eps_rel, IssmDouble eps_abs)