 |
Ice Sheet System Model
4.18
Code documentation
|
Go to the source code of this file.
◆ solutionsequence_FScoupling_nonlinear()
void solutionsequence_FScoupling_nonlinear |
( |
FemModel * |
femmodel, |
|
|
bool |
conserve_loads |
|
) |
| |
Definition at line 11 of file solutionsequence_stokescoupling_nonlinear.cpp.
32 int min_mechanical_constraints;
33 int max_nonlinear_iterations;
62 delete old_uf_horiz; old_uf_horiz=uf_horiz;
67 Reduceloadx(pf_horiz, Kfs_horiz, ys);
delete Kfs_horiz;
74 convergence(&converged,Kff_horiz,pf_horiz,uf_horiz,old_uf_horiz,eps_res,eps_rel,eps_abs);
delete Kff_horiz;
delete pf_horiz;
delete df_horiz;
82 Reduceloadx(pf_vert, Kfs_vert, ys);
delete Kfs_vert;
84 Solverx(&uf_vert, Kff_vert, pf_vert, NULL, df_vert,
femmodel->
parameters);
delete Kff_vert;
delete pf_vert;
delete df_vert;
94 if(converged==
true)
break;
95 if(count>=max_nonlinear_iterations){
96 _printf0_(
" maximum number of iterations (" << max_nonlinear_iterations <<
") exceeded\n");
void Mergesolutionfromftogx(Vector< IssmDouble > **pug, Vector< IssmDouble > *uf, Vector< IssmDouble > *ys, Nodes *nodes, Parameters *parameters, bool flag_ys0)
#define _printf0_(StreamArgs)
@ StressbalanceAnalysisEnum
void Solverx(Vector< IssmDouble > **puf, Matrix< IssmDouble > *Kff, Vector< IssmDouble > *pf, Vector< IssmDouble > *uf0, Vector< IssmDouble > *df, Parameters *parameters)
@ StressbalanceRiftPenaltyThresholdEnum
@ StressbalanceMaxiterEnum
void UpdateConstraintsx(void)
@ StressbalanceAbstolEnum
@ StressbalanceReltolEnum
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)
@ StressbalanceVerticalAnalysisEnum
void Start(int tagenum, bool dontmpisync=true)
@ StressbalanceRestolEnum
void SetCurrentConfiguration(int configuration_type)
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)