Spectral Deferred Correction Methods for Second-Order Problems¶
Python code for implementing the paper’s plots on Second-order SDC methods.
You are welcome to use and adapt this code under the terms of the BSD license. If you utilize it, either in whole or in part, for a publication, please provide proper citation:
@misc{akramov2023spectral,
title={Spectral deferred correction methods for second-order problems},
author={Ikrom Akramov and Sebastian Götschel and Michael Minion and Daniel Ruprecht and Robert Speck},
year={2023},
eprint={2310.08352},
archivePrefix={arXiv},
primaryClass={math.NA}}
Reproducing Figures from the Publication¶
Fig. 1: Execute harmonic_oscillator_run_stability.py while setting kappa_max=18 and mu_max=18.
- Fig. 2: Run harmonic_oscillator_run_stability.py with the following configurations:
Set kappa_max=30 and mu_max=30.
Adjust maxiter to 1, 2, 3, or 4 and execute each individually.
- Table 1: Execute harmonic_oscillator_run_stab_interval.py:
For the Picard iteration set: Picard=True
To save the results set: save_interval_file=True
- Use the script harmonic_oscillator_run_points.py to create a table based on given $(kappa, mu)$ points. This table assists in determining suitable values for M, K, and quadrature nodes to ensure stability in the SDC method.
To save the results set: save_points_file=True
Fig. 3: Run penningtrap_run_error.py (Run local convergence: conv.run_local_error()) with dt=0.015625/4 and axes=(0,).
Fig. 4: Run penningtrap_run_error.py (Run local convergence: conv.run_local_error()) using dt=0.015625*4 and axes=(2,).
- Fig. 5: Run penningtrap_run_error.py (Run global convergence: conv.run_global_error()) with dt=0.015625*2:
Note: Perform each run individually: first with axes=(0,), then with axes=(2,).
Manually set y-axis limits in penningtrap_run_error.py, specifically in lines 147-148.
- Table 2: Execute penningtrap_run_error.py (Run global convergence: conv.run_global_error()) with the following settings:
Expected order and approximate order are saved in the file: data/global_order_vs_approx_order.csv
Set: K_iter=(2, 3, 4, 10)
- For M=2:
Set dt=0.015625 / 2 and num_nodes=2 (Both Horizontal and Vertical axes)
- For M=3:
Set dt=0.015625 and num_nodes=3 (Both Horizontal and Vertical axes)
- For M=4:
Set dt=0.015625 * 4 and num_nodes=4 (Both Horizontal and Vertical axes)
- Fig. 6: Run penningtrap_run_Hamiltonian_error.py:
Note: Execute each computation individually in case of crashes.
Data is saved in the data folder.
- Fig. 7: Execute penningtrap_run_work_precision.py with the following configurations:
Set dt=0.015625*2 and K_iter=(1, 2, 3) for axis=(2,).
Set dt=0.015625*4, and K_iter=(2, 4, 6), and dt_cont=2 for axis=(0,).
Contact¶
This code is written by Ikrom Akramov