39 lines
720 B
C++
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));
|
|
}
|
|
}; |