Branch data Line data Source code
1 : : // ***************************************************************************** 2 : : /*! 3 : : \file src/PDE/ConfigureTransport.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 Register and compile configuration on the Transport PDE 9 : : \details Register and compile configuration on the Transport PDE. 10 : : */ 11 : : // ***************************************************************************** 12 : : #ifndef ConfigureTransport_h 13 : : #define ConfigureTransport_h 14 : : 15 : : #include <set> 16 : : #include <map> 17 : : #include <vector> 18 : : 19 : : #include "PDEFactory.hpp" 20 : : #include "SystemComponents.hpp" 21 : : #include "Inciter/Options/PDE.hpp" 22 : : 23 : : namespace inciter { 24 : : 25 : : //! Register transport PDEs into PDE factory 26 : : void 27 : : registerTransport( CGFactory& cf, 28 : : DGFactory& df, 29 : : std::set< ctr::PDEType >& cgt, 30 : : std::set< ctr::PDEType >& dgt ); 31 : : 32 : : //! Return information on the transport PDE 33 : : std::vector< std::pair< std::string, std::string > > 34 : : infoTransport( std::map< ctr::PDEType, tk::ctr::ncomp_t >& cnt ); 35 : : 36 : : //! \brief Assign function that computes physics variables from the 37 : : //! numerical solution for MultiMat 38 : : void 39 : : assignTransportGetVars( const std::string& name, tk::GetVarFn& f ); 40 : : 41 : : /** @name Functions that compute physics variables from the numerical solution for Transport */ 42 : : ///@{ 43 : : 44 : : #if defined(__clang__) 45 : : #pragma clang diagnostic push 46 : : #pragma clang diagnostic ignored "-Wunused-function" 47 : : #endif 48 : : 49 : : namespace transport { 50 : : 51 : : //! Compute material indicator function for output to file 52 : : //! \note Must follow the signature in tk::GetVarFn 53 : : //! \param[in] U Numerical solution 54 : : //! \param[in] offset System offset specifying the position of the Transport 55 : : //! equation system among other systems 56 : : //! \param[in] rdof Number of reconstructed solution DOFs 57 : : //! \return Material indicator function ready to be output to file 58 : : static tk::GetVarFn::result_type 59 : 0 : matIndicatorOutVar( const tk::Fields& U, tk::ctr::ncomp_t offset, 60 : : std::size_t rdof ) 61 : : { 62 : 0 : auto ncomp = U.nprop()/rdof; 63 [ - - ]: 0 : std::vector< tk::real > m(U.nunk(), 0.0); 64 [ - - ]: 0 : for (std::size_t i=0; i<U.nunk(); ++i) { 65 [ - - ]: 0 : for (std::size_t k=0; k<ncomp; ++k) 66 [ - - ]: 0 : m[i] += U(i, rdof*k, offset) * static_cast< tk::real >(k+1); 67 : : } 68 : 0 : return m; 69 : : } 70 : : 71 : : } // transport:: 72 : : 73 : : #if defined(__clang__) 74 : : #pragma clang diagnostic pop 75 : : #endif 76 : : 77 : : //@} 78 : : 79 : : } // inciter:: 80 : : 81 : : #endif // ConfigureTransport_h