How to improve the computing speed of a THM model on OGS6?

Dear all,

I am a newbie in OGS6, and I would like to improve the computing speed of a THM (THERMO_HYDRO_MECHANICS) model on OGS6 6.4.0. I use a linear mesh in my model, and time step is 100s. Could anyone give me some advices? I attach my files here,
model.zip (1.0 MB)

The situation is when I was trying to increase the time step to save computing time, the model cannot be convergent in the latter steps. So, I found 100s would be a suitable time step to keep the calculating going on. However, in this way, the computing time is too long, for example, the model time is set to 3600s, and I need 3200s in the real world to complete this simulation.

Best,
Rui

By the way, I also want to inquire how to use all CPU cores (even GPUs) for computing because I found not all CPU cores took part in. I guess if all CPU cores can participate in computing, the speed would be increased.

Hi @Rui_Feng,
from looking at the input file, there are 2 main things you can do:

  • time stepping: not sure about the behavior of your problem, but having I look at how many linear steps are needed for the nonlinear solver to converge over time could help to gain some insight. An adaptive time stepping scheme like iteration number based time stepping could improve the time discretization in the right manner. With adaptive time stepping you can also reduce the maximum number of nonlinear steps further.
  • The linear solver: Here you have a lot of options in theory. Nevertheless, most of the options require some effort to get them working. If you want to stick with Eigen as library, SparseLU is the only direct solver that works out of the box. Its main disadvantage is that it is not parallelized. If you compile OGS with MKL you can use PardisoLU which is a parallelized direct solver (here are some hints if you run into trouble: PardisoLU fails with unspecific message - #13 by joergbuchwald, and I would also suggest to switch off scaling for Pardiso as it leads sometimes into more trouble). This should work quite well for your problem size(~30000 nodes). Alternatively, you could also try an iterative solver like BiCGSTAB which works also out-of-the-box and is parallelized together with DIAGONAL preconditioning. However, it depends very much on the problem whether the solver converges. You could also try to precondition BiCGSTAB with ILUT and scaling switched on to achieve sometimes better convergence.
    Unfortunately, ILUT is not parallelized, but it might be faster than SparseLU.
    With PETSc or LIS libraries you will have even more possibilities, and you could also make use of MPI parallelization (However I suspect no big advantages for your problem size).
1 Like

Dear @joergbuchwald ,

Thank your constant kind helps! I have no words to thank you. I will try the methods you mentioned here, and my model is for investigating and testing the fault stability under EGS stimulations, like this

Happy new year in advance!

All the best,
Rui

Dear @joergbuchwald

Would you mind sharing more details or step-by-step about how to compile OGS6 with Intel MKL?

I am using WSL to reach it, but there are so many problems. Two main problems are

(1) When I built configuration under Ubuntu 20.04 LTS using WSL, there is no OGS_USE_MKL option. So, I think I should install Intel MKL before the configuring, but this MKL library is grouped into Intel oneAPI Base Toolkit. How to install this MKL library under WSL? Would you mind sharing your strategy?

(2) There were 6-7 configuration failures during my configuring process, but I pressed C to continue and it indeed shown “configuration done” in the end. I was happy at that moment, but when I saw the /build/release/bin, there are only “OpenGeoSysCND.xsd, OpenGeoSysGLI.xsd, OpenGeoSysNum.xsd, OpenGeoSysProject.xsd, OpenGeoSysSTN.xsd”, which are not what we want to get after the configuration. Would you mind giving some advice about this?

Finally, I would like to stress on one thing here: the goal of these efforts is for enabling PardisoLU for the liner solver (with Eigen library) to improve computing speed. Adaptive time stepping and BiCGSTAB with DIAGONAL, you mentioned above, didn’t work well for my case.

Looking forward to hearing from you!
Rui

(1) I have no idea what WSL is, but I gave the usual steps for installing IntelOneAPI/MKL in the other thread (INTEL MKL: undefined symbol - #4 by joergbuchwald).
(2) I have no idea what the configuration failures are, but in order to compile OGS with MKL you need to install Intel MKL first.

Dear @joergbuchwald

WSL is Windows Subsystem for Linux. I follow this alternative setup Set Up Prerequisites.

Thanks very much for your reply in another thread! I will try it then.

Best,
Rui

Okay, it sounds like windows under linux, but it is the other way round isn’t it?

Dear @joergbuchwald
It is a new function on Windows 11. We can install a linux subsystem (e.g. ubuntu) under Windows 11. Windows Subsystem for Linux
Windows Subsystem for Linux - Wikipedia
Set up a WSL development environment | Microsoft Docs
Windows Subsystem for Linux Documentation | Microsoft Docs

Maybe I should follow this guide Getting Started — CMake Tools 1.4.0 documentation to configure my project. :face_with_raised_eyebrow:

Thx, but I think there should not be a significant difference between the subsystem and a real installation with respect to software things.
Concerning CMake, I think in this level, i.e. without writing CMake files yourself and only configuring ogs, you should understand things (like using ccmake) quite quickly.

Dear @joergbuchwald

Thanks so much for your help. I finally made configuration and build work on Windows shown in this post How to use intel mkl in cmake-gui under Windows? - #3 by Rui_Feng. But I would like to inquire how to switch off scaling for PardisoLU since I encountered this error when I used PardisoLU as my linear solver:

PS D:\Software\OGS6\test_speed\PardisoLU> ogs cold_water_real_3600in_3600no_3600in.prj
info: This is OpenGeoSys-6 version NO_VERSION.
info: OGS started on 2022-02-05 16:08:25+0800.
debug: Project configuration from file 'cold_water_real_3600in_3600no_3600in.prj' read.
debug: Reading multiple meshes.
debug: Reading mesh file 'fault_playing_mesh_linear.vtu'.
debug: Reading mesh file 'fault_doing_geometry_left_boundary.vtu'.
debug: Reading mesh file 'fault_doing_geometry_bottom_boundary.vtu'.
debug: Reading mesh file 'fault_doing_geometry_right_boundary.vtu'.
debug: Reading mesh file 'fault_doing_geometry_top_boundary.vtu'.
debug: Reading mesh file 'fault_playing_production.vtu'.
debug: Reading mesh file 'fault_playing_injection.vtu'.
debug: Reading curves configuration.
debug: Reading parameters:
info: FunctionParameter: sigma0
info: CurveScaledParameter: thermal_expansivity_increasing
debug: Using curve thermal_expansivity_curve
debug: Using parameter thermal_expansivity_curve_base
info: GroupBasedParameter: thermal_expansivity_curve_base
debug: Using group_id_property MaterialIDs
info: ConstantParameter: E
debug: Using value 5e+10 for constant parameter.
info: ConstantParameter: nu
debug: Using value 0.3 for constant parameter.
info: ConstantParameter: T0
debug: Using value 423.15 for constant parameter.
info: ConstantParameter: temperature0
debug: Using value 423.15 for constant parameter.
info: ConstantParameter: temperature_left_boundary
debug: Using value 423.15 for constant parameter.
info: ConstantParameter: temperature_bottom_boundary
debug: Using value 423.15 for constant parameter.
info: ConstantParameter: temperature_right_boundary
debug: Using value 423.15 for constant parameter.
info: ConstantParameter: temperature_top_boundary
debug: Using value 423.15 for constant parameter.
info: FunctionParameter: P0
info: FunctionParameter: P_left_boundary
info: FunctionParameter: P_bottom_boundary
info: FunctionParameter: P_right_boundary
info: FunctionParameter: P_top_boundary
info: ConstantParameter: displacement0
debug: Using following values for the constant parameter:
debug:  0
debug:  0
info: ConstantParameter: dirichlet0
debug: Using following values for the constant parameter:
debug:  0
info: CurveScaledParameter: p_source_term_out_well
debug: Using curve p_source_term_out_well_curve
debug: Using parameter p_source_term_out_well_curve_base
info: ConstantParameter: p_source_term_out_well_curve_base
debug: Using value 1 for constant parameter.
info: CurveScaledParameter: p_source_term_in_well
debug: Using curve p_source_term_in_well_curve
debug: Using parameter p_source_term_in_well_curve_base
info: ConstantParameter: p_source_term_in_well_curve_base
debug: Using value 1 for constant parameter.
info: CurveScaledParameter: T_source_term_in_well
debug: Using curve T_source_term_in_well_curve
debug: Using parameter T_source_term_in_well_curve_base
info: ConstantParameter: T_source_term_in_well_curve_base
debug: Using value 1 for constant parameter.
debug: Found parameter `thermal_expansivity_curve_base'.
debug: Found parameter `p_source_term_out_well_curve_base'.
debug: Found parameter `p_source_term_in_well_curve_base'.
debug: Found parameter `T_source_term_in_well_curve_base'.
debug: Parse process variables:
debug: Found parameter `temperature0'.
debug: Constructing process variable temperature
debug: Found mesh 'fault_doing_geometry_left_boundary' with id 1.
debug: Found mesh 'fault_doing_geometry_bottom_boundary' with id 2.
debug: Found mesh 'fault_doing_geometry_right_boundary' with id 3.
debug: Found mesh 'fault_doing_geometry_top_boundary' with id 4.
debug: Found mesh 'fault_playing_injection' with id 6.
debug: Found parameter `P0'.
debug: Constructing process variable pressure
debug: Found mesh 'fault_doing_geometry_left_boundary' with id 1.
debug: Found mesh 'fault_doing_geometry_bottom_boundary' with id 2.
debug: Found mesh 'fault_doing_geometry_right_boundary' with id 3.
debug: Found mesh 'fault_doing_geometry_top_boundary' with id 4.
debug: Found mesh 'fault_playing_production' with id 5.
debug: Found mesh 'fault_playing_injection' with id 6.
debug: Found parameter `displacement0'.
debug: Constructing process variable displacement
debug: Found mesh 'fault_doing_geometry_left_boundary' with id 1.
debug: Found mesh 'fault_doing_geometry_bottom_boundary' with id 2.
debug: Found mesh 'fault_doing_geometry_right_boundary' with id 3.
info: No source terms for process variable 'displacement' found.
debug: Reading media:
debug: Create Constant property specific_heat_capacity.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property density.
debug: Create Constant property thermal_expansivity.
debug: Create Constant property viscosity.
debug: Create Constant property storage.
debug: Create Constant property density.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property specific_heat_capacity.
debug: Create Parameter property thermal_expansivity.
debug: Found parameter `thermal_expansivity_increasing'.
debug: Create Constant property thermal_longitudinal_dispersivity.
debug: Create Constant property thermal_transversal_dispersivity.
debug: Create Constant property permeability.
debug: Create Constant property porosity.
debug: Create Constant property biot_coefficient.
debug: Create effective thermal_conductivity property from porosity mixing thermal_conductivity.
debug: Create Constant property specific_heat_capacity.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property density.
debug: Create Constant property thermal_expansivity.
debug: Create Constant property viscosity.
debug: Create Constant property storage.
debug: Create Constant property density.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property specific_heat_capacity.
debug: Create Parameter property thermal_expansivity.
debug: Found parameter `thermal_expansivity_increasing'.
debug: Create Constant property thermal_longitudinal_dispersivity.
debug: Create Constant property thermal_transversal_dispersivity.
debug: Create Constant property permeability.
debug: Create Constant property porosity.
debug: Create Constant property biot_coefficient.
debug: Create effective thermal_conductivity property from porosity mixing thermal_conductivity.
debug: Create Constant property specific_heat_capacity.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property density.
debug: Create Constant property thermal_expansivity.
debug: Create Constant property viscosity.
debug: Create Constant property storage.
debug: Create Constant property density.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property specific_heat_capacity.
debug: Create Parameter property thermal_expansivity.
debug: Found parameter `thermal_expansivity_increasing'.
debug: Create Constant property thermal_longitudinal_dispersivity.
debug: Create Constant property thermal_transversal_dispersivity.
debug: Create Constant property permeability.
debug: Create Constant property porosity.
debug: Create Constant property biot_coefficient.
debug: Create effective thermal_conductivity property from porosity mixing thermal_conductivity.
debug: Create Constant property specific_heat_capacity.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property density.
debug: Create Constant property thermal_expansivity.
debug: Create Constant property viscosity.
debug: Create Constant property storage.
debug: Create Constant property density.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property specific_heat_capacity.
debug: Create Parameter property thermal_expansivity.
debug: Found parameter `thermal_expansivity_increasing'.
debug: Create Constant property thermal_longitudinal_dispersivity.
debug: Create Constant property thermal_transversal_dispersivity.
debug: Create Constant property permeability.
debug: Create Constant property porosity.
debug: Create Constant property biot_coefficient.
debug: Create effective thermal_conductivity property from porosity mixing thermal_conductivity.
debug: Create Constant property specific_heat_capacity.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property density.
debug: Create Constant property thermal_expansivity.
debug: Create Constant property viscosity.
debug: Create Constant property storage.
debug: Create Constant property density.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property specific_heat_capacity.
debug: Create Parameter property thermal_expansivity.
debug: Found parameter `thermal_expansivity_increasing'.
debug: Create Constant property thermal_longitudinal_dispersivity.
debug: Create Constant property thermal_transversal_dispersivity.
debug: Create Constant property permeability.
debug: Create Constant property porosity.
debug: Create Constant property biot_coefficient.
debug: Create effective thermal_conductivity property from porosity mixing thermal_conductivity.
debug: Create Constant property specific_heat_capacity.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property density.
debug: Create Constant property thermal_expansivity.
debug: Create Constant property viscosity.
debug: Create Constant property storage.
debug: Create Constant property density.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property specific_heat_capacity.
debug: Create Parameter property thermal_expansivity.
debug: Found parameter `thermal_expansivity_increasing'.
debug: Create Constant property thermal_longitudinal_dispersivity.
debug: Create Constant property thermal_transversal_dispersivity.
debug: Create Constant property permeability.
debug: Create Constant property porosity.
debug: Create Constant property biot_coefficient.
debug: Create effective thermal_conductivity property from porosity mixing thermal_conductivity.
debug: Create Constant property specific_heat_capacity.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property density.
debug: Create Constant property thermal_expansivity.
debug: Create Constant property viscosity.
debug: Create Constant property storage.
debug: Create Constant property density.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property specific_heat_capacity.
debug: Create Parameter property thermal_expansivity.
debug: Found parameter `thermal_expansivity_increasing'.
debug: Create Constant property thermal_longitudinal_dispersivity.
debug: Create Constant property thermal_transversal_dispersivity.
debug: Create Constant property permeability.
debug: Create Constant property porosity.
debug: Create Constant property biot_coefficient.
debug: Create effective thermal_conductivity property from porosity mixing thermal_conductivity.
debug: Create Constant property specific_heat_capacity.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property density.
debug: Create Constant property thermal_expansivity.
debug: Create Constant property viscosity.
debug: Create Constant property storage.
debug: Create Constant property density.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property specific_heat_capacity.
debug: Create Parameter property thermal_expansivity.
debug: Found parameter `thermal_expansivity_increasing'.
debug: Create Constant property thermal_longitudinal_dispersivity.
debug: Create Constant property thermal_transversal_dispersivity.
debug: Create Constant property permeability.
debug: Create Constant property porosity.
debug: Create Constant property biot_coefficient.
debug: Create effective thermal_conductivity property from porosity mixing thermal_conductivity.
debug: Create Constant property specific_heat_capacity.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property density.
debug: Create Constant property thermal_expansivity.
debug: Create Constant property viscosity.
debug: Create Constant property storage.
debug: Create Constant property density.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property specific_heat_capacity.
debug: Create Parameter property thermal_expansivity.
debug: Found parameter `thermal_expansivity_increasing'.
debug: Create Constant property thermal_longitudinal_dispersivity.
debug: Create Constant property thermal_transversal_dispersivity.
debug: Create Constant property permeability.
debug: Create Constant property porosity.
debug: Create Constant property biot_coefficient.
debug: Create effective thermal_conductivity property from porosity mixing thermal_conductivity.
debug: Create Constant property specific_heat_capacity.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property density.
debug: Create Constant property thermal_expansivity.
debug: Create Constant property viscosity.
debug: Create Constant property storage.
debug: Create Constant property density.
debug: Create Constant property thermal_conductivity.
debug: Create Constant property specific_heat_capacity.
debug: Create Parameter property thermal_expansivity.
debug: Found parameter `thermal_expansivity_increasing'.
debug: Create Constant property thermal_longitudinal_dispersivity.
debug: Create Constant property thermal_transversal_dispersivity.
debug: Create Constant property permeability.
debug: Create Constant property porosity.
debug: Create Constant property biot_coefficient.
debug: Create effective thermal_conductivity property from porosity mixing thermal_conductivity.
debug: Reading linear solver configuration.
debug: Reading processes:
debug: Create ThermoHydroMechanicsProcess.
debug: Found process variable 'temperature' for config tag <temperature>.
debug: Found process variable 'pressure' for config tag <pressure>.
debug: Found process variable 'displacement' for config tag <displacement>.
debug: Associate displacement with process variable 'displacement'.
debug: Associate pressure with process variable 'pressure'.
debug: Associate temperature with process variable 'temperature'.
debug: Create LinearElasticIsotropic material
debug: Found parameter `E'.
debug: Use 'E' as youngs_modulus parameter.
debug: Found parameter `nu'.
debug: Use 'nu' as poissons_ratio parameter.
debug: Found 1 constitutive relations.
debug: Found parameter `sigma0'.
debug: Reading non-linear solver configuration.
debug: Reading time loop configuration.
debug: Parse output configuration:
debug: adding output variable `displacement'
debug: adding output variable `pressure'
debug: adding output variable `temperature'
debug: adding output variable `sigma'
debug: adding output variable `epsilon'
info: Initialize processes.
debug: Initialize process.
debug: Construct dof mappings.
debug: Compute sparsity pattern
debug: Initialize the extrapolator
debug: Create local assemblers.
debug: Calling local assembler builder for all mesh elements.
debug: Initialize boundary conditions.
debug: Constructing DirichletBoundaryCondition from config.
debug: Using parameter temperature_left_boundary
debug: Found parameter `temperature_left_boundary'.
debug: Found 21 nodes for Dirichlet BCs for the variable 0 and component 0
debug: Construct reduced local to global index map.
debug: Constructing DirichletBoundaryCondition from config.
debug: Using parameter temperature_bottom_boundary
debug: Found parameter `temperature_bottom_boundary'.
debug: Found 21 nodes for Dirichlet BCs for the variable 0 and component 0
debug: Construct reduced local to global index map.
debug: Constructing DirichletBoundaryCondition from config.
debug: Using parameter temperature_right_boundary
debug: Found parameter `temperature_right_boundary'.
debug: Found 21 nodes for Dirichlet BCs for the variable 0 and component 0
debug: Construct reduced local to global index map.
debug: Constructing DirichletBoundaryCondition from config.
debug: Using parameter temperature_top_boundary
debug: Found parameter `temperature_top_boundary'.
debug: Found 21 nodes for Dirichlet BCs for the variable 0 and component 0
debug: Construct reduced local to global index map.
debug: Constructing DirichletBoundaryCondition from config.
debug: Using parameter P_left_boundary
debug: Found parameter `P_left_boundary'.
debug: Found 21 nodes for Dirichlet BCs for the variable 1 and component 0
debug: Construct reduced local to global index map.
debug: Constructing DirichletBoundaryCondition from config.
debug: Using parameter P_bottom_boundary
debug: Found parameter `P_bottom_boundary'.
debug: Found 21 nodes for Dirichlet BCs for the variable 1 and component 0
debug: Construct reduced local to global index map.
debug: Constructing DirichletBoundaryCondition from config.
debug: Using parameter P_right_boundary
debug: Found parameter `P_right_boundary'.
debug: Found 21 nodes for Dirichlet BCs for the variable 1 and component 0
debug: Construct reduced local to global index map.
debug: Constructing DirichletBoundaryCondition from config.
debug: Using parameter P_top_boundary
debug: Found parameter `P_top_boundary'.
debug: Found 21 nodes for Dirichlet BCs for the variable 1 and component 0
debug: Construct reduced local to global index map.
debug: Constructing DirichletBoundaryCondition from config.
debug: Using parameter dirichlet0
debug: Found parameter `dirichlet0'.
debug: Found 21 nodes for Dirichlet BCs for the variable 2 and component 0
debug: Construct reduced local to global index map.
debug: Constructing DirichletBoundaryCondition from config.
debug: Using parameter dirichlet0
debug: Found parameter `dirichlet0'.
debug: Found 21 nodes for Dirichlet BCs for the variable 2 and component 1
debug: Construct reduced local to global index map.
debug: Constructing DirichletBoundaryCondition from config.
debug: Using parameter dirichlet0
debug: Found parameter `dirichlet0'.
debug: Found 21 nodes for Dirichlet BCs for the variable 2 and component 0
debug: Construct reduced local to global index map.
debug: Found 312 nodes for source term at mesh 'fault_playing_injection' for the variable 0 and component 0
debug: Construct reduced local to global index map.
debug: Constructing VolumetricSourceTerm from config.
debug: Found parameter `T_source_term_in_well'.
debug: Using 'T_source_term_in_well' as volumetric source term parameter.
debug: Create local assemblers.
debug: Create local assemblers.
debug: Calling local assembler builder for all mesh elements.
debug: Found 312 nodes for source term at mesh 'fault_playing_production' for the variable 1 and component 0
debug: Construct reduced local to global index map.
debug: Constructing VolumetricSourceTerm from config.
debug: Found parameter `p_source_term_out_well'.
debug: Using 'p_source_term_out_well' as volumetric source term parameter.
debug: Create local assemblers.
debug: Create local assemblers.
debug: Calling local assembler builder for all mesh elements.
debug: Found 312 nodes for source term at mesh 'fault_playing_injection' for the variable 1 and component 0
debug: Construct reduced local to global index map.
debug: Constructing VolumetricSourceTerm from config.
debug: Found parameter `p_source_term_in_well'.
debug: Using 'p_source_term_in_well' as volumetric source term parameter.
debug: Create local assemblers.
debug: Create local assemblers.
debug: Calling local assembler builder for all mesh elements.
info: Solve processes.
debug: Set the initial condition of variable temperature of process 0.
debug: Set the initial condition of variable pressure of process 0.
debug: Set the initial condition of variable displacement of process 0.
debug: PreTimestep ThermoHydroMechanicsProcess.
debug: Compute the secondary variables for ThermoHydroMechanicsProcess.
debug: Process output data.
debug:   process variable temperature
debug:   process variable pressure
debug:   process variable displacement
debug:   secondary variable epsilon
debug: Computing new singular value decomposition
debug:   secondary variable sigma
debug: Writing output to 'Initialization_ts_0_t_0.000000.vtu'.
info: [time] Output of timestep 0 took 6.23828 s.
info: === Time stepping at step #1 and time 100 with step size 100
info: Calculate non-equilibrium initial residuum.
debug: PreTimestep ThermoHydroMechanicsProcess.
debug: Assemble the Jacobian of ThermoHydroMechanics for the monolithic scheme.
debug: Assemble VolumetricSourceTerm.
debug: Assemble VolumetricSourceTerm.
debug: Assemble VolumetricSourceTerm.
info: [time] Assembly took 147.413 s.
info: [time] Applying Dirichlet BCs took 0.40803 s.
info: ------------------------------------------------------------------
info: *** Eigen solver computation
info: -> scale
info: -> solve with Eigen direct linear solver PardisoLU
error: Failed during Eigen linear solver initialization
info: ------------------------------------------------------------------
info: [time] Linear solver took 29.9208 s.
error: Newton: The linear solver failed.
info: [time] Solving process #0 took 177.785 s in time step #1
error: The nonlinear solver failed in time step #1 at t = 100 s for process #0.
debug: Process output data.
debug:   process variable temperature
debug:   process variable pressure
debug:   process variable displacement
debug:   secondary variable epsilon
debug:   secondary variable sigma
debug: Writing output to 'Initialization_ts_1_t_100.000000.vtu'.
info: [time] Output of timestep 1 took 6.31346 s.
critical: D:/Software/OGS6/ogs6_4_1_source_code_10/ogs-master/ProcessLib/TimeLoop.cpp:694 ProcessLib::TimeLoop::solveUncoupledEquationSystems()
PS D:\Software\OGS6\test_speed\PardisoLU>

Note of OS information:
ogs source code version: 6.4.1 (latest), from ogs / ogs · GitLab (by zip),
Operating system / hardware information: Windows 11 (I am not using WSL2, just Windows 11),Intel Core i7-1185G7 3.00GHz, 16 GB RAM),
CMake-gui version: 3.22.2
Intel MKL version: w_BaseKit_p_2022.1.2.154_offline.exe
my prj files:
test_PardisoLU.zip (1.0 MB)

Btw, I cannot find any BLAS variables in CMake-gui.

Best,
Rui

  • I’m pretty sure that your problem is the same as this: https://discourse.opengeosys.org/t/pardisolu-fails-with-unspecific-message/ So, you need to empty the BLAS variables. In this post, it is described that you need to toggle into advanced mode (with t in ccmake) in order to find them. I think in CMake-GUI it will be similar, you can somewhere switch to advanced mode. Don’t delete the entire variables, just remove the mkl related paths. This might take about 2 or 3 configure iterations.
  • scaling can be easily switched off in the project file. I think you will find that out by yourself.
  • From the output, it seems that you compiled OGS in debug mode. I would recommend to switch to release for the real model runs as OGS is significantly slower in debug mode.
1 Like

Dear @joergbuchwald

After following your suggestion, the new ogs.exe (on Windows) complied by myself works very well for my THM model using PardisoLU!!! Computing time is reduced from previous 3 hours to current 30 mins! Thanks so much! I completed these efforts and really enjoy this process:

Btw, for the new users who could have the same problems as me, more detial about how to complie OGS6 using Intel mkl on Windows cmake-gui, please also refer to this post, How to use intel mkl in cmake-gui under Windows?

Cheers,
Rui