ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
Loading...
Searching...
No Matches
core/constraints/ExternalField.hpp
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2010-2022 The ESPResSo project
3
*
4
* This file is part of ESPResSo.
5
*
6
* ESPResSo is free software: you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation, either version 3 of the License, or
9
* (at your option) any later version.
10
*
11
* ESPResSo is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
20
#pragma once
21
22
#include "
Constraint.hpp
"
23
#include "
Particle.hpp
"
24
#include "
field_coupling/ForceField.hpp
"
25
26
namespace
Constraints
{
27
/**
28
* @brief Constraint interface for ExternalField::ForceField.
29
*/
30
template
<
typename
Coupling,
typename
Field>
31
class
ExternalField
:
public
Constraint
{
32
FieldCoupling::ForceField<Coupling, Field>
impl;
33
34
public
:
35
template
<
typename
... Args>
36
ExternalField
(Args &&...args) : impl(std::forward<Args>(args)...) {}
37
38
const
Coupling &
coupling
()
const
{
return
impl.coupling(); }
39
const
Field &
field
()
const
{
return
impl.field(); }
40
41
void
add_energy
(
const
Particle
&,
const
Utils::Vector3d
&,
double
,
42
Observable_stat
&)
const override
{}
43
44
ParticleForce
force
(
const
Particle
&p,
const
Utils::Vector3d
&folded_pos,
45
double
time)
override
{
46
return
impl.
force
(p, folded_pos, time);
47
}
48
49
bool
fits_in_box
(
Utils::Vector3d
const
&box)
const override
{
50
return
impl.field().fits_in_box(box);
51
}
52
};
53
}
// namespace Constraints
ForceField.hpp
Particle.hpp
Constraints::Constraint
Definition
core/constraints/Constraint.hpp:30
Constraints::ExternalField
Constraint interface for ExternalField::ForceField.
Definition
core/constraints/ExternalField.hpp:31
Constraints::ExternalField::field
const Field & field() const
Definition
core/constraints/ExternalField.hpp:39
Constraints::ExternalField::ExternalField
ExternalField(Args &&...args)
Definition
core/constraints/ExternalField.hpp:36
Constraints::ExternalField::force
ParticleForce force(const Particle &p, const Utils::Vector3d &folded_pos, double time) override
Definition
core/constraints/ExternalField.hpp:44
Constraints::ExternalField::coupling
const Coupling & coupling() const
Definition
core/constraints/ExternalField.hpp:38
Constraints::ExternalField::fits_in_box
bool fits_in_box(Utils::Vector3d const &box) const override
Definition
core/constraints/ExternalField.hpp:49
Constraints::ExternalField::add_energy
void add_energy(const Particle &, const Utils::Vector3d &, double, Observable_stat &) const override
Definition
core/constraints/ExternalField.hpp:41
FieldCoupling::ForceField
Definition
ForceField.hpp:29
FieldCoupling::ForceField::force
Utils::Vector3d force(const Particle &p, const Utils::Vector3d &folded_pos, double t) const
Definition
ForceField.hpp:39
Observable_stat
Observable for the pressure and energy.
Definition
Observable_stat.hpp:31
Utils::Vector
Definition
Vector.hpp:48
Constraints
Definition
core/constraints/Constraint.hpp:29
Constraint.hpp
ParticleForce
Force information on a particle.
Definition
Particle.hpp:290
Particle
Struct holding all information for one particle.
Definition
Particle.hpp:395
src
core
constraints
ExternalField.hpp
Generated on Fri Nov 22 2024 02:13:54 for ESPResSo by
1.9.8