SpECTRE Documentation Coverage Report
Current view: top level - Elliptic/Systems/BnsInitialData/BoundaryConditions - StarSurface.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 4.3 % 23 1
Test Date: 2026-10-22 17:29:42
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 <cstddef>
       7              : #include <pup.h>
       8              : #include <string>
       9              : #include <vector>
      10              : 
      11              : #include "DataStructures/Tensor/EagerMath/Magnitude.hpp"
      12              : #include "DataStructures/Tensor/TypeAliases.hpp"
      13              : #include "Domain/Tags.hpp"
      14              : #include "Domain/Tags/FaceNormal.hpp"
      15              : #include "Elliptic/BoundaryConditions/BoundaryCondition.hpp"
      16              : #include "Elliptic/BoundaryConditions/BoundaryConditionType.hpp"
      17              : #include "Elliptic/Systems//BnsInitialData/Tags.hpp"
      18              : #include "Options/Context.hpp"
      19              : #include "Options/String.hpp"
      20              : #include "PointwiseFunctions/GeneralRelativity/Tags.hpp"
      21              : #include "Utilities/Gsl.hpp"
      22              : #include "Utilities/Serialization/CharmPupable.hpp"
      23              : #include "Utilities/TMPL.hpp"
      24              : 
      25              : /// \cond
      26              : class DataVector;
      27              : /// \endcond
      28              : 
      29              : namespace BnsInitialData::BoundaryConditions {
      30              : 
      31              : /*!
      32              :  * Impose StarSurface boundary conditions:
      33              :  * \f[
      34              :  *   n_i F^i = \frac{C}{\alpha^2} B^i n_i.
      35              :  * \f]
      36              :  * The boundary condition results from requiring the conservation
      37              :  * equations be regular at the surface of the neutron star.  See
      38              :  * \cite BaumgarteShapiro 15.79.
      39              :  */
      40            1 : class StarSurface : public elliptic::BoundaryConditions::BoundaryCondition<3> {
      41              :  private:
      42            0 :   using Base = elliptic::BoundaryConditions::BoundaryCondition<3>;
      43              : 
      44              :  public:
      45            0 :   static constexpr Options::String help =
      46              :       "StarSurface boundary conditions  n_i F^i = C/square(alpha) B^i n_i .";
      47              : 
      48            0 :   using options = tmpl::list<>;
      49              : 
      50            0 :   StarSurface() = default;
      51            0 :   StarSurface(const StarSurface&) = default;
      52            0 :   StarSurface& operator=(const StarSurface&) = default;
      53            0 :   StarSurface(StarSurface&&) = default;
      54            0 :   StarSurface& operator=(StarSurface&&) = default;
      55            0 :   ~StarSurface() override = default;
      56              : 
      57              :   /// \cond
      58              :   explicit StarSurface(CkMigrateMessage* m) : Base(m) {}
      59              :   using PUP::able::register_constructor;
      60              :   WRAPPED_PUPable_decl_template(StarSurface);
      61              :   /// \endcond
      62              : 
      63            0 :   std::unique_ptr<domain::BoundaryConditions::BoundaryCondition> get_clone()
      64              :       const override {
      65              :     return std::make_unique<StarSurface>(*this);
      66              :   }
      67              : 
      68            0 :   explicit StarSurface(const Options::Context& context);
      69              : 
      70            0 :   std::vector<elliptic::BoundaryConditionType> boundary_condition_types()
      71              :       const override {
      72              :     return {elliptic::BoundaryConditionType::Neumann};
      73              :   }
      74              : 
      75            0 :   using argument_tags =
      76              :       tmpl::list<gr::Tags::Lapse<DataVector>,
      77              :                  BnsInitialData::Tags::RotationalShift<DataVector>,
      78              :                  BnsInitialData::Tags::EulerEnthalpyConstant,
      79              :                  domain::Tags::FaceNormal<3>>;
      80            0 :   using volume_tags = tmpl::list<BnsInitialData::Tags::EulerEnthalpyConstant>;
      81              : 
      82            0 :   static void apply(gsl::not_null<Scalar<DataVector>*> velocity_potential,
      83              :                     gsl::not_null<Scalar<DataVector>*> n_dot_flux_for_potential,
      84              :                     const tnsr::i<DataVector, 3>& deriv_velocity_potential,
      85              :                     const Scalar<DataVector>& lapse,
      86              :                     const tnsr::I<DataVector, 3>& rotational_shift,
      87              :                     double euler_enthalpy_constant,
      88              :                     const tnsr::i<DataVector, 3>& normal);
      89              : 
      90            0 :   using argument_tags_linearized = tmpl::list<>;
      91            0 :   using volume_tags_linearized = tmpl::list<>;
      92              : 
      93            0 :   static void apply_linearized(
      94              :       gsl::not_null<Scalar<DataVector>*> velocity_potential_correction,
      95              :       gsl::not_null<Scalar<DataVector>*> n_dot_flux_for_potential_correction,
      96              :       const tnsr::i<DataVector, 3>& deriv_velocity_potential);
      97              : 
      98            0 :   void pup(PUP::er& p) override;
      99              : };
     100              : 
     101            0 : bool operator==(const StarSurface& lhs, const StarSurface& rhs);
     102              : 
     103            0 : bool operator!=(const StarSurface& lhs, const StarSurface& rhs);
     104              : 
     105              : }  // namespace BnsInitialData::BoundaryConditions
        

Generated by: LCOV version 2.0-1