This thorn provides tests (partially correctness tests) for MoL. It integrates a known function in time choosing for each ODE method a polynomial in time that can be exactly integrated by the method.
The method of lines thorn (MoL) provides time integration facilities in Cactus. It basically is a wrapper for ODE integrators. As such it can be tested by comparing its results against known analytic solutions.
For grid functions we integrate \begin {equation} \dot y = -1 + t^n \end {equation} where \(n\) is chosen such that a given ODE method can integrate the polynomial exactly, eg. \(n=3\) for the classical Runge-Kutta method. For multi-rate ODE methods, the slow sector integrates \begin {equation} \dot y = -1 + \frac 14 t^m \end {equation} where \(m\) is usually smaller than \(n\), eg. \(2\) for the RK4-RK2 scheme. Finally grid arrays integrate \begin {equation} \dot y = -1 + \frac 12 t^n \end {equation} where \(n\) is the same as for (fast) grid functions.
All numerical methods are provided by MoL. We construct the numerical solution be evaluating the RHS on the full domain, no ghost or boundary zones are required. We provide the numerical solution in evolved_gf, evolvedslow_gf, evolved_ga for the grid function, slow sector grid function and grid array respectively. For each type we provide the analytical solution in analytic_gf, analyticslow_gf, analytic_ga. We provide the difference between the two in diff_gf, diffslow_gf, diff_ga.
Parameter files for the tests are generated using a perl script ODEs.pl in the test directory. Its use is briefly explained in a comment near the top of the file.
This thorn provides no functionality other than the tests.
This thorn is part of the CactusTest arrangement and can be checked out from the same source as Cactus.
This thorn requires MoL.
evolve_grid_array | Scope: private | BOOLEAN |
Description: register an evolved grid array with MoL
| ||
Default: yes | ||
evolve_grid_function | Scope: private | BOOLEAN |
Description: register an evolved grid function with MoL
| ||
Default: yes | ||
rhsexpression | Scope: private | KEYWORD |
Description: expression to use for the right-hand-side of the ODE
| ||
Range | Default: 1 | |
1 | unit rhs | |
t | linear in time rhs
| |
t**2 | quadratic in time rhs
| |
t**3 | cubic in time rhs
| |
t**4 | quartic in time rhs
| |
t**5 | quintic in time rhs
| |
t**6 | sixth order in time rhs
| |
t**7 | seventh order in time rhs
| |
t**8 | eight order in time rhs
| |
t**9 | ninth order in time rhs
| |
exp(t) | exponential in time rhs
| |
rhsslowexpression | Scope: private | KEYWORD |
Description: expression to use for the right-hand-side of the slow ODE
| ||
Range | Default: 1 | |
1 | unit rhs | |
t | linear in time rhs
| |
t**2 | quadratic in time rhs
| |
t**3 | cubic in time rhs
| |
t**4 | quartic in time rhs
| |
t**5 | quintic in time rhs
| |
t**6 | sixth order in time rhs
| |
t**7 | seventh order in time rhs
| |
t**8 | eight order in time rhs
| |
t**9 | ninth order in time rhs
| |
exp(t) | exponential in time rhs
| |
Implements:
testmol
Inherits:
methodoflines
Group Names | Variable Names | Details | |
evolved_gf | evolved_gf | compact | 0 |
description | an evolved grid function | ||
dimensions | 3 | ||
distribution | DEFAULT | ||
group type | GF | ||
timelevels | 3 | ||
variable type | REAL | ||
rhs_gf | rhs_gf | compact | 0 |
description | the rhs for the evolved grid function | ||
dimensions | 3 | ||
distribution | DEFAULT | ||
group type | GF | ||
timelevels | 1 | ||
variable type | REAL | ||
evolvedslow_gf | evolvedslow_gf | compact | 0 |
description | a slow evolved grid function | ||
dimensions | 3 | ||
distribution | DEFAULT | ||
group type | GF | ||
timelevels | 3 | ||
variable type | REAL | ||
rhsslow_gf | rhsslow_gf | compact | 0 |
description | the rhs for the slow evolved grid function | ||
dimensions | 3 | ||
distribution | DEFAULT | ||
group type | GF | ||
timelevels | 1 | ||
variable type | REAL | ||
constrained_gf | constrained_gf | compact | 0 |
description | a constrained grid function | ||
dimensions | 3 | ||
distribution | DEFAULT | ||
group type | GF | ||
timelevels | 3 | ||
variable type | REAL | ||
sandr_gf | sandr_gf | compact | 0 |
description | a save-and-restore grid function | ||
dimensions | 3 | ||
distribution | DEFAULT | ||
group type | GF | ||
timelevels | 3 | ||
variable type | REAL | ||
Group Names | Variable Names | Details | |
diff_gf | diff_gf | compact | 0 |
description | difference to analytic solution in grid function | ||
dimensions | 3 | ||
distribution | DEFAULT | ||
group type | GF | ||
timelevels | 1 | ||
variable type | REAL | ||
analytic_gf | analytic_gf | compact | 0 |
description | analytic solution in grid function | ||
dimensions | 3 | ||
distribution | DEFAULT | ||
group type | GF | ||
timelevels | 1 | ||
variable type | REAL | ||
diffslow_gf | diffslow_gf | compact | 0 |
description | difference to analytic solution in grid function | ||
dimensions | 3 | ||
distribution | DEFAULT | ||
group type | GF | ||
timelevels | 1 | ||
variable type | REAL | ||
analyticslow_gf | analyticslow_gf | compact | 0 |
description | analytic solution in grid function | ||
dimensions | 3 | ||
distribution | DEFAULT | ||
group type | GF | ||
timelevels | 1 | ||
variable type | REAL | ||
evolved_ga | evolved_ga | compact | 0 |
description | an evolved grid array | ||
dimensions | 1 | ||
distribution | CONSTANT | ||
group type | ARRAY | ||
size | 1 | ||
timelevels | 3 | ||
variable type | REAL | ||
rhs_ga | rhs_ga | compact | 0 |
description | the rhs of the evolved grid array | ||
dimensions | 1 | ||
distribution | CONSTANT | ||
group type | ARRAY | ||
size | 1 | ||
timelevels | 3 | ||
variable type | REAL | ||
Group Names | Variable Names | Details | |
constrained_ga | constrained_ga | compact | 0 |
description | a constrained grid array | ||
dimensions | 1 | ||
distribution | CONSTANT | ||
group type | ARRAY | ||
size | 1 | ||
timelevels | 3 | ||
variable type | REAL | ||
sandr_ga | sandr_ga | compact | 0 |
description | a save-and-restore grid array | ||
dimensions | 1 | ||
distribution | CONSTANT | ||
group type | ARRAY | ||
size | 1 | ||
timelevels | 3 | ||
variable type | REAL | ||
diff_ga | diff_ga | compact | 0 |
description | difference to analytic solution in grid function | ||
dimensions | 1 | ||
distribution | CONSTANT | ||
group type | ARRAY | ||
size | 1 | ||
timelevels | 3 | ||
variable type | REAL | ||
analytic_ga | analytic_ga | compact | 0 |
description | analytic solution in grid function | ||
dimensions | 1 | ||
distribution | CONSTANT | ||
group type | ARRAY | ||
size | 1 | ||
timelevels | 3 | ||
variable type | REAL | ||
This section lists all the variables which are assigned storage by thorn CactusTest/TestMoL. Storage can either last for the duration of the run (Always means that if this thorn is activated storage will be assigned, Conditional means that if this thorn is activated storage will be assigned for the duration of the run if some condition is met), or can be turned on for the duration of a schedule function.
Always: | |
evolved_gf[3] evolvedslow_gf[3] constrained_gf[3] sandr_gf[3] | |
rhs_gf[1] rhsslow_gf[1] | |
diff_gf[1] analytic_gf[1] diffslow_gf[1] analyticslow_gf[1] | |
evolved_ga[3] constrained_ga[3] sandr_ga[3] | |
rhs_ga[1] | |
diff_ga[1] analytic_ga[1] | |
MoL_Register
testmol_registervars
register evolved, rhs variables
Language: | c | |
Options: | meta | |
Type: | function | |
CCTK_INITIAL
testmol_initvars
provide initial data for all variables
Language: | c | |
Type: | function | |
MoL_CalcRHS
testmol_rhs_gf
compute the rhs for the evolved grid function
Language: | c | |
Type: | function | |
MoL_CalcRHS
testmol_rhsslow_gf
compute the rhs for the slow evolved grid function
Language: | c | |
Type: | function | |
MoL_CalcRHS
testmol_rhs_ga
compute the rhs for the evolved grid function
Language: | c | |
Type: | function | |
CCTK_ANALYSIS
testmol_compare_gf
compare analytic and numerial result in grid function
Language: | c | |
Type: | function | |
CCTK_ANALYSIS
testmol_compare_ga
compare analytic and numerial result in grid array
Language: | c | |
Type: | function | |