diff --git a/dune/fem-dg/operator/dg/dgpyoperator.hh b/dune/fem-dg/operator/dg/dgpyoperator.hh index 588de0af1806ea15452cd138279b2d6e199a3f8c..7239d322390f4e9cb23946ecab812aaf288c5c30 100644 --- a/dune/fem-dg/operator/dg/dgpyoperator.hh +++ b/dune/fem-dg/operator/dg/dgpyoperator.hh @@ -208,7 +208,18 @@ namespace Fem //! return number of interior elements visited by the operator inline size_t gridSizeInterior() const { - return std::max( fullOperator_.numberOfElements(), explOperator_.numberOfElements() ); + size_t elem = std::max( fullOperator_.numberOfElements(), + explOperator_.numberOfElements() ); + + // this can occur if element size if requested + // before operator had been applied + if( elem == 0 ) + { + const auto end = space_.end(); + size_t elem = 0; + for( auto it = space_.begin(); it != end; ++it, ++elem ); + } + return elem; } //// End Methods from SpaceOperatorInterface ///// diff --git a/dune/fem-dg/operator/dg/primaloperator.hh b/dune/fem-dg/operator/dg/primaloperator.hh index 1389e668b925d61f1a77be978c166219db781a0e..8946d663ec9b7344b2aab3627f21d1bfc9c47e79 100644 --- a/dune/fem-dg/operator/dg/primaloperator.hh +++ b/dune/fem-dg/operator/dg/primaloperator.hh @@ -464,7 +464,7 @@ namespace Fem inline size_t numberOfElements () const { - return pass2_.numberOfElements(); + return std::max( pass2_.numberOfElements(), limiter_.numberOfElements() ); } /* diff --git a/dune/fem-dg/operator/limiter/limiter.hh b/dune/fem-dg/operator/limiter/limiter.hh index 0530e7a6184b4ee55eedff90a2dca4d86892984d..804e089f180a37385a0449b78f179f6fae7a2e92 100644 --- a/dune/fem-dg/operator/limiter/limiter.hh +++ b/dune/fem-dg/operator/limiter/limiter.hh @@ -182,6 +182,11 @@ namespace Fem return limitPass_.computeTimeSteps(); } + inline size_t numberOfElements () const + { + return limitPass_.numberOfElements(); + } + private: Limiter( const Limiter& ); diff --git a/dune/fem-dg/operator/limiter/limitpass.hh b/dune/fem-dg/operator/limiter/limitpass.hh index 409e685ac6f7eda4fd84cadb70002aaf23594ed2..5605e0e8f3b81c43946a7151fd6adfacdd7e8c2e 100644 --- a/dune/fem-dg/operator/limiter/limitpass.hh +++ b/dune/fem-dg/operator/limiter/limitpass.hh @@ -684,7 +684,7 @@ namespace Fem return tmp; } - size_t leafElements() const + size_t numberOfElements() const { return elementCounter_; } diff --git a/dune/fem-dg/operator/limiter/scalinglimitpass.hh b/dune/fem-dg/operator/limiter/scalinglimitpass.hh index 2d6d888af803517576806c1e9b780fc10bb3c491..c4d1d8d7934d78c79d388f934c0ae208b5405f13 100644 --- a/dune/fem-dg/operator/limiter/scalinglimitpass.hh +++ b/dune/fem-dg/operator/limiter/scalinglimitpass.hh @@ -459,7 +459,7 @@ namespace Fem return tmp; } - size_t leafElements() const + size_t numberOfElements() const { return elementCounter_; } diff --git a/dune/fem-dg/solver/rungekuttasolver.hh b/dune/fem-dg/solver/rungekuttasolver.hh index 37fc487dad112b1c4373066028e6237374077118..b6261c0216f9f625e5ca31226221904a4dd296f0 100644 --- a/dune/fem-dg/solver/rungekuttasolver.hh +++ b/dune/fem-dg/solver/rungekuttasolver.hh @@ -291,7 +291,6 @@ namespace Fem // create implicit or explicit ode solver if( odeSolverType_ == 0 ) { - std::cout << "Creating explicit ode solver" << std::endl; solver = OdeSolversType :: createExplicitSolver( operator_, tp, rkSteps_, *param_, parameter, name_ ); } else if (odeSolverType_ == 1) @@ -346,7 +345,11 @@ namespace Fem else tpPtr_->init(); tpPtr_->init(); - std::cout << "cfl = " << double(tpPtr_->factor()) << ", T_0 = " << tpPtr_->time() << std::endl; + + if( Dune::Fem::Parameter::verbose() ) + { + std::cout << "cfl = " << double(tpPtr_->factor()) << ", T_0 = " << tpPtr_->time() << std::endl; + } } void initialize( const DestinationType& U )