=========================================================================================
*********************** LaMEM LINEAR SOLVER OPTIONS NOMENCLATURE ************************
=========================================================================================

Modify / add more options on a command line or in the input file to override defaults

=========================================================================================

LaMEM implements three different Stokes solvers (input parameter: StokesSolver):

	1 - Powell-Hesteness iterations (prefix: ph_) (DEFAULT SOLVER)
		NOTE: Multigrid methods (VelocitySolver 2 & 3) can not be used with Powell-Hesteness iterations
		DEFAULT OPTIONS:
			-ph_kappa 1e4
			-ph_max_it 50
			-ph_tol 1e-8
			-assemble_inverse_mass_matrix false
	
	2 - Schur Complement Reduction (prefix: scr_)
		DEFAULT OPTIONS:
			-scr_ksp_type fgmres
			-scr_ksp_rtol 1.0e-6
			-scr_ksp_max_it 50
			-scr_ksp_monitor
			-scr_ksp_converged_reason
			-scr_pc_type sor
	
	3 - Fully Coupled Solver (prefix: fc_)
		DEFAULT OPTIONS:
			-fc_ksp_type gcr
			-fc_ksp_rtol 1.0e-6
			-fc_ksp_max_it 100
			-fc_ksp_converged_reason
			-fc_pc_type fieldsplit
			-fc_pc_fieldsplit_type SCHUR
			-fc_pc_fieldsplit_schur_factorization_type UPPER
			-use_stokes_residual      (activate block residual, set to false to switch off)
			-use_stokes_monitor       (activate block monitor, set to false to switch off)
			-use_stokes_relative_norm (use relative tolerance rtol, otherwise atol)
			-use_stokes_norm Linf     (set norm type, choices are: Linf, L2, scaledL2)
	
=========================================================================================

Velocity block solver (prefix: vs_) has four options (input parameter: VelocitySolver):
	
	0 - User defined
		NOTE: Galerkin geometric multigrid can not be configured for user-defined solver
		DEFAULT OPTIONS: 
			none (user should configure solver options with prefix vs_)
		
	1 - Direct (parallel MUMPS / sequential LU) (DEFAULT SOLVER)
		DEFAULT OPTIONS:
			-vs_ksp_type preonly
			-vs_pc_type lu
			-vs_pc_factor_mat_solver_package mumps (for parallel mode)
	
	2 - Galerkin geometric multigrid
		NOTE: Galerkin geometric multigrid can not be used for FDSTAG discretization
		DEFAULT OPTIONS:
			-vs_ksp_type fgmres
			-vs_ksp_rtol 1.0e-6 (for StokesSolver 2)
			-vs_ksp_max_it 500  (for StokesSolver 2)
			-vs_ksp_rtol 1.0e-3 (for StokesSolver 3)
			-vs_ksp_max_it 100  (for StokesSolver 3)
			-vs_pc_type mg
			-vs_pc_mg_levels 2
			-vs_pc_mg_galerkin
			-vs_pc_mg_type multiplicative
			-vs_pc_mg_cycle_type v
			-vs_mg_levels_ksp_type gmres
			-vs_mg_levels_ksp_max_it 4
			-vs_mg_levels_pc_type fieldsplit
			-vs_mg_levels_pc_fieldsplit_type ADDITIVE
			-vs_mg_levels_pc_fieldsplit_block_size 3
			-vs_mg_coarse_ksp_type preonly
			-vs_mg_coarse_pc_type lu                                   (for sequential mode) 
			-vs_mg_coarse_pc_type redundant                            (for parallel mode)
			-vs_mg_coarse_pc_redundant_number 2                        (for parallel mode)
			-vs_mg_coarse_redundant_pc_factor_mat_solver_package mumps (for parallel mode)
	
	3 - Fieldsplit + Algebraic Multigrid (ML)
		DEFAULT OPTIONS:
			-vs_ksp_type gcr"
			-vs_ksp_rtol 1.0e-6 (for StokesSolver 2)
			-vs_ksp_max_it 500  (for StokesSolver 2)
			-vs_ksp_rtol 1.0e-3 (for StokesSolver 3)
			-vs_ksp_max_it 100  (for StokesSolver 3)
			-vs_pc_type fieldsplit
			-vs_pc_fieldsplit_block_size 3
			-vs_pc_fieldsplit_type ADDITIVE
			-vs_fieldsplit_ksp_type preonly
			-vs_fieldsplit_pc_type ml

=========================================================================================

Pressure block solver (prefix: ps_) 
	NOTE: only relevant if StokesSolver 3 (Fully Coupled) is selected 
	DEFAULT OPTIONS:
		-ps_ksp_type preonly
		-ps_pc_type jacobi
			
=========================================================================================
