From 4248ce82ca73173cd3ecb5625ff0d85512cd5094 Mon Sep 17 00:00:00 2001 From: "S. Shiraiwa" Date: Sun, 20 Sep 2026 21:10:20 -0400 Subject: [PATCH 1/7] added fliteredsolver.i. changed Copyright year range to include 2026 --- LICENSE | 2 +- _build_system/edit_copyright.py | 2 +- mfem/_par/array.i | 2 +- mfem/_par/arrays_by_name.i | 2 +- mfem/_par/attribute_sets.i | 2 +- mfem/_par/auxiliary.i | 2 +- mfem/_par/bilinearform.i | 2 +- mfem/_par/bilininteg.i | 2 +- mfem/_par/blockmatrix.i | 2 +- mfem/_par/blockoperator.i | 2 +- mfem/_par/blockvector.i | 2 +- mfem/_par/bounds.i | 2 +- mfem/_par/coefficient.i | 2 +- mfem/_par/common_functions.i | 2 +- mfem/_par/communication.i | 2 +- mfem/_par/complex_fem.i | 2 +- mfem/_par/complex_operator.i | 2 +- mfem/_par/config.i | 2 +- mfem/_par/constraints.i | 2 +- mfem/_par/cpointers.i | 2 +- mfem/_par/datacollection.i | 2 +- mfem/_par/densemat.i | 2 +- mfem/_par/device.i | 2 +- mfem/_par/dgmassinv.i | 2 +- mfem/_par/dist_solver.i | 2 +- mfem/_par/doftrans.i | 2 +- mfem/_par/element.i | 2 +- mfem/_par/eltrans.i | 2 +- mfem/_par/enzyme.i | 2 +- mfem/_par/error.i | 2 +- mfem/_par/estimators.i | 2 +- mfem/_par/fe.i | 2 +- mfem/_par/fe_base.i | 2 +- mfem/_par/fe_coll.i | 2 +- mfem/_par/fe_fixed_order.i | 2 +- mfem/_par/fe_h1.i | 2 +- mfem/_par/fe_l2.i | 2 +- mfem/_par/fe_nd.i | 2 +- mfem/_par/fe_nurbs.i | 2 +- mfem/_par/fe_pos.i | 2 +- mfem/_par/fe_pyramid.i | 2 +- mfem/_par/fe_rt.i | 2 +- mfem/_par/fe_ser.i | 2 +- mfem/_par/fespace.i | 2 +- mfem/_par/fespacehierarchy.i | 2 +- mfem/_par/geom.i | 2 +- mfem/_par/globals.i | 2 +- mfem/_par/gridfunc.i | 2 +- mfem/_par/gslib.i | 2 +- mfem/_par/handle.i | 2 +- mfem/_par/hash.i | 2 +- mfem/_par/hexahedron.i | 2 +- mfem/_par/hybridization.i | 2 +- mfem/_par/hyperbolic.i | 2 +- mfem/_par/hypre.i | 2 +- mfem/_par/integrator.i | 2 +- mfem/_par/intrules.i | 2 +- mfem/_par/intrules_cut.i | 2 +- mfem/_par/io_stream.i | 2 +- mfem/_par/istream_typemap.i | 2 +- mfem/_par/linearform.i | 2 +- mfem/_par/lininteg.i | 2 +- mfem/_par/lor.i | 2 +- mfem/_par/matrix.i | 2 +- mfem/_par/mem_manager.i | 2 +- mfem/_par/mesh.i | 2 +- mfem/_par/mesh_operators.i | 2 +- mfem/_par/multigrid.i | 2 +- mfem/_par/multivector.i | 2 +- mfem/_par/navier_solver.i | 2 +- mfem/_par/ncmesh.i | 2 +- mfem/_par/nonlinearform.i | 2 +- mfem/_par/nonlininteg.i | 2 +- mfem/_par/ode.i | 2 +- mfem/_par/operators.i | 2 +- mfem/_par/ordering.i | 2 +- mfem/_par/ostream_typemap.i | 2 +- mfem/_par/particleset.i | 2 +- mfem/_par/particlevector.i | 2 +- mfem/_par/pbilinearform.i | 2 +- mfem/_par/pfespace.i | 2 +- mfem/_par/pgridfunc.i | 2 +- mfem/_par/plinearform.i | 2 +- mfem/_par/pmesh.i | 2 +- mfem/_par/pncmesh.i | 2 +- mfem/_par/pnonlinearform.i | 2 +- mfem/_par/point.i | 2 +- mfem/_par/prestriction.i | 2 +- mfem/_par/psubmesh.i | 2 +- mfem/_par/ptransfermap.i | 2 +- mfem/_par/pumi.i | 2 +- mfem/_par/qfunction.i | 2 +- mfem/_par/qspace.i | 2 +- mfem/_par/quadinterpolator.i | 2 +- mfem/_par/quadinterpolator_face.i | 2 +- mfem/_par/quadrilateral.i | 2 +- mfem/_par/restriction.i | 2 +- mfem/_par/schwarz.i | 2 +- mfem/_par/segment.i | 2 +- mfem/_par/sets.i | 2 +- mfem/_par/setup.py | 2 +- mfem/_par/sidredatacollection.i | 2 +- mfem/_par/socketstream.i | 2 +- mfem/_par/solvers.i | 2 +- mfem/_par/sort_pairs.i | 2 +- mfem/_par/sparsemat.i | 2 +- mfem/_par/sparsesmoothers.i | 2 +- mfem/_par/stable3d.i | 2 +- mfem/_par/staticcond.i | 2 +- mfem/_par/std_vectors.i | 2 +- mfem/_par/strumpack.i | 2 +- mfem/_par/submesh.i | 2 +- mfem/_par/symmat.i | 2 +- mfem/_par/table.i | 2 +- mfem/_par/tetrahedron.i | 2 +- mfem/_par/tmop.i | 2 +- mfem/_par/tmop_amr.i | 2 +- mfem/_par/tmop_tools.i | 2 +- mfem/_par/transfer.i | 2 +- mfem/_par/transfermap.i | 2 +- mfem/_par/triangle.i | 2 +- mfem/_par/vector.i | 2 +- mfem/_par/vertex.i | 2 +- mfem/_par/vtk.i | 2 +- mfem/_par/wedge.i | 2 +- mfem/_ser/array.i | 2 +- mfem/_ser/arrays_by_name.i | 2 +- mfem/_ser/attribute_sets.i | 2 +- mfem/_ser/bilinearform.i | 2 +- mfem/_ser/bilininteg.i | 2 +- mfem/_ser/blockmatrix.i | 2 +- mfem/_ser/blockoperator.i | 2 +- mfem/_ser/blockvector.i | 2 +- mfem/_ser/bounds.i | 2 +- mfem/_ser/coefficient.i | 2 +- mfem/_ser/common_functions.i | 2 +- mfem/_ser/complex_densemat.i | 2 +- mfem/_ser/complex_fem.i | 2 +- mfem/_ser/complex_operator.i | 2 +- mfem/_ser/complexstaticcond.i | 2 +- mfem/_ser/complexweakform.i | 2 +- mfem/_ser/config.i | 2 +- mfem/_ser/constraints.i | 2 +- mfem/_ser/cpointers.i | 2 +- mfem/_ser/datacollection.i | 2 +- mfem/_ser/densemat.i | 2 +- mfem/_ser/device.i | 2 +- mfem/_ser/dgmassinv.i | 2 +- mfem/_ser/doftrans.i | 2 +- mfem/_ser/element.i | 2 +- mfem/_ser/eltrans.i | 2 +- mfem/_ser/enzyme.i | 2 +- mfem/_ser/error.i | 2 +- mfem/_ser/estimators.i | 2 +- mfem/_ser/fe.i | 2 +- mfem/_ser/fe_base.i | 2 +- mfem/_ser/fe_coll.i | 2 +- mfem/_ser/fe_fixed_order.i | 2 +- mfem/_ser/fe_h1.i | 2 +- mfem/_ser/fe_l2.i | 2 +- mfem/_ser/fe_nd.i | 2 +- mfem/_ser/fe_nurbs.i | 2 +- mfem/_ser/fe_pos.i | 2 +- mfem/_ser/fe_pyramid.i | 2 +- mfem/_ser/fe_rt.i | 2 +- mfem/_ser/fe_ser.i | 2 +- mfem/_ser/fespace.i | 2 +- mfem/_ser/fespacehierarchy.i | 2 +- mfem/_ser/geom.i | 2 +- mfem/_ser/globals.i | 2 +- mfem/_ser/gridfunc.i | 2 +- mfem/_ser/gslib.i | 2 +- mfem/_ser/handle.i | 2 +- mfem/_ser/hash.i | 2 +- mfem/_ser/hexahedron.i | 2 +- mfem/_ser/hybridization.i | 2 +- mfem/_ser/hyperbolic.i | 2 +- mfem/_ser/integrator.i | 2 +- mfem/_ser/intrules.i | 2 +- mfem/_ser/intrules_cut.i | 2 +- mfem/_ser/io_stream.i | 2 +- mfem/_ser/istream_typemap.i | 2 +- mfem/_ser/linearform.i | 2 +- mfem/_ser/lininteg.i | 2 +- mfem/_ser/lor.i | 2 +- mfem/_ser/matrix.i | 2 +- mfem/_ser/mem_manager.i | 2 +- mfem/_ser/mesh.i | 2 +- mfem/_ser/mesh_operators.i | 2 +- mfem/_ser/multigrid.i | 2 +- mfem/_ser/multivector.i | 2 +- mfem/_ser/ncmesh.i | 2 +- mfem/_ser/nonlinearform.i | 2 +- mfem/_ser/nonlininteg.i | 2 +- mfem/_ser/ode.i | 2 +- mfem/_ser/operators.i | 2 +- mfem/_ser/ordering.i | 2 +- mfem/_ser/ostream_typemap.i | 2 +- mfem/_ser/particleset.i | 2 +- mfem/_ser/particlevector.i | 2 +- mfem/_ser/point.i | 2 +- mfem/_ser/qfunction.i | 2 +- mfem/_ser/qspace.i | 2 +- mfem/_ser/quadinterpolator.i | 2 +- mfem/_ser/quadinterpolator_face.i | 2 +- mfem/_ser/quadrilateral.i | 2 +- mfem/_ser/restriction.i | 2 +- mfem/_ser/segment.i | 2 +- mfem/_ser/sets.i | 2 +- mfem/_ser/setup.py | 2 +- mfem/_ser/sidredatacollection.i | 2 +- mfem/_ser/socketstream.i | 2 +- mfem/_ser/solvers.i | 2 +- mfem/_ser/sort_pairs.i | 2 +- mfem/_ser/sparsemat.i | 2 +- mfem/_ser/sparsesmoothers.i | 2 +- mfem/_ser/stable3d.i | 2 +- mfem/_ser/staticcond.i | 2 +- mfem/_ser/std_vectors.i | 2 +- mfem/_ser/submesh.i | 2 +- mfem/_ser/symmat.i | 2 +- mfem/_ser/table.i | 2 +- mfem/_ser/tetrahedron.i | 2 +- mfem/_ser/tmop.i | 2 +- mfem/_ser/tmop_amr.i | 2 +- mfem/_ser/tmop_tools.i | 2 +- mfem/_ser/transfer.i | 2 +- mfem/_ser/transfermap.i | 2 +- mfem/_ser/triangle.i | 2 +- mfem/_ser/vector.i | 2 +- mfem/_ser/vertex.i | 2 +- mfem/_ser/vtk.i | 2 +- mfem/_ser/wedge.i | 2 +- mfem/common/array_instantiation_macro.i | 2 +- mfem/common/array_listtuple_typemap.i | 2 +- mfem/common/coefficient_common.i | 2 +- mfem/common/complex_fem_ext.i | 2 +- mfem/common/const_doubleptr_typemap.i | 2 +- mfem/common/const_intptr_typemap.i | 2 +- mfem/common/cpointers.i | 2 +- mfem/common/data_size_typemap.i | 2 +- mfem/common/deprecation.i | 2 +- mfem/common/enum_class.i | 2 +- mfem/common/exception.i | 2 +- mfem/common/exception_director.i | 2 +- mfem/common/handle_template.i | 2 +- mfem/common/hypre_int.i | 2 +- mfem/common/ignore_common_functions.i | 2 +- mfem/common/io_stream_typemap.i | 2 +- mfem/common/kernel_dispatch.i | 2 +- mfem/common/memorytype_typemap.i | 2 +- mfem/common/mfem_config.i | 2 +- mfem/common/numba_coefficient.i | 2 +- mfem/common/numpy_int_typemap.i | 2 +- mfem/common/object_array_typemap.i | 2 +- mfem/common/operator_ptr_typemap.i | 2 +- mfem/common/typemap_macros.i | 2 +- mfem/par.py | 2 +- mfem/ser.py | 2 +- 259 files changed, 259 insertions(+), 259 deletions(-) diff --git a/LICENSE b/LICENSE index c81d382d..00e8998a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ BSD 3-Clause License -Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory +Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/_build_system/edit_copyright.py b/_build_system/edit_copyright.py index 8973d334..00d45ffe 100644 --- a/_build_system/edit_copyright.py +++ b/_build_system/edit_copyright.py @@ -1,7 +1,7 @@ import os txt1 = "//\n" -txt2 = "// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved.\n" +txt2 = "// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved.\n" def find_i_file(path): diff --git a/mfem/_par/array.i b/mfem/_par/array.i index c0100dd0..7ec477c7 100644 --- a/mfem/_par/array.i +++ b/mfem/_par/array.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") array %feature("autodoc", "1"); diff --git a/mfem/_par/arrays_by_name.i b/mfem/_par/arrays_by_name.i index b0a0f423..f36ca4be 100644 --- a/mfem/_par/arrays_by_name.i +++ b/mfem/_par/arrays_by_name.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") arrays_by_name %{ diff --git a/mfem/_par/attribute_sets.i b/mfem/_par/attribute_sets.i index dea9a60b..728883e0 100644 --- a/mfem/_par/attribute_sets.i +++ b/mfem/_par/attribute_sets.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") attribute_sets %{ diff --git a/mfem/_par/auxiliary.i b/mfem/_par/auxiliary.i index 17c932f5..ea7a8ea1 100644 --- a/mfem/_par/auxiliary.i +++ b/mfem/_par/auxiliary.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module (package="mfem._par") auxiliary diff --git a/mfem/_par/bilinearform.i b/mfem/_par/bilinearform.i index 489edf52..70e95392 100644 --- a/mfem/_par/bilinearform.i +++ b/mfem/_par/bilinearform.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par", directors="1") bilinearform %{ diff --git a/mfem/_par/bilininteg.i b/mfem/_par/bilininteg.i index c8f84dd4..810be58f 100644 --- a/mfem/_par/bilininteg.i +++ b/mfem/_par/bilininteg.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par", directors="1") bilininteg %{ diff --git a/mfem/_par/blockmatrix.i b/mfem/_par/blockmatrix.i index a92bc28f..7890d5d0 100644 --- a/mfem/_par/blockmatrix.i +++ b/mfem/_par/blockmatrix.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") blockmatrix diff --git a/mfem/_par/blockoperator.i b/mfem/_par/blockoperator.i index b0d822e2..24741ea6 100644 --- a/mfem/_par/blockoperator.i +++ b/mfem/_par/blockoperator.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") blockoperator diff --git a/mfem/_par/blockvector.i b/mfem/_par/blockvector.i index f1f84577..3bf09b8c 100644 --- a/mfem/_par/blockvector.i +++ b/mfem/_par/blockvector.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") blockvector diff --git a/mfem/_par/bounds.i b/mfem/_par/bounds.i index 826f7d36..3bfa6557 100644 --- a/mfem/_par/bounds.i +++ b/mfem/_par/bounds.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") bounds diff --git a/mfem/_par/coefficient.i b/mfem/_par/coefficient.i index 60fcdb2f..8c135a91 100644 --- a/mfem/_par/coefficient.i +++ b/mfem/_par/coefficient.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // /* coefficient.i diff --git a/mfem/_par/common_functions.i b/mfem/_par/common_functions.i index 007e615d..a75997dd 100644 --- a/mfem/_par/common_functions.i +++ b/mfem/_par/common_functions.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") common_functions diff --git a/mfem/_par/communication.i b/mfem/_par/communication.i index 2ea5198f..17371c52 100644 --- a/mfem/_par/communication.i +++ b/mfem/_par/communication.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") communication %feature("autodoc", "1"); diff --git a/mfem/_par/complex_fem.i b/mfem/_par/complex_fem.i index 9b7a5521..1116b4f5 100644 --- a/mfem/_par/complex_fem.i +++ b/mfem/_par/complex_fem.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // /* diff --git a/mfem/_par/complex_operator.i b/mfem/_par/complex_operator.i index e6b25321..2bffbbde 100644 --- a/mfem/_par/complex_operator.i +++ b/mfem/_par/complex_operator.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // /* diff --git a/mfem/_par/config.i b/mfem/_par/config.i index 76d2b3af..51b9fede 100644 --- a/mfem/_par/config.i +++ b/mfem/_par/config.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") config diff --git a/mfem/_par/constraints.i b/mfem/_par/constraints.i index 51991558..a8ff2e60 100644 --- a/mfem/_par/constraints.i +++ b/mfem/_par/constraints.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // /* diff --git a/mfem/_par/cpointers.i b/mfem/_par/cpointers.i index 73af49d2..9e8a4377 100644 --- a/mfem/_par/cpointers.i +++ b/mfem/_par/cpointers.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") cpointers diff --git a/mfem/_par/datacollection.i b/mfem/_par/datacollection.i index 81333782..3f2ecd82 100644 --- a/mfem/_par/datacollection.i +++ b/mfem/_par/datacollection.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") datacollection %{ diff --git a/mfem/_par/densemat.i b/mfem/_par/densemat.i index aacf9f84..f9cbefcb 100644 --- a/mfem/_par/densemat.i +++ b/mfem/_par/densemat.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // /* diff --git a/mfem/_par/device.i b/mfem/_par/device.i index c31cb7ec..539b0bdb 100644 --- a/mfem/_par/device.i +++ b/mfem/_par/device.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") device %{ diff --git a/mfem/_par/dgmassinv.i b/mfem/_par/dgmassinv.i index e98b8882..78c781d3 100644 --- a/mfem/_par/dgmassinv.i +++ b/mfem/_par/dgmassinv.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") dgmassinv diff --git a/mfem/_par/dist_solver.i b/mfem/_par/dist_solver.i index 97b28e46..bf394b40 100644 --- a/mfem/_par/dist_solver.i +++ b/mfem/_par/dist_solver.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") dist_solver %{ diff --git a/mfem/_par/doftrans.i b/mfem/_par/doftrans.i index 1c0033ef..bfe5c753 100644 --- a/mfem/_par/doftrans.i +++ b/mfem/_par/doftrans.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") doftrans %{ diff --git a/mfem/_par/element.i b/mfem/_par/element.i index 04653b04..d3d51167 100644 --- a/mfem/_par/element.i +++ b/mfem/_par/element.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") element diff --git a/mfem/_par/eltrans.i b/mfem/_par/eltrans.i index 16466889..cb44032a 100644 --- a/mfem/_par/eltrans.i +++ b/mfem/_par/eltrans.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module (package="mfem._par") eltrans diff --git a/mfem/_par/enzyme.i b/mfem/_par/enzyme.i index 662886bf..90944232 100644 --- a/mfem/_par/enzyme.i +++ b/mfem/_par/enzyme.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") enzyme %{ diff --git a/mfem/_par/error.i b/mfem/_par/error.i index ed5e862f..d6b6c9f9 100644 --- a/mfem/_par/error.i +++ b/mfem/_par/error.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") error %{ diff --git a/mfem/_par/estimators.i b/mfem/_par/estimators.i index 3b70200a..27914a23 100644 --- a/mfem/_par/estimators.i +++ b/mfem/_par/estimators.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") estimators %{ diff --git a/mfem/_par/fe.i b/mfem/_par/fe.i index 378dc6b4..23c10d83 100644 --- a/mfem/_par/fe.i +++ b/mfem/_par/fe.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module (package="mfem._par") fe diff --git a/mfem/_par/fe_base.i b/mfem/_par/fe_base.i index 11603df8..1b63075c 100644 --- a/mfem/_par/fe_base.i +++ b/mfem/_par/fe_base.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") fe_base %{ diff --git a/mfem/_par/fe_coll.i b/mfem/_par/fe_coll.i index dbfc27bb..e925d368 100644 --- a/mfem/_par/fe_coll.i +++ b/mfem/_par/fe_coll.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") fe_coll %{ diff --git a/mfem/_par/fe_fixed_order.i b/mfem/_par/fe_fixed_order.i index 201a6ab6..c4c38406 100644 --- a/mfem/_par/fe_fixed_order.i +++ b/mfem/_par/fe_fixed_order.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") fe_fixed_order %{ diff --git a/mfem/_par/fe_h1.i b/mfem/_par/fe_h1.i index f6cc62eb..6e5a0b73 100644 --- a/mfem/_par/fe_h1.i +++ b/mfem/_par/fe_h1.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") fe_h1 %{ diff --git a/mfem/_par/fe_l2.i b/mfem/_par/fe_l2.i index 1d32ebcf..70551740 100644 --- a/mfem/_par/fe_l2.i +++ b/mfem/_par/fe_l2.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") fe_l2 %{ diff --git a/mfem/_par/fe_nd.i b/mfem/_par/fe_nd.i index 55d6ee16..e4038097 100644 --- a/mfem/_par/fe_nd.i +++ b/mfem/_par/fe_nd.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") fe_nd %{ diff --git a/mfem/_par/fe_nurbs.i b/mfem/_par/fe_nurbs.i index 711d80a5..e77d7815 100644 --- a/mfem/_par/fe_nurbs.i +++ b/mfem/_par/fe_nurbs.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") fe_nurbs %{ diff --git a/mfem/_par/fe_pos.i b/mfem/_par/fe_pos.i index 79b8019f..b7104b1a 100644 --- a/mfem/_par/fe_pos.i +++ b/mfem/_par/fe_pos.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") fe_pos %{ diff --git a/mfem/_par/fe_pyramid.i b/mfem/_par/fe_pyramid.i index 7a7864e5..b54e7360 100644 --- a/mfem/_par/fe_pyramid.i +++ b/mfem/_par/fe_pyramid.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") fe_pyramid %{ diff --git a/mfem/_par/fe_rt.i b/mfem/_par/fe_rt.i index 947e5eed..2b9ba815 100644 --- a/mfem/_par/fe_rt.i +++ b/mfem/_par/fe_rt.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") fe_rt %{ diff --git a/mfem/_par/fe_ser.i b/mfem/_par/fe_ser.i index dc1921a7..2bcee7ff 100644 --- a/mfem/_par/fe_ser.i +++ b/mfem/_par/fe_ser.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") fe_ser %{ diff --git a/mfem/_par/fespace.i b/mfem/_par/fespace.i index 91cc1e4e..a29b812e 100644 --- a/mfem/_par/fespace.i +++ b/mfem/_par/fespace.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") fespace diff --git a/mfem/_par/fespacehierarchy.i b/mfem/_par/fespacehierarchy.i index bb296d1b..9cf8ea33 100644 --- a/mfem/_par/fespacehierarchy.i +++ b/mfem/_par/fespacehierarchy.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // /* diff --git a/mfem/_par/geom.i b/mfem/_par/geom.i index 195d0632..edd8083f 100644 --- a/mfem/_par/geom.i +++ b/mfem/_par/geom.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") geom %{ diff --git a/mfem/_par/globals.i b/mfem/_par/globals.i index 0730877c..0de357ed 100644 --- a/mfem/_par/globals.i +++ b/mfem/_par/globals.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") globals %{ diff --git a/mfem/_par/gridfunc.i b/mfem/_par/gridfunc.i index 68e531ee..cc8aec6b 100644 --- a/mfem/_par/gridfunc.i +++ b/mfem/_par/gridfunc.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par", directors="0") gridfunc %{ diff --git a/mfem/_par/gslib.i b/mfem/_par/gslib.i index 99c3f5a8..c432f88e 100644 --- a/mfem/_par/gslib.i +++ b/mfem/_par/gslib.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") gslib %{ diff --git a/mfem/_par/handle.i b/mfem/_par/handle.i index 2d8af480..3d36e1c0 100644 --- a/mfem/_par/handle.i +++ b/mfem/_par/handle.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") handle %feature("autodoc", "1"); diff --git a/mfem/_par/hash.i b/mfem/_par/hash.i index 0ab56209..7c692cfd 100644 --- a/mfem/_par/hash.i +++ b/mfem/_par/hash.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") hash diff --git a/mfem/_par/hexahedron.i b/mfem/_par/hexahedron.i index 1ec495ce..0a0e7958 100644 --- a/mfem/_par/hexahedron.i +++ b/mfem/_par/hexahedron.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") hexahedron %{ diff --git a/mfem/_par/hybridization.i b/mfem/_par/hybridization.i index 084e2c2f..2fd55404 100644 --- a/mfem/_par/hybridization.i +++ b/mfem/_par/hybridization.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") hybridization %{ diff --git a/mfem/_par/hyperbolic.i b/mfem/_par/hyperbolic.i index 7c63573e..f9b5b911 100644 --- a/mfem/_par/hyperbolic.i +++ b/mfem/_par/hyperbolic.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") hyperbolic %feature("autodoc", "1"); diff --git a/mfem/_par/hypre.i b/mfem/_par/hypre.i index 8915b484..b2163c4e 100644 --- a/mfem/_par/hypre.i +++ b/mfem/_par/hypre.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") hypre %feature("autodoc", "1"); diff --git a/mfem/_par/integrator.i b/mfem/_par/integrator.i index 9c629464..69559a36 100644 --- a/mfem/_par/integrator.i +++ b/mfem/_par/integrator.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") integrator diff --git a/mfem/_par/intrules.i b/mfem/_par/intrules.i index 9638dc0f..cfd1605b 100644 --- a/mfem/_par/intrules.i +++ b/mfem/_par/intrules.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module (package="mfem._par") intrules diff --git a/mfem/_par/intrules_cut.i b/mfem/_par/intrules_cut.i index f1a062ab..d70626fb 100644 --- a/mfem/_par/intrules_cut.i +++ b/mfem/_par/intrules_cut.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module (package="mfem._par", director="1") intrules_cut diff --git a/mfem/_par/io_stream.i b/mfem/_par/io_stream.i index 36fb6ff3..9b3245bd 100644 --- a/mfem/_par/io_stream.i +++ b/mfem/_par/io_stream.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") io_stream diff --git a/mfem/_par/istream_typemap.i b/mfem/_par/istream_typemap.i index dfd7c635..5c2f39a4 100644 --- a/mfem/_par/istream_typemap.i +++ b/mfem/_par/istream_typemap.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") istream_typemap diff --git a/mfem/_par/linearform.i b/mfem/_par/linearform.i index 7e11d02c..406633d9 100644 --- a/mfem/_par/linearform.i +++ b/mfem/_par/linearform.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par", directors="1") linearform %{ diff --git a/mfem/_par/lininteg.i b/mfem/_par/lininteg.i index 44e71055..bfb80596 100644 --- a/mfem/_par/lininteg.i +++ b/mfem/_par/lininteg.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par", directors="1") lininteg %{ diff --git a/mfem/_par/lor.i b/mfem/_par/lor.i index 09ff8efc..ba6a9de6 100644 --- a/mfem/_par/lor.i +++ b/mfem/_par/lor.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") lor diff --git a/mfem/_par/matrix.i b/mfem/_par/matrix.i index 5b7ad9ac..08be1c36 100644 --- a/mfem/_par/matrix.i +++ b/mfem/_par/matrix.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") matrix diff --git a/mfem/_par/mem_manager.i b/mfem/_par/mem_manager.i index 331bbfec..ee03fa18 100644 --- a/mfem/_par/mem_manager.i +++ b/mfem/_par/mem_manager.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") mem_manager %{ diff --git a/mfem/_par/mesh.i b/mfem/_par/mesh.i index d99dc281..c714806d 100644 --- a/mfem/_par/mesh.i +++ b/mfem/_par/mesh.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") mesh diff --git a/mfem/_par/mesh_operators.i b/mfem/_par/mesh_operators.i index 3ef1b3f2..fac00a11 100644 --- a/mfem/_par/mesh_operators.i +++ b/mfem/_par/mesh_operators.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") mesh_operators diff --git a/mfem/_par/multigrid.i b/mfem/_par/multigrid.i index 1dd5fba7..005f48bf 100644 --- a/mfem/_par/multigrid.i +++ b/mfem/_par/multigrid.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // /* diff --git a/mfem/_par/multivector.i b/mfem/_par/multivector.i index ee1cc970..ae5083f4 100644 --- a/mfem/_par/multivector.i +++ b/mfem/_par/multivector.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") multivector diff --git a/mfem/_par/navier_solver.i b/mfem/_par/navier_solver.i index 10a7afcf..87bc3391 100644 --- a/mfem/_par/navier_solver.i +++ b/mfem/_par/navier_solver.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") navier_solver %{ diff --git a/mfem/_par/ncmesh.i b/mfem/_par/ncmesh.i index dce4c7e3..beaf4c00 100644 --- a/mfem/_par/ncmesh.i +++ b/mfem/_par/ncmesh.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") ncmesh diff --git a/mfem/_par/nonlinearform.i b/mfem/_par/nonlinearform.i index 4e523291..ddf7e0d8 100644 --- a/mfem/_par/nonlinearform.i +++ b/mfem/_par/nonlinearform.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") nonlinearform %{ diff --git a/mfem/_par/nonlininteg.i b/mfem/_par/nonlininteg.i index 7ec84573..88f8e4f7 100644 --- a/mfem/_par/nonlininteg.i +++ b/mfem/_par/nonlininteg.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par", directors="1") nonlininteg %{ diff --git a/mfem/_par/ode.i b/mfem/_par/ode.i index 9edc925e..d7b34a58 100644 --- a/mfem/_par/ode.i +++ b/mfem/_par/ode.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") ode %{ diff --git a/mfem/_par/operators.i b/mfem/_par/operators.i index a9516293..fbb0a9f3 100644 --- a/mfem/_par/operators.i +++ b/mfem/_par/operators.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module (package="mfem._par", directors="1") operators diff --git a/mfem/_par/ordering.i b/mfem/_par/ordering.i index 0267785b..b8b54d7d 100644 --- a/mfem/_par/ordering.i +++ b/mfem/_par/ordering.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") ordering %{ diff --git a/mfem/_par/ostream_typemap.i b/mfem/_par/ostream_typemap.i index 4dc64c2e..05d1426e 100644 --- a/mfem/_par/ostream_typemap.i +++ b/mfem/_par/ostream_typemap.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") ostream_typemap diff --git a/mfem/_par/particleset.i b/mfem/_par/particleset.i index 57fc0a46..65ea9c2f 100644 --- a/mfem/_par/particleset.i +++ b/mfem/_par/particleset.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") particleset diff --git a/mfem/_par/particlevector.i b/mfem/_par/particlevector.i index 4d47770a..807c22f5 100644 --- a/mfem/_par/particlevector.i +++ b/mfem/_par/particlevector.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") particlevector diff --git a/mfem/_par/pbilinearform.i b/mfem/_par/pbilinearform.i index 18d96832..ea7e7c42 100644 --- a/mfem/_par/pbilinearform.i +++ b/mfem/_par/pbilinearform.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") pbilinearform %{ diff --git a/mfem/_par/pfespace.i b/mfem/_par/pfespace.i index 58853eb6..3ebac402 100644 --- a/mfem/_par/pfespace.i +++ b/mfem/_par/pfespace.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") pfespace %{ diff --git a/mfem/_par/pgridfunc.i b/mfem/_par/pgridfunc.i index f46ef51c..e0dba15c 100644 --- a/mfem/_par/pgridfunc.i +++ b/mfem/_par/pgridfunc.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") pgridfunc diff --git a/mfem/_par/plinearform.i b/mfem/_par/plinearform.i index ae85322f..1b3e8c78 100644 --- a/mfem/_par/plinearform.i +++ b/mfem/_par/plinearform.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") plinearform %{ diff --git a/mfem/_par/pmesh.i b/mfem/_par/pmesh.i index 4b96831a..41b2f894 100644 --- a/mfem/_par/pmesh.i +++ b/mfem/_par/pmesh.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") pmesh diff --git a/mfem/_par/pncmesh.i b/mfem/_par/pncmesh.i index b3162334..ed238643 100644 --- a/mfem/_par/pncmesh.i +++ b/mfem/_par/pncmesh.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") pncmesh diff --git a/mfem/_par/pnonlinearform.i b/mfem/_par/pnonlinearform.i index d0728e99..1a4cabcc 100644 --- a/mfem/_par/pnonlinearform.i +++ b/mfem/_par/pnonlinearform.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") pnonlinearform %{ diff --git a/mfem/_par/point.i b/mfem/_par/point.i index c3508d29..49b6eaba 100644 --- a/mfem/_par/point.i +++ b/mfem/_par/point.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") point diff --git a/mfem/_par/prestriction.i b/mfem/_par/prestriction.i index 5ea34529..893b4ac8 100644 --- a/mfem/_par/prestriction.i +++ b/mfem/_par/prestriction.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") prestriction %{ diff --git a/mfem/_par/psubmesh.i b/mfem/_par/psubmesh.i index d2ba9153..bcb4bb62 100644 --- a/mfem/_par/psubmesh.i +++ b/mfem/_par/psubmesh.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") psubmesh diff --git a/mfem/_par/ptransfermap.i b/mfem/_par/ptransfermap.i index 96c10301..e5e0d274 100644 --- a/mfem/_par/ptransfermap.i +++ b/mfem/_par/ptransfermap.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") ptransfermap diff --git a/mfem/_par/pumi.i b/mfem/_par/pumi.i index 639a056e..5427c3a8 100644 --- a/mfem/_par/pumi.i +++ b/mfem/_par/pumi.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par", directors="0") pumi diff --git a/mfem/_par/qfunction.i b/mfem/_par/qfunction.i index 5614dbf1..cfc293fd 100644 --- a/mfem/_par/qfunction.i +++ b/mfem/_par/qfunction.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") qfunction %{ diff --git a/mfem/_par/qspace.i b/mfem/_par/qspace.i index d5f6a2de..23535c8a 100644 --- a/mfem/_par/qspace.i +++ b/mfem/_par/qspace.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") qspace %{ diff --git a/mfem/_par/quadinterpolator.i b/mfem/_par/quadinterpolator.i index 7e1708bb..38feb917 100644 --- a/mfem/_par/quadinterpolator.i +++ b/mfem/_par/quadinterpolator.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") quadinterpolator %{ diff --git a/mfem/_par/quadinterpolator_face.i b/mfem/_par/quadinterpolator_face.i index 1da8021d..9db4e896 100644 --- a/mfem/_par/quadinterpolator_face.i +++ b/mfem/_par/quadinterpolator_face.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") quadinterpolator_face %{ diff --git a/mfem/_par/quadrilateral.i b/mfem/_par/quadrilateral.i index 502da877..fda052b3 100644 --- a/mfem/_par/quadrilateral.i +++ b/mfem/_par/quadrilateral.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") quadrilateral %{ diff --git a/mfem/_par/restriction.i b/mfem/_par/restriction.i index 9f643606..b26b59a7 100644 --- a/mfem/_par/restriction.i +++ b/mfem/_par/restriction.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") restriction %{ diff --git a/mfem/_par/schwarz.i b/mfem/_par/schwarz.i index 1d13ed4a..38285259 100644 --- a/mfem/_par/schwarz.i +++ b/mfem/_par/schwarz.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") schwarz %{ diff --git a/mfem/_par/segment.i b/mfem/_par/segment.i index 030de08a..97f42dba 100644 --- a/mfem/_par/segment.i +++ b/mfem/_par/segment.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") segment %{ diff --git a/mfem/_par/sets.i b/mfem/_par/sets.i index e1ddb59b..32e30153 100644 --- a/mfem/_par/sets.i +++ b/mfem/_par/sets.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") sets %{ diff --git a/mfem/_par/setup.py b/mfem/_par/setup.py index 208cd431..979fde56 100644 --- a/mfem/_par/setup.py +++ b/mfem/_par/setup.py @@ -133,7 +133,7 @@ def get_extensions(): "hyperbolic", "complex_densemat", "bounds", "integrator", "ordering", "dpg", "particleset", "particlevector", "fe_pyramid", - "multivector", "dgmassinv", "lor"] + "multivector", "dgmassinv", "lor", "filteredsolver"] if mpiinc != '': include_dirs.append(mpiinc) diff --git a/mfem/_par/sidredatacollection.i b/mfem/_par/sidredatacollection.i index f57a473b..80f8d218 100644 --- a/mfem/_par/sidredatacollection.i +++ b/mfem/_par/sidredatacollection.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") sidredatacollection %{ diff --git a/mfem/_par/socketstream.i b/mfem/_par/socketstream.i index 7f62a90b..76e78e96 100644 --- a/mfem/_par/socketstream.i +++ b/mfem/_par/socketstream.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") socketstream %feature("autodoc", "1"); diff --git a/mfem/_par/solvers.i b/mfem/_par/solvers.i index 30a9a936..974d3df5 100644 --- a/mfem/_par/solvers.i +++ b/mfem/_par/solvers.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par", directors="1") solvers %{ diff --git a/mfem/_par/sort_pairs.i b/mfem/_par/sort_pairs.i index dc74e70c..aa157d12 100644 --- a/mfem/_par/sort_pairs.i +++ b/mfem/_par/sort_pairs.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") sort_pairs %{ diff --git a/mfem/_par/sparsemat.i b/mfem/_par/sparsemat.i index 93393397..9453971b 100644 --- a/mfem/_par/sparsemat.i +++ b/mfem/_par/sparsemat.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module (package="mfem._par") sparsemat diff --git a/mfem/_par/sparsesmoothers.i b/mfem/_par/sparsesmoothers.i index 3f5443a5..8ea00152 100644 --- a/mfem/_par/sparsesmoothers.i +++ b/mfem/_par/sparsesmoothers.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") sparsesmoothers %{ diff --git a/mfem/_par/stable3d.i b/mfem/_par/stable3d.i index 4216f67d..8c7a60ec 100644 --- a/mfem/_par/stable3d.i +++ b/mfem/_par/stable3d.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") stable3d diff --git a/mfem/_par/staticcond.i b/mfem/_par/staticcond.i index 7555b59d..2299a8e6 100644 --- a/mfem/_par/staticcond.i +++ b/mfem/_par/staticcond.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") staticcond %{ diff --git a/mfem/_par/std_vectors.i b/mfem/_par/std_vectors.i index 5d8e74fa..7d99de86 100644 --- a/mfem/_par/std_vectors.i +++ b/mfem/_par/std_vectors.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") std_vectors // diff --git a/mfem/_par/strumpack.i b/mfem/_par/strumpack.i index e8f0d8c9..01e8b2b9 100644 --- a/mfem/_par/strumpack.i +++ b/mfem/_par/strumpack.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par", directors="0") strumpack %feature("autodoc", "1"); diff --git a/mfem/_par/submesh.i b/mfem/_par/submesh.i index e228f14f..27061fd2 100644 --- a/mfem/_par/submesh.i +++ b/mfem/_par/submesh.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") submesh diff --git a/mfem/_par/symmat.i b/mfem/_par/symmat.i index 1fc12c77..88e9ae74 100644 --- a/mfem/_par/symmat.i +++ b/mfem/_par/symmat.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") symmat %{ diff --git a/mfem/_par/table.i b/mfem/_par/table.i index 12d823a9..7f55a591 100644 --- a/mfem/_par/table.i +++ b/mfem/_par/table.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") table diff --git a/mfem/_par/tetrahedron.i b/mfem/_par/tetrahedron.i index 4fd48252..263170db 100644 --- a/mfem/_par/tetrahedron.i +++ b/mfem/_par/tetrahedron.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") tetrahedron %{ diff --git a/mfem/_par/tmop.i b/mfem/_par/tmop.i index e47f390e..74584a60 100644 --- a/mfem/_par/tmop.i +++ b/mfem/_par/tmop.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par", directors="1") tmop %{ diff --git a/mfem/_par/tmop_amr.i b/mfem/_par/tmop_amr.i index 2a603ffb..2065bdad 100644 --- a/mfem/_par/tmop_amr.i +++ b/mfem/_par/tmop_amr.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par", directors="1") tmop_amr %{ diff --git a/mfem/_par/tmop_tools.i b/mfem/_par/tmop_tools.i index 518423f5..40eb90a1 100644 --- a/mfem/_par/tmop_tools.i +++ b/mfem/_par/tmop_tools.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par", directors="1") tmop_tools %{ diff --git a/mfem/_par/transfer.i b/mfem/_par/transfer.i index 5cfc9788..9b5fc717 100644 --- a/mfem/_par/transfer.i +++ b/mfem/_par/transfer.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") transfer diff --git a/mfem/_par/transfermap.i b/mfem/_par/transfermap.i index 4414e21d..f5835346 100644 --- a/mfem/_par/transfermap.i +++ b/mfem/_par/transfermap.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") transfermap diff --git a/mfem/_par/triangle.i b/mfem/_par/triangle.i index 84956f36..2276e26a 100644 --- a/mfem/_par/triangle.i +++ b/mfem/_par/triangle.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") triangle %{ diff --git a/mfem/_par/vector.i b/mfem/_par/vector.i index 45006b53..4fc2f425 100644 --- a/mfem/_par/vector.i +++ b/mfem/_par/vector.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // /* diff --git a/mfem/_par/vertex.i b/mfem/_par/vertex.i index 916a3a1d..4fc484a5 100644 --- a/mfem/_par/vertex.i +++ b/mfem/_par/vertex.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") vertex diff --git a/mfem/_par/vtk.i b/mfem/_par/vtk.i index 4414b5f4..3c8443e2 100644 --- a/mfem/_par/vtk.i +++ b/mfem/_par/vtk.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") vtk %{ diff --git a/mfem/_par/wedge.i b/mfem/_par/wedge.i index 5104ba09..51711a22 100644 --- a/mfem/_par/wedge.i +++ b/mfem/_par/wedge.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._par") wedge diff --git a/mfem/_ser/array.i b/mfem/_ser/array.i index fd9d363a..ce077d3b 100644 --- a/mfem/_ser/array.i +++ b/mfem/_ser/array.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") array %feature("autodoc", "1"); diff --git a/mfem/_ser/arrays_by_name.i b/mfem/_ser/arrays_by_name.i index be72b60e..b46c47ae 100644 --- a/mfem/_ser/arrays_by_name.i +++ b/mfem/_ser/arrays_by_name.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") arrays_by_name %{ diff --git a/mfem/_ser/attribute_sets.i b/mfem/_ser/attribute_sets.i index e92492b6..e424f6fc 100644 --- a/mfem/_ser/attribute_sets.i +++ b/mfem/_ser/attribute_sets.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") attribute_sets %feature("autodoc", "1"); diff --git a/mfem/_ser/bilinearform.i b/mfem/_ser/bilinearform.i index 77eb393b..85652010 100644 --- a/mfem/_ser/bilinearform.i +++ b/mfem/_ser/bilinearform.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser", directors="1") bilinearform %{ diff --git a/mfem/_ser/bilininteg.i b/mfem/_ser/bilininteg.i index b4bdae20..cb370b47 100644 --- a/mfem/_ser/bilininteg.i +++ b/mfem/_ser/bilininteg.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser", directors="1") bilininteg %{ diff --git a/mfem/_ser/blockmatrix.i b/mfem/_ser/blockmatrix.i index 23685b59..8f34d7bd 100644 --- a/mfem/_ser/blockmatrix.i +++ b/mfem/_ser/blockmatrix.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") blockmatrix diff --git a/mfem/_ser/blockoperator.i b/mfem/_ser/blockoperator.i index e1a7b20b..4b988e84 100644 --- a/mfem/_ser/blockoperator.i +++ b/mfem/_ser/blockoperator.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") blockoperator diff --git a/mfem/_ser/blockvector.i b/mfem/_ser/blockvector.i index 6fd07915..8fd0d870 100644 --- a/mfem/_ser/blockvector.i +++ b/mfem/_ser/blockvector.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") blockvector diff --git a/mfem/_ser/bounds.i b/mfem/_ser/bounds.i index b299d4b6..e089bb15 100644 --- a/mfem/_ser/bounds.i +++ b/mfem/_ser/bounds.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") bounds diff --git a/mfem/_ser/coefficient.i b/mfem/_ser/coefficient.i index 7a20bffd..32da03fb 100644 --- a/mfem/_ser/coefficient.i +++ b/mfem/_ser/coefficient.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // /* coefficient.i diff --git a/mfem/_ser/common_functions.i b/mfem/_ser/common_functions.i index 3f5be12b..43f83945 100644 --- a/mfem/_ser/common_functions.i +++ b/mfem/_ser/common_functions.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") common_functions diff --git a/mfem/_ser/complex_densemat.i b/mfem/_ser/complex_densemat.i index 0b7c816b..fe2bccb4 100644 --- a/mfem/_ser/complex_densemat.i +++ b/mfem/_ser/complex_densemat.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") complex_densemat %{ diff --git a/mfem/_ser/complex_fem.i b/mfem/_ser/complex_fem.i index 9284c27f..7c6e7930 100644 --- a/mfem/_ser/complex_fem.i +++ b/mfem/_ser/complex_fem.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // /* diff --git a/mfem/_ser/complex_operator.i b/mfem/_ser/complex_operator.i index aa82df24..abefbfef 100644 --- a/mfem/_ser/complex_operator.i +++ b/mfem/_ser/complex_operator.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // /* diff --git a/mfem/_ser/complexstaticcond.i b/mfem/_ser/complexstaticcond.i index 4294c6cc..2ce1bbab 100644 --- a/mfem/_ser/complexstaticcond.i +++ b/mfem/_ser/complexstaticcond.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") complexstaticcond %{ diff --git a/mfem/_ser/complexweakform.i b/mfem/_ser/complexweakform.i index 4f259a18..4b3691fc 100644 --- a/mfem/_ser/complexweakform.i +++ b/mfem/_ser/complexweakform.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") complexweakform %{ diff --git a/mfem/_ser/config.i b/mfem/_ser/config.i index 02863e8a..4ca04be4 100644 --- a/mfem/_ser/config.i +++ b/mfem/_ser/config.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") config diff --git a/mfem/_ser/constraints.i b/mfem/_ser/constraints.i index 5a708f6d..7f59b8f1 100644 --- a/mfem/_ser/constraints.i +++ b/mfem/_ser/constraints.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // /* diff --git a/mfem/_ser/cpointers.i b/mfem/_ser/cpointers.i index 60ae623d..97b7ad55 100644 --- a/mfem/_ser/cpointers.i +++ b/mfem/_ser/cpointers.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") cpointers diff --git a/mfem/_ser/datacollection.i b/mfem/_ser/datacollection.i index 32217835..72ef5464 100644 --- a/mfem/_ser/datacollection.i +++ b/mfem/_ser/datacollection.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") datacollection %{ diff --git a/mfem/_ser/densemat.i b/mfem/_ser/densemat.i index dc80969c..d96058e6 100644 --- a/mfem/_ser/densemat.i +++ b/mfem/_ser/densemat.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // /* diff --git a/mfem/_ser/device.i b/mfem/_ser/device.i index f0790eb9..275ec0fa 100644 --- a/mfem/_ser/device.i +++ b/mfem/_ser/device.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") device %{ diff --git a/mfem/_ser/dgmassinv.i b/mfem/_ser/dgmassinv.i index 2a154e8d..2cf33d28 100644 --- a/mfem/_ser/dgmassinv.i +++ b/mfem/_ser/dgmassinv.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") dgmassinv diff --git a/mfem/_ser/doftrans.i b/mfem/_ser/doftrans.i index cb457bd2..bc7e5412 100644 --- a/mfem/_ser/doftrans.i +++ b/mfem/_ser/doftrans.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") doftrans %{ diff --git a/mfem/_ser/element.i b/mfem/_ser/element.i index f5bd9f3d..3d55e653 100644 --- a/mfem/_ser/element.i +++ b/mfem/_ser/element.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") element diff --git a/mfem/_ser/eltrans.i b/mfem/_ser/eltrans.i index 827be181..f87ef680 100644 --- a/mfem/_ser/eltrans.i +++ b/mfem/_ser/eltrans.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module (package="mfem._ser") eltrans diff --git a/mfem/_ser/enzyme.i b/mfem/_ser/enzyme.i index 0b2d9cc9..97904465 100644 --- a/mfem/_ser/enzyme.i +++ b/mfem/_ser/enzyme.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") enzyme %{ diff --git a/mfem/_ser/error.i b/mfem/_ser/error.i index 82190d47..238a51ce 100644 --- a/mfem/_ser/error.i +++ b/mfem/_ser/error.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") error %{ diff --git a/mfem/_ser/estimators.i b/mfem/_ser/estimators.i index 4eb29d64..1511f922 100644 --- a/mfem/_ser/estimators.i +++ b/mfem/_ser/estimators.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") estimators diff --git a/mfem/_ser/fe.i b/mfem/_ser/fe.i index a60432c8..1ea9c84b 100644 --- a/mfem/_ser/fe.i +++ b/mfem/_ser/fe.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") fe diff --git a/mfem/_ser/fe_base.i b/mfem/_ser/fe_base.i index 610004b1..2d032e01 100644 --- a/mfem/_ser/fe_base.i +++ b/mfem/_ser/fe_base.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") fe_base %{ diff --git a/mfem/_ser/fe_coll.i b/mfem/_ser/fe_coll.i index 69037c80..c6374445 100644 --- a/mfem/_ser/fe_coll.i +++ b/mfem/_ser/fe_coll.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") fe_coll %{ diff --git a/mfem/_ser/fe_fixed_order.i b/mfem/_ser/fe_fixed_order.i index eb9283b9..785f4614 100644 --- a/mfem/_ser/fe_fixed_order.i +++ b/mfem/_ser/fe_fixed_order.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") fe_fixed_order %{ diff --git a/mfem/_ser/fe_h1.i b/mfem/_ser/fe_h1.i index 7da81062..f878b672 100644 --- a/mfem/_ser/fe_h1.i +++ b/mfem/_ser/fe_h1.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") fe_h1 %{ diff --git a/mfem/_ser/fe_l2.i b/mfem/_ser/fe_l2.i index 6fbdc82c..6b547823 100644 --- a/mfem/_ser/fe_l2.i +++ b/mfem/_ser/fe_l2.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") fe_l2 %{ diff --git a/mfem/_ser/fe_nd.i b/mfem/_ser/fe_nd.i index 60e96dab..4f7e33ed 100644 --- a/mfem/_ser/fe_nd.i +++ b/mfem/_ser/fe_nd.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") fe_nd %{ diff --git a/mfem/_ser/fe_nurbs.i b/mfem/_ser/fe_nurbs.i index 67a727f8..316a6b7d 100644 --- a/mfem/_ser/fe_nurbs.i +++ b/mfem/_ser/fe_nurbs.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") fe_nurbs %{ diff --git a/mfem/_ser/fe_pos.i b/mfem/_ser/fe_pos.i index 1cd7644b..5e4aedf9 100644 --- a/mfem/_ser/fe_pos.i +++ b/mfem/_ser/fe_pos.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") fe_pos %{ diff --git a/mfem/_ser/fe_pyramid.i b/mfem/_ser/fe_pyramid.i index 2c4f100c..80b6e8af 100644 --- a/mfem/_ser/fe_pyramid.i +++ b/mfem/_ser/fe_pyramid.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") fe_pyramid %{ diff --git a/mfem/_ser/fe_rt.i b/mfem/_ser/fe_rt.i index 6bfd1438..4630d77c 100644 --- a/mfem/_ser/fe_rt.i +++ b/mfem/_ser/fe_rt.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") fe_rt %{ diff --git a/mfem/_ser/fe_ser.i b/mfem/_ser/fe_ser.i index 93bd30e5..25a17a61 100644 --- a/mfem/_ser/fe_ser.i +++ b/mfem/_ser/fe_ser.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") fe_ser %{ diff --git a/mfem/_ser/fespace.i b/mfem/_ser/fespace.i index e17f280b..4a1cd2cb 100644 --- a/mfem/_ser/fespace.i +++ b/mfem/_ser/fespace.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") fespace %feature("autodoc", "1"); diff --git a/mfem/_ser/fespacehierarchy.i b/mfem/_ser/fespacehierarchy.i index 56b74ea6..badbe14c 100644 --- a/mfem/_ser/fespacehierarchy.i +++ b/mfem/_ser/fespacehierarchy.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // /* diff --git a/mfem/_ser/geom.i b/mfem/_ser/geom.i index 313032a6..87b3c6ce 100644 --- a/mfem/_ser/geom.i +++ b/mfem/_ser/geom.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") geom %{ diff --git a/mfem/_ser/globals.i b/mfem/_ser/globals.i index acebcfa3..5b088fe6 100644 --- a/mfem/_ser/globals.i +++ b/mfem/_ser/globals.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") globals %{ diff --git a/mfem/_ser/gridfunc.i b/mfem/_ser/gridfunc.i index 54414f92..bcd7b80a 100644 --- a/mfem/_ser/gridfunc.i +++ b/mfem/_ser/gridfunc.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser", directors="0") gridfunc %feature("autodoc", "1"); diff --git a/mfem/_ser/gslib.i b/mfem/_ser/gslib.i index afe47cb0..6a0b2997 100644 --- a/mfem/_ser/gslib.i +++ b/mfem/_ser/gslib.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") gslib %{ diff --git a/mfem/_ser/handle.i b/mfem/_ser/handle.i index 0b6531b8..feec8500 100644 --- a/mfem/_ser/handle.i +++ b/mfem/_ser/handle.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") handle %feature("autodoc", "1"); diff --git a/mfem/_ser/hash.i b/mfem/_ser/hash.i index ebda58ab..e37be038 100644 --- a/mfem/_ser/hash.i +++ b/mfem/_ser/hash.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") hash diff --git a/mfem/_ser/hexahedron.i b/mfem/_ser/hexahedron.i index 0f9255e4..99e51cd5 100644 --- a/mfem/_ser/hexahedron.i +++ b/mfem/_ser/hexahedron.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") hexahedron diff --git a/mfem/_ser/hybridization.i b/mfem/_ser/hybridization.i index d718eb0a..3e160896 100644 --- a/mfem/_ser/hybridization.i +++ b/mfem/_ser/hybridization.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") hybridization %{ diff --git a/mfem/_ser/hyperbolic.i b/mfem/_ser/hyperbolic.i index 96c9d227..409ff3a6 100644 --- a/mfem/_ser/hyperbolic.i +++ b/mfem/_ser/hyperbolic.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") hyperbolic %feature("autodoc", "1"); diff --git a/mfem/_ser/integrator.i b/mfem/_ser/integrator.i index 0b83e0cf..019c6d39 100644 --- a/mfem/_ser/integrator.i +++ b/mfem/_ser/integrator.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") integrator diff --git a/mfem/_ser/intrules.i b/mfem/_ser/intrules.i index e76f73b7..fb57c162 100644 --- a/mfem/_ser/intrules.i +++ b/mfem/_ser/intrules.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module (package="mfem._ser") intrules diff --git a/mfem/_ser/intrules_cut.i b/mfem/_ser/intrules_cut.i index ac3eeb32..4d7a2027 100644 --- a/mfem/_ser/intrules_cut.i +++ b/mfem/_ser/intrules_cut.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module (package="mfem._ser", director="1") intrules_cut diff --git a/mfem/_ser/io_stream.i b/mfem/_ser/io_stream.i index 4dbec803..7c121c46 100644 --- a/mfem/_ser/io_stream.i +++ b/mfem/_ser/io_stream.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") io_stream diff --git a/mfem/_ser/istream_typemap.i b/mfem/_ser/istream_typemap.i index 2484fda7..585b54ee 100644 --- a/mfem/_ser/istream_typemap.i +++ b/mfem/_ser/istream_typemap.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") istream_typemap diff --git a/mfem/_ser/linearform.i b/mfem/_ser/linearform.i index 6a59fc24..47febc36 100644 --- a/mfem/_ser/linearform.i +++ b/mfem/_ser/linearform.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser", directors="1") linearform %{ diff --git a/mfem/_ser/lininteg.i b/mfem/_ser/lininteg.i index f01fa810..369c023a 100644 --- a/mfem/_ser/lininteg.i +++ b/mfem/_ser/lininteg.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser", directors="1") lininteg %{ diff --git a/mfem/_ser/lor.i b/mfem/_ser/lor.i index 92f1e7ec..05e4bd57 100644 --- a/mfem/_ser/lor.i +++ b/mfem/_ser/lor.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") lor diff --git a/mfem/_ser/matrix.i b/mfem/_ser/matrix.i index 3aef8f7d..0c92cee6 100644 --- a/mfem/_ser/matrix.i +++ b/mfem/_ser/matrix.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") matrix diff --git a/mfem/_ser/mem_manager.i b/mfem/_ser/mem_manager.i index 92e231b1..f11d1739 100644 --- a/mfem/_ser/mem_manager.i +++ b/mfem/_ser/mem_manager.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") mem_manager %{ diff --git a/mfem/_ser/mesh.i b/mfem/_ser/mesh.i index 7c83bf7d..e0b1a79e 100644 --- a/mfem/_ser/mesh.i +++ b/mfem/_ser/mesh.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser", directors="0") mesh diff --git a/mfem/_ser/mesh_operators.i b/mfem/_ser/mesh_operators.i index de164b7c..0562c2c1 100644 --- a/mfem/_ser/mesh_operators.i +++ b/mfem/_ser/mesh_operators.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") mesh_operators diff --git a/mfem/_ser/multigrid.i b/mfem/_ser/multigrid.i index 29bf7f49..76238b6f 100644 --- a/mfem/_ser/multigrid.i +++ b/mfem/_ser/multigrid.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // /* diff --git a/mfem/_ser/multivector.i b/mfem/_ser/multivector.i index df9d9171..6cbb5fa4 100644 --- a/mfem/_ser/multivector.i +++ b/mfem/_ser/multivector.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") multivector diff --git a/mfem/_ser/ncmesh.i b/mfem/_ser/ncmesh.i index 36fc5757..57933490 100644 --- a/mfem/_ser/ncmesh.i +++ b/mfem/_ser/ncmesh.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") ncmesh diff --git a/mfem/_ser/nonlinearform.i b/mfem/_ser/nonlinearform.i index 8a947de9..79bff719 100644 --- a/mfem/_ser/nonlinearform.i +++ b/mfem/_ser/nonlinearform.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") nonlinearform %{ diff --git a/mfem/_ser/nonlininteg.i b/mfem/_ser/nonlininteg.i index b08544ed..eaa10e4e 100644 --- a/mfem/_ser/nonlininteg.i +++ b/mfem/_ser/nonlininteg.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser", directors="1") nonlininteg %{ diff --git a/mfem/_ser/ode.i b/mfem/_ser/ode.i index 7cf457cc..c984b92f 100644 --- a/mfem/_ser/ode.i +++ b/mfem/_ser/ode.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") ode %{ diff --git a/mfem/_ser/operators.i b/mfem/_ser/operators.i index 25e43e32..8ef912c4 100644 --- a/mfem/_ser/operators.i +++ b/mfem/_ser/operators.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module (package="mfem._ser", directors="1") operators diff --git a/mfem/_ser/ordering.i b/mfem/_ser/ordering.i index 0b793361..5e8c0972 100644 --- a/mfem/_ser/ordering.i +++ b/mfem/_ser/ordering.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") ordering %{ diff --git a/mfem/_ser/ostream_typemap.i b/mfem/_ser/ostream_typemap.i index 50eeeca1..82d10ad5 100644 --- a/mfem/_ser/ostream_typemap.i +++ b/mfem/_ser/ostream_typemap.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") ostream_typemap diff --git a/mfem/_ser/particleset.i b/mfem/_ser/particleset.i index 16dfa59f..38ef6787 100644 --- a/mfem/_ser/particleset.i +++ b/mfem/_ser/particleset.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") particleset diff --git a/mfem/_ser/particlevector.i b/mfem/_ser/particlevector.i index 4216306e..8be76b64 100644 --- a/mfem/_ser/particlevector.i +++ b/mfem/_ser/particlevector.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") particlevector diff --git a/mfem/_ser/point.i b/mfem/_ser/point.i index bfd566af..0ea6ddf6 100644 --- a/mfem/_ser/point.i +++ b/mfem/_ser/point.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") point diff --git a/mfem/_ser/qfunction.i b/mfem/_ser/qfunction.i index 11df6d34..f55b9377 100644 --- a/mfem/_ser/qfunction.i +++ b/mfem/_ser/qfunction.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") qfunction %{ diff --git a/mfem/_ser/qspace.i b/mfem/_ser/qspace.i index 38c457fb..70cd6f43 100644 --- a/mfem/_ser/qspace.i +++ b/mfem/_ser/qspace.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") qspace %{ diff --git a/mfem/_ser/quadinterpolator.i b/mfem/_ser/quadinterpolator.i index 14d49102..0ce3ac6d 100644 --- a/mfem/_ser/quadinterpolator.i +++ b/mfem/_ser/quadinterpolator.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") quadinterpolator %{ diff --git a/mfem/_ser/quadinterpolator_face.i b/mfem/_ser/quadinterpolator_face.i index e0ff28a3..ef4331a2 100644 --- a/mfem/_ser/quadinterpolator_face.i +++ b/mfem/_ser/quadinterpolator_face.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") quadinterpolator_face %{ diff --git a/mfem/_ser/quadrilateral.i b/mfem/_ser/quadrilateral.i index ed02f304..de9ec27a 100644 --- a/mfem/_ser/quadrilateral.i +++ b/mfem/_ser/quadrilateral.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") quadrilateral %{ diff --git a/mfem/_ser/restriction.i b/mfem/_ser/restriction.i index f92c1803..0d4ecdd4 100644 --- a/mfem/_ser/restriction.i +++ b/mfem/_ser/restriction.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") restriction %{ diff --git a/mfem/_ser/segment.i b/mfem/_ser/segment.i index 034f9b2c..64984042 100644 --- a/mfem/_ser/segment.i +++ b/mfem/_ser/segment.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") segment %{ diff --git a/mfem/_ser/sets.i b/mfem/_ser/sets.i index e38a98be..3473cd6e 100644 --- a/mfem/_ser/sets.i +++ b/mfem/_ser/sets.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") sets %{ diff --git a/mfem/_ser/setup.py b/mfem/_ser/setup.py index e556e511..f27fb729 100644 --- a/mfem/_ser/setup.py +++ b/mfem/_ser/setup.py @@ -115,7 +115,7 @@ def get_extensions(): "hyperbolic", "complex_densemat", "bounds", "integrator", "ordering", "dpg", "particleset", "particlevector", "fe_pyramid", - "multivector", "dgmassinv", "lor"] + "multivector", "dgmassinv", "lor", "filteredsolver"] if add_cuda == '1': from setup_local import cudainc diff --git a/mfem/_ser/sidredatacollection.i b/mfem/_ser/sidredatacollection.i index ddc14552..0f7cfcb2 100644 --- a/mfem/_ser/sidredatacollection.i +++ b/mfem/_ser/sidredatacollection.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") sidredatacollection %{ diff --git a/mfem/_ser/socketstream.i b/mfem/_ser/socketstream.i index 124c77ee..7663324b 100644 --- a/mfem/_ser/socketstream.i +++ b/mfem/_ser/socketstream.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") socketstream %feature("autodoc", "1"); diff --git a/mfem/_ser/solvers.i b/mfem/_ser/solvers.i index 4836de13..c41669ef 100644 --- a/mfem/_ser/solvers.i +++ b/mfem/_ser/solvers.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser", directors="1") solvers diff --git a/mfem/_ser/sort_pairs.i b/mfem/_ser/sort_pairs.i index 55f723a7..217ad058 100644 --- a/mfem/_ser/sort_pairs.i +++ b/mfem/_ser/sort_pairs.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") sort_pairs %{ diff --git a/mfem/_ser/sparsemat.i b/mfem/_ser/sparsemat.i index 1f85cce2..6dab4c61 100644 --- a/mfem/_ser/sparsemat.i +++ b/mfem/_ser/sparsemat.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module (package="mfem._ser") sparsemat %{ diff --git a/mfem/_ser/sparsesmoothers.i b/mfem/_ser/sparsesmoothers.i index cb59c755..c25358e6 100644 --- a/mfem/_ser/sparsesmoothers.i +++ b/mfem/_ser/sparsesmoothers.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") sparsesmoothers %{ diff --git a/mfem/_ser/stable3d.i b/mfem/_ser/stable3d.i index f2c250f9..39f4ebb8 100644 --- a/mfem/_ser/stable3d.i +++ b/mfem/_ser/stable3d.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") stable3d diff --git a/mfem/_ser/staticcond.i b/mfem/_ser/staticcond.i index 20530e56..11923931 100644 --- a/mfem/_ser/staticcond.i +++ b/mfem/_ser/staticcond.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") staticcond %{ diff --git a/mfem/_ser/std_vectors.i b/mfem/_ser/std_vectors.i index 2615562f..a109de1f 100644 --- a/mfem/_ser/std_vectors.i +++ b/mfem/_ser/std_vectors.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") std_vectors // diff --git a/mfem/_ser/submesh.i b/mfem/_ser/submesh.i index 063fa98f..86d3588b 100644 --- a/mfem/_ser/submesh.i +++ b/mfem/_ser/submesh.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") submesh diff --git a/mfem/_ser/symmat.i b/mfem/_ser/symmat.i index 24003ba7..9bf751ad 100644 --- a/mfem/_ser/symmat.i +++ b/mfem/_ser/symmat.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") symmat %{ diff --git a/mfem/_ser/table.i b/mfem/_ser/table.i index a9369861..2847ba76 100644 --- a/mfem/_ser/table.i +++ b/mfem/_ser/table.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") table diff --git a/mfem/_ser/tetrahedron.i b/mfem/_ser/tetrahedron.i index a3ce9334..ee0330b9 100644 --- a/mfem/_ser/tetrahedron.i +++ b/mfem/_ser/tetrahedron.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") tetrahedron %{ diff --git a/mfem/_ser/tmop.i b/mfem/_ser/tmop.i index df4e3d65..a875874c 100644 --- a/mfem/_ser/tmop.i +++ b/mfem/_ser/tmop.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser", directors="1") tmop %{ diff --git a/mfem/_ser/tmop_amr.i b/mfem/_ser/tmop_amr.i index 2c716db7..f082b49b 100644 --- a/mfem/_ser/tmop_amr.i +++ b/mfem/_ser/tmop_amr.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser", directors="1") tmop_amr %{ diff --git a/mfem/_ser/tmop_tools.i b/mfem/_ser/tmop_tools.i index b4da7700..47febfd0 100644 --- a/mfem/_ser/tmop_tools.i +++ b/mfem/_ser/tmop_tools.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser", directors="1") tmop_tools %{ diff --git a/mfem/_ser/transfer.i b/mfem/_ser/transfer.i index 0a4abfa7..608d067d 100644 --- a/mfem/_ser/transfer.i +++ b/mfem/_ser/transfer.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") transfer diff --git a/mfem/_ser/transfermap.i b/mfem/_ser/transfermap.i index d7c077a2..8611d9f6 100644 --- a/mfem/_ser/transfermap.i +++ b/mfem/_ser/transfermap.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") transfermap diff --git a/mfem/_ser/triangle.i b/mfem/_ser/triangle.i index 2e679f12..1c69551b 100644 --- a/mfem/_ser/triangle.i +++ b/mfem/_ser/triangle.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") triangle %{ diff --git a/mfem/_ser/vector.i b/mfem/_ser/vector.i index 65904e41..0742470f 100644 --- a/mfem/_ser/vector.i +++ b/mfem/_ser/vector.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // /* diff --git a/mfem/_ser/vertex.i b/mfem/_ser/vertex.i index 366fa865..82be8870 100644 --- a/mfem/_ser/vertex.i +++ b/mfem/_ser/vertex.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") vertex diff --git a/mfem/_ser/vtk.i b/mfem/_ser/vtk.i index 2fede52e..0a67f13a 100644 --- a/mfem/_ser/vtk.i +++ b/mfem/_ser/vtk.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") vtk %{ diff --git a/mfem/_ser/wedge.i b/mfem/_ser/wedge.i index 4b09b5ce..98e905ea 100644 --- a/mfem/_ser/wedge.i +++ b/mfem/_ser/wedge.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %module(package="mfem._ser") wedge diff --git a/mfem/common/array_instantiation_macro.i b/mfem/common/array_instantiation_macro.i index c2212142..19409a3c 100644 --- a/mfem/common/array_instantiation_macro.i +++ b/mfem/common/array_instantiation_macro.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %define INSTANTIATE_ARRAY2(XXX, YYY, ZZZ, USEPTR) #if USEPTR == 1 diff --git a/mfem/common/array_listtuple_typemap.i b/mfem/common/array_listtuple_typemap.i index 7e9b0f28..858b0131 100644 --- a/mfem/common/array_listtuple_typemap.i +++ b/mfem/common/array_listtuple_typemap.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // // // this typemap is used together with %extend, which diff --git a/mfem/common/coefficient_common.i b/mfem/common/coefficient_common.i index 2ec04ab7..bcaac782 100644 --- a/mfem/common/coefficient_common.i +++ b/mfem/common/coefficient_common.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // namespace mfem { %pythonappend PWCoefficient::PWCoefficient %{ diff --git a/mfem/common/complex_fem_ext.i b/mfem/common/complex_fem_ext.i index 6d02406d..e65137f0 100644 --- a/mfem/common/complex_fem_ext.i +++ b/mfem/common/complex_fem_ext.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // namespace mfem { // serial diff --git a/mfem/common/const_doubleptr_typemap.i b/mfem/common/const_doubleptr_typemap.i index 470a1c49..f00e1371 100644 --- a/mfem/common/const_doubleptr_typemap.i +++ b/mfem/common/const_doubleptr_typemap.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // // // const_doubleptr_typemap diff --git a/mfem/common/const_intptr_typemap.i b/mfem/common/const_intptr_typemap.i index eae05574..13de3893 100644 --- a/mfem/common/const_intptr_typemap.i +++ b/mfem/common/const_intptr_typemap.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // // // const_intptr_typemap diff --git a/mfem/common/cpointers.i b/mfem/common/cpointers.i index 644c38bd..f7a424dc 100644 --- a/mfem/common/cpointers.i +++ b/mfem/common/cpointers.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %include "cpointer.i" %pointer_class(int, intp); diff --git a/mfem/common/data_size_typemap.i b/mfem/common/data_size_typemap.i index 0b7d025c..95d714a2 100644 --- a/mfem/common/data_size_typemap.i +++ b/mfem/common/data_size_typemap.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // // Used in array.i // INTPTR_SIZE_IN(int *data_, int asize) diff --git a/mfem/common/deprecation.i b/mfem/common/deprecation.i index 1b096f03..2cf7f738 100644 --- a/mfem/common/deprecation.i +++ b/mfem/common/deprecation.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // // deprecate an overload method %define DEPRECATED_OVERLOADED_METHOD(method, message, condition) diff --git a/mfem/common/enum_class.i b/mfem/common/enum_class.i index 54161027..13e9b5e1 100644 --- a/mfem/common/enum_class.i +++ b/mfem/common/enum_class.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %define ENUM_CLASS_WRAP(P1, P2) %pythoncode %{ diff --git a/mfem/common/exception.i b/mfem/common/exception.i index 76c1519e..b11d74bf 100644 --- a/mfem/common/exception.i +++ b/mfem/common/exception.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %exception { try { diff --git a/mfem/common/exception_director.i b/mfem/common/exception_director.i index 5d35b850..f2834c88 100644 --- a/mfem/common/exception_director.i +++ b/mfem/common/exception_director.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %exception { try { diff --git a/mfem/common/handle_template.i b/mfem/common/handle_template.i index 0c81704e..9a573615 100644 --- a/mfem/common/handle_template.i +++ b/mfem/common/handle_template.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // // // AS_RENAME rename As -> AsHypreParMatrix diff --git a/mfem/common/hypre_int.i b/mfem/common/hypre_int.i index 7f9ad72b..17821900 100644 --- a/mfem/common/hypre_int.i +++ b/mfem/common/hypre_int.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %include "HYPRE_utilities.h" %inline %{ diff --git a/mfem/common/ignore_common_functions.i b/mfem/common/ignore_common_functions.i index d170f90b..dfcfaaed 100644 --- a/mfem/common/ignore_common_functions.i +++ b/mfem/common/ignore_common_functions.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %ignore mfem::Add; %ignore mfem::Mult; diff --git a/mfem/common/io_stream_typemap.i b/mfem/common/io_stream_typemap.i index 5f581620..c9a3626a 100644 --- a/mfem/common/io_stream_typemap.i +++ b/mfem/common/io_stream_typemap.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // // // diff --git a/mfem/common/kernel_dispatch.i b/mfem/common/kernel_dispatch.i index 0c5615de..5a364261 100644 --- a/mfem/common/kernel_dispatch.i +++ b/mfem/common/kernel_dispatch.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // /* kernel_dispatch.i diff --git a/mfem/common/memorytype_typemap.i b/mfem/common/memorytype_typemap.i index 52a3322f..561ec654 100644 --- a/mfem/common/memorytype_typemap.i +++ b/mfem/common/memorytype_typemap.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // // // this typemap is used to replace MemoryType input diff --git a/mfem/common/mfem_config.i b/mfem/common/mfem_config.i index 88d4cc41..ea6b79ec 100644 --- a/mfem/common/mfem_config.i +++ b/mfem/common/mfem_config.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // %ignore MFEM_GIT_STRING; %ignore MFEM_SOURCE_DIR; diff --git a/mfem/common/numba_coefficient.i b/mfem/common/numba_coefficient.i index bdeda76f..3e540f21 100644 --- a/mfem/common/numba_coefficient.i +++ b/mfem/common/numba_coefficient.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // /* # diff --git a/mfem/common/numpy_int_typemap.i b/mfem/common/numpy_int_typemap.i index 5fb723c6..c56adf40 100644 --- a/mfem/common/numpy_int_typemap.i +++ b/mfem/common/numpy_int_typemap.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // // conversion of Int (can handle numpy int) %typemap(in) int { diff --git a/mfem/common/object_array_typemap.i b/mfem/common/object_array_typemap.i index 7e8de31c..1590c3c8 100644 --- a/mfem/common/object_array_typemap.i +++ b/mfem/common/object_array_typemap.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // // // Array< T > & -> Python list of T diff --git a/mfem/common/operator_ptr_typemap.i b/mfem/common/operator_ptr_typemap.i index 3494357b..3da49477 100644 --- a/mfem/common/operator_ptr_typemap.i +++ b/mfem/common/operator_ptr_typemap.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // // // allows to pass OperatorPtr to operator & diff --git a/mfem/common/typemap_macros.i b/mfem/common/typemap_macros.i index 41cc7b98..e3100d02 100644 --- a/mfem/common/typemap_macros.i +++ b/mfem/common/typemap_macros.i @@ -1,5 +1,5 @@ // -// Copyright (c) 2020-2025, Princeton Plasma Physics Laboratory, All rights reserved. +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. // // integer array output with known length (tuple) %define INTARRAY_OUT_TO_TUPLE(type_name, l) diff --git a/mfem/par.py b/mfem/par.py index 9e110c84..a7ee9c67 100644 --- a/mfem/par.py +++ b/mfem/par.py @@ -104,7 +104,7 @@ from mfem._par.multivector import * from mfem._par.dgmassinv import * from mfem._par.lor import * - +from mfem._par.filteredsolver import * from mfem._par.bounds import * from mfem._par.integrator import * diff --git a/mfem/ser.py b/mfem/ser.py index 6d6a6f23..a21024af 100644 --- a/mfem/ser.py +++ b/mfem/ser.py @@ -87,7 +87,7 @@ from mfem._ser.submesh import * from mfem._ser.transfermap import * from mfem._ser.hyperbolic import * - +from mfem._ser.filteredsolver import * import mfem._ser.array as array import mfem._ser.blockoperator as blockoperator From f2c67e8910c0a38d160d74d31b44c6984da3eeea Mon Sep 17 00:00:00 2001 From: "S. Shiraiwa" Date: Mon, 21 Sep 2026 04:47:23 -0400 Subject: [PATCH 2/7] separate common block for linux build in build-binary-callable.yml --- .github/workflows/build-binary-callable.yml | 96 +++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 .github/workflows/build-binary-callable.yml diff --git a/.github/workflows/build-binary-callable.yml b/.github/workflows/build-binary-callable.yml new file mode 100644 index 00000000..1af19f0c --- /dev/null +++ b/.github/workflows/build-binary-callable.yml @@ -0,0 +1,96 @@ +name: Build Linux binary release + +on: + workflow_call: + inputs: + repository-url: + description: PyPI or TestPyPI upload endpoint. + type: string + required: true + secrets: + upload-token: + required: true + +permissions: + contents: read + +jobs: + make_sdist: + runs-on: ubuntu-latest + container: quay.io/pypa/manylinux2014_x86_64 + steps: + - name: build_sdist + env: + TWINE_REPOSITORY_URL: ${{ inputs.repository-url }} + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.upload-token }} + TWINE_NON_INTERACTIVE: '1' + run: | + git clone https://github.com/mfem/PyMFEM.git + cd PyMFEM + REF=$(echo ${GITHUB_REF#refs/heads/}) + echo "!!!!!: "$REF + git checkout $REF + export PATH=/opt/python/cp39-cp39/bin:$PATH + + pip install setuptools + pip install -U packaging + pip3 install wheel six auditwheel twine + pip3 install urllib3==1.26.6 # use older version to avoid OpenSSL vesion issue + pip3 install numpy==1.21.6 + + rm -rf dist/* + python3 setup.py sdist + ls -l dist/ + python3 -m twine upload --verbose dist/* + make_binary_3_10_11_12_13_14: + needs: make_sdist + strategy: + matrix: + pythonpath: ["cp310-cp310", "cp311-cp311", "cp312-cp312", "cp313-cp313", "cp314-cp314"] + + runs-on: ubuntu-latest + container: quay.io/pypa/manylinux2014_x86_64 + steps: + - name: build package + env: + TWINE_REPOSITORY_URL: ${{ inputs.repository-url }} + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.upload-token }} + TWINE_NON_INTERACTIVE: '1' + run: | + echo It runs in the container instead of the VM. + git clone https://github.com/mfem/PyMFEM.git + cd PyMFEM + REF=$(echo ${GITHUB_REF#refs/heads/}) + echo "!!!!!!: "$REF + git checkout $REF + ls -l /opt/python/ + export PATH=/opt/python/${{ matrix.pythonpath }}/bin:$PATH + + pip3 install --upgrade pip setuptools packaging + pip3 wheel ./ --verbose --no-deps + pip3 install auditwheel twine + pip3 install urllib3==1.26.6 # use older version to avoid OpenSSL vesion issue + + CWD=$PWD + yum install -y zlib-devel + + mkdir dist + + # build wheel and check it + python3 -m pip wheel ./ --verbose --no-deps + pip3 install *.whl + cd test + python run_examples.py -serial -verbose -ex ex1 + cd .. + + rm -rf dist/* + export LD_LIBRARY_PATH=${CWD}/external/mfem/cmbuild_ser/:$LD_LIBRARY_PATH + + auditwheel repair *.whl + rm -rf dist/* + mv wheelhouse/* dist/ + + ls -l dist/ + python3 -m twine upload --verbose dist/* From 9e2fa7c3ae429ffd1fcf59da6c140b2b3fef3d56 Mon Sep 17 00:00:00 2001 From: "S. Shiraiwa" Date: Mon, 21 Sep 2026 04:50:59 -0400 Subject: [PATCH 3/7] added forgotten filteredsolver.i --- mfem/_par/filteredsolver.i | 28 ++++++++++++++++++++++++++++ mfem/_ser/filteredsolver.i | 27 +++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 mfem/_par/filteredsolver.i create mode 100644 mfem/_ser/filteredsolver.i diff --git a/mfem/_par/filteredsolver.i b/mfem/_par/filteredsolver.i new file mode 100644 index 00000000..2d0423a2 --- /dev/null +++ b/mfem/_par/filteredsolver.i @@ -0,0 +1,28 @@ +// +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. +// +%module(package="mfem._par") filteredsolver + +%{ +#include "mfem.hpp" +#include "numpy/arrayobject.h" +#include "../common/pyoperator.hpp" +#include "../common/pyintrules.hpp" +#include "../common/pysolvers.hpp" +%} + +%include "../common/existing_mfem_headers.i" +#ifdef FILE_EXISTS_LINALG_FILTEREDSOLVER + +%init %{ +import_array1(-1); +%} +%include "exception.i" +%include "../common/exception.i" + +%import "solvers.i" +%import "hypre.i" + +%include "linalg/filteredsolver.hpp" + +#endif //FILE_EXISTS_... diff --git a/mfem/_ser/filteredsolver.i b/mfem/_ser/filteredsolver.i new file mode 100644 index 00000000..17051589 --- /dev/null +++ b/mfem/_ser/filteredsolver.i @@ -0,0 +1,27 @@ +// +// Copyright (c) 2020-2026, Princeton Plasma Physics Laboratory, All rights reserved. +// +%module(package="mfem._ser") filteredsolver + +%{ +#include "mfem.hpp" +#include "numpy/arrayobject.h" +#include "../common/pyoperator.hpp" +#include "../common/pyintrules.hpp" +#include "../common/pysolvers.hpp" +%} + +%include "../common/existing_mfem_headers.i" +#ifdef FILE_EXISTS_LINALG_FILTEREDSOLVER + +%init %{ +import_array1(-1); +%} +%include "exception.i" +%include "../common/exception.i" + +%import "solvers.i" + +%include "linalg/filteredsolver.hpp" + +#endif //FILE_EXISTS_... From 8a609095dcee5e5baa320af3019968cd4dee12bb Mon Sep 17 00:00:00 2001 From: "S. Shiraiwa" Date: Mon, 21 Sep 2026 08:27:11 -0400 Subject: [PATCH 4/7] checking release workflow --- .../workflows/build-macbinary-callable.yml | 16 ++++ .github/workflows/release_binary.yml | 94 ++----------------- .github/workflows/testrelease_binary.yml | 93 ++---------------- mfem/__init__.py | 2 +- 4 files changed, 35 insertions(+), 170 deletions(-) diff --git a/.github/workflows/build-macbinary-callable.yml b/.github/workflows/build-macbinary-callable.yml index 045a9e35..54d6e66c 100644 --- a/.github/workflows/build-macbinary-callable.yml +++ b/.github/workflows/build-macbinary-callable.yml @@ -32,6 +32,8 @@ jobs: CMAKE_OSX_DEPLOYMENT_TARGET: '14.0' CMAKE_OSX_ARCHITECTURES: arm64 ARCHFLAGS: '-arch arm64' + # Match wheel metadata to the ARM-only build, including with universal2 Python. + _PYTHON_HOST_PLATFORM: macosx-14.0-arm64 CC: clang CXX: clang++ steps: @@ -45,6 +47,7 @@ jobs: run: | test "$(uname -m)" = arm64 python -c "import platform; assert platform.machine() == 'arm64'" + python -c "import sysconfig; print('Wheel build platform:', sysconfig.get_platform())" clang --version - name: Install wheel tools @@ -55,6 +58,19 @@ jobs: set -o pipefail python -m pip wheel . --verbose --no-deps --wheel-dir raw-wheels 2>&1 | tee build-macos.log + - name: Check raw wheel platform tag + run: | + python - <<'PY' + from pathlib import Path + from packaging.utils import parse_wheel_filename + + wheels = list(Path('raw-wheels').glob('*.whl')) + assert len(wheels) == 1, wheels + print('Raw wheel:', wheels[0].name) + _, _, _, tags = parse_wheel_filename(wheels[0].name) + assert all(tag.platform == 'macosx_14_0_arm64' for tag in tags), tags + PY + - name: Repair wheel dependencies run: | delocate-wheel --verbose --require-archs arm64 --wheel-dir wheelhouse raw-wheels/*.whl diff --git a/.github/workflows/release_binary.yml b/.github/workflows/release_binary.yml index b535f558..9ea2bf1b 100644 --- a/.github/workflows/release_binary.yml +++ b/.github/workflows/release_binary.yml @@ -2,91 +2,15 @@ name: release_binary on: push: - #branches: [ action_test ] tags: ["v*"] -jobs: - make_sdist: - runs-on: ubuntu-latest - container: quay.io/pypa/manylinux2014_x86_64 - steps: - - name: build_sdist - run: | - echo This job does not specify a container. - echo It runs directly on the virtual machine. - # - git clone https://github.com/mfem/PyMFEM.git - cd PyMFEM - # - REF=$(echo ${GITHUB_REF#refs/heads/}) - echo "!!!!!: "$REF - git checkout $REF - # - export PATH=/opt/python/cp39-cp39/bin:$PATH - - pip install setuptools - pip install -U packaging - pip3 install wheel six auditwheel twine - pip3 install urllib3==1.26.6 # use older version to avoid OpenSSL vesion issue - pip3 install numpy==1.21.6 - #if [ -f requirements.txt ]; then - # pip3 install -r requirements.txt - #fi - - rm -rf dist/* - python3 setup.py sdist - ls -l dist/ - #python3 -m twine upload --repository-url https://test.pypi.org/legacy/ --password ${{ secrets.TEST_PYPI_TOKEN }} --username __token__ --verbose dist/* - python3 -m twine upload --password ${{ secrets.PYPI_TOKEN }} --username __token__ --verbose dist/* - make_binary_3_10_11_12_13_14: - needs: make_sdist - strategy: - matrix: - pythonpath: ["cp310-cp310", "cp311-cp311", "cp312-cp312", "cp313-cp313", "cp314-cp314"] - - runs-on: ubuntu-latest - container: quay.io/pypa/manylinux2014_x86_64 - #container: node:10.16-jessie - steps: - - name: build package - run: | - echo It runs in the container instead of the VM. - # - git clone https://github.com/mfem/PyMFEM.git - cd PyMFEM - # - REF=$(echo ${GITHUB_REF#refs/heads/}) - echo "!!!!!!: "$REF - git checkout $REF - # - ls -l /opt/python/ - export PATH=/opt/python/${{ matrix.pythonpath }}/bin:$PATH - - pip install setuptools - pip install -U packaging - pip3 install auditwheel twine - pip3 install urllib3==1.26.6 # use older version to avoid OpenSSL vesion issue - - CWD=$PWD - yum install -y zlib-devel - #yum install -y chrpath +permissions: + contents: read - mkdir dist - - # build wheel and check it - python3 -m pip wheel ./ --verbose --no-deps - pip3 install *.whl - cd test - python run_examples.py -serial -verbose -ex ex1 - cd .. - - rm -rf dist/* - export LD_LIBRARY_PATH=${CWD}/external/mfem/cmbuild_ser/:$LD_LIBRARY_PATH - - auditwheel repair *.whl - rm -rf dist/* - mv wheelhouse/* dist/ - - ls -l dist/ - #python3 -m twine upload --repository-url https://test.pypi.org/legacy/ --password ${{ secrets.TEST_PYPI_TOKEN }} --username __token__ --verbose dist/* - python3 -m twine upload --password ${{ secrets.PYPI_TOKEN }} --username __token__ --verbose dist/* +jobs: + linux-release: + uses: ./.github/workflows/build-binary-callable.yml + with: + repository-url: https://upload.pypi.org/legacy/ + secrets: + upload-token: ${{ secrets.PYPI_TOKEN }} diff --git a/.github/workflows/testrelease_binary.yml b/.github/workflows/testrelease_binary.yml index a6e9cdfe..79943b87 100644 --- a/.github/workflows/testrelease_binary.yml +++ b/.github/workflows/testrelease_binary.yml @@ -2,90 +2,15 @@ name: testrelease_binary on: push: - #branches: [ action_test ] tags: ["test_*"] -jobs: - make_sdist: - runs-on: ubuntu-latest - container: quay.io/pypa/manylinux2014_x86_64 - steps: - - name: build_sdist - run: | - echo This job does not specify a container. - echo It runs directly on the virtual machine. - # - git clone https://github.com/mfem/PyMFEM.git - cd PyMFEM - # - REF=$(echo ${GITHUB_REF#refs/heads/}) - echo "!!!!!: "$REF - git checkout $REF - # - export PATH=/opt/python/cp39-cp39/bin:$PATH - - pip install setuptools - pip install -U packaging - pip3 install wheel six auditwheel twine - pip3 install urllib3==1.26.6 # use older version to avoid OpenSSL vesion issue - pip3 install numpy==1.21.6 - #if [ -f requirements.txt ]; then - # pip3 install -r requirements.txt - #fi - - rm -rf dist/* - python3 setup.py sdist - ls -l dist/ - python3 -m twine upload --repository-url https://test.pypi.org/legacy/ --password ${{ secrets.TEST_PYPI_TOKEN }} --username __token__ --verbose dist/* - make_binary_3_10_11_12_13_14: - needs: make_sdist - strategy: - matrix: - pythonpath: ["cp310-cp310", "cp311-cp311", "cp312-cp312", "cp313-cp313", "cp314-cp314"] - - runs-on: ubuntu-latest - container: quay.io/pypa/manylinux2014_x86_64 - #container: node:10.16-jessie - steps: - - name: build package - run: | - echo It runs in the container instead of the VM. - # - git clone https://github.com/mfem/PyMFEM.git - cd PyMFEM - # - REF=$(echo ${GITHUB_REF#refs/heads/}) - echo "!!!!!!: "$REF - git checkout $REF - # - ls -l /opt/python/ - export PATH=/opt/python/${{ matrix.pythonpath }}/bin:$PATH - - pip install setuptools - pip install -U packaging - pip3 install auditwheel twine - pip3 install urllib3==1.26.6 # use older version to avoid OpenSSL vesion issue - - CWD=$PWD - yum install -y zlib-devel - #yum install -y chrpath +permissions: + contents: read - mkdir dist - - # build wheel and check it - python3 -m pip wheel ./ --verbose --no-deps - pip3 install *.whl - cd test - python run_examples.py -serial -verbose -ex ex1 - cd .. - - rm -rf dist/* - export LD_LIBRARY_PATH=${CWD}/external/mfem/cmbuild_ser/:$LD_LIBRARY_PATH - - auditwheel repair *.whl - rm -rf dist/* - mv wheelhouse/* dist/ - - ls -l dist/ - python3 -m twine upload --repository-url https://test.pypi.org/legacy/ --password ${{ secrets.TEST_PYPI_TOKEN }} --username __token__ --verbose dist/* - #python3 -m twine upload --password ${{ secrets.PYPI_TOKEN }} --username __token__ --verbose dist/* \ No newline at end of file +jobs: + linux-release: + uses: ./.github/workflows/build-binary-callable.yml + with: + repository-url: https://test.pypi.org/legacy/ + secrets: + upload-token: ${{ secrets.TEST_PYPI_TOKEN }} diff --git a/mfem/__init__.py b/mfem/__init__.py index 293d6f96..09d25764 100644 --- a/mfem/__init__.py +++ b/mfem/__init__.py @@ -20,5 +20,5 @@ def debug_print(message): print(message) -__version__ = '4.10.0' +__version__ = '4.10.0rc4' From 9be73af8701984909ec22632003b986c9b363014 Mon Sep 17 00:00:00 2001 From: "S. Shiraiwa" Date: Mon, 21 Sep 2026 08:59:37 -0400 Subject: [PATCH 5/7] changed minimum requirement to Python 3.11 and numpy > 2.4, test tools now runs only for Python >= 3.11 --- .github/workflows/build-and-test-callable.yml | 10 +++++----- .github/workflows/build-and-test-dispatch.yml | 6 +++--- .github/workflows/build-binary-callable.yml | 11 +++++------ .github/workflows/build-macbinary-callable.yml | 2 +- mfem/__init__.py | 2 +- pyproject.toml | 11 +++++------ 6 files changed, 20 insertions(+), 22 deletions(-) diff --git a/.github/workflows/build-and-test-callable.yml b/.github/workflows/build-and-test-callable.yml index 7c8916e3..39dffa0e 100644 --- a/.github/workflows/build-and-test-callable.yml +++ b/.github/workflows/build-and-test-callable.yml @@ -19,7 +19,7 @@ on: python-version: description: 'Python version' type: string - default: '3.10' + default: '3.11' mfem-branch: description: 'MFEM branch to checkout' type: string @@ -90,10 +90,10 @@ jobs: # ------------------------------------------------------------------------------------------------- - name: Install core dependencies via requirements.txt run: | - pip install -U setuptools>=79.0.1 - pip install -U numpy>=2.0.0 - pip install -U cmake>=4.0.0 - pip install -U swig>=4.4 + pip install -U "setuptools>=80.0.1" + pip install -U "numpy>=2.4.1" + pip install -U "cmake>=4.0.0" + pip install -U "swig>=4.5" #- name: Install chrpath on ubuntu # if: inputs.os == 'ubuntu-latest' diff --git a/.github/workflows/build-and-test-dispatch.yml b/.github/workflows/build-and-test-dispatch.yml index ff805cab..e52f558a 100644 --- a/.github/workflows/build-and-test-dispatch.yml +++ b/.github/workflows/build-and-test-dispatch.yml @@ -30,7 +30,7 @@ jobs: fail-fast: false matrix: mfem-branch: [master, default] # 'default' uses a specific commit hash defined in setup.py:repos_sha - python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] + python-version: ['3.11', '3.12', '3.13', '3.14'] parallel: [false] name: test-linux | ${{ matrix.mfem-branch }} | ${{ matrix.python-version }} | ${{ matrix.parallel && 'parallel' || 'serial' }} uses: ./.github/workflows/build-and-test-callable.yml @@ -46,7 +46,7 @@ jobs: fail-fast: false matrix: mfem-branch: [master, default] # 'default' uses a specific commit hash defined in setup.py:repos_sha - python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] + python-version: ['3.11', '3.12', '3.13', '3.14'] parallel: [true] name: test-linux | ${{ matrix.mfem-branch }} | ${{ matrix.python-version }} | ${{ matrix.parallel && 'parallel' || 'serial' }} uses: ./.github/workflows/build-and-test-callable.yml @@ -71,7 +71,7 @@ jobs: with: os: ubuntu-latest mfem-branch: ${{ matrix.mfem-branch }} - python-version: '3.10' + python-version: '3.11' parallel: ${{ matrix.parallel }} # ------------------------------------------------------------------------------------------------- diff --git a/.github/workflows/build-binary-callable.yml b/.github/workflows/build-binary-callable.yml index 1af19f0c..0f13b5b1 100644 --- a/.github/workflows/build-binary-callable.yml +++ b/.github/workflows/build-binary-callable.yml @@ -31,23 +31,22 @@ jobs: REF=$(echo ${GITHUB_REF#refs/heads/}) echo "!!!!!: "$REF git checkout $REF - export PATH=/opt/python/cp39-cp39/bin:$PATH + export PATH=/opt/python/cp311-cp311/bin:$PATH pip install setuptools pip install -U packaging pip3 install wheel six auditwheel twine - pip3 install urllib3==1.26.6 # use older version to avoid OpenSSL vesion issue - pip3 install numpy==1.21.6 + pip3 install "urllib3==1.26.6" # use older version to avoid OpenSSL vesion issue rm -rf dist/* python3 setup.py sdist ls -l dist/ python3 -m twine upload --verbose dist/* - make_binary_3_10_11_12_13_14: + make_binary_3_11_12_13_14: needs: make_sdist strategy: matrix: - pythonpath: ["cp310-cp310", "cp311-cp311", "cp312-cp312", "cp313-cp313", "cp314-cp314"] + pythonpath: ["cp311-cp311", "cp312-cp312", "cp313-cp313", "cp314-cp314"] runs-on: ubuntu-latest container: quay.io/pypa/manylinux2014_x86_64 @@ -71,7 +70,7 @@ jobs: pip3 install --upgrade pip setuptools packaging pip3 wheel ./ --verbose --no-deps pip3 install auditwheel twine - pip3 install urllib3==1.26.6 # use older version to avoid OpenSSL vesion issue + pip3 install "urllib3==1.26.6" # use older version to avoid OpenSSL vesion issue CWD=$PWD yum install -y zlib-devel diff --git a/.github/workflows/build-macbinary-callable.yml b/.github/workflows/build-macbinary-callable.yml index 54d6e66c..c48b5e0b 100644 --- a/.github/workflows/build-macbinary-callable.yml +++ b/.github/workflows/build-macbinary-callable.yml @@ -26,7 +26,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] + python-version: ['3.11', '3.12', '3.13', '3.14'] env: MACOSX_DEPLOYMENT_TARGET: '14.0' CMAKE_OSX_DEPLOYMENT_TARGET: '14.0' diff --git a/mfem/__init__.py b/mfem/__init__.py index 09d25764..b91b4f13 100644 --- a/mfem/__init__.py +++ b/mfem/__init__.py @@ -20,5 +20,5 @@ def debug_print(message): print(message) -__version__ = '4.10.0rc4' +__version__ = '4.10.0rc5' diff --git a/pyproject.toml b/pyproject.toml index 971943cd..d63acd01 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,15 +11,14 @@ classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Topic :: Scientific/Engineering :: Physics", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", ] -requires-python = ">=3.8" +requires-python = ">=3.11" dependencies = [ - "numpy>=2.0.0", + "numpy>=2.4.1", "numba", "scipy", ] @@ -35,9 +34,9 @@ MPI = ["mpi4py"] requires = [ "setuptools>=80.0.1", "pip>=25.1.0", - "numpy>=2.0.0", - "cmake>=4.0.0", - "swig>=4.5", + "numpy>=2.4.1", + "cmake>=4.0.0", + "swig>=4.5", ] build-backend = "backend" backend-path = ["_build_system"] From 52fbf79feaf6a49286d9b5a899768e251dfc7149 Mon Sep 17 00:00:00 2001 From: "S. Shiraiwa" Date: Mon, 21 Sep 2026 09:49:06 -0400 Subject: [PATCH 6/7] rc6 --- .github/workflows/build-binary-callable.yml | 6 +++--- mfem/__init__.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-binary-callable.yml b/.github/workflows/build-binary-callable.yml index 0f13b5b1..5d4aafd8 100644 --- a/.github/workflows/build-binary-callable.yml +++ b/.github/workflows/build-binary-callable.yml @@ -17,7 +17,7 @@ permissions: jobs: make_sdist: runs-on: ubuntu-latest - container: quay.io/pypa/manylinux2014_x86_64 + container: quay.io/pypa/manylinux_2_28_x86_64 steps: - name: build_sdist env: @@ -49,7 +49,7 @@ jobs: pythonpath: ["cp311-cp311", "cp312-cp312", "cp313-cp313", "cp314-cp314"] runs-on: ubuntu-latest - container: quay.io/pypa/manylinux2014_x86_64 + container: quay.io/pypa/manylinux_2_28_x86_64 steps: - name: build package env: @@ -67,13 +67,13 @@ jobs: ls -l /opt/python/ export PATH=/opt/python/${{ matrix.pythonpath }}/bin:$PATH + dnf install -y zlib-devel pip3 install --upgrade pip setuptools packaging pip3 wheel ./ --verbose --no-deps pip3 install auditwheel twine pip3 install "urllib3==1.26.6" # use older version to avoid OpenSSL vesion issue CWD=$PWD - yum install -y zlib-devel mkdir dist diff --git a/mfem/__init__.py b/mfem/__init__.py index b91b4f13..9f7d39f7 100644 --- a/mfem/__init__.py +++ b/mfem/__init__.py @@ -20,5 +20,5 @@ def debug_print(message): print(message) -__version__ = '4.10.0rc5' +__version__ = '4.10.0rc6' From 1b3067f21013ba2c784f4336349cdfc670d95c29 Mon Sep 17 00:00:00 2001 From: "S. Shiraiwa" Date: Mon, 21 Sep 2026 11:04:05 -0400 Subject: [PATCH 7/7] added ex41.py and changelog --- docs/changelog.txt | 108 +++++++------- examples/ex41.py | 351 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 410 insertions(+), 49 deletions(-) create mode 100644 examples/ex41.py diff --git a/docs/changelog.txt b/docs/changelog.txt index c94c44f9..2dd99b30 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -1,28 +1,38 @@ <<< Change Log. >>> 2026 09 * PyMFEM 4.10.0 - - Default build uses MFEM 4.10. - - Requires SWIG >= 4.5. - - Replace PyInt/PyString APIs (from Python 2) and SWIG_Python_str_FromChar - with Python 3 APIs. - - Update STRUMPACK argument conversion to use owned, mutable UTF-8 copies. - - Add MultiVector wrapper (multivector.i). - - Suppress invalid IntegerSet constructors generated due to using Array - in sets.hpp (and how SWIG interprets it). - - Vector::GetArrayView is currently ignored. This method returns MemoryView - (which is not copy/move-able). - - Expose ODESolver::SupportsImplicitVariableType and SetImplicitVariableType - through %extend and using the public TimeDependentOperator enum. - - Add DGMassInv wrapper (dgmassinv.i). - - Add low-order refined discretization wrappers (lor.i). Following templrate - specialiation are created - (serial) LORGSSmoother (LORSolver) - LORDSmoother (LORSolver) - (parallel) LORHypreBoomerAMG (LORSolver) - LORHypreAMS (LORSolver) - LORHypreADS (LORSolver) - - Python ex41 and ex41p for IMEX advection-diffusion, - - Add star-mixed.mesh and star-mixed-p2.mesh to the example mesh data. + Supported environment: + - Default build uses MFEM 4.10. + - Update requirement Python >= 3.11, NumPy >= 2.4.1, and SWIG >= 4.5. + - Droped Python 3.10 support, although it will strill built from source. + + Wrapper enhancement/fix: + - Add MultiVector wrapper (multivector.i). + - Suppress invalid IntegerSet constructors generated due to using Array + in sets.hpp (and how SWIG interprets it). + - Vector::GetArrayView is currently ignored. This method returns MemoryView + (which is not copy/move-able). + - Expose ODESolver::SupportsImplicitVariableType and SetImplicitVariableType + through %extend and using the public TimeDependentOperator enum. + - Add DGMassInv wrapper (dgmassinv.i). + - Add low-order refined discretization wrappers (lor.i). Following templrate + specialiation are created + (serial) LORGSSmoother (LORSolver) + LORDSmoother (LORSolver) + (parallel) LORHypreBoomerAMG (LORSolver) + LORHypreAMS (LORSolver) + LORHypreADS (LORSolver) + - Add FilteredSolver wrapper (filteredsolver.i). + - Add ex41.py and ex41p.py for IMEX advection-diffusion. + - Add star-mixed.mesh and star-mixed-p2.mesh to the example mesh data. + - Replace PyInt/PyString APIs (from Python 2) and SWIG_Python_str_FromChar + with Python 3 APIs. + Update on release script: + - Add macOS ARM64 binary release workflows (for Apple Silicon with macOS>=14). + - Common workflows are separated from PyPI and TestPyPI release scripts. + - Linux build container is updated to manylinux_2_28_x86_64 + - Moved Python 3.11 + 2025 08 * Requires SWIG >= 4.4. * Added git_is_tracking_remote in build_util, which is called before git pull. @@ -30,39 +40,39 @@ mfem::ParGridFunction::ProjectDiscCoefficient(std::variant) which was introduced recently in pgridfunc.hpp * fe_pyramid.i is added - + 2025 12 * PyMFEM4.9 - - ordering.i is added and made correponding adjustment in *.i files. - - update ex22, ex22p to save ComplexGridFunction as is - - fixed ParComplexGridFunction::Save wrapping - - fixed GetDataArray of Vector/DenseMatrix/DenseTensor/SparseMatrix so that - destructore is not pre-maturely called when return value is not stored to - a variable. - - particleset.hpp, particlevector.hpp wrapper - - miniapp/dpg/utils/*.hpp is wrapped. - - Python version of pmaxwell.py in miniapp/dpg directory - - Shadowed method in fespace.i and pfespace.i are improved to return intArray and DofTransformation - as a pre-allocated object. + - ordering.i is added and made correponding adjustment in *.i files. + - update ex22, ex22p to save ComplexGridFunction as is + - fixed ParComplexGridFunction::Save wrapping + - fixed GetDataArray of Vector/DenseMatrix/DenseTensor/SparseMatrix so that + destructore is not pre-maturely called when return value is not stored to + a variable. + - particleset.hpp, particlevector.hpp wrapper + - miniapp/dpg/utils/*.hpp is wrapped. + - Python version of pmaxwell.py in miniapp/dpg directory + - Shadowed method in fespace.i and pfespace.i are improved to return intArray and DofTransformation + as a pre-allocated object. 2025 09 * PyMFEM 4.8 - Default branch is set to MFEM 4.8 release - - Support Python 3.12 and Python 3.13 (in CI) - - Python 3.8 is not supported anymore. - - Last version to support Python 3.9 - - Install process is overwhauled, - -- wheel is build both on Linux and Mac. - -- local build-from-source is now done by "pip install . ", not "python setup.py install". - -- ad-hoc call of chrpath is removed. - -- CI script is updated to use pip install - - migrated to numpy 2. - - added custom numba-compiled bessel function to eliminate numba-scipy dependency - - ex40 and ex40p are translated. - - updated HYPRE version to 2.32 - - wrappers for the following MFEM objects are added - -- Array2D - -- IterativeSolverController + - Support Python 3.12 and Python 3.13 (in CI) + - Python 3.8 is not supported anymore. + - Last version to support Python 3.9 + - Install process is overwhauled, + -- wheel is build both on Linux and Mac. + -- local build-from-source is now done by "pip install . ", not "python setup.py install". + -- ad-hoc call of chrpath is removed. + -- CI script is updated to use pip install + - migrated to numpy 2. + - added custom numba-compiled bessel function to eliminate numba-scipy dependency + - ex40 and ex40p are translated. + - updated HYPRE version to 2.32 + - wrappers for the following MFEM objects are added + -- Array2D + -- IterativeSolverController -- CoefficientPtrArray -- VectorCoefficientPtrArray -- MatrixCoefficientPtrArray diff --git a/examples/ex41.py b/examples/ex41.py new file mode 100644 index 00000000..c1f258ad --- /dev/null +++ b/examples/ex41.py @@ -0,0 +1,351 @@ +''' + MFEM example 41 (converted from ex41.cpp) + + See c++ version in the MFEM library for more detail + + Sample runs: + python ex41.py + python ex41.py -cg + python ex41.py -m ../data/periodic-hexagon.mesh -p 0 -r 2 -dt 0.005 -tf 10 + python ex41.py -m ../data/periodic-square.mesh -p 1 -r 2 -dt 0.005 -tf 9 + python ex41.py -m ../data/periodic-hexagon.mesh -p 1 -r 2 -dt 0.005 -tf 9 + python ex41.py -m ../data/amr-quad.mesh -p 1 -r 2 -dt 0.002 -tf 9 + python ex41.py -m ../data/star-q3.mesh -p 1 -r 2 -dt 0.001 -tf 9 + python ex41.py -m ../data/star-mixed.mesh -p 1 -r 2 -dt 0.005 -tf 9 + python ex41.py -m ../data/disc-nurbs.mesh -p 1 -r 3 -dt 0.005 -tf 9 + python ex41.py -m ../data/disc-nurbs.mesh -p 2 -r 3 -dt 0.005 -tf 9 + python ex41.py -m ../data/periodic-square.mesh -p 3 -r 4 -dt 0.0025 -tf 9 -vs 20 + python ex41.py -m ../data/periodic-cube.mesh -p 0 -r 2 -o 2 -dt 0.01 -tf 8 + + Description: This example code solves the time-dependent advection-diffusion + equation du/dt + v.grad(u) - a div(grad(u)) = 0, where v is a + given fluid velocity, a is the diffusion coefficient, and + u0(x)=u(0,x) is a given initial condition. + + The example demonstrates the use of Discontinuous Galerkin (DG) + bilinear forms in MFEM (face integrators), and the use of IMEX + ODE time integrators. + + The option to use continuous finite elements is available too. + + + Python note: binary (Sidre) VisIt output is not translated. +''' +import os +from os.path import expanduser, join +from math import erfc +import numpy as np + +import mfem.ser as mfem + + +class Implicit_Solver(mfem.Solver): + """Solver for the implicit part of the ODE (the diffusion term). + + Solves systems of the form: (M + dt*S) k = rhs. + """ + def __init__(self, M, S, fes): + mfem.Solver.__init__(self, M.Height()) + self.M = M + self.S = S + self.A = None + self.dt = None + self.prec = mfem.BlockILU( + fes.GetTypicalFE().GetDof(), + mfem.BlockILU.Reordering_MINIMUM_DISCARDED_FILL) + self.linear_solver = mfem.CGSolver() + self.linear_solver.iterative_mode = False + self.linear_solver.SetRelTol(1e-9) + self.linear_solver.SetAbsTol(0.0) + self.linear_solver.SetMaxIter(100) + self.linear_solver.SetPrintLevel(0) + self.linear_solver.SetPreconditioner(self.prec) + + def SetTimeStep(self, dt): + if self.dt is None or abs(self.dt - dt) > 10*np.finfo(float).eps: + self.dt = dt + # Form operator A = M + dt*S + self.A = mfem.Add(1.0, self.M, dt, self.S) + # This will also call SetOperator on the preconditioner. + self.linear_solver.SetOperator(self.A) + + def SetOperator(self, op): + self.linear_solver.SetOperator(op) + + def Mult(self, x, y): + self.linear_solver.Mult(x, y) + + +class IMEX_Evolution(mfem.PyTimeDependentOperator): + """A time-dependent operator for the right-hand side of the ODE. + + The weak form of the advection-diffusion equation is M du/dt = K u - S u + b, + where M is the mass matrix, K and S are the advection and diffusion + matrices, and b describes the flow on the boundary. In the case of IMEX + evolution, the diffusion term is treated implicitly, and the advection + term is treated explicitly. + """ + def __init__(self, M, K, S, b): + mfem.PyTimeDependentOperator.__init__(self, M.FESpace().GetTrueVSize()) + self.M, self.K, self.S, self.b = M, K, S, b + self.z = mfem.Vector(self.Height()) + self.M_prec = mfem.DSmoother(M.SpMat()) + self.M_solver = mfem.CGSolver() + self.M_solver.SetOperator(M.SpMat()) + self.implicit_solver = Implicit_Solver(M.SpMat(), S.SpMat(), M.FESpace()) + self.M_solver.SetPreconditioner(self.M_prec) + self.M_solver.iterative_mode = False + self.M_solver.SetRelTol(1e-9) + self.M_solver.SetAbsTol(0.0) + self.M_solver.SetMaxIter(100) + self.M_solver.SetPrintLevel(0) + + def Mult1(self, x, y): + # Perform the explicit step + # y = M^{-1} (K x + b) + self.K.Mult(x, self.z) + self.z += self.b + self.M_solver.Mult(self.z, y) + + def ImplicitSolve2(self, dt, x, k): + # Perform the implicit step + # solve for k, k = -(M+dt S)^{-1} S x + self.S.Mult(x, self.z) + self.z.Neg() + self.implicit_solver.SetTimeStep(dt) + self.implicit_solver.Mult(self.z, k) + + def Mult(self, x, y): + if self.GetEvalMode() == mfem.TimeDependentOperator.ADDITIVE_TERM_1: + self.Mult1(x, y) + else: + raise RuntimeError('TimeDependentOperator::Mult() is not overridden!') + + def ImplicitSolve(self, dt, x, k): + if self.GetEvalMode() == mfem.TimeDependentOperator.ADDITIVE_TERM_2: + self.ImplicitSolve2(dt, x, k) + else: + raise RuntimeError('TimeDependentOperator::ImplicitSolve() is not overridden!') + + +def run(meshfile='', problem=0, ref_levels=2, order=3, + ode_solver_type=64, t_final=10.0, dt=0.01, diffusion_term=0.01, + cg=False, vis_steps=50, visualization=True, visit=False, paraview=False): + + # 2. Read the mesh from the given mesh file. We can handle geometrically + # periodic meshes in this code. + mesh = mfem.Mesh(meshfile, 1, 1) + dim = mesh.Dimension() + + # 3. Define the IMEX (Split) ODE solver used for time integration. The IMEX + # solvers currently available are: 61 - Forward Backward Euler, + # 62 - IMEXRK2(2,2,2), 63 - IMEXRK2(2,3,2), and 64 - IMEX_DIRK_RK3. + if ode_solver_type == 61: + ode_solver = mfem.IMEXExpImplEuler() + elif ode_solver_type == 62: + ode_solver = mfem.IMEXRK2() + elif ode_solver_type == 63: + ode_solver = mfem.IMEXRK2_3StageExplicit() + elif ode_solver_type == 64: + ode_solver = mfem.IMEX_DIRK_RK3() + else: + raise ValueError('Unknown IMEX ODE solver type: ' + str(ode_solver_type)) + + # 4. Refine the mesh to increase the resolution. In this example we do + # 'ref_levels' of uniform refinement, where 'ref_levels' is a + # command-line parameter. + for lev in range(ref_levels): + mesh.UniformRefinement() + if mesh.NURBSext: + mesh.SetCurvature(max(order, 1)) + bb_min, bb_max = mesh.GetBoundingBox(max(order, 1)) + + # 5. Define the discontinuous DG finite element space of the given + # polynomial order on the refined mesh. + if cg: + fec = mfem.H1_FECollection(order, dim) + else: + fec = mfem.DG_FECollection(order, dim, mfem.BasisType.GaussLobatto) + fes = mfem.FiniteElementSpace(mesh, fec) + print('Number of unknowns: ' + str(fes.GetVSize())) + + # Velocity coefficient + @mfem.jit.vector(shape=(dim,)) + def velocity(x): + # Map to the reference [-1,1] domain. + center = (bb_min + bb_max)*0.5 + X = 2*(x - center)/(bb_max - bb_min) + v = np.zeros(dim) + if problem == 0: + # Translations in 1D, 2D, and 3D + if dim == 1: + v[0] = 1.0 + elif dim == 2: + v[:] = [np.sqrt(2./3.), np.sqrt(1./3.)] + else: + v[:] = [np.sqrt(3./6.), np.sqrt(2./6.), np.sqrt(1./6.)] + else: + # Clockwise rotation in 2D around the origin + w = np.pi/2 + if dim == 1: + v[0] = 1.0 + else: + d = 1.0 + if problem == 3: + # Clockwise twisting rotation in 2D around the origin + d = (max((X[0]+1)*(1-X[0]), 0.) * + max((X[1]+1)*(1-X[1]), 0.))**2 + v[0], v[1] = d*w*X[1], -d*w*X[0] + return v + + # Initial condition + @mfem.jit.scalar + def u0(x): + # Map to the reference [-1,1] domain. + center = (bb_min + bb_max)*0.5 + X = 2*(x - center)/(bb_max - bb_min) + if problem in (0, 1): + if dim == 1: + return np.exp(-40*(X[0]-0.5)**2) + rx, ry, cx, cy, w = 0.45, 0.25, 0., -0.2, 10. + if dim == 3: + scale = 1 + 0.25*np.cos(2*np.pi*X[2]) + rx *= scale + ry *= scale + return (erfc(w*(X[0]-cx-rx))*erfc(-w*(X[0]-cx+rx)) * + erfc(w*(X[1]-cy-ry))*erfc(-w*(X[1]-cy+ry)))/16 + if problem == 2: + rho = np.hypot(X[0], X[1]) + phi = np.arctan2(X[1], X[0]) + return np.sin(np.pi*rho)**2*np.sin(3*phi) + return np.sin(np.pi*X[0])*np.sin(np.pi*X[1]) + + # 6. Set up and assemble the bilinear and linear forms corresponding to the + # DG discretization. The DGTraceIntegrator involves integrals over mesh + # interior faces. + diff_coeff = mfem.ConstantCoefficient(diffusion_term) + m, k, s = mfem.BilinearForm(fes), mfem.BilinearForm(fes), mfem.BilinearForm(fes) + b = mfem.Vector(fes.GetTrueVSize()) + b.Assign(0.0) # The inflow on the boundaries is set to zero. + m.AddDomainIntegrator(mfem.MassIntegrator()) + alpha, sigma, kappa = -1.0, -1.0, float((order+1)**2) + k.AddDomainIntegrator(mfem.ConvectionIntegrator(velocity, alpha)) + s.AddDomainIntegrator(mfem.DiffusionIntegrator(diff_coeff)) + if not cg: + k.AddInteriorFaceIntegrator(mfem.NonconservativeDGTraceIntegrator(velocity, alpha)) + k.AddBdrFaceIntegrator(mfem.NonconservativeDGTraceIntegrator(velocity, alpha)) + s.AddInteriorFaceIntegrator(mfem.DGDiffusionIntegrator(diff_coeff, sigma, kappa)) + s.AddBdrFaceIntegrator(mfem.DGDiffusionIntegrator(diff_coeff, sigma, kappa)) + skip_zeros = 0 + for form in (m, k, s): + form.Assemble(skip_zeros) + form.Finalize(skip_zeros) + + # 7. Define the initial conditions. + u = mfem.GridFunction(fes) + u.ProjectCoefficient(u0) + + # Create data collection for solution output. + # Python note: only ASCII VisIt output is provided here. + precision = 8 + if visit: + dc = mfem.VisItDataCollection('Example41', mesh) + dc.SetPrecision(precision) + dc.RegisterField('solution', u) + dc.SetCycle(0) + dc.SetTime(0.0) + dc.Save() + + # 8. Set up paraview visualization, if desired. + if paraview: + pv = mfem.ParaViewDataCollection('Example41', mesh) + pv.SetPrefixPath('ParaView') + pv.RegisterField('solution', u) + pv.SetLevelsOfDetail(order) + pv.SetDataFormat(mfem.VTKFormat_BINARY) + pv.SetHighOrderOutput(True) + pv.SetCycle(0) + pv.SetTime(0.0) + pv.Save() + + if visualization: + sout = mfem.socketstream('localhost', 19916) + if not sout.good(): + print('Unable to connect to GLVis server at localhost:19916') + visualization = False + print('GLVis visualization disabled.') + else: + sout.precision(precision) + sout << 'solution\n' << mesh << u << 'pause\n' + sout.flush() + print('GLVis visualization paused. Press space (in the GLVis window) to resume it.') + + # 9. Define the time-dependent evolution operator describing the ODE + # right-hand side, and perform time-integration (looping over the time + # iterations, ti, with a time-step dt). + adv = IMEX_Evolution(m, k, s, b) + t = 0.0 + adv.SetTime(t) + ode_solver.Init(adv) + ti = 0 + while t < t_final - 1e-8*dt: + dt_real = min(dt, t_final - t) + t, dt_real = ode_solver.Step(u, t, dt_real) + ti += 1 + done = t >= t_final - 1e-8*dt + if done or ti % vis_steps == 0: + print(f'time step: {ti}, time: {t:.6g}') + if paraview: + pv.SetCycle(ti) + pv.SetTime(t) + pv.Save() + if visualization: + sout << 'solution\n' << mesh << u + sout.flush() + if visit: + dc.SetCycle(ti) + dc.SetTime(t) + dc.Save() + + +if __name__ == '__main__': + from mfem.common.arg_parser import ArgParser + + # 1. Parse command-line options. + parser = ArgParser(description='Ex41 (IMEX advection-diffusion)') + parser.add_argument('-m', '--mesh', default='periodic-square.mesh', type=str, + help='Mesh file to use.') + parser.add_argument('-p', '--problem', default=0, type=int, choices=range(4), + help='Problem setup to use. See velocity_coeff.') + parser.add_argument('-r', '--refine', default=2, type=int, + help='Number of times to refine the mesh uniformly.') + parser.add_argument('-o', '--order', default=3, type=int, + help='Order of the finite elements.') + parser.add_argument('-s', '--ode-solver', default=64, type=int, + help='61 - Forward Backward Euler, 62 - IMEXRK2(2,2,2), ' + '63 - IMEXRK2(2,3,2), 64 - IMEX_DIRK_RK3.') + parser.add_argument('-tf', '--t-final', default=10.0, type=float, + help='Final time; start time is 0.') + parser.add_argument('-dt', '--time-step', default=0.01, type=float, + help='Time step.') + parser.add_argument('-dc', '--diffusion-coeff', default=0.01, type=float, + help='Diffusion coefficient in the PDE.') + parser.add_argument('-cg', '--continuous-galerkin', action='store_true', + help='Use Continuous-Galerkin finite elements (default is DG).') + parser.add_argument('-vs', '--visualization-steps', default=50, type=int, + help='Visualize every n-th timestep.') + parser.add_argument('-no-vis', '--no-visualization', action='store_true', + help='Disable GLVis visualization.') + parser.add_argument('-visit', '--visit-datafiles', action='store_true', + help='Save ASCII data files for VisIt visualization.') + parser.add_argument('-paraview', '--paraview-datafiles', action='store_true', + help='Save data files for ParaView visualization.') + args = parser.parse_args() + parser.print_options(args) + meshfile = expanduser(join(os.path.dirname(__file__), '..', 'data', args.mesh)) + run(meshfile=meshfile, problem=args.problem, ref_levels=args.refine, + order=args.order, ode_solver_type=args.ode_solver, t_final=args.t_final, + dt=args.time_step, diffusion_term=args.diffusion_coeff, + cg=args.continuous_galerkin, vis_steps=args.visualization_steps, + visualization=not args.no_visualization, visit=args.visit_datafiles, + paraview=args.paraview_datafiles)