ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
Loading...
Searching...
No Matches
script_interface/collision_detection/BindCenters.hpp
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2021-2024 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 <
config/config.hpp
>
23
24
#ifdef ESPRESSO_COLLISION_DETECTION
25
26
#include "
Protocol.hpp
"
27
28
#include "
core/collision_detection/BindCenters.hpp
"
29
30
#include "
script_interface/ScriptInterface.hpp
"
31
#include "
script_interface/auto_parameters/AutoParameters.hpp
"
32
33
#include <memory>
34
#include <variant>
35
36
namespace
ScriptInterface::CollisionDetection
{
37
38
class
BindCenters
:
public
Protocol
{
39
using
CoreClass
=
::CollisionDetection::BindCenters
;
40
41
public
:
42
BindCenters
() {
43
add_parameters
(
44
{{
"bond_centers"
,
AutoParameter::read_only
,
45
[
this
]() {
46
return
get_bond_variant_by_id
(
47
std::get<CoreClass>(*m_protocol).bond_centers);
48
}},
49
{
"_bond_centers"
,
AutoParameter::read_only
,
50
[
this
]() {
return
std::get<CoreClass>(*m_protocol).bond_centers; }},
51
{
"distance"
,
AutoParameter::read_only
,
52
[
this
]() {
return
std::get<CoreClass>(*m_protocol).distance; }}});
53
}
54
std::shared_ptr<::CollisionDetection::ActiveProtocol>
protocol
()
override
{
55
return
m_protocol;
56
}
57
58
private
:
59
std::shared_ptr<::CollisionDetection::ActiveProtocol> m_protocol;
60
61
protected
:
62
void
do_initialize
(
VariantMap
const
¶ms)
override
{
63
auto
const
bond_center
=
find_bond_id
(params.contains(
"_bond_centers"
)
64
? params.at(
"_bond_centers"
)
65
: params.at(
"bond_centers"
));
66
m_protocol = std::make_shared<::CollisionDetection::ActiveProtocol>(
67
CoreClass
(
get_value<double>
(params,
"distance"
),
bond_center
));
68
}
69
};
70
71
}
// namespace ScriptInterface::CollisionDetection
72
73
#endif
// ESPRESSO_COLLISION_DETECTION
AutoParameters.hpp
ScriptInterface.hpp
CollisionDetection::BindCenters
Definition
core/collision_detection/BindCenters.hpp:36
ScriptInterface::AutoParameters< Protocol >::add_parameters
void add_parameters(std::vector< AutoParameter > &¶ms)
Definition
AutoParameters.hpp:123
ScriptInterface::CollisionDetection::BindCenters
Definition
script_interface/collision_detection/BindCenters.hpp:38
ScriptInterface::CollisionDetection::BindCenters::protocol
std::shared_ptr<::CollisionDetection::ActiveProtocol > protocol() override
Definition
script_interface/collision_detection/BindCenters.hpp:54
ScriptInterface::CollisionDetection::BindCenters::do_initialize
void do_initialize(VariantMap const ¶ms) override
Definition
script_interface/collision_detection/BindCenters.hpp:62
ScriptInterface::CollisionDetection::BindCenters::BindCenters
BindCenters()
Definition
script_interface/collision_detection/BindCenters.hpp:42
ScriptInterface::CollisionDetection::Protocol
Definition
collision_detection/Protocol.hpp:42
ScriptInterface::CollisionDetection::Protocol::find_bond_id
auto find_bond_id(Variant const &v) const
Definition
collision_detection/Protocol.hpp:65
ScriptInterface::CollisionDetection::Protocol::get_bond_variant_by_id
auto get_bond_variant_by_id(int bond_id)
Definition
collision_detection/Protocol.hpp:84
config.hpp
BindCenters.hpp
Protocol.hpp
ScriptInterface::CollisionDetection
Definition
script_interface/collision_detection/BindAtPointOfCollision.hpp:37
ScriptInterface::get_value
T get_value(Variant const &v)
Extract value of specific type T from a Variant.
Definition
get_value.hpp:398
ScriptInterface::VariantMap
std::unordered_map< std::string, Variant > VariantMap
Definition
Variant.hpp:133
ScriptInterface::AutoParameter::read_only
static constexpr const ReadOnly read_only
Definition
AutoParameter.hpp:42
src
script_interface
collision_detection
BindCenters.hpp
Generated on Sun Jan 4 2026 02:32:22 for ESPResSo by
1.9.8