On Wed, 9 Dec 2020, Laura Scarabosio wrote:

Thank you for your explanations. I built libmesh by disabling mpi,
so is the default solver still PETSc?

If you configured with PETSc (which can be configured with "mpiuni"
rather than a real MPI), it is.  If you didn't, it isn't.

You can look for HAVE_PETSC in libmesh_config.h to check for sure, but
if you don't know whether you configured with a no-MPI PETSc build,
then you probably didn't.

Also, for some reasons I am not able to pass command line arguments,
they don't work.

No, they depend on PETSc.

Therefore I tried to do the modifications that you suggested in the
code itself, and assumed that the default solver was Eigen. I tried

LinearImplicitSystem * ls = dynamic_cast<LinearImplicitSystem*>(& 
eq_sys.get_system("Diffusion")); 

This cast isn't really useful unless you test the results - if you have a
LinearImplicitSystem then get_linear_solver() will give you what you want even
when called from the base class; if you don't then the dynamic_cast here will
just return nullptr.

EigenSparseLinearSolver<double> * linearsolver = dynamic_cast< 
EigenSparseLinearSolver<double> *>(ls->get_linear_solver());                      

This cast shouldn't be necessary or helpful; set_solver_type() is a
method in the base class, not just the derived.

linearsolver->set_solver_type(CG);

and small variants, but I am not able to use the enum, CG gives me a
compilation error.

The important thing is *which* compilation error, though, right?  Did
you include enum_solver_type.h?

>> something as specific as SuperLU_Dist you have to get at through the
>> PETSc interface, either by extracting the internal PETSc object from
>> one of our solver shims and using their APIs

Can I still use PETSc since I have no mpi or should I use Eigen?

You can use either.  I still like PETSc better even in serial but the
improvements for you might not be worth the hassle of downloading and
configuring it.

Also, would you have an example to do what you said, since I cannot
use the command line?

We have a few; see `grep set_solver_type examples/*/*/*`.
Look at miscellaneous_ex12.C, maybe?
---
Roy
_______________________________________________
Libmesh-users mailing list
Libmesh-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to