Patch: Permit NoGeometry Field to Instantiate
Jeffrey Oldham
oldham at codesourcery.com
Mon May 14 21:14:56 UTC 2001
This patch permits compiling this program:
#include "Pooma/NewFields.h"
#define T1 NoGeometry<(int)3>
#define T2 int
#define T3 CompressibleBrick
#define T4 Interval<(int)3>
template class Field<T1,T2,T3>;
template class View1<Field<T1,T2,T3>,T4>;
This program adds the "class Field" line to what Dave Nystrom
originally requested. This reflects circular references in the
definition of View1. Next, I will work on eliminating the need to add
the line.
2001-05-14 Jeffrey D. Oldham <oldham at codesourcery.com>
* Array/Array.h: Add View0 to comment listing implemented classes.
(Array::innerDomain): Remove the function since engines do not
implement it.
* Domain/DomainTraits.Region.h
(DomainTraits<Region<1,POOMA_DEFAULT_POSITION_TYPE> >::empty():
Remove name of unused parameter.
* Engine/CompressibleBlock.h
(CompressibleBlockController::CompressibleBlockController):
Reorder member initialization order.
* Engine/CompressibleBrick.cpp
(Engine<Dim,T,CompressibleBrickView>::makeOwnCopy()): New
function.
* Engine/CompressibleBrick.h (Engine<Dim, T,
CompressibleBrick>::domain()): Likewise.
(Engine<Dim,T,CompressibleBrickView>::domain()): Likewise.
(Engine<Dim,T,CompressibleBrickView>::makeOwnCopy()): New
declaration.
(ElementProperties<Engine<Dim, T, CompressibleBrickView> >): New
definition.
* Engine/RemoteEngine.h (Engine<Dim, T, Remote<Tag> >::Engine):
Likewise.
* Layout/Node.h (Node::Node): Reorder member initialization order.
* NewField/Field.h (Field::physicalCellDomain): Remove unnecessary
return reference.
* NewField/FieldEngine/FieldEngine.NoGeometry.h
(FieldEngine<NoGeometry<Dim>, T, EngineTag>): Add a default
constructor.
(FieldEngine<NoGeometry<Dim>, T, EngineTag>::physicalCellDomain):
s/shrink/shrinkRight/
(FieldEngine<NoGeometry<Dim>, T, EngineTag>::totalCellDomain):
Likewise.
(FieldEngine<NoGeometry<Dim>, T, EngineTag>)::physicalDomain): New
function.
(FieldEngine<NoGeometry<Dim>, T, EngineTag>)::totalDomain):
Likewise.
* NewField/FieldEngine/FieldEngineBase.ExprEngine.h
(FieldEngineBase::physicalCellDomain): Likewise.
* NewField/FieldEngine/FieldEngineBase.h
(FieldEngineBase::physicalCellDomain): Likewise.
* Tulip/RemoteProxy.h (RemoteProxy::RemoteProxy): Conditionally
declaration variable.
* Utilities/RefCountedBlockPtr.h
(RefBlockController::RefBlockController): Reorder member
initializations to reflect declaration order.
Tested on sequential Linux gcc 3.0 by compiling Pooma library and the
+above program
Approved by Scott Haney (swhaney at earthlink.net)
Thanks,
Jeffrey D. Oldham
oldham at codesourcery.com
-------------- next part --------------
Index: Array/Array.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/Array/Array.h,v
retrieving revision 1.139
diff -c -p -r1.139 Array.h
*** Array/Array.h 2001/04/20 21:16:23 1.139
--- Array/Array.h 2001/05/14 19:56:51
***************
*** 29,34 ****
--- 29,35 ----
//-----------------------------------------------------------------------------
// Classes:
// Array
+ // View0
// View[1-7]<Array,various domains>
// LeafFunctor<Array, DomainFunctorTag>
// LeafFunctor<Array, ViewFunctorTag<Domain> >
*************** public:
*** 1763,1773 ****
inline Domain_t domain() const
{
return engine_m.domain();
- }
-
- inline Domain_t innerDomain() const
- {
- return engine_m.innerDomain();
}
inline Domain_t physicalDomain() const
--- 1764,1769 ----
Index: Domain/DomainTraits.Region.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/Domain/DomainTraits.Region.h,v
retrieving revision 1.12
diff -c -p -r1.12 DomainTraits.Region.h
*** Domain/DomainTraits.Region.h 2001/04/13 02:12:59 1.12
--- Domain/DomainTraits.Region.h 2001/05/14 19:56:53
*************** struct DomainTraits< Region<1,POOMA_DEFA
*** 407,413 ****
static Element_t max(const Storage_t &d) {
return (length(d) >= 0 ? last(d) : first(d));
}
! static bool empty(const Storage_t &d) { return false; }
static int loop(const Storage_t &) { return 0; }
// get the Nth value of the domain, where value # 0 is first(), etc.
--- 407,413 ----
static Element_t max(const Storage_t &d) {
return (length(d) >= 0 ? last(d) : first(d));
}
! static bool empty(const Storage_t &) { return false; }
static int loop(const Storage_t &) { return 0; }
// get the Nth value of the domain, where value # 0 is first(), etc.
Index: Engine/CompressibleBlock.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/Engine/CompressibleBlock.h,v
retrieving revision 1.27
diff -c -p -r1.27 CompressibleBlock.h
*** Engine/CompressibleBlock.h 2000/07/11 22:13:00 1.27
--- Engine/CompressibleBlock.h 2001/05/14 19:56:53
*************** private:
*** 451,463 ****
explicit
CompressibleBlockController(int size)
: Observable<T*>(ptr_m),
size_m(size),
- compressible_m(true),
ptr_m(&compressedData_m),
! dataObject_m(-1),
! ucOffset_m(-1),
! viewcount_m(0),
! countUncompressed_m(0)
{
ElementProperties<T>::construct(&compressedData_m);
--- 451,463 ----
explicit
CompressibleBlockController(int size)
: Observable<T*>(ptr_m),
+ compressible_m(true),
+ countUncompressed_m(0),
+ viewcount_m(0),
+ dataObject_m(-1),
size_m(size),
ptr_m(&compressedData_m),
! ucOffset_m(-1)
{
ElementProperties<T>::construct(&compressedData_m);
*************** private:
*** 474,486 ****
CompressibleBlockController(int size, int affinity)
: Observable<T*>(ptr_m),
- size_m(size),
compressible_m(true),
! ptr_m(&compressedData_m),
! dataObject_m(affinity),
! ucOffset_m(-1),
viewcount_m(0),
! countUncompressed_m(0)
{
ElementProperties<T>::construct(&compressedData_m);
--- 474,486 ----
CompressibleBlockController(int size, int affinity)
: Observable<T*>(ptr_m),
compressible_m(true),
! countUncompressed_m(0),
viewcount_m(0),
! dataObject_m(affinity),
! size_m(size),
! ptr_m(&compressedData_m),
! ucOffset_m(-1)
{
ElementProperties<T>::construct(&compressedData_m);
*************** private:
*** 497,509 ****
CompressibleBlockController(int size, int affinity, const T& value)
: Observable<T*>(ptr_m),
- size_m(size),
compressible_m(true),
! ptr_m(&compressedData_m),
! dataObject_m(affinity),
! ucOffset_m(-1),
viewcount_m(0),
! countUncompressed_m(0)
{
ElementProperties<T>::construct(&compressedData_m,value);
--- 497,509 ----
CompressibleBlockController(int size, int affinity, const T& value)
: Observable<T*>(ptr_m),
compressible_m(true),
! countUncompressed_m(0),
viewcount_m(0),
! dataObject_m(affinity),
! size_m(size),
! ptr_m(&compressedData_m),
! ucOffset_m(-1)
{
ElementProperties<T>::construct(&compressedData_m,value);
*************** private:
*** 531,541 ****
CompressibleBlockController(const CompressibleBlockController& model)
: Observable<T*>(ptr_m),
- size_m(model.size_m),
compressible_m(!Pooma::neverCompress()),
dataObject_m(model.dataObject_m.affinity()),
! ucOffset_m(model.ucOffset_m),
! viewcount_m(0)
{
// Lock the model while we get information pertaining to it
// being compressed or not (such data can't be initialized in
--- 531,541 ----
CompressibleBlockController(const CompressibleBlockController& model)
: Observable<T*>(ptr_m),
compressible_m(!Pooma::neverCompress()),
+ viewcount_m(0),
dataObject_m(model.dataObject_m.affinity()),
! size_m(model.size_m),
! ucOffset_m(model.ucOffset_m)
{
// Lock the model while we get information pertaining to it
// being compressed or not (such data can't be initialized in
Index: Engine/CompressibleBrick.cpp
===================================================================
RCS file: /home/pooma/Repository/r2/src/Engine/CompressibleBrick.cpp,v
retrieving revision 1.24
diff -c -p -r1.24 CompressibleBrick.cpp
*** Engine/CompressibleBrick.cpp 2000/07/11 23:06:40 1.24
--- Engine/CompressibleBrick.cpp 2001/05/14 19:56:54
*************** Engine(const Engine<Dim,T,CompressibleBr
*** 501,506 ****
--- 501,542 ----
//-----------------------------------------------------------------------------
//
+ // Engine<Dim,T,CompressibleBrickView> & makeOwnCopy()
+ //
+ // Causes the CompressibleBrickView-Engine to obtain a private copy of the data
+ // that it refers to.
+ //
+ //-----------------------------------------------------------------------------
+
+ template <int Dim, class T>
+ Engine<Dim,T,CompressibleBrickView> &Engine<Dim,T,CompressibleBrickView>::makeOwnCopy()
+ {
+ // JIM: This is probably not thread safe???
+ // There is a race from checking isShared to getting into cblock's
+ // makeOwnCopy, which is thread safe. As a result, this should only
+ // be called after a blockAndEvaluate() to ensure that nobody else
+ // is messing with the underlying CBC while this is
+ // occuring. (Logically, this is necessary anyway since you probably
+ // want a copy of the data that results from all previous
+ // computations having taken place.) Also, as mentioned elsewhere,
+ // the current implementation results in copying uncompressed data
+ // in the parse thread, which will result in incorrect memory
+ // affinity.
+
+ if (cblock_m.isControllerValidUnlocked() && cblock_m.isShared())
+ {
+ cblock_m.detach(this);
+ cblock_m.makeOwnCopy();
+ cblock_m.attach(this);
+
+ data0_m = cblock_m.data() + (cblock_m.compressed() ? 0 : baseOffset());
+ }
+
+ return *this;
+ }
+
+ //-----------------------------------------------------------------------------
+ //
// Engine<Dim, T, CompressibleBrickView>::
// elementsCompressed() const
//
Index: Engine/CompressibleBrick.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/Engine/CompressibleBrick.h,v
retrieving revision 1.67
diff -c -p -r1.67 CompressibleBrick.h
*** Engine/CompressibleBrick.h 2000/07/11 23:06:40 1.67
--- Engine/CompressibleBrick.h 2001/05/14 19:56:54
*************** public:
*** 237,242 ****
--- 237,250 ----
inline Layout_t layout() const { return Layout_t(domain_m); }
+ //---------------------------------------------------------------------------
+ // Return the domain and base domain.
+
+ inline const Domain_t &domain() const
+ {
+ return layout().domain();
+ }
+
// Get a private copy of data viewed by this Engine.
Engine_t &makeOwnCopy();
*************** public:
*** 557,562 ****
--- 565,582 ----
ElementRef_t operator()(const Loc<Dim> &) const;
Element_t read(const Loc<Dim> &) const;
+ //---------------------------------------------------------------------------
+ // Return the domain and base domain.
+
+ inline const Domain_t &domain() const
+ {
+ return Layout_t(domain_m).domain();
+ }
+
+ // Get a private copy of data viewed by this Engine.
+
+ Engine_t &makeOwnCopy();
+
// Return the block controller (uncompressed).
// See comments in CompressibleBrick above.
*************** struct NewEngine<Engine<Dim,T,Compressib
*** 801,806 ****
--- 821,831 ----
template <int Dim, class T>
struct ElementProperties<Engine<Dim, T, CompressibleBrick> >
: public MakeOwnCopyProperties<Engine<Dim, T, CompressibleBrick> >
+ { };
+
+ template <int Dim, class T>
+ struct ElementProperties<Engine<Dim, T, CompressibleBrickView> >
+ : public MakeOwnCopyProperties<Engine<Dim, T, CompressibleBrickView> >
{ };
Index: Engine/RemoteEngine.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/Engine/RemoteEngine.h,v
retrieving revision 1.31
diff -c -p -r1.31 RemoteEngine.h
*** Engine/RemoteEngine.h 2001/03/29 00:41:21 1.31
--- Engine/RemoteEngine.h 2001/05/14 19:56:55
*************** Engine<Dim, T, Remote<Tag> >::Engine()
*** 609,616 ****
template <int Dim, class T, class Tag>
Engine<Dim, T, Remote<Tag> >::Engine(const Node<Domain_t> &node)
! : owningContext_m(node.context()),
! domain_m(node.allocated())
{
PAssert(owningContext_m < Pooma::contexts());
--- 609,616 ----
template <int Dim, class T, class Tag>
Engine<Dim, T, Remote<Tag> >::Engine(const Node<Domain_t> &node)
! : domain_m(node.allocated()),
! owningContext_m(node.context())
{
PAssert(owningContext_m < Pooma::contexts());
*************** Engine<Dim, T, Remote<Tag> >::Engine(con
*** 634,641 ****
template <int Dim, class T, class Tag>
Engine<Dim, T, Remote<Tag> >::Engine(const Layout_t &layout)
! : owningContext_m(0),
! domain_m(layout.node().allocated())
{
PAssert(owningContext_m < Pooma::contexts());
--- 634,641 ----
template <int Dim, class T, class Tag>
Engine<Dim, T, Remote<Tag> >::Engine(const Layout_t &layout)
! : domain_m(layout.node().allocated()),
! owningContext_m(0)
{
PAssert(owningContext_m < Pooma::contexts());
*************** Engine<Dim, T, Remote<Tag> >::Engine(con
*** 659,665 ****
template <int Dim, class T, class Tag>
Engine<Dim, T, Remote<Tag> >::Engine(const Domain_t &dom)
! : owningContext_m(0), domain_m(dom)
{
if (engineIsLocal())
{
--- 659,665 ----
template <int Dim, class T, class Tag>
Engine<Dim, T, Remote<Tag> >::Engine(const Domain_t &dom)
! : domain_m(dom), owningContext_m(0)
{
if (engineIsLocal())
{
*************** Engine<Dim, T, Remote<Tag> >::Engine(con
*** 676,683 ****
template <int Dim, class T, class Tag>
Engine<Dim, T, Remote<Tag> >::Engine(int owningContext, const Domain_t &dom)
! : owningContext_m(owningContext),
! domain_m(dom)
{
if (engineIsLocal())
{
--- 676,683 ----
template <int Dim, class T, class Tag>
Engine<Dim, T, Remote<Tag> >::Engine(int owningContext, const Domain_t &dom)
! : domain_m(dom),
! owningContext_m(owningContext)
{
if (engineIsLocal())
{
*************** Engine<Dim, T, Remote<Tag> >::Engine(int
*** 698,704 ****
template <int Dim, class T, class Tag>
Engine<Dim, T, Remote<Tag> >::Engine(const Domain_t &dom, const T& model)
! : owningContext_m(0), domain_m(dom)
{
if (engineIsLocal())
{
--- 698,704 ----
template <int Dim, class T, class Tag>
Engine<Dim, T, Remote<Tag> >::Engine(const Domain_t &dom, const T& model)
! : domain_m(dom), owningContext_m(0)
{
if (engineIsLocal())
{
*************** Engine<Dim, T, Remote<Tag> >::Engine(con
*** 718,725 ****
template <int Dim, class T, class Tag>
Engine<Dim, T, Remote<Tag> >::
Engine(const Engine<Dim, T, Remote<Tag> > &modelEngine)
! : owningContext_m(modelEngine.owningContext()),
! domain_m(modelEngine.domain()),
localEnginePtr_m(modelEngine.localEnginePtr_m)
{
}
--- 718,725 ----
template <int Dim, class T, class Tag>
Engine<Dim, T, Remote<Tag> >::
Engine(const Engine<Dim, T, Remote<Tag> > &modelEngine)
! : domain_m(modelEngine.domain()),
! owningContext_m(modelEngine.owningContext()),
localEnginePtr_m(modelEngine.localEnginePtr_m)
{
}
*************** template <int Dim, class T, class Tag>
*** 728,735 ****
Engine<Dim, T, Remote<Tag> >::
Engine(const Engine<Dim, T, Remote<Tag> > &modelEngine,
const EngineConstructTag &)
! : owningContext_m(modelEngine.owningContext()),
! domain_m(modelEngine.domain()),
localEnginePtr_m(modelEngine.localEnginePtr_m)
{
}
--- 728,735 ----
Engine<Dim, T, Remote<Tag> >::
Engine(const Engine<Dim, T, Remote<Tag> > &modelEngine,
const EngineConstructTag &)
! : domain_m(modelEngine.domain()),
! owningContext_m(modelEngine.owningContext()),
localEnginePtr_m(modelEngine.localEnginePtr_m)
{
}
Index: Layout/Node.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/Layout/Node.h,v
retrieving revision 1.35
diff -c -p -r1.35 Node.h
*** Layout/Node.h 2001/05/04 15:41:28 1.35
--- Layout/Node.h 2001/05/14 19:56:55
*************** public:
*** 121,128 ****
Node(const Domain_t &owned, const AllocatedDomain_t &allocated,
Context_t c, ID_t gid, ID_t lid = (-1))
: domain_m(owned), allocated_m(allocated),
! context_m(c), global_m(gid), local_m(lid),
! affinity_m(-1)
{
PAssert(owned.size() >= 0);
PAssert(allocated.size() >= 0);
--- 121,128 ----
Node(const Domain_t &owned, const AllocatedDomain_t &allocated,
Context_t c, ID_t gid, ID_t lid = (-1))
: domain_m(owned), allocated_m(allocated),
! local_m(lid), global_m(gid),
! context_m(c), affinity_m(-1)
{
PAssert(owned.size() >= 0);
PAssert(allocated.size() >= 0);
*************** public:
*** 130,137 ****
}
Node(const Domain_t &d, Context_t c, ID_t gid, ID_t lid = (-1))
! : domain_m(d), allocated_m(d), context_m(c), global_m(gid), local_m(lid),
! affinity_m(-1)
{
PAssert(d.size() >= 0);
PAssert(gid >= 0);
--- 130,138 ----
}
Node(const Domain_t &d, Context_t c, ID_t gid, ID_t lid = (-1))
! : domain_m(d), allocated_m(d),
! local_m(lid), global_m(gid),
! context_m(c), affinity_m(-1)
{
PAssert(d.size() >= 0);
PAssert(gid >= 0);
*************** public:
*** 152,159 ****
Node(int affinity, const Domain_t &d,
Context_t c, ID_t gid, ID_t lid = (-1))
! : domain_m(d), allocated_m(d), context_m(c), global_m(gid), local_m(lid),
! affinity_m(affinity)
{
PAssert(d.size() >= 0);
PAssert(gid >= 0);
--- 153,161 ----
Node(int affinity, const Domain_t &d,
Context_t c, ID_t gid, ID_t lid = (-1))
! : domain_m(d), allocated_m(d),
! local_m(lid), global_m(gid),
! context_m(c), affinity_m(affinity)
{
PAssert(d.size() >= 0);
PAssert(gid >= 0);
*************** public:
*** 172,180 ****
template<class ODom, class OAlloc>
Node(const Node<ODom,OAlloc> &n)
! : domain_m(n.domain()), context_m(n.context()), allocated_m(n.allocated()),
! global_m(n.globalID()), local_m(n.localID()),
! affinity_m(n.affinity())
{
}
--- 174,182 ----
template<class ODom, class OAlloc>
Node(const Node<ODom,OAlloc> &n)
! : domain_m(n.domain()), allocated_m(n.allocated()),
! local_m(n.localID()), global_m(n.globalID()),
! context_m(n.context()), affinity_m(n.affinity())
{
}
Index: NewField/Field.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/NewField/Field.h,v
retrieving revision 1.12
diff -c -p -r1.12 Field.h
*** NewField/Field.h 2001/04/27 22:52:44 1.12
--- NewField/Field.h 2001/05/14 19:56:56
*************** public:
*** 933,939 ****
return fieldEngine_m.numSubFields();
}
! inline const Domain_t &physicalCellDomain() const
{
return fieldEngine_m.physicalCellDomain();
}
--- 933,939 ----
return fieldEngine_m.numSubFields();
}
! inline const Domain_t physicalCellDomain() const
{
return fieldEngine_m.physicalCellDomain();
}
Index: NewField/FieldEngine/FieldEngine.NoGeometry.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/NewField/FieldEngine/FieldEngine.NoGeometry.h,v
retrieving revision 1.4
diff -c -p -r1.4 FieldEngine.NoGeometry.h
*** NewField/FieldEngine/FieldEngine.NoGeometry.h 2001/04/10 23:13:25 1.4
--- NewField/FieldEngine/FieldEngine.NoGeometry.h 2001/05/14 19:56:56
*************** public:
*** 129,134 ****
--- 129,141 ----
// There is no sub-field constructor because this field-engine can't have
// subfields.
+ // Default constructor.
+ FieldEngine()
+ : engine_m(Pooma::NoInit()),
+ guards_m(0),
+ updaters_m()
+ { }
+
// Copy constructor.
FieldEngine(const This_t &model)
*************** public:
*** 254,267 ****
// This field-engine always has vert-centering and the total domain is
// given by the engine.
! inline const Domain_t &physicalCellDomain() const
{
! return shrink(physicalDomain(), 1);
}
inline Domain_t totalCellDomain() const
{
! return shrink(engine_m.domain(), 1);
}
Domain_t physicalDomain() const
--- 261,274 ----
// This field-engine always has vert-centering and the total domain is
// given by the engine.
! inline const Domain_t physicalCellDomain() const
{
! return shrinkRight(physicalDomain(), 1);
}
inline Domain_t totalCellDomain() const
{
! return shrinkRight(engine_m.domain(), 1);
}
Domain_t physicalDomain() const
*************** public:
*** 274,280 ****
return engine_m.domain();
}
!
//---------------------------------------------------------------------------
// Make a distinct copy of this fieldEngineBase.
--- 281,301 ----
return engine_m.domain();
}
! Domain_t physicalDomain(int iSubField) const
! {
! // This field engine cannot have subfields.
! PAssert(iSubField == 0);
! return physicalDomain();
! }
!
! Domain_t totalDomain(int iSubField) const
! {
! // This field engine cannot have subfields.
! PAssert(iSubField == 0);
! return engine_m.domain();
! }
!
!
//---------------------------------------------------------------------------
// Make a distinct copy of this fieldEngineBase.
Index: NewField/FieldEngine/FieldEngineBase.ExprEngine.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/NewField/FieldEngine/FieldEngineBase.ExprEngine.h,v
retrieving revision 1.10
diff -c -p -r1.10 FieldEngineBase.ExprEngine.h
*** NewField/FieldEngine/FieldEngineBase.ExprEngine.h 2000/12/13 20:48:29 1.10
--- NewField/FieldEngine/FieldEngineBase.ExprEngine.h 2001/05/14 19:56:56
*************** public:
*** 261,267 ****
//---------------------------------------------------------------------------
// Domain accessor functions.
! inline const Domain_t &physicalCellDomain() const
{
return referenceField_m.physicalCellDomain();
}
--- 261,267 ----
//---------------------------------------------------------------------------
// Domain accessor functions.
! inline const Domain_t physicalCellDomain() const
{
return referenceField_m.physicalCellDomain();
}
Index: NewField/FieldEngine/FieldEngineBase.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/NewField/FieldEngine/FieldEngineBase.h,v
retrieving revision 1.11
diff -c -p -r1.11 FieldEngineBase.h
*** NewField/FieldEngine/FieldEngineBase.h 2001/04/27 22:50:27 1.11
--- NewField/FieldEngine/FieldEngineBase.h 2001/05/14 19:56:56
*************** public:
*** 429,435 ****
//---------------------------------------------------------------------------
// Domain accessor functions.
! inline const Domain_t &physicalCellDomain() const
{
return physicalCellDomain_m;
}
--- 429,435 ----
//---------------------------------------------------------------------------
// Domain accessor functions.
! inline const Domain_t physicalCellDomain() const
{
return physicalCellDomain_m;
}
Index: NewField/tests/StencilTests.cpp
===================================================================
RCS file: StencilTests.cpp
diff -N StencilTests.cpp
*** /dev/null Tue May 5 14:32:27 1998
--- StencilTests.cpp Mon May 14 13:56:57 2001
***************
*** 0 ****
--- 1,131 ----
+ // -*- C++ -*-
+ // 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. The public may copy, distribute,
+ // prepare derivative works and publicly display this SOFTWARE 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 at acl.lanl.gov,
+ // or visit the POOMA web page at http://www.acl.lanl.gov/pooma/.
+ // ----------------------------------------------------------------------
+ // ACL:license
+
+ //-----------------------------------------------------------------------------
+ // Test the use of some field stencils.
+ //-----------------------------------------------------------------------------
+
+ //////////////////////////////////////////////////////////////////////
+
+ //-----------------------------------------------------------------------------
+ // Overview:
+ //-----------------------------------------------------------------------------
+
+ //-----------------------------------------------------------------------------
+ // Typedefs:
+ //-----------------------------------------------------------------------------
+
+ //-----------------------------------------------------------------------------
+ // Includes:
+ //-----------------------------------------------------------------------------
+
+ #include "Pooma/Pooma.h"
+ #include "Utilities/Tester.h"
+ #include "Pooma/NewFields.h"
+
+ #include "NewField/DiffOps/Div.h"
+ #include "NewField/DiffOps/Div.UR.h"
+
+ #include <iostream>
+ #include <math.h>
+
+ #if POOMA_CHEETAH
+ typedef DistributedTag LayoutTag_t;
+ typedef Remote<Brick> BrickTag_t;
+ #else
+ typedef ReplicatedTag LayoutTag_t;
+ typedef Brick BrickTag_t;
+ #endif
+
+ //-----------------------------------------------------------------------------
+ // Forward Declarations:
+ //-----------------------------------------------------------------------------
+
+ int main(int argc, char *argv[])
+ {
+ Pooma::initialize(argc, argv);
+ Pooma::Tester tester(argc, argv);
+
+ Interval<2> physicalVertexDomain(10, 10);
+
+ Loc<2> blocks(2, 2);
+ UniformGridPartition<2> partition(blocks, GuardLayers<2>(1));
+ UniformGridLayout<2> layout(physicalVertexDomain, partition,
+ LayoutTag_t());
+
+ // Now, we can declare fields.
+
+ AllFace allFace;
+ Cell cell;
+ Vert vertex;
+
+ typedef UniformRectilinear<2> Geometry_t;
+
+ typedef
+ Field<Geometry_t, double, MultiPatch<UniformTag, BrickTag_t> >
+ Field_t;
+
+ typedef
+ Field<Geometry_t, Vector<2>, MultiPatch<UniformTag, BrickTag_t> >
+ VField_t;
+
+ Vector<2> origin(0.0, 0.0);
+ Vector<2> spacings(1.0, 1.0);
+
+ VField_t vfield(vertex, layout, origin, spacings);
+ Field_t cfield(cell, layout, origin, spacings);
+ Field_t facefield(allFace, layout, origin, spacings);
+
+ DomainLayout<2> layoutDom(physicalVertexDomain, GuardLayers<2>(1));
+ XField<Geometry_t>::Type_t x(vertex, layoutDom, origin, spacings);
+ setXField(x);
+
+ vfield = x;
+
+ tester.out() << vfield << std::endl;
+
+ cfield = divVertToCell(vfield);
+
+ tester.out() << cfield << std::endl;
+
+ tester.check("divergence is 2", sum(cfield -2) == 0);
+
+ int ret = tester.results("StencilTests");
+ Pooma::finalize();
+ return ret;
+ }
+
+
+
+
+ // ACL:rcsinfo
+ // ----------------------------------------------------------------------
+ // $RCSfile: WhereTest.cpp,v $ $Author: sasmith $
+ // $Revision: 1.3 $ $Date: 2001/04/10 23:13:25 $
+ // ----------------------------------------------------------------------
+ // ACL:rcsinfo
Index: NewField/tests/makefile
===================================================================
RCS file: /home/pooma/Repository/r2/src/NewField/tests/makefile,v
retrieving revision 1.9
diff -c -p -r1.9 makefile
*** NewField/tests/makefile 2001/04/10 23:13:25 1.9
--- NewField/tests/makefile 2001/05/14 19:56:57
*************** run_tests: tests
*** 52,57 ****
--- 52,58 ----
$(ODIR)/WhereTest $(TSTOPTS) 1>WhereTest.out 2>&1
$(ODIR)/VectorTest $(TSTOPTS) 1>VectorTest.out 2>&1
$(ODIR)/ScalarCode $(TSTOPTS) 1>ScalarCode.out 2>&1
+ $(ODIR)/StencilTests $(TSTOPTS) 1>StencilTests.out 2>&1
$(ODIR)/ExpressionTest $(TSTOPTS) 1>ExpressionTest.out 2>&1
field_tests:: $(ODIR)/BasicTest1 $(ODIR)/BasicTest2 \
*************** $(ODIR)/CrossBox: $(ODIR)/CrossBox.o
*** 130,135 ****
--- 131,143 ----
ScalarCode: $(ODIR)/ScalarCode
$(ODIR)/ScalarCode: $(ODIR)/ScalarCode.o
+ $(LinkToSuite)
+
+ .PHONY: StencilTests
+
+ StencilTests: $(ODIR)/StencilTests
+
+ $(ODIR)/StencilTests: $(ODIR)/StencilTests.o
$(LinkToSuite)
Index: Tulip/RemoteProxy.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/Tulip/RemoteProxy.h,v
retrieving revision 1.13
diff -c -p -r1.13 RemoteProxy.h
*** Tulip/RemoteProxy.h 2000/06/08 22:16:59 1.13
--- Tulip/RemoteProxy.h 2001/05/14 19:56:57
*************** public:
*** 112,118 ****
--- 112,120 ----
RemoteProxy(T &val, int owningContext = 0)
{
+ #if POOMA_CHEETAH
int tag = RemoteProxyBase::tag_m++;
+ #endif
if (Pooma::context() == owningContext)
{
value_m = &val;
Index: Utilities/RefCountedBlockPtr.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/Utilities/RefCountedBlockPtr.h,v
retrieving revision 1.60
diff -c -p -r1.60 RefCountedBlockPtr.h
*** Utilities/RefCountedBlockPtr.h 2001/05/04 15:41:29 1.60
--- Utilities/RefCountedBlockPtr.h 2001/05/14 19:56:57
*************** public:
*** 145,151 ****
}
RefBlockController(size_t size, const T & model)
! : dealloc_m(false), pBegin_m(0), pEnd_m(0), pEndOfStorage_m(0)
{
// Allocate memory, and set pointers to beginning and ending. This
// also sets the dealloc_m flag to true.
--- 145,151 ----
}
RefBlockController(size_t size, const T & model)
! : pBegin_m(0), pEnd_m(0), pEndOfStorage_m(0), dealloc_m(false)
{
// Allocate memory, and set pointers to beginning and ending. This
// also sets the dealloc_m flag to true.
More information about the pooma-dev
mailing list