11 #include "../builtins/Arith.h"
13 #include "../shell/Shell.h"
20 unsigned int numData = 5;
26 Id a1 = shell->
doCreate(
"Arith", pa,
"a1", numData );
27 Id a2 = shell->
doCreate(
"Arith", pa,
"a2", numData );
29 Id b1 = shell->
doCreate(
"Arith", pa,
"b1", numData );
30 Id b2 = shell->
doCreate(
"Arith", pa,
"b2", numData );
32 Id c1 = shell->
doCreate(
"Arith", pa,
"c1", numData );
33 Id c2 = shell->
doCreate(
"Arith", pa,
"c2", numData );
35 Id d1 = shell->
doCreate(
"Arith", pa,
"d1", numData );
36 Id d2 = shell->
doCreate(
"Arith", pa,
"d2", numData );
38 Id e1 = shell->
doCreate(
"Arith", pa,
"e1", numData );
39 Id e2 = shell->
doCreate(
"Arith", pa,
"e2", numData );
45 vector< double >
init;
46 for (
unsigned int i = 1; i < 6; ++i )
64 ObjId( a1, 3 ),
"output",
ObjId( a2, 1 ),
"arg1" );
69 ObjId( b1, 2 ),
"output",
ObjId( b2, 0 ),
"arg1" );
74 ObjId( c1, 0 ),
"output",
ObjId( c2, 0 ),
"arg1" );
79 ObjId( d1, 0 ),
"output",
ObjId( d2, 0 ),
"arg1" );
84 ObjId( e1, 0 ),
"output",
ObjId( e2, 0 ),
"arg1" );
88 m5,
"setEntry", 0, 4, 0 );
91 m5,
"setEntry", 1, 3, 0 );
94 m5,
"setEntry", 2, 2, 0 );
97 m5,
"setEntry", 3, 1, 0 );
100 m5,
"setEntry", 4, 0, 0 );
110 assert( f ==
ObjId( a2, 1 ) );
113 assert( f ==
ObjId( a1, 3 ) );
126 assert( f ==
ObjId( b2, 0 ) );
129 assert( f ==
ObjId( b1, 2 ) );
131 assert( f ==
ObjId( b1, 2 ) );
133 assert( f ==
ObjId( b1, 2 ) );
135 assert( f ==
ObjId( b1, 2 ) );
137 assert( f ==
ObjId( b1, 2 ) );
146 for (
unsigned int i = 0; i < 5; ++i ) {
148 assert( f ==
ObjId( c2, i ) );
150 assert( f ==
ObjId( c1, i ) );
156 for (
unsigned int i = 0; i < 4; ++i ) {
158 assert( f ==
ObjId( d2, i + 1 ) );
160 assert( f ==
ObjId( d1, i ) );
171 for (
unsigned int i = 0; i < 5; ++i ) {
173 assert( f ==
ObjId( e2, 4 - i ) );
175 assert( f ==
ObjId( e1, 4 - i ) );
181 cout <<
"." << flush;
205 cout <<
"." << flush;
213 unsigned int numData = 1;
214 Id pa = shell->
doCreate(
"Neutral",
Id(),
"pa", numData );
221 Id a1 = shell->
doCreate(
"Arith", pa,
"a1", numData );
222 Id a2 = shell->
doCreate(
"Arith", pa,
"a2", numData );
224 Id b1 = shell->
doCreate(
"Arith", pa,
"b1", numData );
225 Id b2 = shell->
doCreate(
"Arith", pa,
"b2", numData );
227 Id c1 = shell->
doCreate(
"Arith", pa,
"c1", numData );
228 Id c2 = shell->
doCreate(
"Arith", pa,
"c2", numData );
230 Id d1 = shell->
doCreate(
"Arith", pa,
"d1", numData );
231 Id d2 = shell->
doCreate(
"Arith", pa,
"d2", numData );
233 Id e1 = shell->
doCreate(
"Arith", pa,
"e1", numData );
234 Id e2 = shell->
doCreate(
"Arith", pa,
"e2", numData );
240 ObjId( a1, 3 ),
"output",
ObjId( a2, 1 ),
"arg1" );
243 ObjId( b1, 2 ),
"output",
ObjId( b2, 0 ),
"arg1" );
246 ObjId( c1, 0 ),
"output",
ObjId( c2, 0 ),
"arg1" );
249 ObjId( d1, 0 ),
"output",
ObjId( d2, 0 ),
"arg1" );
252 ObjId( e1, 0 ),
"output",
ObjId( e2, 0 ),
"arg1" );
258 Id manager(
"/Msgs" );
259 assert( manager !=
Id() );
260 vector< Id > children =
262 assert( children.size() == 5 );
263 assert( children[0].element()->getName() ==
"singleMsg" );
264 assert( children[1].element()->getName() ==
"oneToOneMsg" );
265 assert( children[2].element()->getName() ==
"oneToAllMsg" );
266 assert( children[3].element()->getName() ==
"diagonalMsg" );
267 assert( children[4].element()->getName() ==
"sparseMsg" );
284 assert( children[0].
path() ==
"/Msgs[0]/singleMsg" );
285 assert( children[1].
path() ==
"/Msgs[0]/oneToOneMsg" );
286 assert( children[2].
path() ==
"/Msgs[0]/oneToAllMsg" );
287 assert( children[3].
path() ==
"/Msgs[0]/diagonalMsg" );
288 assert( children[4].
path() ==
"/Msgs[0]/sparseMsg" );
297 cout <<
"." << flush;
309 vector< double >
init( n );
310 for (
unsigned int i = 0; i < n; ++i )
311 init[i] = (i + 1) * 1e6;
315 if ( msgType ==
"Single" ) {
316 for (
unsigned int i = 0; i < n; ++i ) {
317 for (
unsigned int j = 0; j < n; ++j ) {
319 ObjId( a1, i ),
"output",
ObjId( a1, j ),
"arg3" );
323 }
else if ( msgType ==
"OneToAll" ) {
324 for (
unsigned int i = 0; i < n; ++i ) {
326 ObjId( a1, i ),
"output",
ObjId( a1, 0 ),
"arg3" );
329 }
else if ( msgType ==
"OneToOne" ) {
330 for (
unsigned int i = 0; i < n; ++i ) {
332 ObjId( a1, 0 ),
"output",
ObjId( a1, 0 ),
"arg3" );
335 }
else if ( msgType ==
"Diagonal" ) {
336 for (
unsigned int i = 0; i < 2 * n; ++i ) {
338 ObjId( a1, 0 ),
"output",
ObjId( a1, 0 ),
"arg3" );
341 }
else if ( msgType ==
"Sparse" ) {
343 ObjId( a1, 0 ),
"output",
ObjId( a1, 0 ),
"arg3" );
346 "setRandomConnectivity", 1.0, 1234 );
350 for (
unsigned int i = 0; i < 10; ++i )
356 for (
unsigned int i = 0; i < n; ++i )
361 for (
unsigned int i = 0; i < n; ++i ) {
362 cout << i <<
" " << init[i] <<
" ";
378 cout <<
"." << flush;
Id init(int argc, char **argv, bool &doUnitTests, bool &doRegressionTests, unsigned int &benchmark)
virtual ObjId findOtherEnd(ObjId) const =0
void doStart(double runtime, bool notify=false)
void benchmarkMsg(unsigned int n, string msgType)
Element * element() const
Synonym for Id::operator()()
void doSetClock(unsigned int tickNum, double dt)
static bool set(const ObjId &dest, const string &field, A arg)
Id doCreate(string type, ObjId parent, string name, unsigned int numData, NodePolicy nodePolicy=MooseBlockBalance, unsigned int preferredNode=1)
ObjId findCaller(FuncId fid) const
ObjId doAddMsg(const string &msgType, ObjId src, const string &srcField, ObjId dest, const string &destField)
static bool set(const ObjId &dest, const string &field, A1 arg1, A2 arg2, A3 arg3)
void doUseClock(string path, string field, unsigned int tick)
static const Msg * getMsg(ObjId m)
static const Cinfo * initCinfo()
static void getVec(ObjId dest, const string &field, vector< A > &vec)
void testMsgElementListing()
static bool setVec(ObjId destId, const string &field, const vector< A > &arg)
const Finfo * findFinfo(const string &name) const
static bool set(const ObjId &dest, const string &field, A1 arg1, A2 arg2)