[dune-pdelab] Fwd: solver fails to reset correctly after FMatrixError (singular matrix)
Shubhangi Gupta
sgupta at geomar.de
Wed Jul 10 13:33:01 CEST 2019
Hi Jö,
Yes, I am running it MPI-parallel, on 4 ranks.
On 10.07.19 13:32, Jö Fahlke wrote:
> 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
>
--
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
More information about the dune-pdelab
mailing list