Branch data Line data Source code
1 : : // ***************************************************************************** 2 : : /*! 3 : : \file src/DiffEq/Dissipation/DissipationCoeffPolicy.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 Particle dissipation equation coefficients policies 9 : : \details This file defines coefficients policy classes for the Lagrangian 10 : : particle dissipation equation defined in DiffEq/Dissipation.h. 11 : : 12 : : General requirements on dissipation equation coefficients policy classes: 13 : : 14 : : - Must define a _constructor_, which is used to initialize the SDE 15 : : coefficient, C0. Required signature: 16 : : \code{.cpp} 17 : : CoeffPolicyName( 18 : : kw::sde_c3::info::expect::type c3_, 19 : : kw::sde_c4::info::expect::type c4_, 20 : : kw::sde_com1::info::expect::type com1_, 21 : : kw::sde_com2::info::expect::type com2_, 22 : : kw::sde_c3::info::expect::type& c3, 23 : : kw::sde_c4::info::expect::type& c4, 24 : : kw::sde_com1::info::expect::type& com1, 25 : : kw::sde_com2::info::expect::type& com2 ) 26 : : \endcode 27 : : 28 : : - Must define the static function _type()_, returning the enum value of the 29 : : policy option. Example: 30 : : \code{.cpp} 31 : : static ctr::CoeffPolicyType type() noexcept { 32 : : return ctr::CoeffPolicyType::CONST_COEFF; 33 : : } 34 : : \endcode 35 : : which returns the enum value of the option from the underlying option 36 : : class, collecting all possible options for coefficients policies. 37 : : 38 : : - Must define the static function _src()_, with the signature 39 : : \code{.cpp} 40 : : void src( tk::real& Som () {} 41 : : \endcode 42 : : which sets its argument _Som_ to the level of the source of the 43 : : dissipation equation. This member function must be static as it is called 44 : : without an object instance. 45 : : */ 46 : : // ***************************************************************************** 47 : : #ifndef DissipationCoeffPolicy_h 48 : : #define DissipationCoeffPolicy_h 49 : : 50 : : #include <array> 51 : : 52 : : #include <brigand/sequences/list.hpp> 53 : : 54 : : #include "Types.hpp" 55 : : #include "SystemComponents.hpp" 56 : : #include "Walker/Options/CoeffPolicy.hpp" 57 : : 58 : : namespace walker { 59 : : 60 : : //! Dissipation equation coefficients policy keeping the coefficients constant 61 : : class DissipationCoeffConst { 62 : : 63 : : public: 64 : : //! Constructor: initialize coefficients 65 : : DissipationCoeffConst( 66 : : kw::sde_c3::info::expect::type c3_, 67 : : kw::sde_c4::info::expect::type c4_, 68 : : kw::sde_com1::info::expect::type com1_, 69 : : kw::sde_com2::info::expect::type com2_, 70 : : kw::sde_c3::info::expect::type& c3, 71 : : kw::sde_c4::info::expect::type& c4, 72 : : kw::sde_com1::info::expect::type& com1, 73 : : kw::sde_com2::info::expect::type& com2 ); 74 : : 75 : : //! Update turbulence frequency source (no-op for const-coeff policy) 76 : 6750 : static void src( tk::real& ) {} 77 : : 78 : : //! Coefficients policy type accessor 79 : 2584 : static ctr::CoeffPolicyType type() noexcept 80 : 2584 : { return ctr::CoeffPolicyType::CONST_COEFF; } 81 : : }; 82 : : 83 : : //! \brief Dissipation equation coefficients policy keeping the dissipation 84 : : //! rate in a constant statistically stationary state 85 : : class DissipationCoeffStationary { 86 : : 87 : : public: 88 : : //! Constructor: initialize coefficients 89 : : DissipationCoeffStationary( 90 : : kw::sde_c3::info::expect::type c3_, 91 : : kw::sde_c4::info::expect::type c4_, 92 : : kw::sde_com1::info::expect::type com1_, 93 : : kw::sde_com2::info::expect::type com2_, 94 : : kw::sde_c3::info::expect::type& c3, 95 : : kw::sde_c4::info::expect::type& c4, 96 : : kw::sde_com1::info::expect::type& com1, 97 : : kw::sde_com2::info::expect::type& com2 ); 98 : : 99 : : //! Update turbulence frequency source (zero for stationary coeff policy) 100 : 0 : static void src( tk::real& Som ) { Som = 0.0; } 101 : : 102 : : //! Coefficients policy type accessor 103 : 2584 : static ctr::CoeffPolicyType type() noexcept 104 : 2584 : { return ctr::CoeffPolicyType::STATIONARY; } 105 : : }; 106 : : 107 : : //! List of all dissipation eq coefficients policies 108 : : using DissipationCoeffPolicies = 109 : : brigand::list< DissipationCoeffConst 110 : : , DissipationCoeffStationary >; 111 : : 112 : : } // walker:: 113 : : 114 : : #endif // DissipationCoeffPolicy_h