PETScKrylovSolver does not inherit parameters from the (global) parameters

Issue #1107 new
Onyu Kim created an issue

Hello, FEniCS team

d = {
    'mesh_partitioner': 'SCOTCH',
    # 'mesh_partitioner': 'ParMETIS',
    'form_compiler': {
        'cpp_optimize_flags': '-O3 -march=native -mtune=native'
    },
    'print_mpi_thread_support_level': True,
    'std_out_all_processes': False,
    'krylov_solver': {
        'absolute_tolerance': 1e-50,
        'divergence_limit': 1e5,
        'error_on_nonconvergence': False,
        'maximum_iterations': 10000,
        'monitor_convergence': True,
        # 'nonzero_initial_guess': True,
        'relative_tolerance': 1e-6,
        # 'report': False
    }
}

parameters.update(d)

print('KrylovSolver')
for k,v in dolfin.KrylovSolver().parameters.items():
    print(f' {k:30s}: {v.value()}')
print('PETScKrylovSolver')
for k,v in dolfin.PETScKrylovSolver().parameters.items():
    print(f' {k:30s}: {v.value()}')

produces following results:

KrylovSolver
 absolute_tolerance            : 1e-50
 divergence_limit              : 100000.0
 error_on_nonconvergence       : False
 maximum_iterations            : 10000
 monitor_convergence           : True
 nonzero_initial_guess         : None
 relative_tolerance            : 1e-06
 report                        : None
PETScKrylovSolver
 absolute_tolerance            : None
 convergence_norm_type         : None
 divergence_limit              : None
 error_on_nonconvergence       : None
 maximum_iterations            : None
 monitor_convergence           : None
 nonzero_initial_guess         : None
 relative_tolerance            : None
 report                        : None

Is this correct?

Best,

Onyu Kim

Comments (2)

  1. Log in to comment