14 template<
typename T,
typename... Args>
16 return std::unique_ptr<T>(
new T(std::forward<Args>(args)...));
31 inline const std::vector<ModuleBase::Vector3<double>> &
get_force(
bool cal=
true) {
44 std::vector<ModuleBase::Vector3<double>>
force_;
62 std::ofstream* plog =
nullptr);
3x3 matrix and related mathamatical operations
Definition matrix3.h:19
double get_energy(bool cal=true)
Definition vdw.h:27
virtual void cal_energy()=0
const UnitCell & ucell_
Definition vdw.h:41
const ModuleBase::Matrix3 & get_stress(bool cal=true)
Definition vdw.h:35
const std::vector< ModuleBase::Vector3< double > > & get_force(bool cal=true)
Definition vdw.h:31
ModuleBase::Matrix3 stress_
Definition vdw.h:45
double energy_
Definition vdw.h:43
virtual void cal_force()=0
Vdw(const UnitCell &unit_in)
Definition vdw.h:23
std::vector< ModuleBase::Vector3< double > > force_
Definition vdw.h:44
virtual void cal_stress()=0
#define T
Definition exp.cpp:237
std::unique_ptr< Vdw > make_vdw(const UnitCell &ucell, const Input_para &input, std::ofstream *plog)
make vdw correction object
Definition vdw.cpp:43
std::unique_ptr< T > make_unique(Args &&... args)
Definition vdw.h:15