libMesh
Static Public Member Functions | List of all members
TIMPI::OpFunction< Point > Class Template Reference

#include <parallel_algebra.h>

Inheritance diagram for TIMPI::OpFunction< Point >:
[legend]

Static Public Member Functions

static void vector_max (void *invec, void *inoutvec, int *len, MPI_Datatype *)
 
static void vector_min (void *invec, void *inoutvec, int *len, MPI_Datatype *)
 
static void vector_sum (void *invec, void *inoutvec, int *len, MPI_Datatype *)
 
static MPI_Op max ()
 
static MPI_Op min ()
 
static MPI_Op sum ()
 

Detailed Description

template<>
class TIMPI::OpFunction< Point >

Definition at line 357 of file parallel_algebra.h.

Member Function Documentation

◆ max()

static MPI_Op TIMPI::TypeVectorOpFunction< Point >::max ( )
inlinestaticinherited

Definition at line 295 of file parallel_algebra.h.

296  {
297  // _static_op never gets freed, but it only gets committed once
298  // per T, so it's not a *huge* memory leak...
299  static MPI_Op _static_op;
300  static bool _is_initialized = false;
301  if (!_is_initialized)
302  {
303  timpi_call_mpi
304  (MPI_Op_create (vector_max, /*commute=*/ true,
305  &_static_op));
306 
307  _is_initialized = true;
308  }
309 
310  return _static_op;
311  }

◆ min()

static MPI_Op TIMPI::TypeVectorOpFunction< Point >::min ( )
inlinestaticinherited

Definition at line 312 of file parallel_algebra.h.

313  {
314  // _static_op never gets freed, but it only gets committed once
315  // per T, so it's not a *huge* memory leak...
316  static MPI_Op _static_op;
317  static bool _is_initialized = false;
318  if (!_is_initialized)
319  {
320  timpi_call_mpi
321  (MPI_Op_create (vector_min, /*commute=*/ true,
322  &_static_op));
323 
324  _is_initialized = true;
325  }
326 
327  return _static_op;
328  }

◆ sum()

static MPI_Op TIMPI::TypeVectorOpFunction< Point >::sum ( )
inlinestaticinherited

Definition at line 329 of file parallel_algebra.h.

330  {
331  // _static_op never gets freed, but it only gets committed once
332  // per T, so it's not a *huge* memory leak...
333  static MPI_Op _static_op;
334  static bool _is_initialized = false;
335  if (!_is_initialized)
336  {
337  timpi_call_mpi
338  (MPI_Op_create (vector_sum, /*commute=*/ true,
339  &_static_op));
340 
341  _is_initialized = true;
342  }
343 
344  return _static_op;
345  }

◆ vector_max()

static void TIMPI::TypeVectorOpFunction< Point >::vector_max ( void *  invec,
void *  inoutvec,
int len,
MPI_Datatype *   
)
inlinestaticinherited

Definition at line 268 of file parallel_algebra.h.

269  {
270  V *in = static_cast<V *>(invec);
271  V *inout = static_cast<V *>(inoutvec);
272  for (int i=0; i != *len; ++i)
273  for (int d=0; d != LIBMESH_DIM; ++d)
274  inout[i](d) = std::max(in[i](d), inout[i](d));
275  }

◆ vector_min()

static void TIMPI::TypeVectorOpFunction< Point >::vector_min ( void *  invec,
void *  inoutvec,
int len,
MPI_Datatype *   
)
inlinestaticinherited

Definition at line 277 of file parallel_algebra.h.

278  {
279  V *in = static_cast<V *>(invec);
280  V *inout = static_cast<V *>(inoutvec);
281  for (int i=0; i != *len; ++i)
282  for (int d=0; d != LIBMESH_DIM; ++d)
283  inout[i](d) = std::min(in[i](d), inout[i](d));
284  }

◆ vector_sum()

static void TIMPI::TypeVectorOpFunction< Point >::vector_sum ( void *  invec,
void *  inoutvec,
int len,
MPI_Datatype *   
)
inlinestaticinherited

Definition at line 286 of file parallel_algebra.h.

287  {
288  V *in = static_cast<V *>(invec);
289  V *inout = static_cast<V *>(inoutvec);
290  for (int i=0; i != *len; ++i)
291  for (int d=0; d != LIBMESH_DIM; ++d)
292  inout[i](d) += in[i](d);
293  }

The documentation for this class was generated from the following file:
TIMPI::TypeVectorOpFunction< Point >::vector_min
static void vector_min(void *invec, void *inoutvec, int *len, MPI_Datatype *)
Definition: parallel_algebra.h:277
TIMPI::TypeVectorOpFunction< Point >::vector_max
static void vector_max(void *invec, void *inoutvec, int *len, MPI_Datatype *)
Definition: parallel_algebra.h:268
TIMPI::TypeVectorOpFunction< Point >::vector_sum
static void vector_sum(void *invec, void *inoutvec, int *len, MPI_Datatype *)
Definition: parallel_algebra.h:286
libMesh::libMeshPrivateData::_is_initialized
bool _is_initialized
Flag that tells if init() has been called.
Definition: libmesh.C:246