Skip to content
Snippets Groups Projects
Forked from agnumpde / dune-tectonic
11 commits ahead of the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
restart-io.cc 2.17 KiB
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include "restart-io.hh"

template <class ProgramState>
RestartIO<ProgramState>::RestartIO(HDF5::Grouplike &group, size_t vertexCount)
    : displacementWriter_(group, "displacement", vertexCount,
                          Vector::block_type::dimension),
      velocityWriter_(group, "velocity", vertexCount,
                      Vector::block_type::dimension),
      accelerationWriter_(group, "acceleration", vertexCount,
                          Vector::block_type::dimension),
      stateWriter_(group, "state", vertexCount),
      weightedNormalStressWriter_(group, "weightedNormalStress", vertexCount),
      relativeTimeWriter_(group, "relativeTime"),
      relativeTimeIncrementWriter_(group, "relativeTimeIncrement") {}

template <class ProgramState>
void RestartIO<ProgramState>::write(ProgramState const &programState) {
    // TODO
  addEntry(displacementWriter_, programState.timeStep, programState.u[0]);
  addEntry(velocityWriter_, programState.timeStep, programState.v[0]);
  addEntry(accelerationWriter_, programState.timeStep, programState.a[0]);
  addEntry(stateWriter_, programState.timeStep, programState.alpha[0]);
  addEntry(weightedNormalStressWriter_, programState.timeStep,
           programState.weightedNormalStress[0]);
  addEntry(relativeTimeWriter_, programState.timeStep,
           programState.relativeTime);
  addEntry(relativeTimeIncrementWriter_, programState.timeStep,
           programState.relativeTau);
}

template <class ProgramState>
void RestartIO<ProgramState>::read(size_t timeStep,
                                   ProgramState &programState) {
  programState.timeStep = timeStep;
  // TODO
  readEntry(displacementWriter_, timeStep, programState.u[0]);
  readEntry(velocityWriter_, timeStep, programState.v[0]);
  readEntry(accelerationWriter_, timeStep, programState.a[0]);
  readEntry(stateWriter_, timeStep, programState.alpha[0]);
  readEntry(weightedNormalStressWriter_, timeStep,
            programState.weightedNormalStress[0]);
  readEntry(relativeTimeWriter_, timeStep, programState.relativeTime);
  readEntry(relativeTimeIncrementWriter_, timeStep, programState.relativeTau);
}

#include "restart-io_tmpl.cc"