Branch data Line data Source code
1 : : // ***************************************************************************** 2 : : /*! 3 : : \file src/Inciter/NodeDiagnostics.hpp 4 : : \copyright 2012-2015 J. Bakosi, 5 : : 2016-2018 Los Alamos National Security, LLC., 6 : : 2019-2021 Triad National Security, LLC. 7 : : All rights reserved. See the LICENSE file for details. 8 : : \brief NodeDiagnostics class for collecting diagnostics 9 : : \details NodeDiagnostics class for collecting diagnostics, e.g., residuals, 10 : : and various norms of errors while solving partial differential equations. 11 : : */ 12 : : // ***************************************************************************** 13 : : #ifndef NodeDiagnostics_h 14 : : #define NodeDiagnostics_h 15 : : 16 : : #include <unordered_set> 17 : : 18 : : #include "Discretization.hpp" 19 : : #include "PUPUtil.hpp" 20 : : #include "Diagnostics.hpp" 21 : : 22 : : namespace inciter { 23 : : 24 : : //! NodeDiagnostics class used to compute diagnostics while integrating PDEs 25 : : class NodeDiagnostics { 26 : : 27 : : public: 28 : : //! Configure Charm++ custom reduction types initiated from this class 29 : : static void registerReducers(); 30 : : 31 : : //! Compute diagnostics, e.g., residuals, norms of errors, etc. 32 : : bool compute( 33 : : Discretization& d, 34 : : const tk::Fields& u, 35 : : const tk::Fields& un, 36 : : const std::unordered_map< int, 37 : : std::unordered_map< std::size_t, std::array< tk::real, 4 > > >& bnorm, 38 : : const std::unordered_set< std::size_t >& symbcnodes, 39 : : const std::unordered_set< std::size_t >& farfieldbcnodes ) const; 40 : : 41 : : /** @name Charm++ pack/unpack serializer member functions */ 42 : : ///@{ 43 : : //! \brief Pack/Unpack serialize member function 44 : 7959 : void pup( PUP::er & ) {} 45 : : //! \brief Pack/Unpack serialize operator| 46 : : //! \param[in,out] p Charm++'s PUP::er serializer object reference 47 : : //! \param[in,out] d Diagnostics object reference 48 : 7959 : friend void operator|( PUP::er& p, NodeDiagnostics& d ) { d.pup(p); } 49 : : //@} 50 : : }; 51 : : 52 : : } // inciter:: 53 : : 54 : : #endif // NodeDiagnostics_h