Reasons for good robustness under strong convective hydrothermal problems in OGS6

Hi all, I am trying to solve a THM problem with staggered scheme using OGS6. I found that staggered scheme has been implemented into HT module but there is not any stablization concerning about the convective heat flux. Then I test a strong convective case with Eigen solver using the existing HT module in ogs6.4.4 and the results look good. But when I use my personal parellel computing branch to solve the same problem with petsc solver the simulation cannot get convergence

 Linear solver cg with bjacobi preconditioner
Warning: maximum number of iterations reached.
[0] info: [time] Linear solver took 13.1202 s.
[0] info: Convergence criterion: |dx|=6.0949e+08, |x|=6.1496e+08, |dx|/|x|=9.9111e-01
[0] info: [time] Iteration #7 took 13.3224 s.
[0] info: [time] Assembly took 0.203315 s.
[0] info: [time] Applying Dirichlet BCs took 9.17912e-05 s.
Divergence detected, use command option -ksp_monitor or -log_summary to check the details.
[0] info: [time] Linear solver took 1.16567 s.
[0] error: Picard: The linear solver failed.
[0] info: [time] Solving process #0 took 95.6734 s in time step #1  coupling iteration #1
[0] warning: The nonlinear solver failed in time step #1 at t = 18 s for process #0.
[0] info: [time] Time step #1 took 96.9823 s.
[0] warning: Time step will be rejected due to nonlinear solver divergence.
[0] critical: /mnt/e/OGS-THMPF-REBASED/ogs/ProcessLib/TimeLoop.cpp:426 computeTimeStepping()
[0] error: The new step size of 18 is the same as that of the previous rejected time step.
Please re-run ogs with a proper adjustment in the numerical settings,
e.g those for time stepper, local or global non-linear solver.
[0] info: OGS terminated on 2023-12-07 20:08:24+0800.
[0] error: OGS terminated with error.

. I wonder if anyone can tell me what is the reason for such a good robustness of OGS in a strong heat convective problem. the attached .prj file for HT module is tested with both my personal and the master branch and I didn’t set any stablization methods like FullUpwind and IsotropicDiffusion.
By the way, though I set blocks of Eigen solver computation for the linear sovler part in my project but my personal branch still used some petsc method like Linear solver cg with bjacobi preconditioner to do the computation. Is this because I introduced Petsc so that all the projects will be solved in Petsc? Here is the link of my presonal branch:https://gitlab.opengeosys.org/yUHaOLiu-tj/ogs/-/tree/THMPF-REBASED/ProcessLib/THMPhaseField?ref_type=heads

Best,
Yuhao
2D-inj.zip (1.8 KB)

Hi Yuhao,

your project file does not contain a linear solver configuration for PETSc.
Therefore the default CG with Jacobi preconditioner is used,
which is not able to solve the HT process.

Please add a <petsc> configuration to the linear solvers.
You’ll find a list of linked examples in the documentation: OGS: [tag] petsc

Hi, chleh, thanks for your reply. With a configuration of petsc the simulation can pass. Moreover, I found that if we consider solid thermal expansion term in the fluid flow equation, the default CG with jabobi preconditioner can also solve the problem, but the temperature distribution looks strange like Figure 1. Using the official version when I set solid_thermal_expansion in the project file with Eigen solver, the temperature also has such fluctuations even if I set thermal_expansion, biot constant and porosity as zero.

Ok, so some implemented stablization methods can solve the problem such as FullupWind or IsotropicDiffusion, and the code block in project file writes like:

<numerical_stabilization>
      <type>FullUpwind</type>
      <cutoff_velocity>0.0</cutoff_velocity>
</numerical_stabilization>