SpECTRE Documentation Coverage Report
 Current view: top level - PointwiseFunctions/AnalyticSolutions/Poisson - Zero.hpp Hit Total Coverage Commit: 3c2e9d3ed337bca2146eee9de07432e292a38c3a Lines: 1 14 7.1 % Date: 2024-06-11 22:56:19 Legend: Lines: hit not hit
 ` Line data Source code` ``` 1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include 7 : #include 8 : 9 : #include "DataStructures/DataBox/Prefixes.hpp" 10 : #include "DataStructures/Tensor/Tensor.hpp" 11 : #include "Elliptic/Systems/Poisson/Tags.hpp" 12 : #include "NumericalAlgorithms/LinearOperators/PartialDerivatives.hpp" 13 : #include "Options/String.hpp" 14 : #include "PointwiseFunctions/InitialDataUtilities/AnalyticSolution.hpp" 15 : #include "Utilities/MakeWithValue.hpp" 16 : #include "Utilities/Serialization/CharmPupable.hpp" 17 : #include "Utilities/TMPL.hpp" 18 : #include "Utilities/TaggedTuple.hpp" 19 : 20 : namespace Poisson::Solutions { 21 : 22 : /// The trivial solution \f\$u=0\f\$ of a Poisson equation. Useful as initial 23 : /// guess. 24 : template 25 1 : class Zero : public elliptic::analytic_data::AnalyticSolution { 26 : public: 27 0 : using options = tmpl::list<>; 28 0 : static constexpr Options::String help{ 29 : "The trivial solution, useful as initial guess."}; 30 : 31 0 : Zero() = default; 32 0 : Zero(const Zero&) = default; 33 0 : Zero& operator=(const Zero&) = default; 34 0 : Zero(Zero&&) = default; 35 0 : Zero& operator=(Zero&&) = default; 36 0 : ~Zero() override = default; 37 0 : std::unique_ptr get_clone() 38 : const override { 39 : return std::make_unique(*this); 40 : } 41 : 42 : /// \cond 43 : explicit Zero(CkMigrateMessage* m) 44 : : elliptic::analytic_data::AnalyticSolution(m) {} 45 : using PUP::able::register_constructor; 46 : WRAPPED_PUPable_decl_template(Zero); // NOLINT 47 : /// \endcond 48 : 49 : template 50 0 : tuples::TaggedTuple variables( 51 : const tnsr::I& x, 52 : tmpl::list /*meta*/) const { 53 : using supported_tags = tmpl::list< 54 : Tags::Field, 55 : ::Tags::deriv, Frame::Inertial>, 56 : ::Tags::Flux, Frame::Inertial>, 57 : ::Tags::FixedSource>; 58 : static_assert(tmpl::size, 59 : supported_tags>>::value == 0, 60 : "The requested tag is not supported"); 61 : return {make_with_value(x, 0.)...}; 62 : } 63 : }; 64 : 65 : /// \cond 66 : template 67 : PUP::able::PUP_ID Zero::my_PUP_ID = 0; // NOLINT 68 : /// \endcond 69 : 70 : template 71 0 : bool operator==(const Zero& /*lhs*/, const Zero& /*rhs*/) { 72 : return true; 73 : } 74 : 75 : template 76 0 : bool operator!=(const Zero& lhs, const Zero& rhs) { 77 : return not(lhs == rhs); 78 : } 79 : 80 : } // namespace Poisson::Solutions ```

 Generated by: LCOV version 1.14