SpECTRE Documentation Coverage Report
Current view: top level - Domain/Creators/TimeDependentOptions - FromVolumeFile.hpp Hit Total Coverage
Commit: 1e29a35ad8559408f21493dc5db8a49a237bb2f0 Lines: 3 17 17.6 %
Date: 2026-03-31 22:27:51
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 <array>
       7             : #include <memory>
       8             : #include <string>
       9             : 
      10             : #include "DataStructures/DataVector.hpp"
      11             : #include "Domain/FunctionsOfTime/FunctionOfTime.hpp"
      12             : #include "Domain/Structure/ObjectLabel.hpp"
      13             : #include "Options/Auto.hpp"
      14             : #include "Options/Context.hpp"
      15             : #include "Options/String.hpp"
      16             : #include "Utilities/TMPL.hpp"
      17             : 
      18             : namespace domain::creators::time_dependent_options {
      19             : /// @{
      20             : /*!
      21             :  * \brief Read in FunctionOfTime coefficients from an H5 file and volume
      22             :  * subfile.
      23             :  *
      24             :  * \details The H5 file will only be accessed in the `retrieve_function_of_time`
      25             :  * function.
      26             :  */
      27           1 : struct FromVolumeFile {
      28           0 :   struct H5Filename {
      29           0 :     using type = std::string;
      30           0 :     static constexpr Options::String help{
      31             :         "Name of H5 file to read functions of time from."};
      32             :   };
      33             : 
      34           0 :   struct SubfileName {
      35           0 :     using type = std::string;
      36           0 :     static constexpr Options::String help{
      37             :         "Subfile that holds the volume data. Must be an h5::VolumeData "
      38             :         "subfile."};
      39             :   };
      40             : 
      41           0 :   using options = tmpl::list<H5Filename, SubfileName>;
      42           0 :   static constexpr Options::String help =
      43             :       "Read function of time coefficients from a volume subfile of an H5 file.";
      44             : 
      45           0 :   FromVolumeFile() = default;
      46             :   // The replay option cannot be set from options
      47           0 :   FromVolumeFile(std::string h5_filename, std::string subfile_name,
      48             :                  bool replay = false);
      49             : 
      50             :   /*!
      51             :    * \returns clones of all global functions of time
      52             :    * in \p function_of_time_names
      53             :    *
      54             :    * \details If a value for \p time is specified, will ensure that \p time is
      55             :    * within the `domain::FunctionsOfTime::FunctionOfTime::time_bounds()` of each
      56             :    * function of time.
      57             :    */
      58           1 :   FunctionsOfTimeMap retrieve_function_of_time(
      59             :       const std::unordered_set<std::string>& function_of_time_names,
      60             :       double time) const;
      61             : 
      62             :   /*!
      63             :    * \brief Whether the function of time from the volume file should just be
      64             :    * replayed (read in and unmodified), or not.
      65             :    */
      66           1 :   bool replay() const { return replay_; }
      67             : 
      68             :  private:
      69           0 :   std::string h5_filename_;
      70           0 :   std::string subfile_name_;
      71           0 :   bool replay_{false};
      72             : };
      73             : /// @}
      74             : }  // namespace domain::creators::time_dependent_options

Generated by: LCOV version 1.14