OPAL (Object Oriented Parallel Accelerator Library)
2024.1
OPAL
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
ippl
src
Particle
PAssign.h
Go to the documentation of this file.
1
// -*- C++ -*-
2
/***************************************************************************
3
*
4
* The IPPL Framework
5
*
6
*
7
* Visit http://people.web.psi.ch/adelmann/ for more details
8
*
9
***************************************************************************/
10
11
#ifndef PASSIGN_H
12
#define PASSIGN_H
13
14
// include files
15
#include "
Particle/PAssignDefs.h
"
16
#include "
PETE/IpplExpressions.h
"
17
#include "
AppTypes/AppTypeTraits.h
"
18
19
21
22
// ParticleAttrib = Expression
23
template
<
class
T,
class
RHS,
class
OP>
24
void
25
assign
(
const
ParticleAttrib<T>
& a, RHS b, OP op);
26
27
// ParticleAttribElem = Expression
28
template
<
class
T,
unsigned
Dim,
class
RHS,
class
OP>
29
void
30
assign
(
const
ParticleAttribElem<T,Dim>
& a, RHS b, OP op);
31
32
34
35
36
// ParticleAttrib = constant;
37
template
<
class
T,
class
OP>
38
inline
void
39
assign
(
const
ParticleAttrib<T>
& a,
const
T
& b, OP op)
40
{
41
assign
(a,
PETE_Scalar<T>
(b), op);
42
}
43
44
// ParticleAttribElem = constant;
45
template
<
class
T,
unsigned
D,
class
OP>
46
inline
void
47
assign
(
const
ParticleAttribElem<T,D>
& a,
48
const
typename
AppTypeTraits<T>::Element_t
& b, OP op)
49
{
50
assign
(a,
PETE_Scalar
<
typename
AppTypeTraits<T>::Element_t
>(b), op);
51
}
52
53
55
56
#define ASSIGNMENT_OPERATORS_PTCL(FUNC,OP) \
57
\
58
template<class T, unsigned D, class RHS> \
59
inline void \
60
FUNC(const ParticleAttribElem<T,D>& lhs, const PETE_Expr<RHS>& rhs) \
61
{ \
62
assign(lhs,rhs.PETE_unwrap().MakeExpression(),OP()); \
63
} \
64
\
65
template<class T, unsigned D> \
66
inline void \
67
FUNC(const ParticleAttribElem<T,D>& lhs, \
68
typename AppTypeTraits<T>::Element_t rhs) \
69
{ \
70
assign(lhs,PETE_Scalar<typename AppTypeTraits<T>::Element_t>(rhs),OP()); \
71
} \
72
\
73
template<class T, class RHS> \
74
inline void \
75
FUNC(const ParticleAttrib<T>& lhs, const PETE_Expr<RHS>& rhs) \
76
{ \
77
assign(lhs,rhs.PETE_unwrap().MakeExpression(),OP()); \
78
} \
79
\
80
template<class T> \
81
inline void \
82
FUNC(const ParticleAttrib<T>& lhs, T rhs) \
83
{ \
84
assign(lhs,PETE_Scalar<T>(rhs),OP()); \
85
}
86
87
ASSIGNMENT_OPERATORS_PTCL
(
assign
,
OpAssign
)
88
ASSIGNMENT_OPERATORS_PTCL
(operator<<,
OpAssign
)
89
ASSIGNMENT_OPERATORS_PTCL
(operator+=,
OpAddAssign
)
90
ASSIGNMENT_OPERATORS_PTCL
(operator-=,
OpSubtractAssign
)
91
ASSIGNMENT_OPERATORS_PTCL
(operator*=,
OpMultipplyAssign
)
92
ASSIGNMENT_OPERATORS_PTCL
(operator/=,
OpDivideAssign
)
93
ASSIGNMENT_OPERATORS_PTCL
(
mineq
,
OpMinAssign
)
94
ASSIGNMENT_OPERATORS_PTCL
(
maxeq
,
OpMaxAssign
)
95
96
#include "Particle/PAssign.hpp"
97
98
#endif // PASSIGN_H
99
100
/***************************************************************************
101
* $RCSfile: PAssign.h,v $ $Author: adelmann $
102
* $Revision: 1.1.1.1 $ $Date: 2003/01/23 07:40:28 $
103
* IPPL_VERSION_ID: $Id: PAssign.h,v 1.1.1.1 2003/01/23 07:40:28 adelmann Exp $
104
***************************************************************************/
AppTypeTraits::Element_t
T::Element_t Element_t
Definition:
AppTypeTraits.h:19
maxeq
void maxeq(const PETE_Expr< LHS > &lhs, const PETE_Expr< RHS > &rhs)
Definition:
Assign.h:183
OpMultipplyAssign
Definition:
TypeComputations.h:567
assign
void assign(const BareField< T, Dim > &a, RHS b, OP op, ExprTag< true >)
PETE_Scalar
Definition:
PETE.h:142
OpMaxAssign
Definition:
IpplTypeComputations.h:619
PAssignDefs.h
OpMinAssign
Definition:
IpplTypeComputations.h:615
OpAddAssign
Definition:
TypeComputations.h:557
Attrib::Legacy::Distribution::T
Definition:
Distribution.h:171
mineq
void mineq(const PETE_Expr< LHS > &lhs, const PETE_Expr< RHS > &rhs)
Definition:
Assign.h:182
OpSubtractAssign
Definition:
TypeComputations.h:562
OpDivideAssign
Definition:
TypeComputations.h:572
ParticleAttribElem
Definition:
ParticleAttribElem.h:67
AppTypeTraits.h
ParticleAttrib
Definition:
MakeDataSource.h:25
OpAssign
Definition:
TypeComputations.h:552
ASSIGNMENT_OPERATORS_PTCL
#define ASSIGNMENT_OPERATORS_PTCL(FUNC, OP)
Definition:
PAssign.h:56
IpplExpressions.h
Generated on Tue Jul 2 2024 15:05:15 for OPAL (Object Oriented Parallel Accelerator Library) by
1.8.5