ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
Loading...
Searching...
No Matches
core/constraints/ExternalPotential.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/PotentialField.hpp
"
25
26
namespace
Constraints
{
27
/**
28
* @brief Constraint interface for ExternalField::PotentialField.
29
*/
30
template
<
typename
Coupling,
typename
Field>
31
class
ExternalPotential
:
public
Constraint
{
32
FieldCoupling::PotentialField<Coupling, Field>
impl;
33
34
public
:
35
template
<
typename
... Args>
36
ExternalPotential
(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
&p,
const
Utils::Vector3d
&folded_pos,
42
double
time,
Observable_stat
&obs_energy)
const override
{
43
obs_energy.
external_fields
[0] += impl.
energy
(p, folded_pos, time);
44
}
45
46
ParticleForce
force
(
const
Particle
&p,
const
Utils::Vector3d
&folded_pos,
47
double
time)
override
{
48
return
impl.
force
(p, folded_pos, time);
49
}
50
51
bool
fits_in_box
(
Utils::Vector3d
const
&box)
const override
{
52
return
impl.field().fits_in_box(box);
53
}
54
};
55
}
// namespace Constraints
Particle.hpp
PotentialField.hpp
Constraints::Constraint
Definition
core/constraints/Constraint.hpp:30
Constraints::ExternalPotential
Constraint interface for ExternalField::PotentialField.
Definition
core/constraints/ExternalPotential.hpp:31
Constraints::ExternalPotential::force
ParticleForce force(const Particle &p, const Utils::Vector3d &folded_pos, double time) override
Definition
core/constraints/ExternalPotential.hpp:46
Constraints::ExternalPotential::field
const Field & field() const
Definition
core/constraints/ExternalPotential.hpp:39
Constraints::ExternalPotential::ExternalPotential
ExternalPotential(Args &&...args)
Definition
core/constraints/ExternalPotential.hpp:36
Constraints::ExternalPotential::fits_in_box
bool fits_in_box(Utils::Vector3d const &box) const override
Definition
core/constraints/ExternalPotential.hpp:51
Constraints::ExternalPotential::coupling
const Coupling & coupling() const
Definition
core/constraints/ExternalPotential.hpp:38
Constraints::ExternalPotential::add_energy
void add_energy(const Particle &p, const Utils::Vector3d &folded_pos, double time, Observable_stat &obs_energy) const override
Definition
core/constraints/ExternalPotential.hpp:41
FieldCoupling::PotentialField
Definition
PotentialField.hpp:29
FieldCoupling::PotentialField::energy
double energy(const Particle &p, const Utils::Vector3d &folded_pos, double t) const
Definition
PotentialField.hpp:46
FieldCoupling::PotentialField::force
Utils::Vector3d force(const Particle &p, const Utils::Vector3d &folded_pos, double t) const
Definition
PotentialField.hpp:39
Observable_stat
Observable for the pressure and energy.
Definition
Observable_stat.hpp:31
Observable_stat::external_fields
std::span< double > external_fields
Contribution from external fields (accumulated).
Definition
Observable_stat.hpp:84
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
ExternalPotential.hpp
Generated on Fri Nov 8 2024 02:12:53 for ESPResSo by
1.9.8