24#ifdef ESPRESSO_ELECTROSTATICS
40template <
class SIClass,
class CoreClass> Actor<SIClass, CoreClass>::Actor() {
43 [
this]() {
return m_actor->prefactor; }},
47 auto &
tolerance = m_actor->charge_neutrality_tolerance;
50 tolerance = m_actor->charge_neutrality_tolerance_default;
57 auto const tolerance = m_actor->charge_neutrality_tolerance;
60 {
"charge_neutrality_tolerance",
62 auto &
tolerance = m_actor->charge_neutrality_tolerance;
68 if (context()->is_head_node()) {
69 throw std::domain_error(
70 "Parameter 'charge_neutrality_tolerance' must be >= 0");
78 auto const tolerance = m_actor->charge_neutrality_tolerance;
87template <
class SIClass,
class CoreClass>
91 if (name ==
"activate") {
92 context()->parallel_try_catch([
this]() {
93 auto &
system = get_system();
94 add_actor(context()->get_comm(), m_system.lock(),
95 system.coulomb.impl->solver, m_actor,
96 [&
system]() { system.on_coulomb_change(); });
Variant do_call_method(std::string const &name, VariantMap const ¶ms) override
cudaStream_t stream[1]
CUDA streams for parallel computing on CPU and GPU.
constexpr bool is_none(Variant const &v)
std::unordered_map< std::string, Variant > VariantMap
Variant make_variant(const T &x)
Make a Variant from argument.
make_recursive_variant< ObjectRef > Variant
Possible types for parameters.
constexpr const None none
None-"literal".
void add_actor(boost::mpi::communicator const &comm, std::shared_ptr< System::System > const &system, std::optional< Variant > &active_actor, std::shared_ptr< T > const &actor, F &&on_actor_change)
static SteepestDescentParameters params
Currently active steepest descent instance.
static constexpr const ReadOnly read_only
Recursive variant implementation.