Remove 'test' Directory
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Remove 'test' Directory



Stephen, OK to commit this patch?

This patch removes the four tests in the Pooma 'test' directory.  If
this is not acceptable, please send email to
pooma-dev@xxxxxxxxxxxxxxxxxxxxxx stating what should be done with
these test programs, e.g., move them into src/.../tests/ directories.

2001-10-04  Jeffrey D. Oldham  <oldham@xxxxxxxxxxxxxxxx>

	* Domain/Loc/Characteristics/LocCharacteristics.cpp: Remove this
	stale file.
	* Domain/NewDomain/Constructors/NewDomainConstructor.cpp: Likewise.
	* Domain/Range/Constructors/RangeConstructor.cpp: Likewise.
	* Domain/Range/Constructors/makefile: Likewise.
	* Engine/BrickEngine/BrickEngine/BrickEngineTest.cpp: Likewise.

Nothing to test.
Applied to	mainline.
Approved by	???you???

Thanks,
Jeffrey D. Oldham
oldham@xxxxxxxxxxxxxxxx
Index: Domain/Loc/Characteristics/LocCharacteristics.cpp
===================================================================
RCS file: LocCharacteristics.cpp
diff -N LocCharacteristics.cpp
*** /tmp/cvsm6VP8z	Thu Oct  4 12:11:21 2001
--- /dev/null	Fri Mar 23 21:37:44 2001
***************
*** 1,315 ****
- // -*- C++ -*-
- //--------------------------------------------------------------------
- 
- // Loc Characteristics  Component Test Code
- //--------------------------------------------------------------------
- 
- #include "Pooma/Pooma.h"
- #include "Domain/Loc.h"
- #include <iostream.h>
- #include <string.h>
- #include <iomanip.h>
- 
- void reportResults(int n, char *test, bool testStatus)
- {
-   char* statusString = "passed";
-   if(!testStatus) statusString = "failed";
-   cout << "    Test " << setw(3) << n << ", " 
-        << setw(10) << test << ": " << statusString << "\n";
- }
- 
- 
- 
- void uncaughtErrorReport(const char *what, int n)
- {
-   cerr << "\nAck! Caught assertion during test # "  << n << ":" << endl\
-     ;
-   cerr <<  what << endl;
- }
- 
- template<class T>
- Loc<1>  testElement(const T &dom, int no) {
-   //get the nth  element of dom, and store it in a separte variable
-   //  T::OneDomain_t singleElem = dom[no];
-   Loc<1> singleElem = dom[no];
-   return singleElem;
- }
- 
- // template<class T>
- // void  testDom(const T &dom) {
- //   //get the dom, and store it in a separte variable
- //   T::Domain_t singleDomain = dom;
- //   cout << "Domain " <<  singleDomain << endl;
- //   //return singleDomain;
- // }
- 
- 
- template <class T1, class T2>
- struct TypeMatchTester
- {
-   static const bool Result = false;
- };
- 
- 
- template <class T>
- struct TypeMatchTester<T,T>
- {
-   static const bool Result = true;
- };
- 
- 
- typedef Loc<1>::Domain_t DTest_t;
- typedef Loc<1>::Element_t ETest_t;
- typedef Loc<1>::OneDomain_t ODTest_t;
- 
- 
- main(int argc, char *argv[]) {
- 
-   Pooma::initialize( argc, argv );
-  
-   int    debug = 0;
-   int    testNumber = 0;
-   bool   testStatus;
- 
-   if ((argc > 1) && (!strcmp(argv[1],"-d")))  debug = 1;
-   cout << "\n"
-        << "   =============================================================\n"
-        << "   Domain test for Characterists and Interface on Loc<N> object \n" 
-        << "   =============================================================\n"
-        << endl;
- 
-   if (debug){
-     cout << "=========================DEBUG=================================="  
- 	 << endl;
-     cout << endl;
-     cout << "Starting domain test for Characterists and Interface on ";
-     cout << " Loc<N> object"  << endl;
-     cout << "Loc objects represent a single point."  << endl;
-     cout << endl;
-     cout << "first()    : the single point in the Loc object" << endl;
-     cout << "last()     : same as first" << endl;
-     cout << "stride()   : this is always 1 " << endl;
-     cout << "min()      : same as first"  << endl;
-     cout << "max()      : same as first"  << endl;
-     cout << "length()   : this is always 1 " << endl;
-     cout << "size()     :  total volume size of the domain, should " ;     
-     cout << "always be one "<< endl;
-     cout << "empty()      :this should always be false " << endl;
-     cout << "dimensions   : the number N " << endl;
-     cout << "loopAware    : this should be 0 " << endl;
-     cout << "singleValued : this should be 1 " << endl;
-     cout << "unitStride   : this should be 1 " << endl;
-     cout << endl;
-   }
- 
-   Loc<4>Empty;
-   Loc<1> n1i(-1);
-   Loc<2> n2i(-1,-2);
-   Loc<3> n3i(-1,-2,-3);
-   Loc<4> n4i(-1,-2,-3,-4);
-   Loc<5> n5i(-1,-2,-3,-4,-5);
-   Loc<6> n6i(-1,-2,-3,-4,-5,-6);
-   
- 
-   Loc<1> a1i(1);
-   Loc<2> a2i(1,2);
-   Loc<2> a2ia(1);
-   Loc<3> a3i(1,2,3);
-   Loc<3> a3ia(1,2);
-   Loc<4> a4i(1,2,3,4);
-   Loc<4> a4ia(1,2,3);
-   Loc<5> a5i(a3i,a2i);
-   Loc<5> a5ia(1,2,3,4);
-   Loc<6> a6i(1,2,3,4,5,6);
-   Loc<6> a6ia(1,2,3,4);
- 
-   //Can not use floating point values for endpoints.
-   // Loc<1> f1i(1.1);
- 
-   //If you leave a empty endpoint it will not be intialized to zero but 
-   //will have random values.
-   //Loc<2>(1) will give you the 001:*** where * is any random value
- 
-   cout <<  endl;
- 
- 
-   Loc<1> a1 = Loc<1>(1);
-   //Loc<1> b1(Loc<1>());
-   Loc<2> b2(a1,Loc<1>(2));
-   Loc<3> b3(b2,Loc<1>(3));
-   Loc<4> b4(b3,Loc<1>(4));
-   Loc<5> b5(b4,Loc<1>(5));
-   Loc<6> b6(b5,Loc<1>(6));
-   Loc<6> b6a(b3,b2,Loc<1>(6));
- 
-   //OneDomain_t ODT  = b2[0];
-   //Domain_t DT = b5;
-   if (debug){
- 
-     cout << endl;
- 
-     cout << "  a5i                = " <<  a5i << endl;
-     cout << "  a5i[0].length()    = " <<  a5i[0].length() << endl;
-     cout << "  a5i[1].length()    = " <<  a5i[1].length() << endl;
-     cout << "  a5i[2].length()    = " <<  a5i[2].length() << endl;
-     cout << "  a5i[3].length()    = " <<  a5i[3].length() << endl;
-     cout << "  a5i[4].length()    = " <<  a5i[4].length() << endl;
- 
-     cout << "  a5i[0].first()     = " <<  a5i[0].first() << endl;
-     cout << "  a5i[1].first()     = " <<  a5i[1].first() << endl;
-     cout << "  a5i[2].first()     = " <<  a5i[2].first() << endl;
-     cout << "  a5i[3].first()     = " <<  a5i[3].first() << endl;
-     cout << "  a5i[4].first()     = " <<  a5i[4].first() << endl;
- 
-     cout << "  a5i[0].last()      = " <<  a5i[0].last() << endl;
-     cout << "  a5i[1].last()      = " <<  a5i[1].last() << endl;
-     cout << "  a5i[2].last()      = " <<  a5i[2].last() << endl;
-     cout << "  a5i[3].last()      = " <<  a5i[3].last() << endl;
-     cout << "  a5i[4].last()      = " <<  a5i[4].last() << endl;
- 
-     cout << "  a5i[0].stride()    = " <<  a5i[0].stride() << endl;
-     cout << "  a5i[1].stride()    = " <<  a5i[1].stride() << endl;
-     cout << "  a5i[2].stride()    = " <<  a5i[2].stride() << endl;
-     cout << "  a5i[3].stride()    = " <<  a5i[3].stride() << endl;
-     cout << "  a5i[4].stride()    = " <<  a5i[4].stride() << endl;
- 
-     cout << "  a5i[0].min()       = " <<  a5i[0].min() << endl;
-     cout << "  a5i[1].min()       = " <<  a5i[1].min() << endl;
-     cout << "  a5i[2].min()       = " <<  a5i[2].min() << endl;
-     cout << "  a5i[3].min()       = " <<  a5i[3].min() << endl;
-     cout << "  a5i[4].min()       = " <<  a5i[4].min() << endl;
- 
-     cout << "  a5i[0].max()       = " <<  a5i[0].max() << endl;
-     cout << "  a5i[1].max()       = " <<  a5i[1].max() << endl;
-     cout << "  a5i[2].max()       = " <<  a5i[2].max() << endl;
-     cout << "  a5i[3].max()       = " <<  a5i[3].max() << endl;
-     cout << "  a5i[4].max()       = " <<  a5i[4].max() << endl;
- 
-     cout << "  a5i.dimensions()   = " <<  a5i.dimensions << endl;
-     //cout << "  a5i.loopAware()   = " << a5i.loopAware() << endl;
-     //cout << "  a5i.singleValued()= " << a5i.singleValued() << endl;
-     //cout << "  a5i.unitStride()  = " << a5i.unitStride() << endl;
-   
-     cout << endl;
-   
-     cout << "  after a1 = 1 : a1 = " << a1 << endl;
-     cout << "  2D multiple Loc<2> b2(a1,Loc<1>(2))     = " << b2 << endl; 
-     cout << "  3D multiple Loc<3> b3(b2,Loc<1>(3))     = " << endl;
-     cout << "     " << b3 << endl; 
-     cout << "  4D multiple Loc<4> b4(b3,Loc<1>(4))     = " << endl;
-     cout << "     " << b4 << endl;
-     cout << "  5D multiple Loc<5> b5(b4,Loc<1>(5))     = " << endl;
-     cout << "     " << b5 << endl; 
-     cout << "  6D multiple Loc<6> b6(b5,Loc<1>(6))     = " << endl;
-     cout << "     " << b6 << endl;
-     cout << "  6D multiple Loc<6> b6a(b3,b2,Loc<1>(6))= " << endl;
-     cout << "     " << b6a << endl;
-     cout << "  6D multiple Loc<6> b6a(b3,b2,Loc<1>(6)).size    = " 
- 	 << b6a.size() << endl;
-     cout << "    6D multiple Loc<6> b6a(b3,b2,Loc<1>(6)).size  = " <<
-       b6a.empty() << endl;
-     // cout << "  OneDomain = " << OneDomain  << endl;
-     cout << "  Empty             = "   <<  Empty << endl;
-     cout << "  Empty.size        = "   <<  Empty.size() << endl;
-     cout << "  Empty.empty       = "   <<  Empty.empty() << endl; 
- 
- 
-     cout << "=========================END DEBUG============================="
- 	 << endl; 
-     cout << endl;
-   }
-   try {
-     testStatus = (b6a.dimensions == 6);
-     testStatus = (b5.dimensions == 5) && testStatus;
-     testStatus = (b4.dimensions == 4) && testStatus;
-     testStatus = (b3.dimensions == 3) && testStatus;
-     testStatus = (b2.dimensions == 2)  && testStatus;
-     reportResults(testNumber++,"Loc<>.dimensions    ",testStatus);
-     testStatus = (b6a[0].stride() == b6a.size()) && testStatus;
-     testStatus = (b5[0].stride() == b5.size()) && testStatus;
-     testStatus = (b4[0].stride() == b4.size()) && testStatus;
-     reportResults(testNumber++,"Loc<>.size          ",testStatus);
-     testStatus = (Empty.empty() == 0);
-     testStatus = (b6a.empty() == 0) && testStatus;
-     reportResults(testNumber++,"Loc<>.empty         ",testStatus);
-     testStatus = a5i[0].stride();
-     testStatus = a5i[1].stride() && testStatus;
-     testStatus = a5i[2].stride() && testStatus; 
-     testStatus = a5i[3].stride() && testStatus; 
-     testStatus = a5i[4].stride() && testStatus; 
-     reportResults(testNumber++,"Loc<>.stride        ",testStatus); 
-     testStatus = (b6a[0].first() == b6a[0].last());
-     testStatus = (b6a[1].first() == b6a[1].last())  && testStatus;
-     testStatus = (b6a[2].first() == b6a[2].last()) && testStatus;
-     testStatus =  (b6a[3].first() == b6a[3].last()) && testStatus;
-     testStatus = (b6a[4].first() == b6a[4].last()) && testStatus;
-     testStatus = (b6a[5].first() == b6a[5].last()) && testStatus;
-     reportResults(testNumber++,"Loc<>.first/last    ",testStatus);
-     testStatus = (b5[0].first() == b5[0].min());
-     testStatus = (b5[1].first() == b5[1].min())  && testStatus;
-     testStatus = (b5[2].first() == b5[2].min()) && testStatus;
-     testStatus =  (b5[3].first() == b5[3].min()) && testStatus;
-     testStatus = (b5[4].first() == b5[4].min()) && testStatus;
-     reportResults(testNumber++,"Loc<>.first/min     ",testStatus);
-     testStatus = (b4[0].first() == b4[0].max());
-     testStatus = (b4[1].first() == b4[1].max())  && testStatus;
-     testStatus = (b4[2].first() == b4[2].max()) && testStatus;
-     testStatus =  (b4[3].first() == b4[3].max()) && testStatus;
-     reportResults(testNumber++,"Loc<>.first/max     ",testStatus);
-     testStatus = (b3[0].stride() == b3[0].length());
-     testStatus =(b3[1].stride() == b3[1].length())  && testStatus;
-     testStatus =(b3[2].stride() == b3[2].length()) && testStatus; 
-     reportResults(testNumber++,"Loc<>.length        ",testStatus); 
-     testStatus = (!b6a.loopAware);
-     testStatus = (!b5.loopAware) && testStatus;
-     testStatus = (!b4.loopAware) && testStatus;
-     testStatus = (!b3.loopAware) && testStatus;
-     testStatus = (!b2.loopAware)  && testStatus;
-     reportResults(testNumber++,"Loc<>.loopAware     ",testStatus);
-     testStatus = (b6a.singleValued);
-     testStatus = (b5.singleValued) && testStatus;
-     testStatus = (b4.singleValued) && testStatus;
-     testStatus = (b3.singleValued) && testStatus;
-     testStatus = (b2.singleValued)  && testStatus;
-     reportResults(testNumber++,"Loc<>.singleValued  ",testStatus);
-     testStatus = (b6a.unitStride);
-     testStatus = (b5.unitStride) && testStatus;
-     testStatus = (b4.unitStride) && testStatus;
-     testStatus = (b3.unitStride) && testStatus;
-     testStatus = (b2.unitStride) && testStatus ;
-     reportResults(testNumber++,"Loc<>.unitStride    ",testStatus);
-     testStatus = TypeMatchTester<DTest_t,Loc<1>:: Domain_t>::Result;
-     reportResults(testNumber++,"Typedef Domain_t    ", testStatus);
-     testStatus = TypeMatchTester<ETest_t,Loc<1>:: Element_t>::Result
-       && testStatus;
-     reportResults(testNumber++,"Typedef Elemant_t   ", testStatus);
-     testStatus = TypeMatchTester<ODTest_t,Loc<1>:: OneDomain_t>::Result
-       && testStatus;
-     reportResults(testNumber++,"Typedef OneDomain_t ", testStatus);
-     testStatus = !TypeMatchTester<DTest_t,Loc<1>:: Element_t>::Result
-       && testStatus;
-     reportResults(testNumber++,"Typedef Domain_t    ", testStatus);
-     testStatus = !TypeMatchTester<ETest_t,Loc<1>:: Domain_t>::Result
-       && testStatus;
-     reportResults(testNumber++,"Typedef Elemant_t   ", testStatus);
-     testStatus = !TypeMatchTester<ODTest_t,Loc<1>:: Element_t>::Result
-       && testStatus;
-     reportResults(testNumber++,"Typedef OneDomain_t ", testStatus);
-     testStatus = (a1i == testElement(a4i[0],0));
-     testStatus = (b6a[5] == testElement(a6i[5],5)) && testStatus;
-     testStatus = (b6a[4] == testElement(b4[1],1)) && testStatus;
-     testStatus = (b6a[4] != testElement(b4[2],2)) && testStatus;
-     reportResults(testNumber++,"OneDomain           ",testStatus);
-   }
- 
-   catch (const char *err)
-     { uncaughtErrorReport(err,testNumber); }
-   catch(const Pooma::Assertion &err)
-     {uncaughtErrorReport(err.what(),testNumber); }
-   catch(...)
-     { cerr << "Unknown exception!" << endl; }
-   cout << endl;  
- 
-   Pooma::finalize();
- }
- 
--- 0 ----
Index: Domain/NewDomain/Constructors/NewDomainConstructor.cpp
===================================================================
RCS file: NewDomainConstructor.cpp
diff -N NewDomainConstructor.cpp
*** /tmp/cvsHWUAsL	Thu Oct  4 12:11:21 2001
--- /dev/null	Fri Mar 23 21:37:44 2001
***************
*** 1,224 ****
- // -*- C++ -*-
- //---------------------------------------------------------------------
- 
- // NewDomainConstructor Component Test Code
- //---------------------------------------------------------------------
- 
- #include <Domain/Loc.h>
- #include <Domain/Interval.h>
- #include <Domain/Range.h>
- #include <iostream.h>
- #include <string.h>
- #include <iomanip.h>
- 
- 
- void reportResults(int n, char *test, bool testStatus)
- {
-   char* statusString = "passed";
-   if(!testStatus) statusString = "failed";
-   cout << "    Test " << setw(3) << n << ", " 
-        << setw(10) << test << ": " << statusString << "\n";
- }
- 
- void uncaughtErrorReport(const char *what, int n)
- {
- 	cerr << "\nAck! Caught assertion during test # " << n << ":" << endl;
- 	cerr << what << endl;
- }
- 
- template<class T>
- Interval<1>  testElement(const T &dom, int no) {
-   //get the nth  element of dom, and store it in a separte variable
-   T::OneDomain_t singleElem = dom[no];
-   return singleElem;
- }
- 
- template <class T1, class T2>
- struct TypeMatchTester
- {
-   static const bool Result = false;
- };
- 
- template <class T>
- struct TypeMatchTester<T,T>
- {
-   static const bool Result = true;
- };
- 
- //typedef NewDomain<>::Type_t TTest_t;
- //typedef NewDomain<>::FullType_t FTest_t;
- //typedef NewDomain<>::SliceType_t STest_t;
- 
- 
- main(int argc, char *argv[]) {
-  
-   int  debug = 0;
-   int    testNumber = 0;
-   bool   testStatus;
- 
-   if ((argc > 1) && (!strcmp(argv[1],"-d")))  debug = 1;
-   cout << "\n"
-        << "   ==============================================================\n"
-        << "     Domain test for Constructors on NewDomain<N> object \n" 
-        << "   ==============================================================\n"
-   << endl;
-  
-   if (debug){
-     cout << "=========================DEBUG==================================="  
-     << endl;
-     cout << endl;
-     cout << "Starting domain test for Constructors on NewDomain<N> object"  
- 	 << endl;
-     cout << "A set of simple structs which tell how to combine."  << endl;
-     cout << endl;
-     cout << " different Domain object together. TThey are named " << endl;
-     cout << "NewDomain1 - NewDoamin7 and are templated on from 1 .. 7 " 
-        << endl;
-     cout << "different domain types. If you have a domain as the last "  
-        << endl;
-     cout << "argrment you must have a space between this argument and the" 
- 	 << endl;
-     cout << "last >,NewDomain2<Loc<1>,Loc<1> >::Type_t newdomain2; " 
- 	 << endl;
-   }
-   cout <<  endl;
-   Loc<1> D1(1);
-   Loc<1> D2(2);
-   Range<2> R1(Interval<1>(5,10),Interval<1>(-1,100));
-   Range<2> R2(Range<1>(5,10,5),Range<1>(-100,100,20));
-   Interval<2> I1(Interval<1>(20,40),Interval<1>(-50,10));
-   Interval<2> I2(Interval<1>(20,40),Loc<1>(-99)); 
-   Range<2> R(Range<1>(1,1,1),999);
-   NewDomain2<Loc<1>,int>::Type_t newdomain2;
-     
-   NewDomain2<Loc<1>,int>::Type_t newdomain2a = 
-       NewDomain2<Loc<1>,int>::combine(D1,2);
-   
-    NewDomain3<Loc<2>,Range<2>,int>::Type_t newdomain3;
-    NewDomain3<Loc<2>,Range<2>,int>::Type_t newdomain3a =
-       NewDomain3<Loc<2>,Range<2>,int>::combine(newdomain2a,R2,999); 
-    
-   NewDomain4<Range<2>,Interval<2>,Loc<1>,Loc<1> >::Type_t newdomain4;
-     
-   NewDomain4<Range<2>,Interval<2>,Loc<1>,Loc<1> >::Type_t newdomain4a =
-    NewDomain4<Range<2>,Interval<2>,Loc<1>,Loc<1> >::combine(R2,I2,D1,D2); 
- 
-   NewDomain5<Loc<2>,Range<2>,int,Loc<4>,int>::Type_t newdomain5;
-   NewDomain5<Loc<2>,Range<2>,int,Loc<4>,int>::Type_t newdomain5a =
-        NewDomain5<Loc<2>,Range<2>,int,Loc<4>,int>::combine
-        (newdomain2a,R2,999,Loc<4>(D1,D2,newdomain2a),999); 
- 
-   NewDomain6<Loc<2>,Range<2>,int,Loc<4>,Loc<4>,int>::Type_t newdomain6;
-   NewDomain6<Loc<2>,Range<2>,int,Loc<4>,Loc<4>,int>::Type_t newdomain6a =
-   NewDomain6<Loc<2>,Range<2>,int,Loc<4>,Loc<4>,int>::combine
-       (newdomain2a,R1,99,Loc<4>(newdomain2a,newdomain2a),Loc<4>
-        (newdomain2a,newdomain2a),999);
- 
-   NewDomain7<Range<2>,Range<2>,Loc<1>,Loc<1>,Interval<2>,Interval<2>,
-       int>::Type_t newdomain7;
- 
-   NewDomain7<Range<2>,Range<2>,Loc<1>,Loc<2>,Interval<2>,Interval<2>,
-       Range<2> >::Type_t newdomain7a =  NewDomain7<Range<2>,Range<2>,Loc<1>,
-       Loc<2>,Interval<2>,Interval<2>,Range<2> >::combine(R1,R2,D1,newdomain2a,
-       I1,I2,R2);
- 
- 
-   if (debug){
-     cout << "================================================================"  
-     << endl;
-     cout << endl;
-     cout << "  NewDomain7<Range<2>,Range<2>,Loc<1>,Loc<2>,Interval<2>, Interval<2>,int>::combine(R1,R2,D1,newdomain2a,I1,I2,999)  " <<  newdomain7a << endl;
-     cout << "  R1  " << R1 << endl; 
-     cout << "  R2  " << R2 << endl;
-     cout << "  D1  " << D1 << endl;
-     cout << "  newdomain2a  " << newdomain2a << endl;
-     cout << "  I1  " << I1 << endl;
-     cout << "  I2  " << I2 << endl;
-     cout << "  newdomain2   " << newdomain2 << endl;
-     cout << "  newdomain2a  " << newdomain2a << endl;
-     cout << "  newdomain3   " << newdomain3 << endl;
-     cout << "  newdomain3a  " <<  newdomain3a << endl;
-     cout << "  newdomain4   " << newdomain4 << endl; 
-     cout << "  newdomain4a  " << newdomain4a << endl;  
-     cout << "  newdomain5   " << newdomain5 << endl;
-     cout << "  newdomain5a  \n" << "     " << newdomain5a << endl;
-     cout << "  newdomain6   \n "  << "     " << newdomain6 << endl;
-     cout << "  newdomain6a  \n " << "     " << newdomain6a << endl;
-     cout << "  newdomain7   \n " << "     " << newdomain7 << endl;
-     cout << "  newdomain7a  \n " << "     " << newdomain7a  << endl;
-     cout << "  newdomain2.dimensions    " << newdomain2.dimensions << endl;
-     cout << "  newdomain3.dimensions    " << newdomain3.dimensions << endl;
-     cout << "  newdomain4.dimensions    " << newdomain4.dimensions << endl;
-     cout << "  newdomain5.dimensions    " << newdomain5.dimensions << endl;
-     cout << "  newdomain6.dimensions    " << newdomain6.dimensions << endl;
-     cout << "  newdomain7.dimensions    " << newdomain7.dimensions << endl;
-     cout << "  newdomain2a.dimensions    " << newdomain2a.dimensions << endl;
-     cout << "  newdomain3a.dimensions    " << newdomain3a.dimensions << endl;
-     cout << "  newdomain4a.dimensions    " << newdomain4a.dimensions << endl;
-     cout << "  newdomain5a.dimensions    " << newdomain5a.dimensions << endl;
-     cout << "  newdomain6a.dimensions    " << newdomain6a.dimensions << endl;
-     cout << "  newdomain7a.dimensions    " << newdomain7a.dimensions << endl;
-     cout << endl;  
-     cout << "================================================================" << endl; 
-   }
-   cout << "Testing NewDomain<*> constructors methods:" << endl;
-   cout << "----------------------------------------------------------" << endl;
- try {
-  
-   //----------------------------------------------------------------------
-   // Test NewDomain Construtor
-   //----------------------------------------------------------------------
- 
-   testStatus = (newdomain2.dimensions == 2);
-   testStatus = (newdomain3.dimensions == 5)  && testStatus; 
-   testStatus = (newdomain4.dimensions == 6)  && testStatus; 
-   testStatus = (newdomain5.dimensions == 10) && testStatus; 
-   testStatus = (newdomain6.dimensions == 14) && testStatus; 
-   testStatus = (newdomain7.dimensions == 11) && testStatus; 
-   testStatus = (newdomain7a.dimensions == 13) && testStatus;
-   reportResults(testNumber++,"Empty Construtor     ",testStatus);
- 
-   //----------------------------------------------------------------------
-   // Test Combine  Construtor
-   //----------------------------------------------------------------------
-   testStatus = (newdomain2a[1] == 2 );
-   testStatus = (newdomain3a[2] == R2[0]) && testStatus; 
-   testStatus = (newdomain4a[5]  == Loc<1>(2)) && testStatus ;
-   testStatus = (newdomain5a[4]  == Loc<1>(999))&& testStatus ; 
-   testStatus = (newdomain6a[12] == D2) && testStatus; 
-   //testStatus = (newdomain7a[11] == Range<1>(-100,100,20)) && testStatus; 
-   reportResults(testNumber++,"Combine Construtor   ",testStatus);
- 
-   //----------------------------------------------------------------------
-   // Test Fill  Construtor
-   //----------------------------------------------------------------------
-   NewDomain2<Loc<1>,int>::fill(newdomain2,D1,2); 
-   testStatus = (newdomain2a ==newdomain2  );
-   NewDomain6<Loc<2>,Range<2>,int,Loc<4>,Loc<4>,int>::fill
-     ( newdomain6,newdomain2a,R1,99,Loc<4>(newdomain2a,newdomain2a),Loc<4>
-        (newdomain2a,newdomain2a),999);
-   testStatus = (newdomain6a ==newdomain6  ) && testStatus;
-   NewDomain5<Loc<2>,Range<2>,int,Loc<4>,int>::fill(
-        newdomain5,newdomain2a,R2,999,Loc<4>(D1,D2,newdomain2a),999); 
-   testStatus = (newdomain5a == newdomain5)  && testStatus ;
-   reportResults(testNumber++,"Fill Construtor      ",testStatus);
- } // end try
- 
- catch (const char *err)
- 	{ uncaughtErrorReport(err,testNumber); }
- catch(const Pooma::Assertion &err)
- 	{uncaughtErrorReport(err.what(),testNumber); }
- catch(...)
- 	{ cerr << "Unknow exception!" << endl; }
- cout << endl; 
- 
-  
- }
- 
- 
- 
- 
- 
- 
- 
- 
--- 0 ----
Index: Domain/Range/Constructors/RangeConstructor.cpp
===================================================================
RCS file: RangeConstructor.cpp
diff -N RangeConstructor.cpp
*** /tmp/cvspsACMW	Thu Oct  4 12:11:21 2001
--- /dev/null	Fri Mar 23 21:37:44 2001
***************
*** 1,217 ****
- // -*- C++ -*-
- //--------------------------------------------------------------------
- 
- // Range Constructor Component Test Code
- //--------------------------------------------------------------------
- 
- // include files
- 
- #include "Pooma/Pooma.h"
- #include "Domain/Loc.h"
- #include "Domain/Range.h"
- #include "Domain/Interval.h"
- #include <iostream.h>
- #include <string.h>
- #include <iomanip.h>
- 
- void reportResults(int n, char *test, bool testStatus)
- {
-   char* statusString = "passed";
-   if(!testStatus) statusString = "failed";
-   cout << "    Test " << setw(3) << n << ", " 
-        << setw(10) << test << ": " << statusString << "\n";
- }
- 
- void uncaughtErrorReport(const char *what, int n)
- {
-   cerr << "\nAck! Caught assertion during test # " << n << ":" << endl;
-   cerr << what << endl;
- }
- 
- 
- main(int argc, char *argv[]) {
- 
-   Pooma::initialize( argc, argv );
-   
-   int    debug = 0;
-   int    testNumber = 0;
-   bool   testStatus;
- 
-   if ((argc > 1) && (!strcmp(argv[1],"-d")))  debug = 1;
- 
- 
-   cout << "\n"
-        << "   ==============================================================\n"
-        << "     Domain test for Constructors on Range<N> object \n" 
-        << "   ==============================================================\n"
-        << endl;
-  
-   if (debug){
-     cout << "=========================DEBUG==================================="  
- 	 << endl;
-     cout << "Range represents a sequence of integers [a,a+s,... b], with "  
- 	 << endl;
-     cout << "endpoints a and b, and stride s. Each dimension is independent" 
- 	 << endl;    
-     cout << "of the other.  The endpoints may be positive or negative."  << endl;
-     cout << endl;
-     cout << "If you  construct a Range with 2 dimensions [Range<2> a2i]" << endl;
-     cout << "and only give it one value [Range<2> a2ia(1))] the second dimension" 	 << endl;
-     cout << "value will not be intitalized to 0 but will have ramdom junk. I"  
- 	 << endl;
-     cout << "have not come up with a way to do a pass/fail on the feature."
- 	 << endl;
-     cout << "Float and Double values are truncated." << endl;
-   }
- 
-   Range<1> a1(1);
-   Range<1> a2(-3);
-   Range<1> a3(3);
-   Range<1> a4(4);
-   Range<1> a5(-5);
-   Range<1> a6(6);
- 
-   Range<1> a1i(1);
-   Range<1> a1ia(1,5);
-   Range<1> a1ib(0,5);
-   Range<1> a1ic(0,6,2);
-   Range<1> a1id(2,8,-3);
-   Range<1> a1ie(0,10,2);
-   Range<1> a1if(1,1001,100);
-  
-  
- 
-   if (debug){
-     cout << "Range<1> Length Constructor for test."<< endl;
-     cout << "     1D default Range<1> a1(1)             " << a1 << endl;
-     cout << "     1D default Range<1> a2(-3)            " << a2 << endl;
-     cout << "     1D default Range<1> a3(3)             " << a3 << endl;
-     cout << "     1D default Range<1> a4(4)             " << a4 << endl;
-     cout << "     1D default Range<1> a5(-5)            " << a5 << endl; 
-     cout << "     1D default Range<1> a6(6)             " << a6 << endl;
-     cout << "     1D default Range<1> a1i(1)            " << a1i << endl;
-     cout << "     1D default Range<1> a1ia(1,5)         " << a1ia << endl;
-     cout << "     1D default Range<1> a1ib(0,5)         " << a1ib << endl;
-     cout << "     1D default Range<1> a1ic(0,6,2)       " << a1ic << endl;
-     cout << "     1D default Range<1> a1id(2,8,-3)      " << a1id << endl;
-     cout << "     1D default Range<1> a1ie(0,10,2)      " << a1ie << endl;
-     cout << "     1D default Range<1> a1if(1,1001,100)  " << a1if << endl;
-     cout <<  endl; 
-   }
- 
-   Range<1> n1(-100);
-   Range<2> n2(Range<1>(-100,100,10),Range<1>(100,-100,10));
-   Range<3> n3(n2,a1);
- 
-   Range<1> b1(a1if);
-   Range<2> b2(b1,a1);
-   Range<3> b3(b2,a3);
-   Range<4> b4(b3,a4);
-   Range<5> b5(b4,Range<1>(1,5));
-   Range<6> b6(b5,a6);
- 
-   Loc<1> L1;
-   L1 = 3;
-   Interval<1> I1(1,5);
-   Interval<2> I2(Interval<1>(0,200),I1);
-   Range<2> RL2(L1,b1);
-   Range<3> RL3(RL2,L1);
-   Range<4> RL4(RL3,I1);
-   Range<5> RL5(I2,RL3);
- 
-   Loc<1> NL1;
-   NL1 = -3;
-   Interval<1> NI1(-1,5);
-   Interval<1> NI1a(-10,-5);
-   Interval<2> NI2(NI1,NI1a);
-   Range<2> NRL2(NI1,Interval<1>(-6,0));
-   Range<3> NRL3(NRL2,NI1a);
-   Range<5> NRL5(NL1,NRL2,NI1a);
-   double D2 = 234.877;
-   float F1 = 123.5464;
-   Interval<1> FI1(-1,F1);
-   Interval<1> DI2(-100,D2);
-   Interval<3> DI3(FI1,Interval<2>(FI1,DI2));
- 
-   Range<6> FDR6(DI3,NI1a, DI2);
- 
-   if (debug){ 
-     cout << "     1D default Range<1> b1(a1if)           " << b1 << endl;
-     cout << "     2D default Range<2> b2(b1,a1)          " << b2 << endl;
-     cout << "     3D default Range<3> b3(b2,a3)          " << b3 << endl;
-     cout << "     4D default Range<4> b4(b3,a4)          " << endl;
-     cout << "         "  << b4 << endl;
-     cout << "     5D default Range<5> b5(b4,Range<1>(1,5))  " << endl;
-     cout << "         " << b5 << endl;
-     cout << "     6D default Range<6> b6(b5,a6)             " << endl;
-     cout << "         " << b6 << endl;
-     cout << "     1D Negative Range<1> n1(-100)             " << n1 << endl;
-     cout << "     2D Negative Range<2> n2(Range<1>(-100,100,10)," << endl;
-     cout << "         Range<1>(100,-100,10))       " << n2 << endl;
-     cout << "     3D Negative Range<3> n3(n2,a1)            " << endl;
-     cout << "         " << n3 << endl;
- 
-     cout << "     2D Mixed object Range<2> RL2(Loc<1> L1,Range<2>b1   " << endl;
-     cout << "         " << RL2 << endl;
-     cout << "     3D  Mixed object Range<3> RL3(RL1,L1)               " << endl;
-     cout << "         " << RL3 << endl;
-     cout << "     4D  Mixed object Range<4> RL4(RL3,I1)              = " << endl;
-     cout << "         " << RL4 << endl;
-     cout << "     5D  Mixed object Range<5> RL5(I2,RL3)               " << endl;
-     cout << "         " << RL5 << endl;
-     cout << "     2D  Mixed object Negative Range<2> NRL2(NI1,Interval<1>(-6,0))      "<< endl;
-     cout << "         " << NRL2 << endl;
-     cout << "     3D  Mixed object Negative Range<3> NRL3(NRL2,NI1a)   " << endl;
-     cout << "         " << NRL3 << endl;
-     cout << "     5D  Mixed object Negative Range<5> NRL5(NL1,NRL2,NI1a)  " 
- 	 << endl;
-     cout << "         " << NRL5 << endl;
-     cout << "     6D  Mixed object DF Range<6> FDR6(DI3,NI1a, DI2)  " 
- 	 << endl;
-     cout << "         " << FDR6 << endl;
-     cout << "=========================END DEBUG============================"  
- 	 << endl;
-     cout << endl;
-   }
-   try {
-     testStatus = (a3  == Range<1>(3));
-     testStatus = (a1ic == Range<1>(0,6,2)) && testStatus; 
-     testStatus = (a1ie == Range<1>(0,10,2)) && testStatus;  
-     reportResults(testNumber++,"Default Construtor         ",testStatus); 
-     testStatus = (n1[0] == Range<1>(-100)) && testStatus; 
-     testStatus =  (n2[1] == Range<1>(100,-100,10)) && testStatus ;
-     testStatus = (n3[1] ==Range<1>(100,-100,10))&& testStatus ;  
-     reportResults(testNumber++,"Negative Construtor        ",testStatus);
-     testStatus =  (b1 == a1if) && testStatus ;
-     testStatus =  (b2[0] == b1) && testStatus; 
-     testStatus =  (b3[2] == a3) && testStatus; 
-     testStatus =  (b4[3] == a4 ) && testStatus; 
-     testStatus =  (b5[4] == a1ia)  && testStatus;
-     testStatus = (b6[5]  == a6) && testStatus;
-     reportResults(testNumber++,"Multiple Construtor        ",testStatus);
-     testStatus = (RL2[0]  == L1) && testStatus; 
-     testStatus = (RL3[2]  == L1) && testStatus; 
-     reportResults(testNumber++,"Mixed Loc Constructor      ",testStatus);
-     testStatus = (RL4[3]  == I1) && testStatus; 
-     testStatus = (RL5[1]  == I1) && testStatus; 
-     reportResults(testNumber++,"Mixed Intergal Constructor ",testStatus);
-     testStatus = (NRL2[0]  == NI1) && testStatus; 
-     testStatus = (NRL3[2]  == NI1a) && testStatus; 
-     reportResults(testNumber++,"Mixed Intergal Negative Constructor",testStatus);
-     testStatus = (NRL5[0]  == NL1) && testStatus; 
-     reportResults(testNumber++,"Mixed Loc Negative Constructor     ",testStatus);
-     testStatus = (FDR6[0] == FI1) && testStatus; 
-     reportResults(testNumber++,"Mixed Float/Double Constructor     ",testStatus);
-   }
- 
-   catch (const char *err)
-     { uncaughtErrorReport(err,testNumber); }
-   catch(const Pooma::Assertion &err)
-     {uncaughtErrorReport(err.what(),testNumber); }
-   catch(...)
-     { cerr << "Unknown exception!" << endl; }
-   cout << endl;
- 
-   Pooma::finalize();
- }
- 
--- 0 ----
Index: Domain/Range/Constructors/makefile
===================================================================
RCS file: makefile
diff -N makefile
*** /tmp/cvsbALR67	Thu Oct  4 12:11:21 2001
--- /dev/null	Fri Mar 23 21:37:44 2001
***************
*** 1,11 ****
- # Generated by mm.pl: Mon Mar  9 13:58:39 MST 1998
- # This file is user-editable
- 
- PROJECT_ROOT = $(shell cd ../../../..; pwd)
- include $(PROJECT_ROOT)/config/head.mk
- 
- default:: $(ODIR)/RangeConstructor
- 
- $(ODIR)/RangeConstructor: $(ODIR)/RangeConstructor.o
- 	$(LinkToSuite)
- include $(SHARED_ROOT)/tail.mk
--- 0 ----
Index: Engine/BrickEngine/BrickEngine/BrickEngineTest.cpp
===================================================================
RCS file: BrickEngineTest.cpp
diff -N BrickEngineTest.cpp
*** /tmp/cvsVvudrj	Thu Oct  4 12:11:21 2001
--- /dev/null	Fri Mar 23 21:37:44 2001
***************
*** 1,3319 ****
- // ACL:license
- // ----------------------------------------------------------------------
- // This software and ancillary information (herein called "SOFTWARE")
- // called POOMA (Parallel Object-Oriented Methods and Applications) is
- // made available under the terms described here.  The SOFTWARE has been
- // approved for release with associated LA-CC Number LA-CC-98-65.
- //
- // Unless otherwise indicated, this SOFTWARE has been authored by an
- // employee or employees of the University of California, operator of the
- // Los Alamos National Laboratory under Contract No.  W-7405-ENG-36 with
- // the U.S. Department of Energy.  The U.S. Government has rights to use,
- // reproduce, and distribute this SOFTWARE, and to allow others to do so.
- // The public may copy and use this SOFTWARE, FOR NONCOMMERCIAL USE ONLY,
- // without charge, provided that this Notice and any statement of
- // authorship are reproduced on all copies.  Neither the Government nor
- // the University makes any warranty, express or implied, or assumes any
- // liability or responsibility for the use of this SOFTWARE.
- //
- // If SOFTWARE is modified to produce derivative works, such modified
- // SOFTWARE should be clearly marked, so as not to confuse it with the
- // version available from LANL.
- //
- // For more information about POOMA, send e-mail to pooma@xxxxxxxxxxxx,
- // or visit the POOMA web page at http://www.acl.lanl.gov/pooma/.
- // ----------------------------------------------------------------------
- // ACL:license
- 
- //-----------------------------------------------------------------------------
- // The POOMA Framework
- //
- // This program was prepared by the Regents of the University of California
- // at Los Alamos National Laboratory (the University) under Contract No.
- // W-7405-ENG-36 with the U.S. Department of Energy (DOE). The University has
- // certain rights in the program pursuant to the contract and the program
- // should not be copied or distributed outside your organization. All rights
- // in the program are reserved by the DOE and the University. Neither the U.S.
- // Government nor the University makes any warranty, express or implied, or
- // assumes any liability or responsibility for the use of this software
- //
- // Visit http://www.acl.lanl.gov/POOMA for more details
- //
- //-----------------------------------------------------------------------------
- // Engine Component Test Code
- //-----------------------------------------------------------------------------
- //
- // Classes:
- //   Brick                       - Brick-Engine specialization tag.
- //   BrickView<int,bool>         - BrickView-Engine specialization tag.
- //   Engine<Dim,T,Brick>         - the "Brick-Engine" specialization.
- //   Engine<Dim,T,BrickView>     - the "BrickView-Engine" specialization.
- //   NewEngine<Engine,SubDomain> - specializations for BrickView-Engine.
- //   ElementProperties<Engine
- //     <Dim, T, Brick> >         - specialization for BrickEngine.
- //
- //-----------------------------------------------------------------------------
- 
- #include "Pooma/Pooma.h"
- #include "Engine/BrickEngine.h"
- #include <iostream.h>
- #include <iomanip.h>
- #include <math.h>
- #include <stdio.h>
- 
- //-----------------------------------------------------------------------------
- //  Simple particle class providing non-standard type for testing 
- //  BrickEngine constructors.   As specified in the Engine SRS, Atom 
- //  provides the minimal required copy constructor and assignment operator.
- //-----------------------------------------------------------------------------
- 
- class Atom
- {
- public:
- 
-   //============================================================
-   // Constructors, Destructor, Assignment...
-   //============================================================
- 
-   // default construtor is required by RefCountedBlockPtr, which is
-   // used by Engine, so we supply this...
- 
-   Atom()
-     {
-       N_m    = 0;
-       Z_m    = 0;
-       mass_m = 0.0;
-     }
- 
-   Atom(int N, int Z, double mass)
-     {
-       N_m    = N;
-       Z_m    = Z;
-       mass_m = mass;
-     }
- 
-   Atom(const Atom &model)
-     {
-       N_m = model.N_m;
-       Z_m = model.Z_m;
-       mass_m = model.mass_m;
-     }
- 
-   Atom & operator=(const Atom &model)
-     {
-       if (&model == this) return *this;
-       N_m = model.N_m;
-       Z_m = model.Z_m;
-       mass_m = model.mass_m;
-       return *this;
-     }
- 
-   ~Atom() { }
- 
-   //============================================================
-   // Accessors and Mutators
-   //============================================================
- 
-   int electron() { return N_m; }
-   int nuclear()  { return Z_m; }
-   double amu()   { return mass_m; }
- 
- // Atom& makeOwnCopy() { return *this; }
- 
- private:
- 
-   int N_m;
-   int Z_m;
-   double  mass_m;
-  
- };
- 
- 
- //-----------------------------------------------------------------------------
- //  Two generic functions (reportResults and uncaughtErrorReport) and
- //  two classes (TypeMatchTester and its partial specialization)
- //  to facilitate testing...
- //-----------------------------------------------------------------------------
- 
- int reportResults(int n, char *test, bool testStatus)
- {
-   char* statusString = "passed";
-   if(!testStatus) statusString = "failed";
-   cout << "     Test " << setw(3) << n << ", "
-        << setw(46) << test << ": " << statusString << "\n";
-   return 0;
- }
- 
- void uncaughtErrorReport(const char *what, int n)
- {
-   cerr << "\nAck! Caught assertion during test # "  << n << ":" << endl;
-   cerr <<  what << endl;
- }
- 
- template <class T1, class T2>         // template class to test typedefs
- struct TypeMatchTester
- {
-   static const bool Result = false;
- };
- 
- template <class T>                    // ... partial specialization
- struct TypeMatchTester<T,T>
- {
-   static const bool Result = true;
- };
- 
- //-----------------------------------------------------------------------------
- //  Wrappers for high-resolution ACLTIMER library C timers
- //-----------------------------------------------------------------------------
- 
- extern "C"
- {
- void dclock_init();
- double dclock();
- }
- 
- 
- //-----------------------------------------------------------------------------
- //  Main test program
- //-----------------------------------------------------------------------------
- 
- main(int argc, char* argv[]) {
- 
-   Pooma::initialize(argc,argv);
- 
-   int        testNumber;
-   bool       testStatus;
-   float      percent;
-   float      trueData;
-   float      testData;
-   double     timeStart;
-   double     timeEnd;
-   double     fast;
-   double     slow;
-   double     diff;
-   double     c = 2.99792458e+8;
- 
-   float      Ry    = 13.605698;
-   float      zero  = 0.0;   
- 
-   cout << "\n"
-        << "    ============================================================="
-        << "=====\n"
-        << "    Engine Capability; BrickEngine package; BrickEngine component "
-        << "test\n" 
-        << "    ============================================================="
-        << "=====\n" << endl;
- 
-   testNumber = 0;
- 
-   try {
- 
- // *************************** BrickEngine *****************************
- 
-     cout << "\n     BrickEngine"   << endl;
-     cout << "     -----------\n" << endl;
- 
-     typedef Engine<3,float,Brick>   Engine3Df_t;
-     typedef Engine<2,double,Brick>  Engine2Dd_t;
-     typedef Engine<4,double,Brick>  Engine4Dd_t;
-     typedef Engine<6,int,Brick>     Engine6Di_t;
-     typedef Engine<6,float,Brick>   Engine6Df_t;
-     typedef Engine<7,int,Brick>     Engine7Di_t;
- 
- 
-     //---------------------------------------------------------------
-     // test 1: BrickEngine required POOMA typedefs properly exported?
-     //---------------------------------------------------------------
- 
-     ++testNumber;
- 
-     // construct a 3D Cartesian domain [0...10] x [4...14] x [-5...+5]
-     // and associated BrickEngine
- 
-     Interval<3> cube2(Interval<1>(0,10), Interval<1>(4,14), Interval<1>(-5,5)); 
-     Engine3Df_t floatBrick(cube2);
- 
-     // assign floating-point elements to cube2 Domain
- 
-     for(int i = 0; i < 11; i++)
-       for(int j = 4; j < 15; j++)
-         for(int k = -5; k < 6; k++)
-            floatBrick(Loc<3>(i,j,k)) = Ry*(i+j+k);
- 
-     {
-     typedef Engine3Df_t::This_t         Try_t;
-     typedef Engine3Df_t             Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result;
-     }
- 
-     {
-     typedef Engine3Df_t::Engine_t       Try_t;
-     typedef Engine3Df_t::This_t     Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     {
-     typedef Engine3Df_t::Domain_t       Try_t;
-     typedef Interval<3>             Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     reportResults(testNumber,"exported typedefs This_t, Engine_t, Domain_t",
-                              testStatus);
- 
- 
-     //-----------------------------------------------------------
-     // test 2: additional required POOMA typedefs for BrickEngine
-     //-----------------------------------------------------------
- 
-     ++testNumber;
- 
-     {
-     typedef Engine3Df_t::Base_t         Try_t;
-     typedef Range<3>                Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result;
-     }
- 
-     {
-     typedef Engine3Df_t::Element_t      Try_t;
-     typedef float                   Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     reportResults(testNumber,"exported typedefs BaseDomain_t, Element_t",
-                              testStatus);
- 
- 
-     //-----------------------------------------------------------
-     // test 3: still more required POOMA typedefs for BrickEngine
-     //-----------------------------------------------------------
- 
-     ++testNumber;
- 
-     {
-     typedef Engine3Df_t::ElementRef_t   Try_t;
-     typedef float&                  Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result;
-     }
- 
-     {
-     typedef Engine3Df_t::Tag_t          Try_t;
-     typedef Brick                   Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     reportResults(testNumber,"exported typedefs ElementRef_t, Tag_t", 
-                              testStatus);
- 
- 
-     //-------------------------------------------------------
-     // test 4: BrickEngine default constructor, standard type
-     //-------------------------------------------------------
- 
-     ++testNumber;
- 
-     // use default constructor and BrickEngine assignment operator
- 
-     Engine3Df_t defaultBrick; 
-     defaultBrick = floatBrick;
- 
-     // check that defaultBrick now points to the same data as floatBrick
-      
-     for(int i = 0; i < 11; i++)
-       for(int j = 4; j < 15; j++)
-         for(int k = -5; k < 6; k++) {
-            trueData = floatBrick.read(Loc<3>(i,j,k));
-            testData = defaultBrick.read(Loc<3>(i,j,k));
-            testStatus = (testData == trueData) && testStatus;
-            testStatus = (trueData == Ry*(i+j+k)) && testStatus;
-            trueData = floatBrick.read(i,j,k);
-            testData = defaultBrick.read(i,j,k);
-            testStatus = (testData == trueData) && testStatus;
-            testStatus = (trueData == Ry*(i+j+k)) && testStatus;
-         }
- 
-     reportResults(testNumber,"default constructor & assignment operator",
-                              testStatus);
- 
- 
-     //-------------------------------------------------------------
-     // test 5: BrickEngine Interval constructor, strides() accessor
-     //-------------------------------------------------------------
- 
-     ++testNumber;
-    
-     Interval<1> x(-17,2);
-     Interval<1> y(5,29);
-     Interval<1> z(-36,-2);
-     Interval<1> t(1);
-     Interval<4> spaceTime(x,y,z,t);
- 
-     Engine4Dd_t lightCone(spaceTime);
-     const int *STstrides = lightCone.strides();
-     int nomStrides[7];
- 
-     // stride of the first dimension in the Interval should always be 1
-     // (Interval stride() accessor)
- 
-     nomStrides[0] = spaceTime[0].stride();
-     testStatus = (STstrides[0] == nomStrides[0]);
- 
-     // strides() array for a BrickEngine should return actual strides
-     // of the full Interval (BrickEngine strides() accessor).
- 
-     for(int i = 1; i < 4; i++) {
-       nomStrides[i] = spaceTime[i-1].last() - spaceTime[i-1].first() + 1; 
-       nomStrides[i] = nomStrides[i] * nomStrides[i-1];
-       testStatus = (STstrides[i] == nomStrides[i]) && testStatus;
-     }
- 
-     // set data values; incidentally test some Interval accessors
- 
-     int imin = x.first();
-     int imax = x.last();
-     int jmin = y.first();
-     int jmax = y.last();
-     int kmin = z.first();
-     int kmax = z.last();
- 
-     for(int i = imin; i < imax+1; i++)
-       for(int j = jmin; j < jmax+1; j++)
-         for(int k = kmin; k < kmax+1; k++)
-           lightCone(Loc<4>(i,j,k,0)) = c*((i-j)*3 +k);
- 
-     // verify data values
- 
-     for(int i = -17; i < 3; i++)
-       for(int j = 5; j < 30; j++)
-         for(int k = -36; k < -1; k++) {
-            testData = lightCone.read(Loc<4>(i,j,k,0));
-            trueData = c* ((i-j)*3 +k);
-            testStatus = (testData == trueData) && testStatus;
-         }
- 
-     reportResults(testNumber,"Interval constructor; strides accessor",
-                    testStatus);
-       
- 
-     //----------------------------------------------------
-     // test 6: BrickEngine copy constructor, standard type
-     //----------------------------------------------------
- 
-     ++testNumber;
-     Engine4Dd_t transporter(lightCone);         
- 
-     diff = zero;
-     for(int i = -17; i < 3; i++)
-      for(int j = 5; j < 30; j++)
-       for(int k = -36; k < -1; k++)
-        diff += fabs(lightCone.read(Loc<4>(i,j,k,0)) - transporter.read(i,j,k,0));
-     
-     testStatus = (diff == zero);
-     reportResults(testNumber,"copy constructor",
-                   testStatus);
- 
- 
-     //------------------------------------------
-     // test 7: BrickEngine constructor via model
-     //------------------------------------------
- 
-     ++testNumber;
-     Engine4Dd_t scotty(spaceTime,c);
- 
-     diff = zero;
-     for(int i = -17; i < 3; i++)
-      for(int j = 5; j < 30; j++)
-       for(int k = -36; k < -1; k++)
-        diff += fabs(scotty.read(Loc<4>(i,j,k,0)) - c);
- 
-     testStatus = (diff == zero);
-     reportResults(testNumber,"constructor via model",testStatus);
- 
- 
-     //------------------------------------------------------
-     // test 8: BrickEngine constructor via foreign data (1D)
-     //------------------------------------------------------
- 
-     ++testNumber;
- 
-     // 1D test
- 
-     double* B = new double[10];
-     for (int i = 0; i<10; i++)
-       B[i] = i*2.3;
- 
-     Interval<1> line(-2,7);
-     Engine<1,double,Brick> french(B,line);
- 
-     diff = zero;
-     for(int i = -2; i < 8; i++)
-       diff += fabs(french.read(i) - (i+2)*2.3);
- 
-     testStatus = (diff == zero);
-     reportResults(testNumber,"constructor via 1D foreign data",testStatus);
- 
- 
-     //-----------------------------------------------------------
-     // test 9: BrickEngine constructor via foreign data (2D & 3D)
-     //-----------------------------------------------------------
- 
-     ++testNumber;
- 
-     // 2D test on 2 x 10 Interval
- 
-     float* C = new float[20];
-     for (int i = 0; i<2; i++)
-       for ( int j = 0; j < 10; j++)
-         C[i*10+j] = (i*2.2+j*3.1);
- 
-     Interval<2> box(Interval<1>(0,1), Interval<1>(0,9));
-     Engine<2,float,Brick> norwegian(C,box);
- 
- 
-     // (i,j) loop order is reversed here to emphasize the fact that
-     // POOMA II Engines index according to Fortran order (left-most index 
-     // varies fastest, etc.).   Note C-style indexing of array C.
- 
-     diff = zero;
-     for ( int j = 0; j < 10; j++)
-       for( int i = 0; i < 2; i++)
-         diff += fabs(norwegian.read(i,j) - C[i+2*j]); 
- 
-     testStatus = (diff == zero);
- 
- 
-     // 3D test on 4 x 3 x 2 Interval (zero-based)
- 
-     float* G = new float[24];
-     Interval<3> cubic(Interval<1>(0,3), Interval<1>(0,2), Interval<1>(0,1));
-     Engine<3,float,Brick> dutch(G,cubic);
- 
-     for (int i = 0; i<4; i++)
-       for (int j = 0; j<3; j++)
-         for (int k = 0; k<2; k++) {
-            int ind = i*6 + j*2 + k;
-            G[ind] = 2.2*i + 3.1*j + 1.4*k;
-         }
- 
-     diff = zero;
-     for(int k = 0; k < 2; k++)
-       for(int j = 0; j < 3; j++)
-         for(int i = 0; i < 4; i++) {
-            int ind = k*12 + j*4 + i;
-            diff += fabs(dutch.read(i,j,k) - G[ind]);
-         }
- 
-     testStatus = (diff == zero) && testStatus;
- 
- 
-     // 3D test on 11 x 11 x 11 Interval (non-zero-based)
- 
-     float* A = new float[1331];
-     for (int i = 0; i<11; i++)
-       for (int j = 0; j<11; j++)
-         for (int k = 0; k<11; k++) {
-            int ind = i*121 + j*11 + k;
-            A[ind] = 2.2*i + 3.1*j + 1.4*k;
-         }
- 
-     Engine3Df_t italian(A,cube2);
-   
-     diff = zero;
-     for(int k = -5; k < 6; k++)
-       for(int j = 4; j < 15; j++)
-         for(int i = 0; i < 11; i++) {
-           int ind = (k+5)*121 + (j-4)*11 + i;
-           diff += fabs(italian.read(i,j,k) - A[ind]);
-         }
- 
-     testStatus = (diff == zero) && testStatus;
- 
-     reportResults(testNumber,"constructor via 2D/3D foreign data",
-                   testStatus);
- 
- 
-     //-------------------------------------------------
-     // test 10: BrickEngine constructor via Node object
-     //-------------------------------------------------
- 
-     ++testNumber;
-  
-     // Construct a simple Node with affinity = -1, Interval Domain, 
-     // context = local ID = global ID = 0.
- 
-     Interval<1> point(4,12);
-     Interval<6> star(point,point,point,point,point,point);
-     Node<Interval<6> > k(-1,star,0,0,0);
-     Engine6Di_t BZone(k);
-     Engine6Di_t BZone2(star,17);
-     BZone = BZone2;
- 
-     diff = zero;
-     for(int i = 4; i < 13; i++)
-      for(int j = 4; j < 13; j++)
-       for(int k = 4; k < 13; k++)
-        for(int l = 4; l < 13; l++)
-         for(int m = 4; m < 13; m++)
-          for(int n = 4; n < 13; n++)
-           diff += abs(BZone.read(i,j,k,l,m,n) - 17);
- 
-     testStatus = (diff == zero);
-     reportResults(testNumber,"constructor via Node object", testStatus);
- 
- 
-     //-----------------------------------------
-     // test 11: BrickEngine assignment operator
-     //-----------------------------------------
- 
-     ++testNumber;
- 
-     Engine4Dd_t geordi;
-     geordi = scotty; 
- 
-     diff = zero;
-     for(int i = -17; i < 2; i++)
-      for(int j = 5; j < 29; j++)
-       for(int k = -36; k < -2; k++)
-        diff += fabs(geordi.read(i,j,k,0) - c);
- 
-     testStatus = (diff == zero);
-     reportResults(testNumber,"assignment operator",testStatus);
- 
- 
-     //---------------------------------------------------
-     // test 12: BrickEngine read(int) accessors, dims 1-7
-     //---------------------------------------------------
-  
-     ++testNumber;
- 
-     // POOMA II supports Domains with dim <= 7
- 
-     Interval<1> I0(-3,3);
-     Interval<1> J0(6,12);
-     Interval<1> I1(I0);
-     Engine<1,float,Brick> xxx1(I1,Ry);
- 
-     Interval<2> I2(I1,J0);
-     Engine<2,float,Brick> xxx2(I2,Ry*2);
- 
-     Interval<3> I3(I2,I0);
-     Engine<3,float,Brick> xxx3(I3,Ry*3);
- 
-     Interval<4> I4(I3,J0);
-     Engine<4,float,Brick> xxx4(I4,Ry*4);
- 
-     Interval<5> I5(I4,I0);
-     Engine<5,float,Brick> xxx5(I5,Ry*5);
- 
-     Interval<6> I6(I5,J0);
-     Engine<6,float,Brick> xxx6(I6,Ry*6);
- 
-     Interval<7> I7(I6,I0);
-     Engine<7,float,Brick> xxx7(I7,Ry*7);
- 
-     diff = zero;
-     for(int i = -3; i < 3; i++) {
-      diff += fabs(xxx1.read(i) - Ry);
-      for(int j = 6; j < 12; j++) {
-       diff += fabs(xxx2.read(i,j) - Ry*2);
-       for(int k = -3; k < 3; k++) {
-        diff += fabs(xxx3.read(i,j,k) - Ry*3);
-        for(int l = 6; l < 12; l++) {
-         diff += fabs(xxx4.read(i,j,k,l) - Ry*4);
-         for(int m = -3; m < 3; m++) {
-          diff += fabs(xxx5.read(i,j,k,l,m) - Ry*5);
-          for(int n = 6; n < 12; n++) {
-           diff += fabs(xxx6.read(i,j,k,l,m,n) - Ry*6);
-           for(int p = -3; p < 3; p++) {
-            diff += fabs(xxx7.read(i,j,k,l,m,n,p) - Ry*7);
-           }
-          }
-         }
-        }
-       }
-      }
-     }
- 
-     testStatus = (diff == zero);
-     reportResults(testNumber,"int read element accessors, dims 1-7", 
-                   testStatus);
- 
- 
-     //--------------------------------------------------------
-     // test 13: BrickEngine read(Loc<Dim>) accessors, dims 1-7
-     //--------------------------------------------------------
- 
-     ++testNumber;
- 
-     diff = zero;
-     for(int i = -3; i < 3; i++) {
-      diff += fabs(xxx1.read(Loc<1>(i)) - Ry);
-      for(int j = 6; j < 12; j++) {
-       diff += fabs(xxx2.read(Loc<2>(i,j)) - Ry*2);
-       for(int k = -3; k < 3; k++) {
-        diff += fabs(xxx3.read(Loc<3>(i,j,k)) - Ry*3);
-        for(int l = 6; l < 12; l++) {
-         diff += fabs(xxx4.read(Loc<4>(i,j,k,l)) - Ry*4);
-         for(int m = -3; m < 3; m++) {
-          diff += fabs(xxx5.read(Loc<5>(i,j,k,l,m)) - Ry*5);
-          for(int n = 6; n < 12; n++) {
-           diff += fabs(xxx6.read(Loc<6>(i,j,k,l,m,n)) - Ry*6);
-           for(int p = -3; p < 3; p++) {
-            diff += fabs(xxx7.read(Loc<7>(i,j,k,l,m,n,p)) - Ry*7);
-           }
-          }
-         }
-        }
-       }
-      }
-     }
- 
-     testStatus = (diff == zero); 
-     reportResults(testNumber,"Loc<Dim> read element accessors, dims 1-7",
-                   testStatus);
- 
- 
-     //------------------------------------------------------------
-     // test 14: BrickEngine operator() element accessors, dims 1-7
-     //------------------------------------------------------------
- 
-     ++testNumber;
- 
-     diff = zero;
-     for(int i = -3; i < 3; i++) {
-      diff += fabs(xxx1(i) - Ry);
-      for(int j = 6; j < 12; j++) {
-       diff += fabs(xxx2(i,j) - Ry*2);
-       for(int k = -3; k < 3; k++) {
-        diff += fabs(xxx3(i,j,k) - Ry*3);
-        for(int l = 6; l < 12; l++) {
-         diff += fabs(xxx4(i,j,k,l) - Ry*4);
-         for(int m = -3; m < 3; m++) {
-          diff += fabs(xxx5(i,j,k,l,m) - Ry*5);
-          for(int n = 6; n < 12; n++) {
-           diff += fabs(xxx6(i,j,k,l,m,n) - Ry*6);
-           for(int p = -3; p < 3; p++) {
-            diff += fabs(xxx7(i,j,k,l,m,n,p) - Ry*7);
-           }
-          }
-         }
-        }
-       }
-      }
-     }
- 
-     testStatus = (diff == zero);
-     reportResults(testNumber,"operator() element accessors, dims 1-7",
-                   testStatus);
- 
- /*******************************************************************************
- 
-     // this test requires the implementation of an appropriate
-     // PAssert to catch and report the dimension violation, at
-     // which point it can be un-commented.
- 
-     // Upon un-commenting, remove the increment of testNumber immediately
-     // following this test.  The increment is needed to keep the test
-     // numbers the same as the test labels.
- 
-     //-----------------------------------------------------------
-     // test 15: BrickEngine underlying Domain dimension violation
-     //-----------------------------------------------------------
- 
-     ++testNumber;
- 
-     try {
-       Interval<8> I8(I7,I0);
-       Engine<8,float,Brick> xxx8(I8,Ry*8);
-       diff = xxx8.read(0,0,0,0,0,0,0,0) - pi*8;
-       throw reportResults(testNumber,"underlying Domain dimension violation",false);
-     }
-     catch(const Pooma::Assertion &) {reportResults(testNumber,
-         "underlying Domain dimension violation",true);}
- 
-     //  the real work is done by 'throw' inside try block; this prevents
-     //  falling-through to outer 'try' block, and generation of
-     //  "unknown exception" message.
- 
-     catch(...) { }
- 
- *******************************************************************************/
-     ++testNumber;		// remove upon activating test 15.
- 
-     //-------------------------------------------------------------
-     // test 16: performance of element access via ints vs. Loc<Dim>
-     //-------------------------------------------------------------
- 
-     ++testNumber;
-  
-     // initialize hi-resolution timer
- 
-     dclock_init();
-     
-     char* str1 = new char[43];
-     int l = 0;
- 
-     for(int i = -17; i < 2; i++)
-       for(int j = 5; j < 29; j++)
-         for(int k = -36; k < -2; k++)
-           lightCone(Loc<4>(i,j,k,l)) = Ry+i+j+k;
- 
-     timeStart = dclock();
-     for(int i = -17; i < 2; i++)
-       for(int j = 5; j < 29; j++)
-         for(int k = -36; k < -2; k++)
-           testData = lightCone.read(i,j,k,l);
- 
-     timeEnd = dclock();
-     fast = timeEnd - timeStart;
- 
-     timeStart = dclock();
-     for(int i = -17; i < 2; i++)
-       for(int j = 5; j < 29; j++) 
-         for(int k = -36; k < -2; k++)
-           testData = lightCone.read(Loc<4>(i,j,k,l));
- 
-     timeEnd = dclock();
-     slow = timeEnd - timeStart;
- 
-     percent = (slow - fast) * 100.0/slow;
-     sprintf(str1,"%34s%3.1f%1s",
-      "int/Loc elt access; relative perf = ",percent,"%");
-     testStatus = (fast < slow);
-     reportResults(testNumber,str1,testStatus);
-     delete str1;
- 
- 
-     //---------------------------------------
-     // test 17: BrickEngine domain() accessor
-     //---------------------------------------
- 
-     ++testNumber;
-     Interval<3> d1 = floatBrick.domain();
-     testStatus = (d1[0].first()  ==  cube2[0].first())  &&
-                  (d1[0].last()   ==  cube2[0].last())   &&
-                  (d1[0].length() ==  cube2[0].length()) &&
-                  (d1[1].first()  ==  cube2[1].first())  &&
-                  (d1[1].last()   ==  cube2[1].last())   &&
-                  (d1[1].length() ==  cube2[1].length()) &&
-                  (d1[2].first()  ==  cube2[2].first())  &&
-                  (d1[2].last()   ==  cube2[2].last())   &&
-                  (d1[2].length() ==  cube2[2].length());
- 
-     Interval<4> d2 = lightCone.domain();
-     testStatus = (d2[0].first()  ==  spaceTime[0].first())  &&
-                  (d2[0].last()   ==  spaceTime[0].last())   &&
-                  (d2[0].length() ==  spaceTime[0].length()) &&
-                  (d2[1].first()  ==  spaceTime[1].first())  &&
-                  (d2[1].last()   ==  spaceTime[1].last())   &&
-                  (d2[1].length() ==  spaceTime[1].length()) &&
-                  (d2[2].first()  ==  spaceTime[2].first())  &&
-                  (d2[2].last()   ==  spaceTime[2].last())   &&
-                  (d2[2].length() ==  spaceTime[2].length()) &&
-                  (d2[3].first()  ==  spaceTime[3].first())  &&
-                  (d2[3].last()   ==  spaceTime[3].last())   &&
-                  (d2[3].length() ==  spaceTime[3].length()) && testStatus;
- 
-     Interval<7> d3 = xxx7.domain();
-     testStatus = (d3[0].first()  ==  I7[0].first())  &&
-                  (d3[0].last()   ==  I7[0].last())   &&
-                  (d3[0].length() ==  I7[0].length()) &&
-                  (d3[6].first()  ==  I7[6].first())  &&
-                  (d3[6].last()   ==  I7[6].last())   &&
-                  (d3[6].length() ==  I7[6].length()) && testStatus;
- 
-     reportResults(testNumber,"domain() accessor",testStatus);
- 
- 
-     //-------------------------------------------
-     // test 18: BrickEngine baseDomain() accessor
-     //-------------------------------------------
- 
-     ++testNumber;
- 
-     // baseDomain should be identical to Domain for BrickEngine,
-     // since no subsetting has occurred.   That is, baseDomain 
-     // simply returns the Interval Domain of the Engine,
-     // re-cast as a Range. 
- 
-     Range<3> d4 = italian.baseDomain();
-     testStatus = (d4[0].first()  ==  cube2[0].first())  &&
-                  (d4[0].last()   ==  cube2[0].last())   &&
-                  (d4[0].length() ==  cube2[0].length()) &&
-                  (d4[1].first()  ==  cube2[1].first())  &&
-                  (d4[1].last()   ==  cube2[1].last())   &&
-                  (d4[1].length() ==  cube2[1].length()) &&
-                  (d4[2].first()  ==  cube2[2].first())  &&
-                  (d4[2].last()   ==  cube2[2].last())   &&
-                  (d4[2].length() ==  cube2[2].length());
- 
-     Range<4> d5 = transporter.baseDomain();
-     testStatus = (d5[0].first()  ==  spaceTime[0].first())  &&
-                  (d5[0].last()   ==  spaceTime[0].last())   &&
-                  (d5[0].length() ==  spaceTime[0].length()) &&
-                  (d5[1].first()  ==  spaceTime[1].first())  &&
-                  (d5[1].last()   ==  spaceTime[1].last())   &&
-                  (d5[1].length() ==  spaceTime[1].length()) &&
-                  (d5[2].first()  ==  spaceTime[2].first())  &&
-                  (d5[2].last()   ==  spaceTime[2].last())   &&
-                  (d5[2].length() ==  spaceTime[2].length()) &&
-                  (d5[3].first()  ==  spaceTime[3].first())  &&
-                  (d5[3].last()   ==  spaceTime[3].last())   &&
-                  (d5[3].length() ==  spaceTime[3].length()) && testStatus;
- 
-     Range<5> d6 = xxx5.baseDomain();
-     testStatus = (d6[2].first()  ==  I5[2].first())  &&
-                  (d6[2].last()   ==  I5[2].last())   &&
-                  (d6[2].length() ==  I5[2].length()) &&
-                  (d6[4].first()  ==  I5[4].first())  &&
-                  (d6[4].last()   ==  I5[4].last())   &&
-                  (d6[4].length() ==  I5[4].length()) && testStatus;
-  
-     reportResults(testNumber,"baseDomain() accessor",testStatus);
- 
- 
-     //--------------------------------------------
-     // test 19: BrickEngine makeOwnCopy() function
-     //--------------------------------------------
- 
-     ++testNumber;
-     geordi(-12,0,32,0) = Ry;
-     diff = (geordi(-12,0,32,0) - scotty(-12,0,32,0));
-     testStatus = (diff == zero);
- 
-     diff = (geordi(1,28,-30,0) - c);
-     testStatus = (diff == zero) && testStatus;
- 
-     geordi.makeOwnCopy();
-     geordi(-12,0,32,0) = Ry*2;
-     diff = (geordi(-12,0,32,0) - 2*scotty(-12,0,32,0));
-     testStatus = (diff == zero) && testStatus;
-     
-     reportResults(testNumber,"makeOwnCopy() function",testStatus);
- 
- 
-     //-------------------------------------------------------------------
-     // test 20: BrickEngine Interval constructor, strides(); non-std type
-     //-------------------------------------------------------------------
- 
-     ++testNumber;
- 
-     // construct a 6 x 7 Interval IJ, and put a different particle at each
-     // location in the Range.   Incidentally test some features of 
-     // Intervals.   Note that BrickEngine requires a unit-stride Domain.
- 
-     Interval<2> IJ(Interval<1>(0,5), Interval<1>(-6,0));
-     int IJsize = IJ.size();
-     const int IJmax = 42;
-     testStatus = (IJsize == IJmax);
- 
-     int Imin = IJ[0].first();
-     int Imax = IJ[0].last();
-     int Istr = IJ[0].stride();
-     int Ilen = IJ[0].length();
-     testStatus = (Imin == 0) && (Imax == 5) && testStatus;
-     testStatus = (Istr == 1) && (Ilen == 6) && testStatus;
-     
-     int Jmin = IJ[1].first();
-     int Jmax = IJ[1].last();
-     int Jstr = IJ[1].stride();
-     int Jlen = IJ[1].length();
-     testStatus = (Jmin == -6) && (Jmax == 0) && testStatus;
-     testStatus = (Jstr ==  1) && (Jlen == 7) && testStatus;
- 
-     // construct 42 distinct Atoms and store them in the array Ar[IJsize]
- 
-     int NEl;
-     int NChg;
-     double Mass;
-     int knt = 0;
- 
-     Atom* Ar[IJmax]; 
-     for (int i=Imin; i<Imax+1; i=i+Istr)
-       for (int j=Jmin; j<Jmax+1; j=j+Jstr) {
- 	NEl  = abs(i+j)+5;
- 	NChg = NEl*2;
- 	Mass = NChg*2.22;
- 	Ar[knt] = new Atom(NEl,NChg,Mass);
- 	testStatus = (Ar[knt]->electron() == NEl) && testStatus;
- 	knt++;
-       }
- 
-     testStatus = (knt == IJsize) && testStatus;
- 
-     // construct a 2D BrickEngine to manage the Ar Atoms over the IJ Range
- 
-     Engine<2,Atom,Brick> ArEngine(IJ);
- 
-     diff = zero;
-     knt = 0;
- 
-     for (int i=Imin; i<Imax+1; i=i+Istr)
-       for (int j=Jmin; j<Jmax+1; j=j+Jstr) {
- 	ArEngine(Loc<2>(i,j)) = *(Ar[knt]);
- 	diff += fabsf(ArEngine.read(i,j).amu() - (abs(i+j)+5)*4.44 );
- 	knt++;
-       }
- 
-     testStatus = (diff == zero) && testStatus;
- 
-     // test BrickEngine strides() accessor.  Should return
-     // actual strides of underlying 2D Interval
-     
-     STstrides = ArEngine.strides();
-     nomStrides[0] = 1;
-     nomStrides[1] = Imax-Imin+1;
-     testStatus = (STstrides[0] == nomStrides[0]) && testStatus;
-     testStatus = (STstrides[1] == nomStrides[1]) && testStatus;
- 
-     reportResults(testNumber,"Interval constr/strides(); non-std type",
-                              testStatus);
- 
- 
-     //------------------------------------------------------------
-     // test 21: BrickEngine default constructor, non-standard type
-     //------------------------------------------------------------
- 
-     ++testNumber;
-     Engine<2,Atom,Brick> defaultAr;
-     defaultAr = ArEngine; 
- 
-     for (int i=Imin; i<Imax+1; i=i+Istr)
-       for (int j=Jmin; j<Jmax+1; j=j+Jstr)
- 	diff += abs(defaultAr.read(i,j).nuclear() - (abs(i+j)+5)*2 );
- 
-     testStatus = (diff == zero);
-     reportResults(testNumber,"default constructor/assign; non-std type",
-             testStatus);
- 
- 
-     //---------------------------------------------------------
-     // test 22: BrickEngine copy constructor, non-standard type
-     //---------------------------------------------------------
- 
-     ++testNumber;
-     Engine<2,Atom,Brick> dupAr(ArEngine);
- 
-     diff = zero;
-     for (int i=Imin; i<Imax+1; i=i+Istr)
-       for (int j=Jmin; j<Jmax+1; j=j+Jstr) {
-         diff += abs(dupAr.read(Loc<2>(i,j)).nuclear() - (abs(i+j)+5)*2 );
-         knt++;
-       }
- 
-     testStatus = (diff == zero);
-     reportResults(testNumber,"copy constructor; non-std type",
-                    testStatus);
- 
- 
-     //--------------------------------------------------------------
-     // test 23: BrickEngine constructor via model, non-standard type
-     //--------------------------------------------------------------
- 
-     ++testNumber;
-     Interval<3> IJK(IJ,Interval<1>(2,14));
-     Engine<3,Atom,Brick> ArToo(IJK,*(Ar[30]));
-     
-     Imin = IJK[0].first();
-     Imax = IJK[0].last();
-     Jmin = IJK[1].first();
-     Jmax = IJK[1].last();
-     int Kmin = IJK[2].first();
-     int Kmax = IJK[2].last();
- 
-     diff = zero;
-     for (int i=Imin; i<Imax+1; i++) 
-       for (int j=Jmin; j<Jmax+1; j++)
-         for (int k=Kmin; k<Kmax+1; k++)
-           diff += fabs(ArToo.read(i,j,k).amu() - (double)5*4.44);
-    
-     testStatus = (diff == zero);
-     reportResults(testNumber,"constructor via model; non-std type",
-                   testStatus);
- 
- 
-     //---------------------------------------------------------------------
-     // test 24: BrickEngine constructor via foreign data (1D), non-std type
-     //---------------------------------------------------------------------
- 
-     ++testNumber;
- 
-     Atom H[17];
-     knt = 0;
-     for (int i = 0; i<17; i++) {
-       NEl  = (int)Ry*i;
-       NChg = NEl*2;
-       Mass = NChg+4-i;
-       Atom Htemp(NEl,NChg,Mass);
-       H[knt] = Htemp;
-       testStatus = (H[knt].amu() == Mass) && testStatus;
-       knt++;
-     }
- 
-     Interval<1> Balmer(3,19);
-     Engine<1,Atom,Brick> jovian(H,Balmer);
- 
-     diff = zero;
-     for(int i = 3; i < 20; i++) {
-       diff += abs( jovian.read(Loc<1>(i)).electron() - (int)Ry*(i-3) );
-       diff += fabs( jovian.read(i).amu() - ((int)Ry*(i-3)*2-i+7) );
-     }
- 
-     testStatus = (diff == zero) && testStatus;
-     reportResults(testNumber,"constructor via 1D foreign data; non-std type",
-                   testStatus);
- 
- 
-     //---------------------------------------------------------------
-     // test 25: BrickEngine constructor via Node object, non-std type
-     //---------------------------------------------------------------
- 
-     ++testNumber;
-     
-     Engine<6,Atom,Brick> Energy(k);
-     Engine<6,Atom,Brick> Energy2(star,H[16]);
-     Energy = Energy2;
- 
-     diff = zero;
-     for(int i = 4; i < 13; i++)
-       for(int j = 4; j < 13; j++)
- 	for(int k = 4; k < 13; k++)
- 	  for(int l = 4; l < 13; l++)
- 	    for(int m = 4; m < 13; m++)
- 	      for(int n = 4; n < 13; n++)
- 		diff += abs( Energy.read(i,j,k,l,m,n).nuclear() - ((int)Ry)*16*2 );
- 
-     testStatus = (diff == zero);
-     reportResults(testNumber,"constructor via Node object; non-std type",
-                   testStatus);
- 
- 
-     //-------------------------------------------------------
-     // test 26: BrickEngine assignment operator, non-std type
-     //-------------------------------------------------------
- 
-     ++testNumber;
-     Engine<3,Atom,Brick> Ne;
-     Ne = ArToo;
- 
-     diff = zero;
-     for (int i=Imin; i<Imax+1; i++)
-       for (int j=Jmin; j<Jmax+1; j++)
-         for (int k=Kmin; k<Kmax+1; k++)
-           diff += fabs(Ne.read(i,j,k).nuclear() - 10.0);
- 
-     testStatus = (diff == zero);
-     reportResults(testNumber,"assignment operator; non-std type",
-                   testStatus);
- 
- 
-     //-----------------------------------------------------
-     // test 27: BrickEngine domain() accessor, non-std type
-     //-----------------------------------------------------
- 
-     ++testNumber;
-    
-     Interval<1> d7 = jovian.domain();
-     testStatus = (d7[0].first()  ==  Balmer.first())  &&
-                  (d7[0].last()   ==  Balmer.last())   &&
-                  (d7[0].length() ==  Balmer.length());
- 
-     Interval<2> d8 = ArEngine.domain();
-     testStatus = (d8[0].first()  ==  IJ[0].first())  &&
-                  (d8[0].last()   ==  IJ[0].last())   &&
-                  (d8[0].length() ==  IJ[0].length()) &&
-                  (d8[1].first()  ==  IJ[1].first())  &&
-                  (d8[1].last()   ==  IJ[1].last())   &&
-                  (d8[1].length() ==  IJ[1].length()) && testStatus;
-  
-     Interval<6> d9 = Energy.domain();
-     testStatus = (d9[3].first()  ==  star[3].first())  &&
-                  (d9[3].last()   ==  star[3].last())   &&
-                  (d9[3].length() ==  star[3].length()) &&
-                  (d9[5].first()  ==  star[5].first())  &&
-                  (d9[5].last()   ==  star[5].last())   &&
-                  (d9[5].length() ==  star[5].length()) && testStatus;
- 
-     reportResults(testNumber,"domain() accessor; non-std type",
-                   testStatus);
- 
- 
-     //---------------------------------------------------------
-     // test 28: BrickEngine baseDomain() accessor, non-std type
-     //---------------------------------------------------------
- 
-     ++testNumber;
- 
-     // Again, baseDomain should be identical to Domain for BrickEngine,
-     // since no subsetting has occurred. 
- 
-     Range<2> d10 = dupAr.domain();
-     testStatus = (d10[0].first()  ==  IJ[0].first())  &&
-                  (d10[0].last()   ==  IJ[0].last())   &&
-                  (d10[0].length() ==  IJ[0].length()) &&
-                  (d10[1].first()  ==  IJ[1].first())  &&
-                  (d10[1].last()   ==  IJ[1].last())   &&
-                  (d10[1].length() ==  IJ[1].length());
- 
-     Range<3> d11 = ArToo.domain();
-     testStatus = (d11[0].first()  ==  IJK[0].first())  &&
-                  (d11[0].last()   ==  IJK[0].last())   &&
-                  (d11[0].length() ==  IJK[0].length()) &&
-                  (d11[1].first()  ==  IJK[1].first())  &&
-                  (d11[1].last()   ==  IJK[1].last())   &&
-                  (d11[1].length() ==  IJK[1].length()) && testStatus;
- 
- 
-     Range<6> d12 = Energy.domain();
-     testStatus = (d12[3].first()  ==  star[3].first())  &&
-                  (d12[3].last()   ==  star[3].last())   &&
-                  (d12[3].length() ==  star[3].length()) &&
-                  (d12[5].first()  ==  star[5].first())  &&
-                  (d12[5].last()   ==  star[5].last())   &&
-                  (d12[5].length() ==  star[5].length()) && testStatus;
- 
-     reportResults(testNumber,"baseDomain() accessor; non-std type",
-                   testStatus);
- 
- 
-     //----------------------------------------------------------
-     // test 29: BrickEngine makeOwnCopy() function, non-std type
-     //----------------------------------------------------------
- 
-     ++testNumber;
-     Ne.makeOwnCopy();
-     Atom NeTemp(7.1,7.2,7.3);
-     Ne(3,-4,9) = NeTemp;
- 
-     diff = zero;
-     for (int i=Imin; i<Imax+1; i++)
-       for (int j=Jmin; j<Jmax+1; j++)
- 	for (int k=Kmin; k<Kmax+1; k++) {
- 	  if(i==3 && j==-4 && k==9)
- 	    diff = fabs(Ne(3,-4,9).amu() - 7.3) + fabs(ArToo(3,-4,9).amu() - 5*4.44);
- 	  else 
- 	    diff += fabs(Ne(Loc<3>(i,j,k)).amu() - ArToo.read(i,j,k).amu());
- 	}
- 
-     testStatus = (diff == zero);
-     reportResults(testNumber,"makeOwnCopy() function; non-std type",
-                   testStatus);
- 
- 
- 
- // ************************* BrickViewEngine ****************************
- 
-     cout << "\n\n     BrickViewEngine" << endl;
-     cout << "     ---------------\n" << endl;
- 
-     typedef Engine<2,float,BrickView<6,false> >    float2DV2_t;
-     typedef Engine<3,float,BrickView<3,true> >     float3DV1_t;
-     typedef Engine<3,float,BrickView<3,false> >    float3DV2_t;
-     typedef Engine<4,float,BrickView<6,false> >    float4DV3_t;
-     typedef Engine<2,double,BrickView<2,true> >   double2DV1_t; 
-     typedef Engine<2,double,BrickView<2,false> >  double2DV2_t; 
-     typedef Engine<6,int,BrickView<6,true> >         int6DV1_t;
-     typedef Engine<7,int,BrickView<7,false> >        int7DV2_t;
- 
- 
- 
-     //--------------------------------------------------------------------
-     // test 30: BrickViewEngine required POOMA typedefs properly exported?
-     //--------------------------------------------------------------------
- 
-     ++testNumber;
- 
-     // first construct stride-1 and non-stride-1 Views of 3D cube and 
-     // 2D square-based Engines
- 
-     Interval<1>  line1(7,16);
-     Interval<1>  line2(-1,4);
-     Interval<1>  line3(11,16);
-     Interval<1>  line4(-4,5);
-     Range<1>     line5(0,6,2);
-     Range<1>     line6(-1,5,3);
-     Range<1>     line7(7,15,4);
- 
-     Interval<2>  square(line,line1);         // 10x10    Interval
-     Interval<3>  cube(line,line4,line1);     // 10x10x10 Interval
- 
-     // square1 and rectangle2 are associated with Boolean 'true' in 
-     // BrickView, since both of these 2D Ranges have a (unit-stride)
-     // Interval, line2, as their first Range component.  Note that 
-     // this is true for rectangle2 even though its second Range component, 
-     // line7, has non-unit stride (4).  By contrast, rectangle1 is 
-     // associated with Boolean 'false' in BrickView, since its first 
-     // Range component, line5, has stride 2.
- 
-     Interval<2>  square1(line2,line3);       // 6x6 "T" subset of square
-     Range<2>     rectangle1(line5,line3);    // 4x6 "F" subset of square
-     Range<2>     rectangle2(line2,line7);    // 6x3 "T" subset of square
- 
-     Interval<3>  cube1(line2,line2,line3);   // 6x6x6 "T" subset of cube
-     Range<3>     box1(line5,line6,line7);    // 4x3x3 "F" subset of cube
-     Range<3>     box2(line2,line6,line7);    // 6x3x3 "T" subset of cube
- 
-     Engine2Dd_t  Q(square);
-     Engine3Df_t  R(cube);
- 
-     double2DV1_t BV1(Q,square1);
-     double2DV2_t BV2(Q,rectangle1);
-     double2DV2_t BV3(Q,rectangle2);
- 
-     float3DV1_t  BV4(R,cube1);  
-     float3DV2_t  BV5(R,box1);
-     float3DV2_t  BV6(R,box2);
- 
-     // populate Q with data
- 
-     Imin = line.first();
-     Ilen = line.length();
-     Imax = Imin + Ilen;
-     Jmin = line1.first();
-     Jmax = line1.last() + 1;
-     Jlen = Jmax - Jmin;
- 
-     for (int i = Imin; i < Imax; i++)
-      for (int j = Jmin; j < Jmax; j++)
-        Q(i,j) = (i+Ry)*j + 1.1;
- 
-     // populate R with data
- 
-     int Klen;
- 
-     Imin = cube[0].first();
-     Ilen = cube[0].length();
-     Imax = Imin + Ilen;
-     Jmin = cube[1].first();
-     Jmax = cube[1].last() + 1;
-     Jlen = Jmax - Jmin;
-     Kmin = cube[2].first(); 
-     Kmax = cube[2].last() + 1;
-     Klen = Kmax - Kmin;
- 
-     for (int i = Imin; i < Imax; i++)
-      for (int j = Jmin; j < Jmax; j++)
-       for (int k = Kmin; k < Kmax; k++) 
-         R(i,j,k) = i*1.1 + j*2.2 + k*3.3;
- 
- 
-     // now start testing various typedefs using the above BrickViewEngines
- 
-     // This_t
- 
-     {
-     typedef float3DV1_t::This_t         Try_t;
-     typedef float3DV1_t             Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result;
-     }
- 
-     {
-     typedef float3DV2_t::This_t         Try_t;
-     typedef float3DV2_t             Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     {
-     typedef double2DV1_t::This_t         Try_t;
-     typedef double2DV1_t             Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     {
-     typedef double2DV2_t::This_t         Try_t;
-     typedef double2DV2_t             Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
- 
-     // Engine_t
- 
-     {
-     typedef float3DV1_t::Engine_t       Try_t;
-     typedef float3DV1_t::This_t     Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     {
-     typedef float3DV2_t::Engine_t       Try_t;
-     typedef float3DV2_t::This_t     Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     {
-     typedef double2DV1_t::Engine_t      Try_t;
-     typedef double2DV1_t::This_t    Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     {
-     typedef double2DV2_t::Engine_t      Try_t;
-     typedef double2DV2_t::This_t    Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
-  
- 
-     // Domain_t
- 
-     {
-     typedef float3DV1_t::Domain_t          Try_t;
-     typedef Interval<3>                Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     {
-     typedef float3DV2_t::Domain_t          Try_t;
-     typedef Interval<3>                Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     {
-     typedef double2DV2_t::Domain_t         Try_t;
-     typedef Interval<2>                Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     {
-     typedef double2DV2_t::Domain_t         Try_t;
-     typedef Interval<2>                Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     reportResults(testNumber,"exported typedefs This_t, Engine_t, Domain_t",
-                              testStatus);
- 
- 
-     //----------------------------------------------------------------
-     // test 31: additional required POOMA typedefs for BrickViewEngine
-     //----------------------------------------------------------------
- 
-     ++testNumber;
- 
-     // BaseDomain_t
- 
-     {
-     typedef float3DV1_t::BaseDomain_t     Try_t;
-     typedef Range<3>                  Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result;
-     }
- 
-     {
-     typedef float3DV2_t::BaseDomain_t     Try_t;
-     typedef Range<3>                  Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     {
-     typedef double2DV1_t::BaseDomain_t    Try_t;
-     typedef Range<2>                  Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     {
-     typedef double2DV2_t::BaseDomain_t    Try_t;
-     typedef Range<2>                  Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     // Element_t
- 
-     {
-     typedef float3DV1_t::Element_t        Try_t;
-     typedef float                     Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     {
-     typedef float3DV2_t::Element_t        Try_t;
-     typedef float                     Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     {
-     typedef double2DV1_t::Element_t       Try_t;
-     typedef double                    Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     {
-     typedef double2DV2_t::Element_t       Try_t;
-     typedef double                    Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     reportResults(testNumber,"exported typedefs BaseDomain_t, Element_t",
-                              testStatus);
- 
- 
-     //----------------------------------------------------------------
-     // test 32: still more required POOMA typedefs for BrickViewEngine
-     //----------------------------------------------------------------
- 
-     ++testNumber;
- 
-     // ElementRef_t
- 
-     {
-     typedef float3DV1_t::ElementRef_t   Try_t;
-     typedef float&                  Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result;
-     }
- 
-     {
-     typedef float3DV2_t::ElementRef_t   Try_t;
-     typedef float&                  Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     {
-     typedef double2DV1_t::ElementRef_t   Try_t;
-     typedef double&                  Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     {
-     typedef double2DV2_t::ElementRef_t   Try_t;
-     typedef double&                  Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     // Tag_t
- 
-     {
-     typedef float3DV1_t::Tag_t           Try_t;
-     typedef BrickView<3,true>        Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     {
-     typedef float3DV2_t::Tag_t           Try_t;
-     typedef BrickView<3,false>       Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     {
-     typedef double2DV1_t::Tag_t          Try_t;
-     typedef BrickView<2,true>       Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     {
-     typedef double2DV2_t::Tag_t          Try_t;
-     typedef BrickView<2,false>       Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result && testStatus;
-     }
- 
-     reportResults(testNumber,"exported typedefs ElementRef_t, Tag_t",
-                              testStatus);
- 
- 
-     //----------------------------------------------------
-     // test 33: BrickViewEngine Range/Interval constructor
-     //----------------------------------------------------
- 
-     ++testNumber;
- 
-     //-------------
-     // square tests
-     //-------------
- 
-     // BV1...
- 
-     Imin = square1[0].first();
-     Jmin = square1[1].first();
-     Ilen = square1[0].length();
-     Jlen = square1[1].length();
-     Istr = square1[0].stride();
-     Jstr = square1[1].stride();
- 
-     diff = zero;
-     for (int i = 0; i < Ilen; i++)
-      for (int j = 0; j < Jlen; j++) {
-        int Iind = Imin + i*Istr;
-        int Jind = Jmin + j*Jstr;
-        diff += Q.read(Iind,Jind) - BV1(Loc<2>(i,j));
-      }
-     testStatus = (diff == zero);
- 
-     // BV2...
- 
-     Imin = rectangle1[0].first();
-     Jmin = rectangle1[1].first();
-     Ilen = rectangle1[0].length();
-     Jlen = rectangle1[1].length();
-     Istr = rectangle1[0].stride();
-     Jstr = rectangle1[1].stride();
- 
-     diff = zero;
-     for (int i = 0; i < Ilen; i++)
-      for (int j = 0; j < Jlen; j++) {
-        int Iind = Imin + i*Istr;
-        int Jind = Jmin + j*Jstr;
-        diff += Q.read(Iind,Jind) - BV2(Loc<2>(i,j));
-      }
-     testStatus = (diff == zero) && testStatus;
- 
-     // BV3...
- 
-     Imin = rectangle2[0].first();
-     Jmin = rectangle2[1].first();
-     Ilen = rectangle2[0].length();
-     Jlen = rectangle2[1].length();
-     Istr = rectangle2[0].stride();
-     Jstr = rectangle2[1].stride();
- 
-     diff = zero;
-     for (int i = 0; i < Ilen; i++)
-      for (int j = 0; j < Jlen; j++) {
-        int Iind = Imin + i*Istr;
-        int Jind = Jmin + j*Jstr;
-        diff += Q.read(Iind,Jind) - BV3(Loc<2>(i,j));
-      }
-     testStatus = (diff == zero) && testStatus;
- 
- 
-     //-----------
-     // cube tests
-     //-----------
- 
-     // BV4...
- 
-     int Kstr;
- 
-     Imin = cube1[0].first();
-     Jmin = cube1[1].first();
-     Kmin = cube1[2].first();
-     Ilen = cube1[0].length();
-     Jlen = cube1[1].length();
-     Klen = cube1[2].length();
-     Istr = cube1[0].stride();
-     Jstr = cube1[1].stride();
-     Kstr = cube1[2].stride();
- 
-     diff = zero;
-     for (int i = 0; i < Ilen; i++)
-      for (int j = 0; j < Jlen; j++) 
-       for (int k = 0; k < Klen; k++) {
-        int Iind = Imin + i*Istr;
-        int Jind = Jmin + j*Jstr;
-        int Kind = Kmin + k*Kstr;
-        diff += R.read(Iind,Jind,Kind) - BV4(Loc<3>(i,j,k));
-       }
-     testStatus = (diff == zero) && testStatus;
- 
-     // BV5...
- 
-     Imin = box1[0].first();
-     Jmin = box1[1].first();
-     Kmin = box1[2].first();
-     Ilen = box1[0].length();
-     Jlen = box1[1].length();
-     Klen = box1[2].length();
-     Istr = box1[0].stride();
-     Jstr = box1[1].stride();
-     Kstr = box1[2].stride();
- 
-     diff = zero;
-     for (int i = 0; i < Ilen; i++)
-      for (int j = 0; j < Jlen; j++) 
-       for (int k = 0; k < Klen; k++) {
-        int Iind = Imin + i*Istr;
-        int Jind = Jmin + j*Jstr;
-        int Kind = Kmin + k*Kstr;
-        diff += R.read(Iind,Jind,Kind) - BV5(Loc<3>(i,j,k));
-       }
- 
-     testStatus = (diff == zero) && testStatus;
- 
-     // BV6...
- 
-     Imin = box2[0].first();
-     Jmin = box2[1].first();
-     Kmin = box2[2].first();
-     Ilen = box2[0].length();
-     Jlen = box2[1].length();
-     Klen = box2[2].length();
-     Istr = box2[0].stride();
-     Jstr = box2[1].stride();
-     Kstr = box2[2].stride();
- 
-     diff = zero;
-     for (int i = 0; i < Ilen; i++)
-      for (int j = 0; j < Jlen; j++) 
-       for (int k = 0; k < Klen; k++) {
-        int Iind = Imin + i*Istr;
-        int Jind = Jmin + j*Jstr;
-        int Kind = Kmin + k*Kstr;
-        diff += R(Iind,Jind,Kind) - BV6(i,j,k);
-       }
- 
-     testStatus = (diff == zero) && testStatus;
- 
-     reportResults(testNumber,"Range<Dim> constructor",testStatus);
- 
- 
-     //-------------------------------------------------------
-     // test 34:  Range/Interval constructor, NewEngine struct
-     //-------------------------------------------------------
- 
-     ++testNumber;
- 
-     {
-     typedef NewEngine<Engine3Df_t,Range<3> >::Type_t      Try_t;
-     typedef Engine<3,float,BrickView<3,false> >       Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result;
-     }
- 
-     reportResults(testNumber,"  NewEngine struct",testStatus);
- 
- 
-     //-------------------------------------------------------
-     // test 35: Range/Interval constructor, domain() accessor
-     //-------------------------------------------------------
- 
-     ++testNumber;
-     
-     // 3D, UnitStride = F
- 
-     float3DV2_t BV7(BV5);
- 
-     // the Domain returned by this accessor is always an Interval, because
-     // the View is, by definition, stride-1 in all dimensions, with first-index
-     // = 0 in all dimensions.  Thus, box4 should = box3, since these are stride-1 
-     // Intervals describing the identical View, but box3 is not = box1; box1 is the 
-     // not-necessarily-stride-1 Range corresponding to box3, and its indices are
-     // expressed in terms of the parent Domain [cube]'s indices.
- 
-     Interval<3> box3 = BV5.domain();
-     Interval<3> box4 = BV7.domain();
-      
-     testStatus = (box4[0].first()  ==  box3[0].first())  &&
-                  (box4[0].last()   ==  box3[0].last())   &&
-                  (box4[0].length() ==  box3[0].length()) &&
-                  (box4[1].first()  ==  box3[1].first())  &&
-                  (box4[1].last()   ==  box3[1].last())   &&
-                  (box4[1].length() ==  box3[1].length()) &&
-                  (box4[2].first()  ==  box3[2].first())  &&
-                  (box4[2].last()   ==  box3[2].last())   &&
-                  (box4[2].length() ==  box3[2].length());
- 
-     // 2D, UnitStride = T
- 
-     double2DV1_t BV8(BV1);
-     Interval<2> square2 = BV8.domain();
-    
-     // even though BV1's Domain (square1) is already Interval<2>, still
-     // need to compute its domain() which will be offset to start with index 0.
- 
-     Interval<2> square3 = BV1.domain();
- 
-     testStatus = (square2[0].first()  ==  square3[0].first())  &&
-                  (square2[0].last()   ==  square3[0].last())   &&
-                  (square2[0].length() ==  square3[0].length()) &&
-                  (square2[1].first()  ==  square3[1].first())  &&
-                  (square2[1].last()   ==  square3[1].last())   &&
-                  (square2[1].length() ==  square3[1].length()) && testStatus; 
-  
-     reportResults(testNumber,"  domain() accessor",testStatus);
- 
- 
-     //-----------------------------------------------------------
-     // test 36: Range/Interval constructor, baseDomain() accessor
-     //-----------------------------------------------------------
- 
-     ++testNumber;
- 
-     // 3D, UnitStride = F
- 
-     Range<3> cube3 = BV7.baseDomain();
- 
-     testStatus = (cube3[0].first()  ==  box1[0].first())  &&
-                  (cube3[0].last()   ==  box1[0].last())   &&
-                  (cube3[0].length() ==  box1[0].length()) &&
-                  (cube3[1].first()  ==  box1[1].first())  &&
-                  (cube3[1].last()   ==  box1[1].last())   &&
-                  (cube3[1].length() ==  box1[1].length()) &&
-                  (cube3[2].first()  ==  box1[2].first())  &&
-                  (cube3[2].last()   ==  box1[2].last())   &&
-                  (cube3[2].length() ==  box1[2].length());
- 
-     // 2D, UnitStride = T
- 
-     Range<2> box5 = BV8.baseDomain();
- 
-     testStatus = (box5[0].first()  ==  square1[0].first())  &&
-                  (box5[0].last()   ==  square1[0].last())   &&
-                  (box5[0].length() ==  square1[0].length()) &&
-                  (box5[1].first()  ==  square1[1].first())  &&
-                  (box5[1].last()   ==  square1[1].last())   &&
-                  (box5[1].length() ==  square1[1].length()) && testStatus;
- 
-     reportResults(testNumber,"  baseDomain() accessor",testStatus);
- 
- 
-     //--------------------------------------------------------
-     // test 37: Range/Interval constructor, strides() accessor
-     //--------------------------------------------------------
- 
-     ++testNumber;
- 
-     // tests that second-guess the implementation, to illustrate
-     // the meaning of the BrickViewEngine strides() accessor 
-     // (just this once)...
- 
-     // 3D, UnitStride = F
- 
-     const int *NT = BV7.strides();
- 
-     testStatus = true;
-     for(int i = 0; i < 3; i++) {
-       nomStrides[i] = R.strides()[i] * box1[i].stride();
-       testStatus = (NT[i] == nomStrides[i]) && testStatus;
-     }
- 
-     // 2D, UnitStride = T
-   
-     NT = BV8.strides();
- 
-     for(int i = 0; i < 2; i++) {
-       nomStrides[i] = Q.strides()[i] * square1[i].stride();
-       testStatus = (NT[i] == nomStrides[i]) && testStatus;
-     }
- 
- 
-     // the 'real' tests, illustrating how the BrickView strides()
-     // accessor makes it possible to sequentially identify the subset 
-     // indices from the parent Domain.
- 
-     // 3D, UnitStride = F
- 
-     // create linear-indexing array RR
- 
-     Imin = R.domain()[0].first(); Imax = R.domain()[0].last();
-     Jmin = R.domain()[1].first(); Jmax = R.domain()[1].last();
-     Kmin = R.domain()[2].first(); Kmax = R.domain()[2].last();
- 
-     int sizeRR = R.domain()[0].length()*R.domain()[1].length()*R.domain()[2].length();
-     float* RR  = new float[sizeRR];
- 
-     for (int k = Kmin; k < Kmax+1; k++)
-      for (int j = Jmin; j < Jmax+1; j++)
-       for (int i = Imin; i < Imax+1; i++) {
-        int in = (i-Imin);  int jn = (j-Jmin); int kn = (k-Kmin);
-        int ind = kn*R.domain()[1].length()*R.domain()[2].length() + 
-                  jn*R.domain()[1].length() + in;
-        RR[ind] = R(i,j,k);
-       }
-    
-     // verify that using strides() to index into the linear version of 
-     // BrickEngine R gives the same result as BrickView BV7 with its 
-     // unit strides.
- 
-     NT = BV7.strides();
- 
-     Imax = BV7.domain()[0].last();
-     Jmax = BV7.domain()[1].last();
-     Kmax = BV7.domain()[2].last();
- 
-     // compute differences between parent and subdomain first-index
- 
-     int deltI = BV7.baseDomain()[0].first() - R.domain()[0].first();
-     int deltJ = BV7.baseDomain()[1].first() - R.domain()[1].first();
-     int deltK = BV7.baseDomain()[2].first() - R.domain()[2].first();
- 
-     // compute linear-indexing offset
- 
-     int off = deltK*R.domain()[1].length()*R.domain()[2].length() + 
-                  deltJ*R.domain()[1].length() + deltI;
- 
-     diff = zero;
-     for (int k = 0; k < Kmax+1; k++)
-      for (int j = 0; j < Jmax+1; j++)
-       for (int i = 0; i < Imax+1; i++) {
-        int ind = i*NT[0] + j*NT[1] + k*NT[2] + off;
-        diff += fabs(RR[ind] - BV7(i,j,k));
-       }
- 
-     testStatus = (diff == zero) && testStatus;
- 
- 
-     // 2D, UnitStride=T
- 
-     // create linear-indexing array QQ
- 
-     Imin = Q.domain()[0].first(); Imax = Q.domain()[0].last();
-     Jmin = Q.domain()[1].first(); Jmax = Q.domain()[1].last();
- 
-     int sizeQQ = Q.domain()[0].length()*Q.domain()[1].length();
-     float* QQ  = new float[sizeQQ];
- 
-     for (int j = Jmin; j < Jmax+1; j++)
-      for (int i = Imin; i < Imax+1; i++) {
-       int in = (i-Imin); int jn = (j-Jmin); 
-       int ind = jn*Q.domain()[1].length() + in;
-       QQ[ind] = Q(i,j);
-      }
-   
- 
-     // verify that using strides() to index into the linear version of 
-     // BrickEngine Q gives the same result as BrickView BV8 with its unit 
-     // strides (if the different starting points for the indexing underlying 
-     // the two Engines) is properly accounted for).
- 
-     NT = BV8.strides();
- 
-     Imax  = BV8.domain()[0].last();
-     Jmax  = BV8.domain()[1].last();
- 
-     // compute differences between parent and subdomain first-index
- 
-     deltI = BV8.baseDomain()[0].first() - Q.domain()[0].first();
-     deltJ = BV8.baseDomain()[1].first() - Q.domain()[1].first();
- 
-     // compute linear-indexing offset
- 
-     off   = deltJ*Q.domain()[1].length() + deltI;
- 
-     diff = zero;
-     for (int j = 0; j < Jmax+1; j++)
-      for (int i = 0; i < Imax+1; i++) {
-       int ind = i*NT[0] + j*NT[1] + off;
-       diff += fabs(QQ[ind] - BV8(i,j));
-      }
- 
-     testStatus = (diff == zero) && testStatus;
- 
- 
-     // extra test for 3D, UnitStride = F (different Engine, just for fun)
- 
-     // parent domain
- 
-     Interval<1> U1(4,10);           // length 7 
-     Interval<1> U2(0,4);            // length 5 
-     Interval<1> U3(-2,0);           // length 3
-     Interval<3> D(U1,U2,U3);
-     Engine3Df_t S(D);
- 
-     int sizeS2 = U1.length()*U2.length()*U3.length();
-     float *S2 = new float[sizeS2];
-    
-     Imin = U1.first(); Imax = U1.last();
-     Jmin = U2.first(); Jmax = U2.last();
-     Kmin = U3.first(); Kmax = U3.last();
- 
-     // linearly-indexed version of BrickEngine to illustrate use of strides()
- 
-     for (int k = Kmin; k < Kmax+1; k++)
-      for (int j = Jmin; j < Jmax+1; j++)
-       for (int i = Imin; i < Imax+1; i++) {
-          int in = (i-Imin);  int jn = (j-Jmin); int kn = (k-Kmin);
-          S(i,j,k) = in*1.1 + jn*2.2 + kn*3.3;
-          int ind = kn*U1.length()*U2.length() + jn*U1.length() + in;
-          S2[ind] = S(i,j,k);
-       }
- 
-     // sub-domain
- 
-     Range<1> V1(4,10,2);       // length 4 
-     Range<1> V2(0,4,2);        // length 3 
-     Range<1> V3(-2,0,2);       // length 2
- 
-     Range<3> F(V1,V2,V3);
-     float3DV2_t BV9(S,F);
-   
-     NT = BV9.strides();
- 
-     // this 'check' once again second-guesses the implementation
-     // (ok, this is _really_ the last time!)
- 
-     testStatus = true;
-     for(int i = 0; i < 3; i++) {
-       nomStrides[i] = S.strides()[i] * F[i].stride();
-       testStatus = (NT[i] == nomStrides[i]) && testStatus;
-     }
- 
-     // true check: verify that using strides() to index into the linear version
-     // of BrickEngine S gives the same result as BrickView BV9 with unit strides.
- 
-     Imax  = BV9.domain()[0].last();
-     Jmax  = BV9.domain()[1].last();
-     Kmax  = BV9.domain()[2].last();
- 
-     // compute differences between parent and subdomain first-index
-     
-     deltI = BV9.baseDomain()[0].first() - S.domain()[0].first();
-     deltJ = BV9.baseDomain()[1].first() - S.domain()[1].first();
-     deltK = BV9.baseDomain()[2].first() - S.domain()[2].first();
- 
-     // compute linear-indexing offset
- 
-     off   = deltK*S.domain()[1].length()*S.domain()[2].length() +
-                  deltJ*S.domain()[1].length() + deltI;
- 
-     diff = zero;
-     for (int k = 0; k < Kmax+1; k++)
-      for (int j = 0; j < Jmax+1; j++)
-        for (int i = 0; i < Imax+1; i++) {
-         int ind = i*NT[0] + j*NT[1] + k*NT[2] + off;
-         diff += fabs(S2[ind] - BV9(i,j,k));
-        }
-     testStatus = (diff == zero) && testStatus;
- 
-     reportResults(testNumber,"  strides() accessor",testStatus);
- 
- 
-     //----------------------------------------------------------
-     // test 38: BrickViewEngine SliceRange<Dim2,Dim> constructor
-     //----------------------------------------------------------
- 
-     ++testNumber;
- 
-     // SliceRange<Dim2,Dim> is a Domain which stores a total
-     // Domain (of dimension Dim2) and a slice Domain (of dimension 
-     // Dim < Dim2).  Although in general both Domains in a SliceRange
-     // can be Range objects, here the Dim2 Domain must be an Interval
-     // since it corresponds to the Domain of a BrickEngine.  The 
-     // Dim Range is the one actually used in the constructor; the 
-     // Dim2 Range is implicitly known through the BrickEngine.
- 
-     // construct the parent Interval/Engine for the SliceRange/View 
- 
-     Interval<6> IA6(I0,IJK,J0,Balmer);
-     Engine6Df_t B1(IA6);
- 
-     // get 6D Interval limits
- 
-     imin     = I0.first();
-     imax     = I0.last();
-     jmin     = IJK[0].first();
-     jmax     = IJK[0].last();
-     kmin     = IJK[1].first();
-     kmax     = IJK[1].last();
-     int lmin = IJK[2].first();
-     int lmax = IJK[2].last();
-     int mmin = J0.first();
-     int mmax = J0.last();
-     int nmin = Balmer.first();
-     int nmax = Balmer.last();
- 
-     // assign BrickEngine values
- 
-     for(int i = imin; i < imax+1; i++)
-      for(int j = jmin; j < jmax+1; j++)
-       for(int k = kmin; k < kmax+1; k++)
-        for(int l = lmin; l < lmax+1; l++)
-         for(int m = mmin; m < mmax+1; m++)
-          for(int n = nmin; n < nmax+1; n++)
-           B1(i,j,k,l,m,n) = i*1.1 + j*2.2 + k*3.3 + l*4.4 + m*5.5 + n*6.6;
- 
-     // define typedefs for the SliceRange
- 
-     typedef NewDomain5<Loc<1>, int, AllDomain<2>, Interval<1>, Range<1> > ND1_t;
-     typedef ND1_t::SliceType_t ST1_t;
- 
-     // construct the SliceRange, making sure that it is a true subset of 
-     // parent Interval IA6
- 
-     ST1_t SR6;
-    
-     int ll = -2;
-     Loc<1> L1(ll);            // subset of I0
-     int ii = 5;               // subset of I
-     AllDomain<2> A2;          // subset of JK part of IJK (wildcard)
-     Interval<1> JJ0(7,10);    // subset of J0
-     Range<1>    B0(3,15,3);   // subset of Balmer
- 
-     ND1_t::fillSlice(SR6,IA6,L1,ii,A2,JJ0,B0);
-     
-     // finally, construct a BrickViewEngine based on SliceRange6
- 
-     testStatus = (SR6.sliceDimensions == 4);
-     float4DV3_t BV10(B1,SR6);
- 
-     // check values
- 
-     int Lmin; int Llen; int Lstr;
-     Range<6> d14 = BV10.baseDomain();
- 
-     Imin = d14[2].first();
-     Jmin = d14[3].first();
-     Kmin = d14[4].first();
-     Lmin = d14[5].first();
-     Ilen = d14[2].length();
-     Jlen = d14[3].length();
-     Klen = d14[4].length();
-     Llen = d14[5].length();
-     Istr = d14[2].stride();
-     Jstr = d14[3].stride();
-     Kstr = d14[4].stride();
-     Lstr = d14[5].stride();
- 
-     diff = zero;
-     for(int i = 0; i < Ilen; i++)
-      for(int j = 0; j < Jlen; j++)
-       for(int k = 0; k < Klen; k++)
-        for(int l = 0; l < Llen; l++) {
-           int Iind = Imin + i*Istr;
-           int Jind = Jmin + j*Jstr;
-           int Kind = Kmin + k*Kstr;
-           int Lind = Lmin + l*Lstr;
-           diff += fabs(B1(ll,ii,Iind,Jind,Kind,Lind) - BV10(i,j,k,l));
-        }
-     testStatus = (diff == zero) && testStatus;
- 
-     reportResults(testNumber,"SliceRange<Dim2,Dim> constructor",
-                   testStatus); 
- 
- 
-     //-------------------------------------------------------------
-     // test 39:  SliceRange<Dim2,Dim> constructor, NewEngine struct
-     //-------------------------------------------------------------
- 
-     ++testNumber;
-     
-     {
-     typedef NewEngine<Engine6Df_t,ST1_t>::Type_t      Try_t;
-     typedef Engine<4,float,BrickView<6,false> >   Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result; 
-     }
- 
-     reportResults(testNumber,"  NewEngine struct",testStatus);
- 
- 
-     //--------------------------------------------------------------
-     // test 40:  SliceRange<Dim2,Dim> constructor, domain() accessor
-     //--------------------------------------------------------------
- 
-     ++testNumber;
- 
-     Interval<4> d13 = BV10.domain();
- 
-     testStatus = (d13[0].first()  ==   0)  &&
-                  (d13[0].last()   ==   6)  &&
-                  (d13[0].length() ==   7)  &&
-                  (d13[1].first()  ==   0)  &&
-                  (d13[1].last()   ==  12)  &&
-                  (d13[1].length() ==  13)  &&
-                  (d13[2].first()  ==   0)  &&
-                  (d13[2].last()   ==   3)  &&
-                  (d13[2].length() ==   4)  &&
-                  (d13[3].first()  ==   0)  &&
-                  (d13[3].last()   ==   4)  &&
-                  (d13[3].length() ==   5);
- 
-     reportResults(testNumber,"  domain() accessor",testStatus);
- 
- 
-     //-----------------------------------------------------------------
-     // test 41: SliceRange<Dim2,Dim> constructor, baseDomain() accessor
-     //-----------------------------------------------------------------
- 
-     ++testNumber;
-    
-     testStatus = (d14[0].first()  ==  -2)  &&
-                  (d14[0].last()   ==  -2)  &&
-                  (d14[0].length() ==   1)  &&
-                  (d14[1].first()  ==   5)  &&
-                  (d14[1].last()   ==   5)  &&
-                  (d14[1].length() ==   1)  &&
-                  (d14[2].first()  ==  -6)  &&
-                  (d14[2].last()   ==   0)  &&
-                  (d14[2].length() ==   7)  &&
-                  (d14[3].first()  ==   2)  &&
-                  (d14[3].last()   ==  14)  &&
-                  (d14[3].length() ==  13)  &&
-                  (d14[4].first()  ==   7)  &&
-                  (d14[4].last()   ==  10)  &&
-                  (d14[4].length() ==   4)  &&
-                  (d14[5].first()  ==   3)  &&
-                  (d14[5].last()   ==  15)  &&
-                  (d14[5].length() ==   5);
- 
- 
-     reportResults(testNumber,"  baseDomain() accessor",testStatus);
- 
-      
-     //--------------------------------------------------------------
-     // test 42: SliceRange<Dim2,Dim> constructor, strides() accessor
-     //--------------------------------------------------------------
- 
-     ++testNumber;
- 
-     // create linear-indexing array BB1
-     
-     int Lmax; int Mmin; int Mmax; int Nmin; int Nmax;
-     Imin = B1.domain()[0].first();  Imax = B1.domain()[0].last();
-     Jmin = B1.domain()[1].first();  Jmax = B1.domain()[1].last();
-     Kmin = B1.domain()[2].first();  Kmax = B1.domain()[2].last();
-     Lmin = B1.domain()[3].first();  Lmax = B1.domain()[3].last();
-     Mmin = B1.domain()[4].first();  Mmax = B1.domain()[4].last();
-     Nmin = B1.domain()[5].first();  Nmax = B1.domain()[5].last();
- 
-     int sizeBB1 = B1.domain()[0].length()*B1.domain()[1].length()*B1.domain()[2].length() *
-                   B1.domain()[3].length()*B1.domain()[4].length()*B1.domain()[5].length();
-     float* BB1  = new float[sizeBB1];
- 
-     int b10 = B1.domain()[0].length();
-     int b11 = B1.domain()[1].length();
-     int b12 = B1.domain()[2].length();
-     int b13 = B1.domain()[3].length();
-     int b14 = B1.domain()[4].length();
-     
-     for (int n = Nmin; n < Nmax+1; n++)
-      for (int m = Mmin; m < Mmax+1; m++)
-       for (int l = Lmin; l < Lmax+1; l++)
-        for (int k = Kmin; k < Kmax+1; k++)
-         for (int j = Jmin; j < Jmax+1; j++)
-          for (int i = Imin; i < Imax+1; i++) {
-           int in   = (i-Imin);  int jn = (j-Jmin); int kn = (k-Kmin);
-           int ln   = (l-Lmin);  int mn = (m-Mmin); int nn = (n-Nmin);
-           int ind  = nn*b10*b11*b12*b13*b14 + mn*b10*b11*b12*b13 +
-                      ln*b10*b11*b12 + kn*b10*b11 + jn*b10 + in;
-           BB1[ind] = B1(i,j,k,l,m,n);
-          }
- 
-     NT = BV10.strides();
- 
-     Imax = BV10.domain()[0].last();
-     Jmax = BV10.domain()[1].last();
-     Kmax = BV10.domain()[2].last();
-     Lmax = BV10.domain()[3].last();
- 
-     // compute differences between parent and subdomain first-index
- 
-     deltI     = BV10.baseDomain()[0].first() - B1.domain()[0].first();
-     deltJ     = BV10.baseDomain()[1].first() - B1.domain()[1].first();
-     deltK     = BV10.baseDomain()[2].first() - B1.domain()[2].first();
-     int deltL = BV10.baseDomain()[3].first() - B1.domain()[3].first();
-     int deltM = BV10.baseDomain()[4].first() - B1.domain()[4].first();
-     int deltN = BV10.baseDomain()[5].first() - B1.domain()[5].first();
- 
-     // compute linear-indexing offset
- 
-     off = deltN*b10*b11*b12*b13*b14 + deltM*b10*b11*b12*b13 +
-           deltL*b10*b11*b12 + deltK*b10*b11 + deltJ*b10 + deltI;
- 
-     diff = zero;
-     for (int l = 0; l < Lmax+1; l++)
-      for (int k = 0; k < Kmax+1; k++)
-       for (int j = 0; j < Jmax+1; j++)
-        for (int i = 0; i < Imax+1; i++) {
-         int ind = i*NT[0] + j*NT[1] + k*NT[2] + l*NT[3] + off;
-         diff += fabs(BB1[ind] - BV10(i,j,k,l));
-        }
- 
-     testStatus = (diff == zero) && testStatus;
- 
-     reportResults(testNumber,"  strides() accessor",testStatus);    
-     
- 
-     //-------------------------------------------------------------
-     // test 43: BrickViewEngine SliceInterval<Dim2,Dim> constructor
-     //-------------------------------------------------------------
- 
-     ++testNumber;
-     
-     // similar to SliceRange<Dim2,Dim> constructor, but now the 1D
-     // subDomains comprising the Slice must all be Intervals.
-     //
-     // test using B1 again, but this time take 2D slice instead of 4D.
- 
-     typedef NewDomain4<AllDomain<1>, Loc<3>, Interval<1>, Loc<1> > ND2_t;
-     typedef ND2_t::SliceType_t ST2_t;
- 
-     ST2_t SI6;
-     AllDomain<1> A1;        // subset of I0
-     Loc<3> L3(2,-4,12);     // subset of IJK
-     L1 = 18;                // subset of Balmer
-     
-     ND2_t::fillSlice(SI6,IA6,A1,L3,JJ0,L1);
-     testStatus = (SI6.sliceDimensions == 2);
- 
-     float2DV2_t BV12(B1,SI6);
-     Interval<6> d15 = BV12.baseDomain();
- 
-     Imin = d15[0].first();
-     Jmin = d15[4].first();
-     Ilen = d15[0].length();
-     Jlen = d15[4].length();
-     Istr = d15[0].stride();
-     Jstr = d15[4].stride();
- 
-     diff = zero;
-     for(int i = 0; i < Ilen; i++)
-      for(int j = 0; j < Jlen; j++) {
-        int Iind = Imin + i*Istr;
-        int Jind = Jmin + j*Jstr;
-        diff += fabs(B1(Iind,2,-4,12,Jind,18) - BV12(i,j));
-      }
-     testStatus = (diff == zero) && testStatus;
- 
-     reportResults(testNumber,"SliceInterval<Dim2,Dim> constructor",
-                   testStatus);
- 
- 
-     //----------------------------------------------------------------
-     // test 44:  SliceInterval<Dim2,Dim> constructor, NewEngine struct
-     //----------------------------------------------------------------
- 
-     ++testNumber;
- 
-     {
-     typedef NewEngine<Engine6Df_t,ST2_t>::Type_t      Try_t;
-     typedef Engine<2,float,BrickView<6,false> >   Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result;
-     }
- 
-     reportResults(testNumber,"  NewEngine struct",testStatus);
- 
- 
-     //----------------------------------------------------------------
-     // test 45: SliceInterval<Dim2,Dim> constructor, domain() accessor
-     //----------------------------------------------------------------
- 
-     ++testNumber;
- 
-     Interval<2> d16 = BV12.domain();
-     testStatus = (d16[0].first()  ==   0)  &&
-                  (d16[0].last()   ==   6)  &&
-                  (d16[0].length() ==   7)  &&
-                  (d16[1].first()  ==   0)  &&
-                  (d16[1].last()   ==   3)  &&
-                  (d16[1].length() ==   4);
- 
-     reportResults(testNumber,"  domain() accessor",testStatus);
- 
- 
-     //--------------------------------------------------------------------
-     // test 46: SliceInterval<Dim2,Dim> constructor, baseDomain() accessor
-     //--------------------------------------------------------------------
- 
-     ++testNumber;
- 
-     testStatus = (d15[0].first()  ==  -3)  &&
-                  (d15[0].last()   ==   3)  &&
-                  (d15[0].length() ==   7)  &&
-                  (d15[1].first()  ==   2)  &&
-                  (d15[1].last()   ==   2)  &&
-                  (d15[1].length() ==   1)  &&
-                  (d15[2].first()  ==  -4)  &&
-                  (d15[2].last()   ==  -4)  &&
-                  (d15[2].length() ==   1)  &&
-                  (d15[3].first()  ==  12)  &&
-                  (d15[3].last()   ==  12)  &&
-                  (d15[3].length() ==   1)  &&
-                  (d15[4].first()  ==   7)  &&
-                  (d15[4].last()   ==  10)  &&
-                  (d15[4].length() ==   4)  &&
-                  (d15[5].first()  ==  18)  &&
-                  (d15[5].last()   ==  18)  &&
-                  (d15[5].length() ==   1);
- 
-     reportResults(testNumber,"  baseDomain() accessor",testStatus);
- 
- 
-     //-----------------------------------------------------------------
-     // test 47: SliceInterval<Dim2,Dim> constructor, strides() accessor
-     //-----------------------------------------------------------------
- 
-     ++testNumber;
- 
-     NT = BV12.strides();
- 
-     Imax = BV12.domain()[0].last();
-     Jmax = BV12.domain()[1].last();
-     
-     deltI = BV12.baseDomain()[0].first() - B1.domain()[0].first();
-     deltJ = BV12.baseDomain()[1].first() - B1.domain()[1].first();
-     deltK = BV12.baseDomain()[2].first() - B1.domain()[2].first();
-     deltL = BV12.baseDomain()[3].first() - B1.domain()[3].first();
-     deltM = BV12.baseDomain()[4].first() - B1.domain()[4].first();
-     deltN = BV12.baseDomain()[5].first() - B1.domain()[5].first();
- 
-     off = deltN*b10*b11*b12*b13*b14 + deltM*b10*b11*b12*b13 +
-           deltL*b10*b11*b12 + deltK*b10*b11 + deltJ*b10 + deltI;
- 
-     diff = zero;
-     for (int j = 0; j < Jmax+1; j++)
-      for (int i = 0; i < Imax+1; i++) {
-       int ind = i*NT[0] + j*NT[1] + off;
-       diff += fabs(BB1[ind] - BV12(i,j));
-      }
-     testStatus = (diff == zero) && testStatus;
-     
-     reportResults(testNumber,"  strides() accessor",testStatus);
- 
- 
-     //------------------------------------------
-     // test 48: BrickViewEngine Node constructor
-     //------------------------------------------
- 
-     ++testNumber;
- 
-     // use simple Node as in test #10, built on Interval<6>
-     // subset of star.
-  
-     Loc<5> gamma(5,11,4,8,12);
-     Interval<6> symm(gamma,Interval<1>(5,9));
-     Node<Interval<6> > kpt(-1,symm,0,0,0);
- 
-     // assign more interesting data to BZone than simple constant
- 
-     for(int i = 4; i < 13; i++)
-      for(int j = 4; j < 13; j++)
-       for(int k = 4; k < 13; k++)
-        for(int l = 4; l < 13; l++)
-         for(int m = 4; m < 13; m++)
-          for(int n = 4; n < 13; n++)
-            BZone(i,j,k,l,m,n) = i*2 + j*3 + k*4 + (l+m)*5 - n;
- 
-     int6DV1_t BV14(BZone,kpt);
- 
-     Interval<6> d17 = BV14.baseDomain();
- 
-     Imin = d17[5].first();
-     Ilen = d17[5].length();
-     Istr = d17[5].stride();
- 
-     diff = zero;
-     for(int i = 0; i < 5; i++) {
-       int Iind = Imin + i*Istr;
-       diff += abs(BZone(5,11,4,8,12,Iind) - BV14.read(0,0,0,0,0,i)); 
-     }
-     
-     testStatus = (diff == zero);
-  
-     reportResults(testNumber,"Node constructor",testStatus);
- 
- 
-     //---------------------------------------------
-     // test 49:  Node constructor, NewEngine struct
-     //---------------------------------------------
- 
-     ++testNumber;
- 
-     {
-     typedef NewEngine<Engine6Di_t, Node<Interval<6> > >::Type_t      Try_t;
-     typedef Engine<6,int,BrickView<6,true> >                     Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result;
-     }
- 
-     reportResults(testNumber,"  NewEngine struct",testStatus);
- 
- 
-     //---------------------------------------------
-     // test 50: Node constructor, domain() accessor
-     //---------------------------------------------
- 
-     ++testNumber;
- 
-     Interval<6> d18 = BV14.domain();
-     testStatus = (d18[0].first()  ==   0)  &&
-                  (d18[0].last()   ==   0)  &&
-                  (d18[0].length() ==   1)  &&
-                  (d18[1].first()  ==   0)  &&
-                  (d18[1].last()   ==   0)  &&
-                  (d18[1].length() ==   1)  &&
-                  (d18[2].first()  ==   0)  &&
-                  (d18[2].last()   ==   0)  &&
-                  (d18[2].length() ==   1)  &&
-                  (d18[3].first()  ==   0)  &&
-                  (d18[3].last()   ==   0)  &&
-                  (d18[3].length() ==   1)  &&
-                  (d18[4].first()  ==   0)  &&
-                  (d18[4].last()   ==   0)  &&
-                  (d18[4].length() ==   1)  &&
-                  (d18[5].first()  ==   0)  &&
-                  (d18[5].last()   ==   4)  &&
-                  (d18[5].length() ==   5);
-      
-     reportResults(testNumber,"  domain() accessor",testStatus);
- 
- 
-     //-------------------------------------------------
-     // test 51: Node constructor, baseDomain() accessor
-     //-------------------------------------------------
- 
-     ++testNumber;
-     testStatus = (d17[0].first()  ==   5)  &&
-                  (d17[0].last()   ==   5)  &&
-                  (d17[0].length() ==   1)  &&
-                  (d17[1].first()  ==  11)  &&
-                  (d17[1].last()   ==  11)  &&
-                  (d17[1].length() ==   1)  &&
-                  (d17[2].first()  ==   4)  &&
-                  (d17[2].last()   ==   4)  &&
-                  (d17[2].length() ==   1)  &&
-                  (d17[3].first()  ==   8)  &&
-                  (d17[3].last()   ==   8)  &&
-                  (d17[3].length() ==   1)  &&
-                  (d17[4].first()  ==  12)  &&
-                  (d17[4].last()   ==  12)  &&
-                  (d17[4].length() ==   1)  &&
-                  (d17[5].first()  ==   5)  &&
-                  (d17[5].last()   ==   9)  &&
-                  (d17[5].length() ==   5);
- 
-     reportResults(testNumber,"  baseDomain() accessor",testStatus);
- 
- 
-     //----------------------------------------------
-     // test 52: Node constructor, strides() accessor
-     //----------------------------------------------
- 
-     ++testNumber;
-     
-     Imin = BZone.domain()[0].first();  Imax = BZone.domain()[0].last();
-     Jmin = BZone.domain()[1].first();  Jmax = BZone.domain()[1].last();
-     Kmin = BZone.domain()[2].first();  Kmax = BZone.domain()[2].last();
-     Lmin = BZone.domain()[3].first();  Lmax = BZone.domain()[3].last();
-     Mmin = BZone.domain()[4].first();  Mmax = BZone.domain()[4].last();
-     Nmin = BZone.domain()[5].first();  Nmax = BZone.domain()[5].last();
- 
-     int sizeBZ2 = BZone.domain()[0].length()*BZone.domain()[1].length()*BZone.domain()[2].length() *
-                   BZone.domain()[3].length()*BZone.domain()[4].length()*BZone.domain()[5].length();
-     float* BZ2  = new float[sizeBZ2];
- 
-     b10 = BZone.domain()[0].length();
-     b11 = BZone.domain()[1].length();
-     b12 = BZone.domain()[2].length();
-     b13 = BZone.domain()[3].length();
-     b14 = BZone.domain()[4].length();
- 
-     for (int n = Nmin; n < Nmax+1; n++)
-      for (int m = Mmin; m < Mmax+1; m++)
-       for (int l = Lmin; l < Lmax+1; l++)
-        for (int k = Kmin; k < Kmax+1; k++)
-         for (int j = Jmin; j < Jmax+1; j++)
-          for (int i = Imin; i < Imax+1; i++) {
-           int in   = (i-Imin);  int jn = (j-Jmin); int kn = (k-Kmin);
-           int ln   = (l-Lmin);  int mn = (m-Mmin); int nn = (n-Nmin);
-           int ind  = nn*b10*b11*b12*b13*b14 + mn*b10*b11*b12*b13 +
-                      ln*b10*b11*b12 + kn*b10*b11 + jn*b10 + in;
-           BZ2[ind] = BZone(i,j,k,l,m,n);
-          }
- 
-     NT   = BV14.strides();
-     Imax = BV14.domain()[5].last();
-    
-     deltI = BV14.baseDomain()[0].first() - BZone.domain()[0].first();
-     deltJ = BV14.baseDomain()[1].first() - BZone.domain()[1].first();
-     deltK = BV14.baseDomain()[2].first() - BZone.domain()[2].first();
-     deltL = BV14.baseDomain()[3].first() - BZone.domain()[3].first();
-     deltM = BV14.baseDomain()[4].first() - BZone.domain()[4].first();
-     deltN = BV14.baseDomain()[5].first() - BZone.domain()[5].first();
- 
-     off = deltN*b10*b11*b12*b13*b14 + deltM*b10*b11*b12*b13 +
-           deltL*b10*b11*b12 + deltK*b10*b11 + deltJ*b10 + deltI;
- 
-     diff = zero;
-     for (int i = 0; i < Imax+1; i++) {
-      int ind = i*NT[5] + off;
-      diff += fabs(BZ2[ind] - BV14(0,0,0,0,0,i));
-     }
-     testStatus = (diff == zero) && testStatus;
-    
-     reportResults(testNumber,"  strides() accessor",testStatus);
- 
-     
-     //-------------------------------------------
-     // test 53: BrickViewEngine INode constructor
-     //-------------------------------------------
- 
-     ++testNumber;
- 
-     // construct an INode from a Node
- 
-     Loc<1> alpha(10);
-     Loc<3> beta(12,5,7);
-     Interval<6> symmer(alpha,Interval<1>(10,12),point,beta);
-     Node<Interval<6> > gvec(-1,symmer,0,0,0);
-     INode<6> IN1(gvec);
-     int6DV1_t BV16(BZone,IN1);
-     
-     Interval<6> d19 = BV16.baseDomain();
- 
-     Imin = d19[1].first();
-     Ilen = d19[1].length();
-     Istr = d19[1].stride();
- 
-     Jmin = d19[2].first();
-     Jlen = d19[2].length();
-     Jstr = d19[2].stride();
- 
-     diff = zero;
-     for(int i = 0; i < Ilen+1; i++)
-       for(int j = 0; j < Jlen+1; j++) {
-         int Iind = Imin + i*Istr;
-         int Jind = Jmin + j*Jstr;
-         diff += abs(BZone.read(10,Iind,Jind,12,5,7) - BV16(0,i,j,0,0,0));
-       }
-     testStatus = (diff == zero);
-  
-     reportResults(testNumber,"INode constructor",testStatus);
- 
- 
-     //---------------------------------------------
-     // test 54: INode constructor, NewEngine struct
-     //---------------------------------------------
- 
-     ++testNumber;
-     
-     {
-     typedef NewEngine<Engine6Di_t, INode<6> >::Type_t     Try_t;
-     typedef Engine<6,int,BrickView<6,true> >          Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result;
-     }
- 
-     reportResults(testNumber,"  NewEngine struct",testStatus);
- 
- 
-     //----------------------------------------------
-     // test 55: INode constructor, domain() accessor
-     //----------------------------------------------
- 
-     ++testNumber;
- 
-     Interval<6> d20 = BV16.domain();
-     testStatus = (d20[0].first()  ==   0)  &&
-                  (d20[0].last()   ==   0)  &&
-                  (d20[0].length() ==   1)  &&
-                  (d20[1].first()  ==   0)  &&
-                  (d20[1].last()   ==   2)  &&
-                  (d20[1].length() ==   3)  &&
-                  (d20[2].first()  ==   0)  &&
-                  (d20[2].last()   ==   8)  &&
-                  (d20[2].length() ==   9)  &&
-                  (d20[3].first()  ==   0)  &&
-                  (d20[3].last()   ==   0)  &&
-                  (d20[3].length() ==   1)  &&
-                  (d20[4].first()  ==   0)  &&
-                  (d20[4].last()   ==   0)  &&
-                  (d20[4].length() ==   1)  &&
-                  (d20[5].first()  ==   0)  &&
-                  (d20[5].last()   ==   0)  &&
-                  (d20[5].length() ==   1);
- 
-     reportResults(testNumber,"  domain() accessor",testStatus);
- 
- 
-     //--------------------------------------------------
-     // test 56: INode constructor, baseDomain() accessor
-     //--------------------------------------------------
- 
-     ++testNumber;
- 
-     testStatus = (d19[0].first()  ==  10)  &&
-                  (d19[0].last()   ==  10)  &&
-                  (d19[0].length() ==   1)  &&
-                  (d19[1].first()  ==  10)  &&
-                  (d19[1].last()   ==  12)  &&
-                  (d19[1].length() ==   3)  &&
-                  (d19[2].first()  ==   4)  &&
-                  (d19[2].last()   ==  12)  &&
-                  (d19[2].length() ==   9)  &&
-                  (d19[3].first()  ==  12)  &&
-                  (d19[3].last()   ==  12)  &&
-                  (d19[3].length() ==   1)  &&
-                  (d19[4].first()  ==   5)  &&
-                  (d19[4].last()   ==   5)  &&
-                  (d19[4].length() ==   1)  &&
-                  (d19[5].first()  ==   7)  &&
-                  (d19[5].last()   ==   7)  &&
-                  (d19[5].length() ==   1);
-     
-     reportResults(testNumber,"  baseDomain() accessor",testStatus);
- 
- 
-     //-----------------------------------------------
-     // test 57: INode constructor, strides() accessor
-     //-----------------------------------------------
- 
-     ++testNumber;
- 
-     NT   = BV16.strides();
-     Imax = BV16.domain()[1].last();
-     Jmax = BV16.domain()[2].last();
-   
-     deltI = BV16.baseDomain()[0].first() - BZone.domain()[0].first();
-     deltJ = BV16.baseDomain()[1].first() - BZone.domain()[1].first();
-     deltK = BV16.baseDomain()[2].first() - BZone.domain()[2].first();
-     deltL = BV16.baseDomain()[3].first() - BZone.domain()[3].first();
-     deltM = BV16.baseDomain()[4].first() - BZone.domain()[4].first();
-     deltN = BV16.baseDomain()[5].first() - BZone.domain()[5].first();
- 
-     // b10...b14 are the same as for Node, since the underlying BZone 
-     // BrickEngine is the same
- 
-     off = deltN*b10*b11*b12*b13*b14 + deltM*b10*b11*b12*b13 +
-           deltL*b10*b11*b12 + deltK*b10*b11 + deltJ*b10 + deltI;
- 
-     diff = zero;
-     for (int j = 0; j < Jmax+1; j++) 
-      for (int i = 0; i < Imax+1; i++) {
-       int ind = i*NT[1] + j*NT[2] + off;
-       diff += fabs(BZ2[ind] - BV16(0,i,j,0,0,0));
-     }
-     testStatus = (diff == zero) && testStatus;
- 
-     reportResults(testNumber,"  strides() accessor",testStatus);
- 
- 
-     //-----------------------------------------------------
-     // test 58: BrickViewEngine BrickView/Range constructor
-     //-----------------------------------------------------
- 
-     ++testNumber;
- 
-     // note: the nominally distinct case of BrickView/Interval
-     // is not tested here.
- 
-     // Use the domain and subdomain of test #37 as the 
-     // starting point here.   This is not the most general
-     // test since the parent Engine Dim2 and subdomain Dim
-     // happen to be equal here.   
- 
-     Range<1>  V4(4,6,2);
-     Loc<1>    L2(-2);
-     Range<3>  FF(V4,V2,L2); 
- 
-     typedef NewEngine<float3DV2_t,Range<3> >::Type_t   BVT1_t;
-     BVT1_t  BV21(BV9,FF);
- 
-     Range<3> d21 = BV21.baseDomain();
- 
-     Imin = d21[0].first();
-     Jmin = d21[1].first();
-     Kmin = d21[2].first();
-     Ilen = d21[0].length();
-     Jlen = d21[1].length();
-     Klen = d21[2].length();
-     Istr = d21[0].stride();
-     Jstr = d21[1].stride();
-     Kstr = d21[2].stride();
- 
-     diff = zero;
-     for(int i = 0; i < Ilen; i++)
-      for(int j = 0; j < Jlen; j++)
-       for(int k = 0; k < Klen; k++) {
-         int Iind = Imin + i*Istr;
-         int Jind = Jmin + j*Jstr;
-         int Kind = Kmin + k*Kstr;
-         diff += fabs(S(Iind,Jind,Kind) - BV21(i,j,k));
-       }
-     testStatus = (diff == zero) && testStatus;
- 
-     reportResults(testNumber,"BrickView/Range constructor",
-                   testStatus);
- 
- 
-     //-------------------------------------------------------
-     // test 59: BrickView/Range constructor, NewEngine struct
-     //-------------------------------------------------------
- 
-     ++testNumber;
- 
-     // test NewEngine for general case where Dim != Dim2
- 
-     {
-     typedef NewEngine<float4DV3_t,Range<4> >::Type_t       Try_t;
-     typedef Engine<4,float,BrickView<6,false> >        Correct_t;
-     testStatus = TypeMatchTester<Try_t,Correct_t>::Result;
-     }
- 
-     reportResults(testNumber,"  NewEngine struct",testStatus);
- 
-     
-     //--------------------------------------------------------
-     // test 60: BrickView/Range constructor, domain() accessor
-     //--------------------------------------------------------
- 
- /*
- =====================================================================
- gam 12/8/98
- tests 60 and 61 inactivated following swh's comments of 12/7/98:
- 
- I've looked at the BrickEngineTest and it doesn't look correct. 
- 
- Susan makes an engine called S with the domain
- 
- [4:10:1][0:4:1][-2:0:1]
- 
- since this is a Brick, this is also the baseDomain. She then makes a view
- called BV9 using the range
- 
- [4:10:2][0:4:2][-2:0:2]. 
- 
- So far, so good. BV9 has the domain (remember that views are Zero-based and
- unit stride)
- 
- [0:3:1][0:2:1][0:1:1]
- 
- and the base domain is the same as the range that formed it. Then, she tries
- to take a view of BV9, called BV21, using the range
- 
- [4:6:2][0:4:2][-2:-2:1]
- 
- This is bad since this range is outside the domain of BV9. Any test using
- BC21 is suspect, though a few miraculously pass.
- 
- =====================================================================
- 
-     ++testNumber;
- 
-     Range<3> d22 = BV21.domain();
-     testStatus = (d22[0].first()  ==   0)  &&
-                  (d22[0].last()   ==   1)  &&
-                  (d22[0].length() ==   2)  &&
-                  (d22[1].first()  ==   0)  &&
-                  (d22[1].last()   ==   2)  &&
-                  (d22[1].length() ==   3)  &&
-                  (d22[2].first()  ==   0)  &&
-                  (d22[2].last()   ==   0)  &&
-                  (d22[2].length() ==   1);
- 
-     reportResults(testNumber,"  domain() accessor",testStatus);
- 
-     //------------------------------------------------------------
-     // test 61: BrickView/Range constructor, baseDomain() accessor
-     //------------------------------------------------------------
- 
-     ++testNumber;
-   
-     // the baseDomain is the domain with respect to the original
-     // Brick's Domain.  Here, the original Brick is S (see 
-     // test #37) which has a Domain [4:10:1,0:4:1,-2:0:1].
-     // The values returned by baseDomain should therefore lie
-     // within these limits. 
-     // 
-     // The baseDomain is computed in BrickEngine.h as follows:
-     // 
-     // baseDomain_m[dt] = Range<1>(
-     //        base[dt].first() + domain[d0].first() * base[dt].stride(),
-     //        base[dt].first() + domain[d0].last() * base[dt].stride(),
-     //        domain[d0].stride() * base[dt].stride());
-     // 
-     // base   <-->  the BrickViewEngines's base, in this example,
-     //              BV9.baseDomain() = [4:10:2,0:4:2,-2:0:2].
-     //
-     // domain <-->  the Domain of the Range constructor argument, in this 
-     //              example, FF.domain() = = [4:6:2,0:4:2,-2:-2:1].
-     //
-     // The above code therefore computes the baseDomain() for 
-     // the new BrickView as follows:
-     // 
-     //     1st Dim:    4 +  4*2,  4 +  6*2,  2*2
-     //     2nd Dim:    0 +  0*2,  0 +  4*2,  2*2
-     //     3rd Dim:   -2 + -2*2, -2 + -2*2,  1*2
-     //
-     // i.e., d21 = [12:16:4,0:8:4,-6:-6:2].
-     // 
-     // Note that this says that the baseDomain of the View of a BrickView of 
-     // a Brick lies outside the baseDomain of the original Brick.
-     //
-     // Thus, either the implementation is incorrect, or else the interpretation
-     // of this constructor used here is wrong, and thus not apparent from
-     // the .h file alone.   In that case, it should be carefully explained,
-     // with examples, in the user documentation.   It is likely that this
-     // issue will be duplicated in all BrickViews constructed from another
-     // BrickView and a Domain (eg., BrickView/SliceRange below).
- 
-     testStatus = (d21[0].first()  ==   4)  &&
-                  (d21[0].last()   ==   6)  &&
-                  (d21[0].length() ==   2)  &&
-                  (d21[1].first()  ==   0)  &&
-                  (d21[1].last()   ==   4)  &&
-                  (d21[1].length() ==   3)  &&
-                  (d21[2].first()  ==  -2)  &&
-                  (d21[2].last()   ==  -2)  &&
-                  (d21[2].length() ==   1);
- 
-     reportResults(testNumber,"  baseDomain() accessor",testStatus);
- 
- =====================================================================
- gam: end of inactivated portion 12/8/98
- */
- 
- /*----------  outlines for remaining constructor sub-tests  ------------- 
- 
-     //---------------------------------------------------------
-     // test 62: BrickView/Range constructor, strides() accessor
-     //---------------------------------------------------------
- 
-     ++testNumber;
- 
-     // this test cannot be implemented until test #61 is resolved.
- 
-     reportResults(testNumber,"  strides() accessor",testStatus);
- 
- 
-     //----------------------------------------------------------
-     // test 63: BrickViewEngine BrickView/SliceRange constructor
-     //----------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"BrickView/SliceRange constructor",
-                   testStatus);
- 
- 
-     //------------------------------------------------------------
-     // test 64: BrickView/SliceRange constructor, NewEngine struct
-     //------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  NewEngine struct",testStatus);
- 
-     
-     //-------------------------------------------------------------
-     // test 65: BrickView/SliceRange constructor, domain() accessor
-     //-------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  domain() accessor",testStatus);
- 
- 
-     //-----------------------------------------------------------------
-     // test 66: BrickView/SliceRange constructor, baseDomain() accessor
-     //-----------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  baseDomain() accessor",testStatus);
- 
- 
-     //--------------------------------------------------------------
-     // test 67: BrickView/SliceRange constructor, strides() accessor
-     //--------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  strides() accessor",testStatus);
- 
- 
-     //-------------------------------------------------------------
-     // test 68: BrickViewEngine BrickView/SliceInterval constructor
-     //-------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"BrickView/SliceInterval constructor",
-                   testStatus);
- 
- 
-     //---------------------------------------------------------------
-     // test 69: BrickView/SliceInterval constructor, NewEngine struct
-     //---------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  NewEngine struct",testStatus);
- 
- 
-     //----------------------------------------------------------------
-     // test 70: BrickView/SliceInterval constructor, domain() accessor
-     //----------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  domain() accessor",testStatus);
- 
-     
-     //--------------------------------------------------------------------
-     // test 71: BrickView/SliceInterval constructor, baseDomain() accessor
-     //--------------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  baseDomain() accessor",testStatus);
- 
- 
-     //-----------------------------------------------------------------
-     // test 72: BrickView/SliceInterval constructor, strides() accessor
-     //-----------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  strides() accessor",testStatus);
- 
- 
-     //-----------------------------------------------------
-     // test 73: BrickViewEngine BrickView/Inode constructor
-     //-----------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"BrickView/Inode constructor",
-                   testStatus);
- 
- 
-     //-------------------------------------------------------
-     // test 74: BrickView/Inode constructor, NewEngine struct
-     //-------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  NewEngine struct",testStatus);
- 
- 
-     //--------------------------------------------------------
-     // test 75: BrickView/INode constructor, domain() accessor
-     //--------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  domain() accessor",testStatus);
- 
- 
-     //------------------------------------------------------------
-     // test 76: BrickView/INode constructor, baseDomain() accessor
-     //------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  baseDomain() accessor",testStatus);
- 
- 
-     //---------------------------------------------------------
-     // test 77: BrickView/Inode constructor, strides() accessor
-     //---------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  strides() accessor",testStatus);
- 
- 
-     //-------------------------------------------------------------
-     // test 78: BrickViewEngine MultiPatch/INode constructor
-     //-------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"MultiPatch/Inode constructor",
-                   testStatus);
- 
- 
-     //---------------------------------------------------------------
-     // test 79: MultiPatch/Inode constructor, NewEngine struct
-     //---------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  NewEngine struct",testStatus);
-     
- 
-     //----------------------------------------------------------------
-     // test 80: MultiPatch/INode constructor, domain() accessor
-     //----------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  domain() accessor",testStatus);
- 
- 
-     //--------------------------------------------------------------------
-     // test 81: MultiPatch/INode constructor, baseDomain() accessor
-     //--------------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  baseDomain() accessor",testStatus);
- 
- 
-     //-----------------------------------------------------------------
-     // test 82: MultiPatch/Inode constructor, strides() accessor
-     //-----------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  strides() accessor",testStatus);
- 
- 
-     //------------------------------------------------------------
-     // test 83: BrickViewEngine MultiPatch/Node constructor
-     //------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"MultiPatch/Node constructor",
-                   testStatus);
- 
- 
-     //--------------------------------------------------------------
-     // test 84: MultiPatch/Node constructor, NewEngine struct
-     //--------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  NewEngine struct",testStatus);
- 
- 
-     //---------------------------------------------------------------
-     // test 85: MultiPatch/Node constructor, domain() accessor
-     //---------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  domain() accessor",testStatus);
- 
- 
-     //-------------------------------------------------------------------
-     // test 86: MultiPatch/Node constructor, baseDomain() accessor
-     //-------------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  baseDomain() accessor",testStatus);
- 
- 
-     //----------------------------------------------------------------
-     // test 87: MultiPatch/Node constructor, strides() accessor
-     //----------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  strides() accessor",testStatus);
- 
- 
-     //-----------------------------------------------------------------
-     // test 88: BrickViewEngine MultiPatchView/INode constructor
-     //-----------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"MultiPatchView/Inode constructor",
-                   testStatus);
- 
- 
-     //-------------------------------------------------------------------
-     // test 89: MultiPatchVIew/Inode constructor, NewEngine struct
-     //-------------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  NewEngine struct",testStatus);
- 
- 
-     //--------------------------------------------------------------------
-     // test 90: MultiPatchView/INode constructor, domain() accessor
-     //--------------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  domain() accessor",testStatus);
- 
- 
-     //------------------------------------------------------------------------
-     // test 91: MultiPatchView/INode constructor, baseDomain() accessor
-     //------------------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  baseDomain() accessor",testStatus);
- 
- 
-     //---------------------------------------------------------------------
-     // test 92: MultiPatchView/INode constructor, strides() accessor
-     //---------------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  strides() accessor",testStatus);
- 
- 
-     //----------------------------------------------------------------
-     // test 93: BrickViewEngine MultiPatchView/Node constructor
-     //----------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"MultiPatchView/Node constructor",
-                   testStatus);
- 
- 
-     //------------------------------------------------------------------
-     // test 94: MultiPatchVIew/Node constructor, NewEngine struct
-     //------------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  NewEngine struct",testStatus);
- 
- 
-     //-------------------------------------------------------------------
-     // test 95: MultiPatchView/Node constructor, domain() accessor
-     //-------------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  domain() accessor",testStatus);
- 
- 
-     //-----------------------------------------------------------------------
-     // test 96: MultiPatchView/Node constructor, baseDomain() accessor
-     //-----------------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  baseDomain() accessor",testStatus);
- 
- 
-     //--------------------------------------------------------------------
-     // test 97: MultiPatchView/Node constructor, strides() accessor
-     //--------------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  strides() accessor",testStatus);
- 
- 
-     //-------------------------------------------------------
-     // test 98: BrickViewEngine CompressibleBrick constructor
-     //-------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"CompressibleBrick constructor",
-                   testStatus);
- 
- 
-     //---------------------------------------------------------
-     // test 99: CompressibleBrick constructor, NewEngine struct
-     //---------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  NewEngine struct",testStatus);
- 
- 
-     //-----------------------------------------------------------
-     // test 100: CompressibleBrick constructor, domain() accessor
-     //-----------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  domain() accessor",testStatus);
- 
- 
-     //---------------------------------------------------------------
-     // test 101: CompressibleBrick constructor, baseDomain() accessor
-     //---------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  baseDomain() accessor",testStatus);
- 
- 
-     //------------------------------------------------------------
-     // test 102: CompressibleBrick constructor, strides() accessor
-     //------------------------------------------------------------
- 
-     ++testNumber;
- 
-     reportResults(testNumber,"  strides() accessor",testStatus);
- 
- 
- ---------------- end templates for remaining constructors -------------*/
- 
- 
-     //------------------------------------------------------------------------
-     // test 103: BrickViewEngine copy constructor (all BrickView constructors)
-     //------------------------------------------------------------------------
- 
-     ++testNumber;
- 
-     // Range/Interval 
- 
-     Ilen = box3[0].length();
-     Jlen = box3[1].length();
-     Klen = box3[2].length();
-     
-     for (int i = 0; i < Ilen; i++)
-      for (int j = 0; j < Jlen; j++)
-       for (int k = 0; k < Klen; k++)
-        diff += fabs(BV5.read(i,j,k) - BV7(Loc<3>(i,j,k)));
-     testStatus = (diff == zero);
- 
-     Ilen = square2[0].length();
-     Jlen = square2[1].length(); 
- 
-     for (int i = 0; i < Ilen; i++)
-      for (int j = 0; j < Jlen; j++)
-       diff += fabs(BV8(i,j) - BV1(i,j));
-     testStatus = (diff == zero) && testStatus;
- 
- 
-     // SliceRange<Dim2,Dim>
- 
-     float4DV3_t BV11(BV10);
- 
-     Ilen = d13[0].length();
-     Jlen = d13[1].length();
-     Klen = d13[2].length();
-     Llen = d13[3].length();
- 
-     diff = zero;
-     for(int i = 0; i < Ilen; i++)
-      for(int j = 0; j < Jlen; j++)
-       for(int k = 0; k < Klen; k++)
-        for(int l = 0; l < Llen; l++)
-         diff += fabs(BV10(i,j,k,l) - BV11(i,j,k,l));
-     testStatus = (diff == zero) && testStatus;
- 
- 
-     // SliceInterval<Dim2,Dim>
- 
-     float2DV2_t BV13(BV12);
-     Ilen = d15[0].length();
-     Jlen = d15[1].length();
- 
-     diff = zero;
-     for(int i = 0; i < Ilen; i++)
-      for(int j = 0; j < Jlen; j++)
-        diff += fabs(BV13(i,j) - BV12(i,j));
-     testStatus = (diff == zero) && testStatus;
- 
- 
-     // Node 
- 
-     int6DV1_t BV15(BV14);
-     Ilen = d18[5].length();
-     
-     diff = zero; 
-     for(int i = 0; i < Ilen; i++)
-       diff += abs(BV15.read(0,0,0,0,0,i) - BV14(Loc<6>(0,0,0,0,0,i)));  
-     testStatus = (diff == zero) && testStatus;
-      
- 
-     // INode
-    
-     int6DV1_t BV17(BV16);
-     Ilen = d20[0].length();
-     Jlen = d20[1].length();
-     
-     diff = zero;
-     for(int i = 0; i < Ilen; i++)
-      for(int j = 0; j < Jlen; j++)
-       diff += abs(BV17.read(0,i,j,0,0,0) - BV16(Loc<6>(0,i,j,0,0,0)));
-     testStatus = (diff == zero) && testStatus;
- 
- 
-     // ---   add tests for additional constructors (corresponding to 
-     // ---   tests 62-102) here.
- 
-     reportResults(testNumber,"copy constructor (all BrickView constructors)",
-        testStatus);
- 
-   }
-   catch(const char *err)
-     { uncaughtErrorReport(err,testNumber); }
-   catch(const Pooma::Assertion &err)
-     { uncaughtErrorReport(err.what(),testNumber); }
-   catch(...)
-     { cerr << "Unknown exception!" << endl; }
- 
-   cout << "\n" << endl;
- }
- 
--- 0 ----