{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,27]],"date-time":"2026-01-27T08:37:42Z","timestamp":1769503062617,"version":"3.49.0"},"reference-count":57,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[2021,4,20]],"date-time":"2021-04-20T00:00:00Z","timestamp":1618876800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/501100002347","name":"Bundesministerium f\u00fcr Bildung und Forschung","doi-asserted-by":"crossref","award":["05M18PXB"],"award-info":[{"award-number":["05M18PXB"]}],"id":[{"id":"10.13039\/501100002347","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Math. Softw."],"published-print":{"date-parts":[[2021,6,30]]},"abstract":"<jats:p>In this article, we introduce the Python framework PyMGRIT, which implements the multigrid-reduction-in-time (MGRIT) algorithm for solving (non-)linear systems arising from the discretization of time-dependent problems. The MGRIT algorithm is a reduction-based iterative method that allows parallel-in-time simulations, i.e., calculating multiple time steps simultaneously in a simulation, using a time-grid hierarchy. The PyMGRIT framework includes many different variants of the MGRIT algorithm, ranging from different multigrid cycle types and relaxation schemes, various coarsening strategies, including time-only and space-time coarsening, and the ability to utilize different time integrators on different levels in the multigrid hierachy. The comprehensive documentation with tutorials and many examples and the fully documented code allow an easy start into the work with the package. The functionality of the code is ensured by automated serial and parallel tests using continuous integration. PyMGRIT supports serial runs suitable for prototyping and testing of new approaches, as well as parallel runs using the Message Passing Interface (MPI). In this manuscript, we describe the implementation of the MGRIT algorithm in PyMGRIT and present the usage from both a user and a developer point of view. Three examples illustrate different aspects of the package itself, especially running tests with pure time parallelism, as well as space-time parallelism through the coupling of PyMGRIT with PETSc or Firedrake.<\/jats:p>","DOI":"10.1145\/3446979","type":"journal-article","created":{"date-parts":[[2021,4,20]],"date-time":"2021-04-20T19:08:06Z","timestamp":1618945686000},"page":"1-22","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":8,"title":["Algorithm 1016"],"prefix":"10.1145","volume":"47","author":[{"given":"Jens","family":"Hahne","sequence":"first","affiliation":[{"name":"Bergische Universit\u00e4t Wuppertal, Wuppertal, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Stephanie","family":"Friedhoff","sequence":"additional","affiliation":[{"name":"Bergische Universit\u00e4t Wuppertal, Wuppertal, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Matthias","family":"Bolten","sequence":"additional","affiliation":[{"name":"Bergische Universit\u00e4t Wuppertal, Wuppertal, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2021,4,20]]},"reference":[{"key":"e_1_2_2_1_1","volume-title":"Richard Tran Mills, Todd Munson, Karl Rupp, Patrick Sanan, Barry F. Smith, Stefano Zampini, Hong Zhang, and Hong Zhang.","author":"Balay Satish","year":"2020","unstructured":"Satish Balay, Shrirang Abhyankar, Mark F. Adams, Jed Brown, Peter Brune, Kris Buschelman, Lisandro Dalcin, Alp Dener, Victor Eijkhout, William D. Gropp, Dmitry Karpeyev, Dinesh Kaushik, Matthew G. Knepley, Dave A. May, Lois Curfman McInnes, Richard Tran Mills, Todd Munson, Karl Rupp, Patrick Sanan, Barry F. Smith, Stefano Zampini, Hong Zhang, and Hong Zhang. 2020. PETSc Users Manual. Technical Report ANL-95\/11 - Revision 3.13. Argonne National Laboratory. Retrieved from https:\/\/www.mcs.anl.gov\/petsc."},{"key":"e_1_2_2_2_1","volume-title":"Structural analysis of electrical circuits including magnetoquasistatic devices. Appl. Numer. Math. 61 (Sept","author":"Bartel Andreas","year":"2011","unstructured":"Andreas Bartel, Sascha Baumanns, and Sebastian Sch\u00f6ps. 2011. Structural analysis of electrical circuits including magnetoquasistatic devices. Appl. Numer. Math. 61 (Sept. 2011), 1257--1270."},{"key":"e_1_2_2_3_1","volume-title":"Parallel-in-Time Simulation of an Electrical Machine using MGRIT. arxiv:math.NA\/1912.03106","author":"Bolten Matthias","year":"2019","unstructured":"Matthias Bolten, Stephanie Friedhoff, Jens Hahne, and Sebastian Sch\u00f6ps. 2019. Parallel-in-Time Simulation of an Electrical Machine using MGRIT. arxiv:math.NA\/1912.03106, 2019."},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1090\/S0025-5718-1977-0431719-X"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1137\/09075740X"},{"key":"e_1_2_2_6_1","volume-title":"Herbert De Gersem, and Sebastian Sch\u00f6ps","author":"Garcia Idoia Cortes","year":"2019","unstructured":"Idoia Cortes Garcia, Herbert De Gersem, and Sebastian Sch\u00f6ps. 2019. A structural analysis of field\/circuit coupled problems based on a generalised circuit element. Numer. Algor. (Mar. 2019), 1--22."},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.advwatres.2011.04.013"},{"key":"e_1_2_2_8_1","volume-title":"MacLachlan","author":"Sterck Hans De","year":"2019","unstructured":"Hans De Sterck, Robert D. Falgout, Stephanie Friedhoff, Oliver A. Krzysik, and Scott P. MacLachlan. 2019. Optimizing MGRIT and Parareal coarse-grid operators for linear advection. arxiv:math.NA\/1910.03726, 2019."},{"key":"e_1_2_2_9_1","unstructured":"Patrick Dular and Christophe Geuzaine. 2020. GetDP: A General Environment for the Treatment of Discrete Problems. Retrieved from http:\/\/www.getdp.info."},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1109\/20.717799"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1023\/A:1022338906936"},{"key":"e_1_2_2_12_1","unstructured":"Matthew Emmett Torbj\u00f6rn Klatt Robert Speck Daniel Ruprecht and Selman Terzi. 2020. Github repository for PFASST. Retrieved from https:\/\/github.com\/Parallel-in-Time\/PFASST."},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.2140\/camcos.2012.7.105"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1137\/130944230"},{"key":"e_1_2_2_15_1","volume-title":"Yang","author":"Falgout Robert D.","year":"2015","unstructured":"Robert D. Falgout, Aaron Katz, Tzanio Kolev, Jacob B. Schroder, Andrew Wissink, and Ulrike M. Yang. 2015. Parallel Time Integration with Multigrid Reduction for a Compressible Fluid Dynamics Application. Technical Report, LLNL-JRNL-663416. Lawrence Livermore National Laboratory."},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jocs.2019.101029"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1137\/16M1082330"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1109\/20.996247"},{"key":"e_1_2_2_19_1","volume-title":"Progress in Industrial Mathematics at ECMI 2018","author":"Friedhoff Stephanie","unstructured":"Stephanie Friedhoff, Jens Hahne, Iryna Kulchytska-Ruchka, and Sebastian Sch\u00f6ps. 2020. Exploring parallel-in-time approaches for eddy current problems. In Progress in Industrial Mathematics at ECMI 2018 (The European Consortium for Mathematics in Industry), Istv\u00e1n Farag\u00f3, Ferenc Izs\u00e1k, and P\u00e9ter L. Simon (Eds.), Vol. 30. Springer, Berlin."},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1002\/pamm.201900262"},{"key":"e_1_2_2_21_1","volume-title":"Multiple Shooting and Time Domain Decomposition","author":"Gander Martin J.","unstructured":"Martin J. Gander. 2015. 50 years of time parallel time integration. In Multiple Shooting and Time Domain Decomposition. Springer, 69--113."},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1137\/110856137"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1137\/18M1175653"},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1002\/pamm.200700750"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1002\/nme.2579"},{"key":"e_1_2_2_26_1","volume-title":"Gmsh: A three-dimensional finite element mesh generator with built-in pre- and post-processing facilities.","author":"Geuzaine Christophe","year":"2020","unstructured":"Christophe Geuzaine and Jean-Fran\u00e7ois Remacle. 2020. Gmsh: A three-dimensional finite element mesh generator with built-in pre- and post-processing facilities. Retrieved from http:\/\/www.gmsh.info."},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1109\/20.952584"},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1137\/19M1247620"},{"key":"e_1_2_2_29_1","unstructured":"Jens Hahne and Stephanie Friedhoff. 2020a. Code coverage for PyMGRIT. Retrieved from https:\/\/codecov.io\/gh\/pymgrit\/pymgrit."},{"key":"e_1_2_2_30_1","unstructured":"Jens Hahne and Stephanie Friedhoff. 2020b. Documentation for PyMGRIT. Retrieved from https:\/\/pymgrit.github.io\/pymgrit\/."},{"key":"e_1_2_2_31_1","unstructured":"Jens Hahne and Stephanie Friedhoff. 2020c. Github repository for PyMGRIT. Retrieved from https:\/\/github.com\/pymgrit\/pymgrit."},{"key":"e_1_2_2_32_1","unstructured":"Jens Hahne and Stephanie Friedhoff. 2020d. PyPI site for PyMGRIT. Retrieved from https:\/\/pypi.org\/project\/pymgrit\/."},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1137\/17M1144982"},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1109\/MCSE.2007.55"},{"key":"e_1_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.17815\/jlsrf-5-171"},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.1137\/110856976"},{"key":"e_1_2_2_37_1","volume-title":"Academic Publishing: Players, Agents and Agendas","author":"Kluyver Thomas","year":"2016","unstructured":"Thomas Kluyver, Benjamin Ragan-Kelley, Fernando Perez, Brian Granger, Matthias Bussonnier, Jonathan Frederic, Kyle Kelley, Jessica Hamrick, Jason Grout, Sylvain Corlay, Paul Ivanov, Dami\u00e1n Avila, Safia Abdalla, Carol Willing, et al. 2016. Jupyter notebooks\u2014A publishing format for reproducible computational workflows. In Positioning and Power in Academic Publishing: Players, Agents and Agendas. IOS Press, 87--90."},{"key":"e_1_2_2_38_1","unstructured":"Holger Krekel. 2020. Welcome to the tox automation project. Retrieved from https:\/\/tox.readthedocs.io\/en\/latest\/."},{"key":"e_1_2_2_39_1","unstructured":"Holger Krekel Bruno Oliveira Ronny Pfannschmidt Floris Bruynooghe Brianna Laugher and Florian Bruhin. 2004. pytest. Retrieved from https:\/\/github.com\/pytest-dev\/pytest."},{"key":"e_1_2_2_40_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01933003"},{"key":"e_1_2_2_41_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01932674"},{"key":"e_1_2_2_42_1","unstructured":"LBNL. 2020. Github repository for LibPFASST. Retrieved from https:\/\/github.com\/libpfasst\/LibPFASST."},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1109\/PESGM.2016.7741520"},{"key":"e_1_2_2_44_1","volume-title":"Comptes Rendus de l\u2019Acad\u00e9mie des Sciences. S\u00e9rie I. Math\u00e9matique 332, 7","author":"Lions Jacques-Louis","year":"2001","unstructured":"Jacques-Louis Lions, Yvon Maday, and Gabriel Turinici. 2001. R\u00e9solution d\u2019EDP par un sch\u00e9ma en temps \u201cparar\u00e9el.\u201d Comptes Rendus de l\u2019Acad\u00e9mie des Sciences. S\u00e9rie I. Math\u00e9matique 332, 7 (2001), 661--668."},{"key":"e_1_2_2_45_1","unstructured":"LLBL. 2020. Website for PFASST codes. Retrieved from https:\/\/pfasst.lbl.gov\/codes."},{"key":"e_1_2_2_46_1","unstructured":"LLNL. 2020. Website for XBraid. Retrieved from https:\/\/www.llnl.gov\/casc\/xbraid."},{"key":"e_1_2_2_47_1","volume-title":"et\u00a0al","author":"Logg Anders","year":"2012","unstructured":"Anders Logg, Kent-Andre Mardal, Garth N. Wells, et\u00a0al. 2012. Automated Solution of Differential Equations by the Finite Element Method. Springer."},{"key":"e_1_2_2_48_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jcp.2018.04.056"},{"key":"e_1_2_2_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/2964377"},{"key":"e_1_2_2_50_1","first-page":"3","article-title":"Firedrake: Automating the finite element method by composing abstractions","volume":"43","author":"Rathgeber Florian","year":"2016","unstructured":"Florian Rathgeber, David A. Ham, Lawrence Mitchell, Michael Lange, Fabio Luporini, Andrew T. T. Mcrae, Gheorghe-Teodor Bercea, Graham R. Markall, and Paul H. J. Kelly. 2016. Firedrake: Automating the finite element method by composing abstractions. ACM Trans. Math. Softw. 43, 3 (Dec. 2016).","journal-title":"ACM Trans. Math. Softw."},{"key":"e_1_2_2_51_1","doi-asserted-by":"publisher","DOI":"10.1109\/TMAG.2017.2763090"},{"key":"e_1_2_2_52_1","volume-title":"Andreas Schmitt, and Fran\u00e7ois P. Hamon.","author":"Schreiber Martin","year":"2020","unstructured":"Martin Schreiber, Pedro da Silva Peixoto, Andreas Schmitt, and Fran\u00e7ois P. Hamon. 2020. Website for SWEET. Retrieved from https:\/\/schreiberx.github.io\/sweetsite\/."},{"key":"e_1_2_2_53_1","doi-asserted-by":"publisher","DOI":"10.1109\/PESGM.2018.8586435"},{"key":"e_1_2_2_54_1","doi-asserted-by":"publisher","DOI":"10.1145\/3310410"},{"key":"e_1_2_2_55_1","unstructured":"Robert Speck. 2020. Github repository for pySDC. Retrieved from https:\/\/github.com\/Parallel-in-Time\/pySDC."},{"key":"e_1_2_2_56_1","doi-asserted-by":"publisher","DOI":"10.1109\/MCSE.2011.37"},{"key":"e_1_2_2_57_1","doi-asserted-by":"publisher","DOI":"10.1038\/s41592-019-0686-2"}],"container-title":["ACM Transactions on Mathematical Software"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3446979","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3446979","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,7,14]],"date-time":"2025-07-14T22:26:52Z","timestamp":1752532012000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3446979"}},"subtitle":["PyMGRIT: A Python Package for the Parallel-in-time Method MGRIT"],"short-title":[],"issued":{"date-parts":[[2021,4,20]]},"references-count":57,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2021,6,30]]}},"alternative-id":["10.1145\/3446979"],"URL":"https:\/\/doi.org\/10.1145\/3446979","relation":{},"ISSN":["0098-3500","1557-7295"],"issn-type":[{"value":"0098-3500","type":"print"},{"value":"1557-7295","type":"electronic"}],"subject":[],"published":{"date-parts":[[2021,4,20]]},"assertion":[{"value":"2020-07-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2021-01-01","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2021-04-20","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}