Utils¶
Common helper classes and functions used by plugins.
-
template <typename ControlType>
classPidControl¶ PID controller class.
- Template Parameters
ControlType: The Datatype of the scalar to control.
Public Functions
-
PidControl(ControlType initError, real Kp, real Ki, real Kd)¶ Initialize the PID.
- Parameters
initError: The initial difference between the current state and the target.Kp: The proportional coefficient.Ki: The integral coefficient.Kd: The derivative coefficient.
-
ControlType
update(ControlType error)¶ Update the internal state of the PID controller.
- Return
- The control variable value.
- Parameters
error: The difference between the current state and the target.
Friends
-
std::ofstream &
operator<<(std::ofstream &stream, const PidControl<ControlType> &pid)¶ Serialize a controller into a stream.
- Return
- The stream.
- Parameters
stream: The stream that will contain the serialized data.pid: The current state to serialize.
-
std::ifstream &
operator>>(std::ifstream &stream, PidControl<ControlType> &pid)¶ Deserialize a controller from a stream.
- Return
- The stream.
- Parameters
stream: The stream that contains the serialized data.pid: The deserialized state.
-
void
mirheo::writeXYZ(MPI_Comm comm, std::string fname, const real4 *positions, int np)¶ Dump positions to a file in xyz format using MPI IO.
- Parameters
comm: The MPI communicator.fname: The name of the target file.positions: Array of positions xyz_.np: Local number of particles.
-
bool
mirheo::isTimeEvery(const MirState *state, int dumpEvery)¶ Check if a dump should occur at the current time step.
- Return
trueif the current step is a dump time;falseotherwise.- Parameters
state: The current state of the simulation.dumpEvery: The number of steps between two dumps.
-
MirState::StepType
mirheo::getTimeStamp(const MirState *state, int dumpEvery)¶ Get the dump stamp from current time and dump frequency.
- Return
- The dump stamp.
- Parameters
state: The current state of the simulation.dumpEvery: The number of steps between two dumps.
-
class
SimpleSerializer¶ Helper class To serialize and deserialize data.
This is used to communicate data between simulation and postprocess plugins.
Only POD types and std::vectors/HostBuffers/PinnedBuffers of POD and std::strings are supported.
Public Static Functions
-
static int
totSize()¶ - Return
- The default total size of one element.
-
template <typename Arg>
static inttotSize(const Arg &arg)¶ The total size of one element.
- Return
- The size in bytes of the element.
- Template Parameters
Arg: The type of the element
- Parameters
arg: The element instance.
-
template <typename Arg, typename... OthArgs>
static inttotSize(const Arg &arg, const OthArgs&... othArgs)¶ The total size of one element.
- Return
- The size in bytes of all elements.
- Template Parameters
Arg: The type of the elementOthArgs: The types of the element other elements
- Parameters
arg: The element instance.othArgs: The other element instances.
-
template <typename... Args>
static voidserialize(std::vector<char> &buf, const Args&... args)¶ Serialize multiple elements into a buffer.
The buffer will be allocated to the correct size.
- Template Parameters
Args: The types the elements to serialize.
- Parameters
args: The elements to serialize.buf: The buffer that will contain the serialized data.
-
template <typename... Args>
static voiddeserialize(const std::vector<char> &buf, Args&... args)¶ Deserialize multiple elements from a buffer.
- Template Parameters
Args: The types the elements to deserialize.
- Parameters
args: The deserialized elements.buf: The buffer that contains the serialized data.
-
template <typename... Args>
static voidserialize(char *to, const Args&... args)¶ Serialize multiple elements into a buffer.
The buffer will NOT be allocated to the correct size.
- Template Parameters
Args: The types the elements to serialize.
- Parameters
args: The elements to serialize.to: The buffer that will contain the serialized data. Must be sufficiently large.
-
template <typename... Args>
static voiddeserialize(const char *from, Args&... args)¶ Deserialize multiple elements from a buffer.
- Template Parameters
Args: The types the elements to deserialize.
- Parameters
args: The deserialized elements.from: The buffer that contains the serialized data.
-
static int