ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
Loading...
Searching...
No Matches
BreakageSpec.hpp
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2022-2026 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 "
core/bond_breakage/bond_breakage.hpp
"
23
24
#include "
script_interface/ScriptInterface.hpp
"
25
26
#include <memory>
27
#include <stdexcept>
28
#include <string>
29
#include <variant>
30
31
namespace
ScriptInterface
{
32
namespace
BondBreakage
{
33
34
class
BreakageSpec
:
public
AutoParameters
<BreakageSpec> {
35
public
:
36
BreakageSpec
()
37
: m_breakage_spec(
std
::make_shared<::
BondBreakage
::
BreakageSpec
>()) {
38
add_parameters
({
39
{
"breakage_length"
, m_breakage_spec->breakage_length},
40
{
"action_type"
,
41
[
this
](
Variant
const
&v) {
42
m_breakage_spec->action_type =
::BondBreakage::ActionType
{
43
m_breakage_str_to_enum.at(std::get<std::string>(v))};
44
},
45
[
this
]() {
46
return
Variant
(
47
m_breakage_enum_to_str.at(m_breakage_spec->action_type));
48
}},
49
});
50
}
51
52
std::shared_ptr<::BondBreakage::BreakageSpec>
breakage_spec
()
const
{
53
return
m_breakage_spec;
54
}
55
56
private
:
57
void
do_construct
(
VariantMap
const
¶ms)
override
{
58
context
()->
parallel_try_catch
([&]() {
59
// all parameters are required: reject construction if any is omitted,
60
// because "breakage_length" has no meaningful default (0.0 is a valid
61
// value that would silently queue every bond of that type for breakage)
62
for
(
auto
const
&
key
:
valid_parameters
()) {
63
if
(
not
params.contains(std::string{key})) {
64
throw
std::runtime_error(
"Parameter '"
+ std::string{
key
} +
65
"' is missing"
);
66
}
67
}
68
});
69
AutoParameters<BreakageSpec>::do_construct
(params);
70
}
71
72
std::shared_ptr<::BondBreakage::BreakageSpec> m_breakage_spec;
73
std::unordered_map<::BondBreakage::ActionType, std::string>
74
m_breakage_enum_to_str = {
75
{
::BondBreakage::ActionType::NONE
,
"none"
},
76
{
::BondBreakage::ActionType::DELETE_BOND
,
"delete_bond"
},
77
{
::BondBreakage::ActionType::REVERT_BIND_AT_POINT_OF_COLLISION
,
78
"revert_bind_at_point_of_collision"
}};
79
std::unordered_map<std::string, ::BondBreakage::ActionType>
80
m_breakage_str_to_enum = {
81
{
"none"
,
::BondBreakage::ActionType::NONE
},
82
{
"delete_bond"
,
::BondBreakage::ActionType::DELETE_BOND
},
83
{
"revert_bind_at_point_of_collision"
,
84
::BondBreakage::ActionType::REVERT_BIND_AT_POINT_OF_COLLISION
}};
85
};
86
87
}
// namespace BondBreakage
88
}
// namespace ScriptInterface
ScriptInterface.hpp
bond_breakage.hpp
ScriptInterface::AutoParameters
Bind parameters in the script interface.
Definition
AutoParameters.hpp:94
ScriptInterface::AutoParameters< BreakageSpec >::valid_parameters
std::vector< std::string_view > valid_parameters() const final
Definition
AutoParameters.hpp:141
ScriptInterface::AutoParameters< BreakageSpec >::add_parameters
void add_parameters(std::vector< AutoParameter > &¶ms)
Definition
AutoParameters.hpp:123
ScriptInterface::BondBreakage::BreakageSpec
Definition
BreakageSpec.hpp:34
ScriptInterface::BondBreakage::BreakageSpec::do_construct
void do_construct(VariantMap const ¶ms) override
Definition
BreakageSpec.hpp:57
ScriptInterface::BondBreakage::BreakageSpec::BreakageSpec
BreakageSpec()
Definition
BreakageSpec.hpp:36
ScriptInterface::BondBreakage::BreakageSpec::breakage_spec
std::shared_ptr<::BondBreakage::BreakageSpec > breakage_spec() const
Definition
BreakageSpec.hpp:52
ScriptInterface::Context::parallel_try_catch
virtual void parallel_try_catch(std::function< void()> const &cb) const =0
ScriptInterface::ObjectHandle::do_construct
virtual void do_construct(VariantMap const ¶ms)
Definition
ObjectHandle.hpp:79
ScriptInterface::ObjectHandle::context
Context * context() const
Responsible context.
Definition
ObjectHandle.hpp:57
stream
cudaStream_t stream[1]
CUDA streams for parallel computing on CPU and GPU.
Definition
common_cuda.cu:34
BondBreakage
Definition
actions.hpp:27
BondBreakage::ActionType
ActionType
Definition
bond_breakage.hpp:40
BondBreakage::ActionType::REVERT_BIND_AT_POINT_OF_COLLISION
@ REVERT_BIND_AT_POINT_OF_COLLISION
BondBreakage::ActionType::NONE
@ NONE
BondBreakage::ActionType::DELETE_BOND
@ DELETE_BOND
ScriptInterface
Definition
script_interface/accumulators/AccumulatorBase.hpp:34
ScriptInterface::VariantMap
std::unordered_map< std::string, Variant > VariantMap
Definition
Variant.hpp:133
ScriptInterface::Variant
make_recursive_variant< ObjectRef > Variant
Possible types for parameters.
Definition
Variant.hpp:131
std
STL namespace.
ScriptInterface::impl::recursive_variant
Recursive variant implementation.
Definition
Variant.hpp:84
src
script_interface
bond_breakage
BreakageSpec.hpp
Generated on Tue Aug 18 2026 01:33:37 for ESPResSo by
1.9.8