Coverage for pySDC/tutorial/step_2/A_step_data_structure.py: 100%
38 statements
« prev ^ index » next coverage.py v7.6.7, created at 2024-11-16 14:51 +0000
« prev ^ index » next coverage.py v7.6.7, created at 2024-11-16 14:51 +0000
1from pathlib import Path
3from pySDC.core.step import Step
5from pySDC.implementations.problem_classes.HeatEquation_ND_FD import heatNd_unforced
6from pySDC.implementations.sweeper_classes.generic_implicit import generic_implicit
7from pySDC.tutorial.step_1.A_spatial_problem_setup import run_accuracy_check
10def main():
11 """
12 A simple test program to setup a full step instance
13 """
15 # initialize level parameters
16 level_params = dict()
17 level_params['restol'] = 1e-10
18 level_params['dt'] = 0.1
20 # initialize sweeper parameters
21 sweeper_params = dict()
22 sweeper_params['quad_type'] = 'RADAU-RIGHT'
23 sweeper_params['num_nodes'] = 3
24 sweeper_params['QI'] = 'LU'
26 # initialize problem parameters
27 problem_params = dict()
28 problem_params['nu'] = 0.1 # diffusion coefficient
29 problem_params['freq'] = 4 # frequency for the test value
30 problem_params['nvars'] = 1023 # number of degrees of freedom
31 problem_params['bc'] = 'dirichlet-zero' # boundary conditions
33 # initialize step parameters
34 step_params = dict()
35 step_params['maxiter'] = 20
37 # fill description dictionary for easy step instantiation
38 description = dict()
39 description['problem_class'] = heatNd_unforced
40 description['problem_params'] = problem_params
41 description['sweeper_class'] = generic_implicit
42 description['sweeper_params'] = sweeper_params
43 description['level_params'] = level_params
44 description['step_params'] = step_params
46 # now the description contains more or less everything we need to create a step
47 S = Step(description=description)
49 # we only have a single level, make a shortcut
50 L = S.levels[0]
52 # one of the integral parts of each level is the problem class, make a shortcut
53 P = L.prob
55 # now we can do e.g. what we did before with the problem
56 err = run_accuracy_check(P)
58 Path("data").mkdir(parents=True, exist_ok=True)
59 f = open('data/step_2_A_out.txt', 'w')
60 out = 'Error of the spatial accuracy test: %8.6e' % err
61 f.write(out)
62 print(out)
63 f.close()
65 assert err <= 2e-04, "ERROR: the spatial accuracy is higher than expected, got %s" % err
68if __name__ == "__main__":
69 main()