/** * @file Potentials.hpp * @author jun * @brief Potentials declarations * @version 0.1 * @date 2023-07-25 * * Copyright (c) 2023 jun * */ #pragma once #include /** * @brief Potential generator base class * */ class Potential { public: virtual double potential(double r) = 0; virtual double force(double r) = 0; }; /** * @brief Lennard Jones potential generator * */ class LennardJones : public Potential { public: double potential(double r) override { return 4 * (std::pow(r, -12) - std::pow(r, -6)); } double force(double r) override { return 24 * (2 * std::pow(r, -13) - std::pow(r, -7)); } };