Files
MolecularDynamics2/src/md/Potentials.hpp
2023-10-29 20:50:54 -03:00

39 lines
720 B
C++

/**
* @file Potentials.hpp
* @author jun <jun@firmwarejun.net>
* @brief Potentials declarations
* @version 0.1
* @date 2023-07-25
*
* Copyright (c) 2023 jun <https://git.firmwarejun.net/jun/MolecularDynamics2>
*
*/
#pragma once
#include <cmath>
/**
* @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));
}
};