[pooma-dev] Re: [PATCH] Fix PrintField wrt expressions

Jeffrey D. Oldham oldham at codesourcery.com
Fri Jan 16 17:06:00 UTC 2004


Richard Guenther wrote:
> On Thu, 15 Jan 2004, Jeffrey D. Oldham wrote:
> 
> 
>>Richard Guenther wrote:
>>
>>>Hi!
>>>
>>>The following patch allows to print Fields with expression engines.
>>>PrintField uses applyRelations() while it should use a tree-walk with
>>>PerformUpdateTag.
>>
>>So, with this change, the field will be guaranteed to be updated by any
>>relations that can change the field?
> 
> 
> If the field is dirty, yes.  Behavoir is exactly the same as before, just
> the case
> 
>   tester.out() << f + 1.0 << std::endl;
> 
> didn't work before, because the FieldEngine<ExpressionEngine> doesn't have
> the data() method applyRelations is trying to access.  The forEach()
> magically skips the ExpressionEngines and applies to the leafs only.
> 
> Richard.
> 
> 
>>>2004Jan14  Richard Guenther <richard.guenther at uni-tuebingen.de>
>>>
>>>	* src/Field/PrintField.h: use forEach(,PerformUpdateTag(),) rather
>>>	than applyRelations().
>>>
>>>===== PrintField.h 1.3 vs edited =====
>>>--- 1.3/r2/src/Field/PrintField.h	Wed Dec  3 12:30:41 2003
>>>+++ edited/PrintField.h	Wed Jan 14 12:01:09 2004
>>>@@ -231,7 +231,7 @@
>>>   template<class S, class A>
>>>   void print(S &s, const A &a) const
>>>     {
>>>-      a.applyRelations();
>>>+      forEach(a, PerformUpdateTag(), NullCombine());
>>>       Pooma::blockAndEvaluate();
>>>
>>>       for (int m = 0; m < a.numMaterials(); m++)

Great!  That's a good improvement.  Will you please commit the patch?

Jeffrey D. Oldham
oldham at codesourcery.com




More information about the pooma-dev mailing list