ICFERST  22-06
Reservoir simulator based on DCVFEM, Dynamic Mesh optimisation and Surface-based modelling
multi_solvers.F90 File Reference
#include "fdebug.h"
#include "petsc_legacy.h"
Include dependency graph for multi_solvers.F90:

Modules

module  solvers_module
 All the subroutines associated to solving non-linear systems, Schur complement, etc.
 

Functions/Subroutines

subroutine, public solvers_module::boundedsolutioncorrections (state, packed_state, Mdims, CV_funs, small_findrm, small_colm, Field_name, for_sat, min_max_limits)
 The sparcity of the local CV connectivity is in: small_findrm, small_colm. ngl_its=max no of global iterations e.g. 100. error_tol = tolerance on the iterations. More...
 
subroutine, public solvers_module::fpi_backtracking (nphase, Mdims, ndgln, state, packed_state, sat_bak, backtrack_sat, backtrack_par_from_schema, Previous_convergence, satisfactory_convergence, new_backtrack_par, Max_sat_its, its, nonlinear_iteration, useful_sats, res, res_ratio, first_res)
 :In this subroutine we applied some corrections and backtrack_par on the saturations obtained from the saturation equation this subroutine is detailed in Salinas et al. 2017 doi:10.1002/fld.4357 The method ensures convergence "independent" of the time step. More...
 
subroutine, public solvers_module::set_saturation_to_sum_one (mdims, packed_state, state, do_not_update_halos)
 :This subroutines eliminates the oscillations in the saturation that are bigger than a certain tolerance and also sets the saturation to be between bounds More...
 
subroutine, public solvers_module::non_porous_ensure_sum_to_one (Mdims, packed_state, do_not_update_halos)
 : This subroutines eliminates the oscillations in the saturation that are bigger than a certain tolerance and also sets the saturation to be between bounds More...
 
subroutine, public solvers_module::initialise_saturation_sums_one (mdims, packed_state, find_scapegoat_phase)
 :Ensure that the saturations at the beginning sum to one, if they do not all the error is compensated in the scapegoat_phase. Normally the last More...
 
subroutine, public solvers_module::auto_backtracking (Mdims, backtrack_par_factor, courant_number_in, first_time_step, nonlinear_iteration, I_am_temperature)
 : The maximum backtracking factor is calculated based on the Courant number and physical effects ocurring in the domain More...
 
subroutine, public solvers_module::get_anderson_acceleration_new_guess (N, M, NewField, History_field, stored_residuals, max_its, prev_small_matrix, restart_now)
 This subroutine provides a new guess based on previous updates and residuals. Use this subroutine to speed up any system being solved by looping. A new guess is computed and returned Method explained in DOI.10.1137/10078356X. More...
 
subroutine, public solvers_module::scale_petsc_matrix (Mat_petsc)
 In this subroutine the matrix is re-scaled based on the formula D^-0.5 * A * D^-0.5 X'= D^-0.5 b; and next X = D^-0.5 * X'; IMPORTANT: the step X = D^-0.5 * X' needs to be done elsewhere store the diagonal before calling this This should allow to deal with high ranges of viscosity ratio for example A is-written. More...
 
subroutine, public solvers_module::duplicate_petsc_matrix (MAT_A, MAT_B)
 
subroutine, public solvers_module::petsc_stokes_solver (packed_state, Mdims, Mmat, ndgln, Mspars, final_phase, pmat, P_all, deltaP, rhs_p, solver_option_path, Dmat)
 In this subroutine the Schur complement is generated and solved using PETSc to update the pressure field Matrices need to be in petsc format and pmat is the preconditioned matrix, i.e. pmat = A11- A10(AproxA00^-1)A01. More...
 
subroutine solvers_module::convert_c_and_ct_mat_to_petsc_format (packed_state, Mdims, Mmat, ndgln, Mspars, NPHASE)
 : This subroutine converts the C (gradient) and CT (Divergence) matrices into PETSc format Mainly devoted to be used by the PETSc stokes schur solver This can be used when moving from the ICFERST matrix format to PETSc as reference More...