ProcessOp Struct Reference

SPADES API: spades::models::Phold::ProcessOp Struct Reference
SPADES API
spades::models::Phold::ProcessOp Struct Reference

A struct that defines an operator for processing messages. More...

#include <Phold.H>

Public Member Functions

template<class MParrs , class EParrs >
AMREX_GPU_DEVICE int operator() (const MParrs &msg_parrs, const EParrs &ent_parrs, const amrex::IntVect &iv, const int rcv_msg, const int snd_msg, const int ent, const int ent_idx, amrex::RandomEngine const &engine) const
 Callable operator to process a message.
 

Public Attributes

amrex::Real m_lookahead {1.0}
 Lookahead value (optional user input)
 
amrex::Real m_lambda {1.0}
 
int m_entities_per_lp {1}
 Number of entities per logical process (optional user input)
 
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > m_dx
 Spatial discretization.
 
amrex::Box m_dom
 Domain.
 
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > m_plo
 Problem low bounds.
 

Detailed Description

A struct that defines an operator for processing messages.

Member Function Documentation

◆ operator()()

template<class MParrs , class EParrs >
AMREX_GPU_DEVICE int spades::models::Phold::ProcessOp::operator() ( const MParrs & msg_parrs,
const EParrs & ent_parrs,
const amrex::IntVect & iv,
const int rcv_msg,
const int snd_msg,
const int ent,
const int ent_idx,
amrex::RandomEngine const & engine ) const
inline

Callable operator to process a message.

Template Parameters
MParrstype of the message particle array
EParrstype of the entity particle array
Parameters
msg_parrsmessage particle array
ent_parrsentity particle array
ivcell index of the particle
rcv_msgindex of the received message
snd_msgindex of the sending message particle
entglobal ID of the entity
ent_idxindex of the entity
enginerandom engine
Returns
n_sent_messages number of sent messages
62 {
63 const auto& dlo = m_dom.smallEnd();
64 const auto& dhi = m_dom.bigEnd();
65 const auto ts =
66 msg_parrs
67 .m_rdata[particles::CommonRealData::timestamp][rcv_msg];
68
69 msg_parrs
71 ent_parrs
72 .m_rdata[particles::CommonRealData::timestamp][ent_idx];
73 ent_parrs.m_rdata[particles::CommonRealData::timestamp][ent_idx] =
74 ts;
75 msg_parrs.m_idata[particles::CommonIntData::type_id][rcv_msg] =
77
78 const auto ent_lvt =
79 ent_parrs
80 .m_rdata[particles::CommonRealData::timestamp][ent_idx];
81 const amrex::IntVect iv_dest(AMREX_D_DECL(
82 amrex::Random_int(dhi[0] - dlo[0] + 1, engine) + dlo[0],
83 amrex::Random_int(dhi[1] - dlo[1] + 1, engine) + dlo[1],
84 amrex::Random_int(dhi[2] - dlo[2] + 1, engine) + dlo[2]));
85 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM> pos = {
86 AMREX_D_DECL(
87 m_plo[0] + (iv_dest[0] + constants::HALF) * m_dx[0],
88 m_plo[1] + (iv_dest[1] + constants::HALF) * m_dx[1],
89 m_plo[2] + (iv_dest[2] + constants::HALF) * m_dx[2])};
90 const int rcv_ent =
91 static_cast<int>(amrex::Random_int(m_entities_per_lp, engine));
92 const amrex::Real next_ts =
93 ent_lvt + random_exponential(m_lambda, engine) + m_lookahead;
94
95 particles::CreateMessage()(
96 snd_msg, msg_parrs, next_ts, pos, iv_dest,
97 static_cast<int>(m_dom.index(iv)), ent,
98 static_cast<int>(m_dom.index(iv_dest)), rcv_ent);
99 const int n_sent_messages = 1;
100 return n_sent_messages;
101 }
static constexpr amrex::Real HALF
Definition Constants.H:37
amrex::Real random_exponential(const amrex::Real lambda)
Exponential distribution.
Definition Utilities.cpp:4
int m_entities_per_lp
Number of entities per logical process (optional user input)
Definition Phold.H:112
amrex::Real m_lambda
Definition Phold.H:109
amrex::Real m_lookahead
Lookahead value (optional user input)
Definition Phold.H:104
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > m_dx
Spatial discretization.
Definition Phold.H:115
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > m_plo
Problem low bounds.
Definition Phold.H:121
amrex::Box m_dom
Domain.
Definition Phold.H:118
@ type_id
Definition ParticleData.H:18
@ timestamp
Definition ParticleData.H:12
@ old_timestamp
Definition MessageData.H:12
static constexpr int PROCESSED
Processed message.
Definition MessageData.H:38
Here is the call graph for this function:

Member Data Documentation

◆ m_dom

amrex::Box spades::models::Phold::ProcessOp::m_dom

Domain.

◆ m_dx

amrex::GpuArray<amrex::Real, AMREX_SPACEDIM> spades::models::Phold::ProcessOp::m_dx

Spatial discretization.

◆ m_entities_per_lp

int spades::models::Phold::ProcessOp::m_entities_per_lp {1}

Number of entities per logical process (optional user input)

112{1};

◆ m_lambda

amrex::Real spades::models::Phold::ProcessOp::m_lambda {1.0}

Width of exponential distribution (optional user input) smaller values of lambda = larger variance in random values larger values of lambda = smaller variance in random values

109{1.0};

◆ m_lookahead

amrex::Real spades::models::Phold::ProcessOp::m_lookahead {1.0}

Lookahead value (optional user input)

104{1.0};

◆ m_plo

amrex::GpuArray<amrex::Real, AMREX_SPACEDIM> spades::models::Phold::ProcessOp::m_plo

Problem low bounds.


The documentation for this struct was generated from the following file:
  • /home/runner/work/spades/spades/Source/Models/Phold.H