#ifndef SRC_ONE_BODY_PROBLEM_DATA_BC_HH
#define SRC_ONE_BODY_PROBLEM_DATA_BC_HH

class VelocityDirichletCondition
    : public Dune::VirtualFunction<double, double> {
  void evaluate(double const &relativeTime, double &y) const {
    // Assumed to vanish at time zero
    double const finalVelocity = -5e-5;
    y = (relativeTime <= 0.1)
            ? finalVelocity * (1.0 - std::cos(relativeTime * M_PI / 0.1)) / 2.0
            : finalVelocity;
  }
};

class NeumannCondition : public Dune::VirtualFunction<double, double> {
  void evaluate(double const &relativeTime, double &y) const { y = 0.0; }
};
#endif