LaMEM
LaMEM copied to clipboard
Error occurs with a permeable lower boundary
I would like to set a permeable lower boundary in my model, but always have "NONLINEAR SOLVER FAILED TO CONVERGE!" problem which occurs at STEP 1 or 2 after initial guess.
-------------------------------------------------------------------------
============================== INITIAL GUESS =============================
--------------------------------------------------------------------------
0 SNES Function norm 1.074517965146e+01
0 PICARD ||F||/||F0||=1.000000e+00
Linear js_ solve did not converge due to DIVERGED_ITS iterations 50
1 SNES Function norm 2.368330182036e+06
Nonlinear solve did not converge due to DIVERGED_DTOL iterations 1
--------------------------------------------------------------------------
************** NONLINEAR SOLVER FAILED TO CONVERGE! ******************
--------------------------------------------------------------------------
Number of iterations : 1
SNES solution time : 2.04841 (sec)
--------------------------------------------------------------------------
Residual summary:
Continuity:
|Div|_inf = 1.614184709881e-02
|Div|_2 = 3.028446117248e-01
Momentum:
|mRes|_2 = 2.368330182036e+06
Energy:
|eRes|_2 = 4.512402107700e+03
--------------------------------------------------------------------------
Saving output ... done (0.131675 sec)
--------------------------------------------------------------------------
================================= STEP 1 =================================
--------------------------------------------------------------------------
Current time : 0.00000000 [Myr]
Tentative time step : 0.01000000 [Myr]
--------------------------------------------------------------------------
Phase_Transition ... done (0.0109891 sec)
--------------------------------------------------------------------------
0 SNES Function norm 2.480494688340e+06
0 PICARD ||F||/||F0||=1.000000e+00
Linear js_ solve did not converge due to DIVERGED_ITS iterations 50
1 SNES Function norm 2.487377180434e+06
1 PICARD ||F||/||F0||=1.002775e+00
Linear js_ solve did not converge due to DIVERGED_ITS iterations 50
2 SNES Function norm 2.410771152743e+06
2 PICARD ||F||/||F0||=9.718913e-01
Linear js_ solve did not converge due to DIVERGED_ITS iterations 50
3 SNES Function norm 2.506946831182e+06
3 PICARD ||F||/||F0||=1.010664e+00
Linear js_ solve did not converge due to DIVERGED_NANORINF iterations 0
Nonlinear solve did not converge due to DIVERGED_LINEAR_SOLVE iterations 3
--------------------------------------------------------------------------
************** NONLINEAR SOLVER FAILED TO CONVERGE! ******************
--------------------------------------------------------------------------
SNES Divergence Reason : the linear solve failed
[0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------
[0]PETSC ERROR: Severe divergence reason detected (see above)
I have no idea if any other (values of) parameters should be adjusted if the permeable lower boundary is turned on.
I would appreciate it very much if anyone could help me.
#===============================================================================
# Boundary conditions
#===============================================================================
# temperature on the top & bottom boundaries [usually constant]
temp_top = 20.0
temp_bot = 1600.0
# temperature initial guess flag
# linear profile between temp_top and temp_bot
init_temp = 1;
open_top_bound = 1
# No-slip boundary flag mask (left right front back bottom top)
noslip = 0 0 0 0 0 0
# Permeable lower boundary flag
open_bot_bound = 1
permeable_phase_inflow = 10
The temperature of phase 10 has been set to 1600.0 the same as temp_bot = 1600.0 in the CreateMakers.m file.
BTW, the below is the PETSc options:
#----------------------------------------------------------------------------------
#PETSc options
#----------------------------------------------------------------------------------
<PetscOptionsStart>
-snes_ksp_ew
-snes_ksp_ew_rtolmax 1e-4
-snes_rtol 10e-3
-snes_atol 1e-4
-snes_max_it 200
-snes_PicardSwitchToNewton_rtol 5e-3
-snes_NewtonSwitchToPicard_it 20
-js_ksp_type fgmres
-js_ksp_max_it 50
-js_ksp_atol 1e-8
-js_ksp_rtol 1e-4
-snes_linesearch_type l2
-snes_linesearch_maxstep 20
<PetscOptionsEnd>