Branch data Line data Source code
1 : : // ***************************************************************************** 2 : : /*! 3 : : \file src/Inciter/alecg.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 for continuous Galerkin + ALE + RK 9 : : \details Charm++ module interface file for the continuous Galerkin (CG) 10 : : finite element scheme in the arbitrary Lagrangian-Eulerian (ALE) 11 : : reference frame + Runge-Kutta (RK) time stepping. 12 : : \see ALECG.h and ALECG.C for more info. 13 : : */ 14 : : // ***************************************************************************** 15 : : 16 : : module alecg { 17 : : 18 : : //! [External modules and includes] 19 : : extern module transporter; 20 : : extern module discretization; 21 : : extern module ghosts; 22 : : 23 : : include "UnsMesh.hpp"; 24 : : include "PUPUtil.hpp"; 25 : : //! [External modules and includes] 26 : : 27 : : namespace inciter { 28 : : 29 : : //! [1D Charm++ chare array] 30 : : array [1D] ALECG { 31 : : //! [1D Charm++ chare array] 32 : : //! [Entry methods] 33 : : entry ALECG( const CProxy_Discretization& disc, 34 : : const CProxy_Ghosts& ghostsproxy, 35 : : const std::map< int, std::vector< std::size_t > >& bface, 36 : : const std::map< int, std::vector< std::size_t > >& bnode, 37 : : const std::vector< std::size_t >& triinpoel ); 38 : : initnode void registerReducers(); 39 : : entry void setup(); 40 : : entry void box( tk::real v, const std::vector< tk::real >& blkvol ); 41 : : entry void resizeComm(); 42 : : entry void nodeNeighSetup(); 43 : : entry void transferSol(); 44 : 537 : entry void start(); 45 : : entry void refine( const std::vector< tk::real >& l2ref ); 46 : : entry [reductiontarget] void advance( tk::real newdt, tk::real ); 47 : : entry void comdfnorm( 48 : 1617 : const std::unordered_map< tk::UnsMesh::Edge, 49 : : std::array< tk::real, 3 >, 50 : 43149 : tk::UnsMesh::Hash<2>, tk::UnsMesh::Eq<2> >& dfnorm ); 51 : : entry void comnorm( const std::unordered_map< int, 52 : 43149 : std::unordered_map< std::size_t, std::array< tk::real, 4 > > >& innorm ); 53 : : entry void comblk( const std::vector< std::size_t >& gid, 54 : : const std::vector< std::set< std::size_t > >& mb ); 55 [ + + ]: 57532 : entry void comChBndGrad( const std::vector< std::size_t >& gid, 56 : : const std::vector< std::vector< tk::real > >& G ); 57 : : entry void comrhs( const std::vector< std::size_t >& gid, 58 : : const std::vector< std::vector< tk::real > >& R ); 59 : : entry void resized(); 60 : : entry void meshveldone(); 61 : : entry void lhs(); 62 : : entry void step(); 63 : : entry void next(); 64 : : entry void stage(); 65 : : entry void evalLB( int nrestart ); 66 : : //! [Entry methods] 67 : : 68 : : // SDAG code follows. See http://charm.cs.illinois.edu/manuals/html/ 69 : : // charm++/manual.html, Sec. "Structured Control Flow: Structured Dagger". 70 : : 71 : : //! [DAG] 72 : : entry void wait4meshblk() { 73 : : when ownblk_complete(), comblk_complete() serial "meshblk" 74 : : { continueSetup(); } } 75 : : 76 : : entry void wait4norm() { 77 : : when ownnorm_complete(), comnorm_complete(), 78 : : owndfnorm_complete(), comdfnorm_complete(), 79 : : transfer_complete() serial "norm" { mergelhs(); } } 80 : : 81 : : entry void wait4grad() { 82 : : when owngrad_complete(), comgrad_complete() serial "grad" { rhs(); } } 83 : : 84 : : entry void wait4rhs() { 85 : : when ownrhs_complete(), comrhs_complete() serial "rhs" { solve(); } } 86 : : 87 : : entry void wait4mesh() { 88 : : when norm_complete(), resize_complete() serial "trans" { 89 : : if (m_newmesh == 0) meshvelstart(); else transfer(); } } 90 : : 91 : : entry void ownblk_complete(); 92 : : entry void comblk_complete(); 93 : : entry void ownnorm_complete(); 94 : : entry void comnorm_complete(); 95 : : entry void owndfnorm_complete(); 96 : : entry void comdfnorm_complete(); 97 : : entry void transfer_complete(); 98 : : entry void ownrhs_complete(); 99 : : entry void comrhs_complete(); 100 : : entry void owngrad_complete(); 101 : : entry void comgrad_complete(); 102 : : entry void norm_complete(); 103 : : entry void resize_complete(); 104 : : //! [DAG] 105 : : } 106 : : 107 : : } // inciter:: 108 : : 109 : : }