Branch data Line data Source code
1 : : // ***************************************************************************** 2 : : /*! 3 : : \file src/Inciter/fv.ci 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 Charm++ module interface file for the discontinuous Galerkin scheme 9 : : \details Charm++ module interface file for the discontinuous Galerking 10 : : scheme. 11 : : \see FV.hpp and FV.cpp for more info. 12 : : */ 13 : : // ***************************************************************************** 14 : : 15 : : module fv { 16 : : 17 : : extern module transporter; 18 : : extern module discretization; 19 : : extern module ghosts; 20 : : 21 : : include "UnsMesh.hpp"; 22 : : include "PUPUtil.hpp"; 23 : : include "FaceData.hpp"; 24 : : 25 : : namespace inciter { 26 : : 27 : : array [1D] FV { 28 : : entry FV( const CProxy_Discretization& disc, 29 : : const CProxy_Ghosts& ghostsproxy, 30 : : const std::map< int, std::vector< std::size_t > >& bface, 31 : : const std::map< int, std::vector< std::size_t > >& /* bnode */, 32 : : const std::vector< std::size_t >& triinpoel ); 33 : : initnode void registerReducers(); 34 : : entry void resizeSolVectors(); 35 : : entry void setup(); 36 : : entry void box( tk::real v, const std::vector< tk::real >& blkvol ); 37 : : entry void comlim( int fromch, 38 : : const std::vector< std::size_t >& tetid, 39 : : const std::vector< std::vector< tk::real > >& u, 40 : : const std::vector< std::vector< tk::real > >& prim ); 41 : : entry void comnodeout( const std::vector< std::size_t >& gid, 42 : 1668 : const std::vector< std::size_t >& nesup, 43 : : const std::vector< std::vector< tk::real > >& Lu, 44 : 1668 : const std::vector< std::vector< tk::real > >& Lp ); 45 : : entry void comsol( int fromch, 46 : : const std::vector< std::size_t >& tetid, 47 [ + - ][ - + ]: 28 : const std::vector< std::vector< tk::real > >& u, 48 : : const std::vector< std::vector< tk::real > >& prim ); 49 : : entry void refine( const std::vector< tk::real >& l2ref ); 50 : : entry [reductiontarget] void solve( tk::real newdt ); 51 : : entry void resized(); 52 : : entry void transferSol(); 53 : : entry void advance( tk::real newdt, tk::real ); 54 : : entry void lhs(); 55 : : entry void step(); 56 : : entry void start(); 57 : : entry void next(); 58 : : entry void evalLB( int nrestart ); 59 : : 60 : : // SDAG code follows. See http://charm.cs.illinois.edu/manuals/html/ 61 : : // charm++/manual.html, Sec. "Structured Control Flow: Structured Dagger". 62 : : 63 : : entry void wait4sol() { 64 : : when ownsol_complete(), comsol_complete() serial "sol" { reco(); } } 65 : : 66 : : entry void wait4lim() { 67 : : when ownlim_complete(), comlim_complete() serial "lim" { dt(); } } 68 : : 69 : : entry void wait4nod() { 70 : : when ownnod_complete( CkCallback c ), comnodeout_complete() 71 : : serial "nod" { writeFields( c ); } } 72 : : 73 : : entry void ownsol_complete(); 74 : : entry void comsol_complete(); 75 : : entry void ownlim_complete(); 76 : : entry void comlim_complete(); 77 : : entry void ownnod_complete( CkCallback c ); 78 : : entry void comnodeout_complete(); 79 : : } 80 : : 81 : : } // inciter:: 82 : : 83 : : }