Branch data Line data Source code
1 : : // ***************************************************************************** 2 : : /*! 3 : : \file src/Inciter/ale.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 distributed ALE mesh motion 9 : : \details Charm++ module interface file for asynchronous distributed 10 : : arbitrary Lagrangian-Eulerian (ALE) mesh motion. 11 : : \see ALE.[ch]pp for more info. 12 : : */ 13 : : // ***************************************************************************** 14 : : 15 : : module ale { 16 : : 17 : : extern module conjugategradients; 18 : : 19 : : include "Inciter/Options/MeshVelocitySmoother.hpp"; 20 : : 21 : : namespace inciter { 22 : : 23 : : array [1D] ALE { 24 : : entry ALE( const tk::CProxy_ConjugateGradients& conjugategradientsproxy, 25 : : const std::array< std::vector< tk::real >, 3 >& coord, 26 : 1111 : const std::vector< std::size_t >& inpoel, 27 : : const std::vector< std::size_t >& gid, 28 : 124 : const std::unordered_map< std::size_t, std::size_t >& lid, 29 : : const tk::NodeCommMap& nodecommmap ); 30 : 1111 : entry void comvort( const std::vector< std::size_t >& gid, 31 : : const std::vector< std::array< tk::real, 3 > >& v ); 32 : : entry void comdiv( const std::vector< std::size_t >& gid, 33 : : const std::vector< tk::real >& v ); 34 : : entry void compot( const std::vector< std::size_t >& gid, 35 : : const std::vector< std::array< tk::real, 3 > >& v ); 36 : : entry void comfor( const std::vector< std::size_t >& gid, 37 : : const std::vector< std::array< tk::real, 3 > >& w ); 38 : : entry [reductiontarget] void meshvelbc( tk::real maxv ); 39 : : entry void applied( CkDataMsg* msg ); 40 : : entry void solved( CkDataMsg* msg ); 41 : : entry void helmholtz( CkDataMsg* msg ); 42 : : 43 : : // SDAG code follows. See http://charm.cs.illinois.edu/manuals/html/ 44 : : // charm++/manual.html, Sec. "Structured Control Flow: Structured Dagger". 45 : : 46 : : entry void wait4vel() { 47 : : when ownvort_complete(), comvort_complete(), 48 : : owndiv_complete(), comdiv_complete() serial "vel" { mergevel(); }} 49 : : 50 : : entry void wait4pot() { 51 : : when ownpot_complete(), compot_complete() serial "pot" { gradpot(); } } 52 : : 53 : : entry void wait4for() { 54 : : when ownfor_complete(), comfor_complete() serial "for" { meshforce(); }} 55 : : 56 : : entry void ownvort_complete(); 57 : : entry void comvort_complete(); 58 : : entry void owndiv_complete(); 59 : : entry void comdiv_complete(); 60 : : entry void ownpot_complete(); 61 : : entry void compot_complete(); 62 : : entry void ownfor_complete(); 63 : : entry void comfor_complete(); 64 : : }; 65 : : 66 : : } // inciter:: 67 : : 68 : : }