Difference between revisions of "Adding a test case"

From Einstein Toolkit Documentation
Jump to: navigation, search
(→‎A test case is...)
(CYpypUKr)
Line 1: Line 1:
−
=Adding a Test Case to a Thorn=
+
sFwFGj <a href="http://rvfyxonxuauz.com/">rvfyxonxuauz</a>, [url=http://bhinpgokofes.com/]bhinpgokofes[/url], [link=http://bmgrpbgafrjw.com/]bmgrpbgafrjw[/link], http://zfracgfrimzy.com/
−
 
 
−
This page describes how to add a test case to a Cactus thorn.  It will
 
−
guide you step-by-step through the ideas behind test cases to some of
 
−
the finer details that make a test case easy to use.
 
−
 
 
−
sHrMI2 <a href="http://kwteszcsbsiq.com/">kwteszcsbsiq</a>, [url=http://sanshpwrbnlr.com/]sanshpwrbnlr[/url], [link=http://dngoaahxfvbk.com/]dngoaahxfvbk[/link], http://brqfjiefbszv.com/
 
−
 
 
−
==How to create a test case==
 
−
 
 
−
It is probably best to start from a working parameter file that uses a
 
−
particular feature.  Then one removes all those features and thorns
 
−
that are not necessary.  To reduce the size further, one reduces the
 
−
number of time steps, chooses a much smaller domain and a much coarse
 
−
grid.  It may make sense to introduce symmetries or periodic
 
−
boundaries.
 
−
 
 
−
Note that a test case does not need to provide physically interesting
 
−
output; it is only supposed to check whether the code still provides
 
−
the same output.  Thus, as long as a coarser grid still executes the
 
−
same routines, it is fine.  Of course, the grid must not be so coarse
 
−
that it generates nans.
 
−
 
 
−
At this stage, it may also make sense to avoid mesh refinement or
 
−
multi-block systems, or to reduce the order of accuracy.
 
−
 
 
−
In the end, the parameter file should run on a single core, should not
 
−
need more than a few hundred MByte of memory, and should finish in
 
−
under two minutes.  Typically, it suffices to run for a few time steps
 
−
on a 10^3 domain.
 
−
 
 
−
At this stage, the physics output of the parameter file has probably
 
−
changed a lot.  This is fine; all it needs to do is to check that the
 
−
feature that is to be tested will return the same result in the future
 
−
as it does now.
 
−
 
 
−
==How to finish a test case==
 
−
 
 
−
After these steps, you should make a few more modifiations to the
 
−
parameter file.
 
−
 
 
−
Output directory: Choose the I/O options
 
−
  IO::out_dir      = $parfile
 
−
  IO::out_fileinfo  = "none"
 
−
  IO::parfile_write = "no"
 
−
to ensure that the output directory has the right name, and that no
 
−
additional information is written into the output files.
 
−
 
 
−
Output quantities: Certain reduction operations (such as "sum") should
 
−
be avoided, since they change too much due to floating-point
 
−
round-off.  The following reductions (and similar ones) are good;
 
−
others should be avoided:
 
−
* count minimum maximum average norm1 norm2 norm_inf
 
−
Do not use
 
−
* product sum sum_abs sum_squared sum_abs_squared
 
−
 
 
−
Screen output (info output) is ignored in test cases.  You should
 
−
leave a bit of info output enabled, since this helps debugging, but it
 
−
won't be checked when the test case is run.
 
−
 
 
−
You will also want to beautify the parameter file at this point,
 
−
adding comments, and maybe adding your own name for vanity at the top.
 
−
You should also explain what the test case is testing.
 
−
 
 
−
Then you run the parameter file on two processes.  After a short while
 
−
(under two minutes!), you should see an output directory.  Have a look
 
−
into the output directory and check:
 
−
* Is there a ".par" file?  (There should not.)
 
−
* Are there binary files?  (There should not.)
 
−
* Are there large files?  (There should not.)
 
−
* Are there many files?  (There should not.)
 
−
 
 
−
Then move the parameter file as well as this output directory into the
 
−
"test" directory of the thorn you are testing.
 
−
 
 
−
Next, run this test case, following the Cactus instructions for doing
 
−
so.  The test case should pass.
 
−
 
 
−
Don't forget to commit the test case, or to attach it to a patch you
 
−
are proposing.
 
−
 
 
−
==How to track down why a test case fails==
 
−
 
 
−
(INCOMPLETE)
 
−
 
 
−
* Check out old code versions, find version that succeeds
 
−
* Output additional quantities, since the test case probably doesn't output enough data for this
 
−
* When doing so, keep several versions of the code/executable around, since you will be re-running the test cases many times
 

Revision as of 16:12, 27 November 2010

sFwFGj <a href="http://rvfyxonxuauz.com/">rvfyxonxuauz</a>, [url=http://bhinpgokofes.com/]bhinpgokofes[/url], [link=http://bmgrpbgafrjw.com/]bmgrpbgafrjw[/link], http://zfracgfrimzy.com/