[dune-pdelab] Fwd: solver fails to reset correctly after FMatrixError (singular matrix)
Jö Fahlke
jorrit at jorrit.de
Wed Jul 10 13:32:02 CEST 2019
Are you running this MPI-parallel? If yes, how many ranks?
Regards, Jö.
Am Mi, 10. Jul 2019, 11:55:45 +0200 schrieb Shubhangi Gupta:
> Dear pdelab users,
>
> I am currently experiencing a rather strange problem during parallel
> solution of my finite volume code. I have written a short outline of my code
> below for reference.
>
> At some point during computation, if dune throws an error, the code catches
> this error, resets the solution vector to the old value, halves the time
> step size, and tries to redo the calculation (osm.apply()).
>
> However, if I get the error "FMatrixError: matrix is singular", the solver
> seems to freeze. Even the initial defect is not shown! (See the terminal
> output below.) I am not sure why this is so, and I have not experienced this
> issue before.
>
> I will be very thankful if someone can help me figure out a way around this
> problem.
>
> Thanks, and warm wishes, Shubhangi
>
>
> *// code layout*
>
> ...UG grid, generated using gmsh, GV, ...
>
> typedef Dune::PDELab::QkDGLocalFiniteElementMap<GV::Grid::ctype, double,
> 0, dim, Dune::PDELab::QkDGBasisPolynomial::lagrange> FEMP0;
> FEMP0 femp0;
> typedef Dune::PDELab::GridFunctionSpace<GV,FEMP0,Dune::PDELab::P0ParallelConstraints,Dune::PDELab::ISTL::VectorBackend<>>
> GFS0;
> GFS0 gfs0(gv,femp0);
> typedef Dune::PDELab::PowerGridFunctionSpace< GFS0,num_of_vars,
> Dune::PDELab::ISTL::VectorBackend<Dune::PDELab::ISTL::Blocking::fixed>,
> Dune::PDELab::EntityBlockedOrderingTag> GFS_TCH;
>
> ... LocalOperator LOP lop, TimeLocalOperator TOP top, GridOperator GO
> go, InstationaryGridOperator IGO igo, ...
>
> typedef Dune::PDELab::ISTLBackend_BCGS_AMG_SSOR<IGO> LS;
> LS ls(gfs,50,1,false,true);
> typedef Dune::PDELab::Newton< IGO, LS, U > PDESOLVER;
> PDESOLVER pdesolver( igo, ls );
> Dune::PDELab::ImplicitEulerParameter<double> method;
>
> Dune::PDELab::OneStepMethod< double, IGO, PDESOLVER, U, U > osm( method,
> igo, pdesolver );
>
> //TIME-LOOP
> while( time < t_END - 1e-8){
> try{
> //PDE-SOLVE
> osm.apply( time, dt, uold, unew );
> exceptionCaught = false;
> }catch ( Dune::Exception &e ) {
> //RESET
> exceptionCaught = true;
> std::cout << "Catched Error, Dune reported error: " << e <<
> std::endl;
> unew = uold;
> dt *= 0.5;
> osm.getPDESolver().discardMatrix();
> continue;
> }
> uold = unew;
> time += dt;
> }
>
>
> *// terminal output showing FMatrixError...*
>
>
> time = 162.632 , time+dt = 164.603 , opTime = 180 , dt : 1.97044
>
> READY FOR NEXT ITERATION.
> _____________________________________________________
> current opcount = 2
> ****************************
> TCH HYDRATE:
> ****************************
> TIME STEP [implicit Euler] 89 time (from): 1.6263e+02 dt: 1.9704e+00
> time (to): 1.6460e+02
> STAGE 1 time (to): 1.6460e+02.
> Initial defect: 2.1649e-01
> Using a direct coarse solver (SuperLU)
> Building hierarchy of 2 levels (inclusive coarse solver) took 0.2195
> seconds.
> === BiCGSTABSolver
> 12.5 6.599e-11
> === rate=0.1733, T=1.152, TIT=0.09217, IT=12.5
> Newton iteration 1. New defect: 3.4239e-02. Reduction (this):
> 1.5816e-01. Reduction (total): 1.5816e-01
> Using a direct coarse solver (SuperLU)
> Building hierarchy of 2 levels (inclusive coarse solver) took 0.195 seconds.
> === BiCGSTABSolver
> 17 2.402e-11
> === rate=0.2894, T=1.655, TIT=0.09738, IT=17
> Newton iteration 2. New defect: 3.9906e+00. Reduction (this):
> 1.1655e+02. Reduction (total): 1.8434e+01
> Using a direct coarse solver (SuperLU)
> Building hierarchy of 2 levels (inclusive coarse solver) took 0.8697
> seconds.
> === BiCGSTABSolver
> Catched Error, Dune reported error: FMatrixError [luDecomposition:/home/sgupta/dune_2_6/source/dune/dune-common/dune/common/densematrix.hh:909]:
> matrix is singular
> _____________________________________________________
> current opcount = 2
> ****************************
> TCH HYDRATE:
> ****************************
> TIME STEP [implicit Euler] 89 time (from): 1.6263e+02 dt: 9.8522e-01
> time (to): 1.6362e+02
> STAGE 1 time (to): 1.6362e+02.
>
> *... nothing happens here... the terminal appears to freeze...*
>
>
>
> --
> Dr. Shubhangi Gupta
> Marine Geosystems
> GEOMAR Helmholtz Center for Ocean Research
> Wischhofstraße 1-3,
> D-24148 Kiel
>
> Room: 12-206
> Phone: +49 431 600-1402
> Email:sgupta at geomar.de
>
> _______________________________________________
> dune-pdelab mailing list
> dune-pdelab at lists.dune-project.org
> https://lists.dune-project.org/mailman/listinfo/dune-pdelab
--
Jorrit (Jö) Fahlke, Institute for Computational und Applied Mathematics,
University of Münster, Orleans-Ring 10, D-48149 Münster
Tel: +49 251 83 35146 Fax: +49 251 83 32729
This message is protected by DoubleROT13 encryption
Attempting to decode it violates the DMCA/WIPO acts
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.dune-project.org/pipermail/dune-pdelab/attachments/20190710/f51cf955/attachment.sig>
More information about the dune-pdelab
mailing list