Anders Logg wrote:
> On Tue, Jul 07, 2009 at 09:07:13PM +0100, Garth N. Wells wrote:
>>
>> Johan Hake wrote:
>>> On Tuesday 07 July 2009 19:18:22 Garth N. Wells wrote:
>>>> Kristian Oelgaard wrote:
>>>>> Hi,
>>>>>
>>>>> I get:
>>>>>
>>>>> Solving linear variational problem
>>>>>   Matrix of size 1089 x 1089 has 7361 nonzero entries.
>>>>>   Applying boundary conditions to linear system.
>>>>>   *** Warning: Ignoring unknown parameter "absolute_tolerance" in
>>>>> parameter set "krylov_solver" when updating parameter set "parameters".
>>>>>   *** Warning: Ignoring unknown parameter "divergence_limit" in parameter
>>>>> set "krylov_solver" when updating parameter set "parameters".
>>>>>   *** Warning: Ignoring unknown parameter "gmres_restart" in parameter
>>>>> set "krylov_solver" when updating parameter set "parameters".
>>>>>   *** Warning: Ignoring unknown parameter "maximum_iterations" in
>>>>> parameter set "krylov_solver" when updating parameter set "parameters".
>>>>>   *** Warning: Ignoring unknown parameter "monitor_convergence" in
>>>>> parameter set "krylov_solver" when updating parameter set "parameters".
>>>>>   *** Warning: Ignoring unknown parameter "relative_tolerance" in
>>>>> parameter set "krylov_solver" when updating parameter set "parameters".
>>>>>   *** Warning: Ignoring unknown parameter "report" in parameter set
>>>>> "krylov_solver" when updating parameter set "parameters".
>>>>>   *** Warning: Ignoring unknown parameter "shift_nonzero" in parameter
>>>>> set "krylov_solver" when updating parameter set "parameters".
>>>>> terminate called after throwing an instance of 'std::runtime_error'
>>>>>   what():  *** Error: Unable to access parameter "report" in parameter
>>>>> set "parameters", parameter not defined.
>>>>> [mech028:15991] *** Process received signal ***
>>>>> [mech028:15991] Signal: Aborted (6)
>>>>> [mech028:15991] Signal code:  (-6)
>>>>> [mech028:15991] [ 0] [0xb805d410]
>>>>> [mech028:15991] [ 1] /lib/tls/i686/cmov/libc.so.6(abort+0x188)
>>>>> [0xb6154098] [mech028:15991] [ 2]
>>>>> /usr/lib/libstdc++.so.6(_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x15
>>>>> 8) [0xb636e8f8]
>>>>> [mech028:15991] [ 3] /usr/lib/libstdc++.so.6 [0xb636c7d5]
>>>>> [mech028:15991] [ 4] /usr/lib/libstdc++.so.6 [0xb636c812]
>>>>> [mech028:15991] [ 5] /usr/lib/libstdc++.so.6 [0xb636c94a]
>>>>> [mech028:15991] [ 6]
>>>>> /home/oelgaard/fenics/dolfin/local/lib/libdolfin.so.0(_ZNK6dolfin6Logger5
>>>>> errorESs+0x93) [0xb7f166a3]
>>>>> [mech028:15991] [ 7]
>>>>> /home/oelgaard/fenics/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin5errorESs
>>>>> z+0x9f) [0xb7f1f62f]
>>>>> [mech028:15991] [ 8]
>>>>> /home/oelgaard/fenics/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin10Paramet
>>>>> ersclESs+0xb3) [0xb7fc7833]
>>>>> [mech028:15991] [ 9]
>>>>> /home/oelgaard/fenics/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin17PETScKr
>>>>> ylovSolver5solveERKNS_11PETScMatrixERNS_11PETScVectorERKS4_+0xb2)
>>>>> [0xb7ee9ce2]
>>>>> [mech028:15991] [10]
>>>>> /home/oelgaard/fenics/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin17PETScKr
>>>>> ylovSolver5solveERKNS_13GenericMatrixERNS_13GenericVectorERKS4_+0xfb)
>>>>> [0xb7eea3db]
>>>>> [mech028:15991] [11]
>>>>> /home/oelgaard/fenics/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin12KrylovS
>>>>> olver5solveERKNS_13GenericMatrixERNS_13GenericVectorERKS4_+0x18e)
>>>>> [0xb7e69c1e]
>>>>> [mech028:15991] [12]
>>>>> /home/oelgaard/fenics/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin18Variati
>>>>> onalProblem12solve_linearERNS_8FunctionE+0xaaf) [0xb7e674af]
>>>>> [mech028:15991] [13]
>>>>> /home/oelgaard/fenics/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin18Variati
>>>>> onalProblem5solveERNS_8FunctionE+0x2a) [0xb7e6814a]
>>>>> [mech028:15991] [14] ./demo(main+0x497) [0x805db07]
>>>>> [mech028:15991] [15] /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe5)
>>>>> [0xb613d775]
>>>>> [mech028:15991] [16] ./demo [0x805d541]
>>>>> [mech028:15991] *** End of error message ***
>>>>>
>>>>> if I do:
>>>>>
>>>>>   problem.parameters("linear_solver") = "iterative";
>>>>>
>>>>> in the Poisson demo.
>>>>>
>>>>> Is this a bug, or am I using the new parameter system incorrectly?
>>>> Take a look at the change Johan made recently to LUSolver. Same thing
>>>> probably needs to be done for KrylovSolver.
>>> This one beats me... It is another problem here. 
>>>
>> I've added a function to set parameters for PETScKrylovSolver and 
>> everything works now.
>>
>>> KrylovSolver::parameters get initialized. However, it looks like 
>>>
>>>    solver.parameters.update(parameters["krylov_solver"]);
>>>
>>> does not update the krylov solvers parameters, but rather an empty 
>>> parameters, 
>>> and therefore the warnings.
>>>
>> What exactly does (or should)
>>
>>     solver.parameters.update(parameters["krylov_solver"]);
>>
>> do?
> 
> It iterates over the parameters in parameters["krylov_solver"] and for
> each of them sets the value for the parameter with the same name found
> in solver.parameters. If a matching parameter is not found, a warning
> is issued. So it's the same as the update() function does for a Python
> dictionary but with the difference that a warning is issued when a
> parameter is not found (rather than just creating it).
> 

How do I get parameters to be 'inherited' from elsewhere? For example, 
in PETScKrylovSolver I would like to have something like

    Parameters p("petsc_krylov_solver");
    p.add(KrylovSolver::default_parameters());

work.

Garth

> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> DOLFIN-dev mailing list
> DOLFIN-dev@fenics.org
> http://www.fenics.org/mailman/listinfo/dolfin-dev


_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@fenics.org
http://www.fenics.org/mailman/listinfo/dolfin-dev

Reply via email to