<div dir="ltr">Thanks for taking a look, Frank!<div><br></div><div>Nice catch with the <span style="font-size:12.8000001907349px">&quot;SCHEDULE InitializeCounter before InitializeCounter&quot;. After fixing this bug, there is no difference in the result; still get a hang. That the scheduling infrastructure actually permitted this gibberish should probably be a bug report by itself...</span></div><div><br></div><div>But regarding your explanation, I have enabled Carpet::veryverbose, and no infinite loop is printed. In fact, it just hangs before printing anything related to the WHILE loop. If I had seen an infinite loop or any output, this could have conceivably been helpful in diagnosing the problem...</div><div><br></div><div>Thus I am hoping that the plans to make things simpler include proper exception handling, so that weird scheduling hangs and inconsistencies (in actual scheduling versus the schedule printout at the start of execution) are a thing of the past.</div><div><br></div><div>Bottom line:</div><div>Based on your description of the problem, I believe I now have working versions of ScheduleTester and my original volume integration thorn. Thanks for your help; it really saved me a lot of trouble.</div><div><br></div><div>Regarding the volume integration thorn: </div><div>As promised, it is pretty easily extensible, and as such, I plan to extend it significantly over the coming weeks, adding lots of useful volume integrals (all optional and disabled by default). I would like to include this thorn alongside IllinoisGRMHD in the next ET release; it will contain a number of useful diagnostics that do not already exist within ET.</div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div>-Zach</div><div><br></div>*     *     *<br>Zachariah Etienne<br>Assistant Professor of Mathematics<div>West Virginia University<br></div></div></div></div>
<br><div class="gmail_quote">On Sun, May 24, 2015 at 12:55 AM, Frank Loeffler <span dir="ltr">&lt;<a href="mailto:knarf@cct.lsu.edu" target="_blank">knarf@cct.lsu.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Sat, May 23, 2015 at 09:10:37PM -0400, Zach Etienne wrote:<br>
&gt; Thanks for your tips. After many hours of looking into this problem, and<br>
&gt; even trying (unsuccessfully) to use Carpet macros, I conclude that I am<br>
&gt; being held back by a bug in Cactus scheduling.<br>
<br>
</span>Yes and no. The Cactus scheduling is fine, but the interaction with the<br>
Carpet modes is often surprising, and so it is here.<br>
<br>
This is (please correct me), how the interaction between Cactus and<br>
Carpet works:<br>
<br>
Cactus -&gt; Carpet: please schedule stuff in Analysis<br>
for all modes in Carpet (and levels and components if applicable):<br>
  Carpet -&gt; Cactus: call all functions in Analysis<br>
  for all functions in Analysis:<br>
    Cactus -&gt; Carpet: Call function<br>
    Carpet: if function should be called in current mode: call<br>
            otherwise: ignore<br>
<br>
Given this, can you see why your thorn hangs?<br>
<br>
You schedule the initialization of the while-variable in &#39;global&#39;.<br>
&#39;global-early&#39; comes before that, so Cactus gets the task to loop while<br>
&#39;counter&#39; in global-early, on an uninitialized variable, and inside that<br>
loop nothing touches that variable, so the loop never stops.<br>
<br>
Yes, this is kind of backward, and feels a bit strange. And it is. We do<br>
have plans to make this simpler.<br>
<br>
What you have to do to make this work:<br>
- hold the loop variable at 0 whenever you don&#39;t want to loop,<br>
  especially: initialize it right at the start to 0 and make sure<br>
  it doesn&#39;t go below 0.<br>
( also, but you already do this:<br>
- make sure you initialize the loop variable (to the number of loops) in<br>
  the same mode as the function that decrements it<br>
)<br>
<br>
Btw: probably not connected to this problem: I am surprised to see that<br>
&quot;SCHEDULE InitializeCounter before InitializeCounter&quot; actually works. Is<br>
there any reason for that? :)<br>
<span class="HOEnZb"><font color="#888888"><br>
Frank<br>
<br>
</font></span></blockquote></div><br></div>