Skip to content
Snippets Groups Projects
Select Git revision
  • cfe40c29c4d3f5f3e4db81048f0dead9be29f266
  • develop default protected
  • feature/gmsh-reader
  • origin/stage/bouguettaia
  • feature/kinetic-schemes
  • feature/reconstruction
  • feature/local-dt-fsi
  • feature/composite-scheme-sources
  • feature/composite-scheme-other-fluxes
  • feature/serraille
  • feature/variational-hydro
  • feature/composite-scheme
  • hyperplastic
  • feature/polynomials
  • feature/gks
  • feature/implicit-solver-o2
  • feature/coupling_module
  • feature/implicit-solver
  • feature/merge-local-dt-fsi
  • master protected
  • feature/escobar-smoother
  • v0.5.0 protected
  • v0.4.1 protected
  • v0.4.0 protected
  • v0.3.0 protected
  • v0.2.0 protected
  • v0.1.0 protected
  • Kidder
  • v0.0.4 protected
  • v0.0.3 protected
  • v0.0.2 protected
  • v0 protected
  • v0.0.1 protected
33 results

IBoundaryConditionDescriptor.hpp

Blame
  • SetResumeFrom.cpp 1.46 KiB
    #include <utils/checkpointing/SetResumeFrom.hpp>
    
    #include <utils/pugs_config.hpp>
    
    #ifdef PUGS_HAS_HDF5
    
    #include <optional>
    #include <rang.hpp>
    #include <utils/Exceptions.hpp>
    #include <utils/HighFivePugsUtils.hpp>
    
    void
    setResumeFrom(const std::string& filename, const uint64_t& checkpoint_number)
    {
      try {
        HighFive::File file(filename, HighFive::File::ReadWrite);
        const std::string checkpoint_name = "checkpoint_" + std::to_string(checkpoint_number);
    
        if (not file.exist(checkpoint_name)) {
          std::ostringstream error_msg;
          error_msg << "cannot find checkpoint " << rang::fgB::magenta << checkpoint_number << rang::fg::reset << " in "
                    << rang::fgB::yellow << filename << rang::fg::reset;
          throw NormalError(error_msg.str());
        }
    
        HighFive::Group checkpoint = file.getGroup(checkpoint_name);
        if (file.exist("resuming_checkpoint")) {
          file.unlink("resuming_checkpoint");
        }
        file.createHardLink("resuming_checkpoint", checkpoint);
        std::cout << "Resuming checkpoint " << rang::style::bold << "successfully" << rang::style::reset << " set to "
                  << rang::fgB::yellow << checkpoint_number << rang::fg::reset << '\n';
      }
      catch (HighFive::Exception& e) {
        throw NormalError(e.what());
      }
    }
    
    #else   // PUGS_HAS_HDF5
    
    void
    setResumeFrom(const std::string&, const uint64_t&)
    {
      std::cerr << rang::fgB::red << "error: " << rang::fg::reset << "setting resuming checkpoint requires HDF5\n";
    }
    
    #endif   // PUGS_HAS_HDF5