diff --git a/.gitignore b/.gitignore
index 58f68fec2ab0c4181e2ba79b29ffb4032c895aef..bb86ffbf99aedf8db5d298a92ce44ad890ab2374 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 *~
 /build*/
 # ignore files generated during python setup.py sdist
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index eef8c51dff0986fcfa6ca29030c5fabdc23f501e..4b7d686996016ae5ba5c776d8538f9b6b1cd01c9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 ---
 include:
   - project: 'core/ci-config'
@@ -45,3 +48,13 @@ ubuntu:18.04 clang-5-17:
     DUNECI_TOOLCHAIN: clang-5-17
     DUNECI_CMAKE_FLAGS: "-DDUNE_ENABLE_PYTHONBINDINGS=OFF"
   tags: [duneci]
+
+reuse:
+  stage: .pre
+  image:
+    name: docker.io/fsfe/reuse:latest
+    entrypoint: [""]
+  tags: [duneci]
+  before_script: ""
+  script:
+    - reuse lint
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d2a89468892e21dd4e09a49dfe998b0b3a343ea1..a9d3e2958b4bc5eb3014623d2d0383f7958f12dd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+<!--
+SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+-->
+
 # Master (will become release 2.9)
 
 - Add `const` qualifier to `LinearOperator` and `ScalarProduct` in
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9b595329cb0af176e53fc12aa2e4355fdf6ce12e..c3df6c1c98c38c2cb09c58a6d5afa9ac359ab276 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 # set up project
 project(dune-istl C CXX)
 
diff --git a/INSTALL b/INSTALL
index 711f1ac1627fa12a02f28b743045019d34df3dcd..d757f629cbf4206cdf3fc15ae1cc984840a08394 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,3 +1,8 @@
+<!--
+SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+-->
+
 Installation Instructions
 =========================
 
diff --git a/LICENSES/LicenseRef-GPL-2.0-only-with-DUNE-exception.txt b/LICENSES/LicenseRef-GPL-2.0-only-with-DUNE-exception.txt
new file mode 100644
index 0000000000000000000000000000000000000000..573a1b4da98aa8e4460d2c23fa356912df9d52af
--- /dev/null
+++ b/LICENSES/LicenseRef-GPL-2.0-only-with-DUNE-exception.txt
@@ -0,0 +1,360 @@
+The DUNE library and headers are licensed under version 2 of the GNU
+General Public License (see below), with a special exception for
+linking and compiling against DUNE, the so-called "runtime exception."
+The license is intended to be similar to the GNU Lesser General
+Public License, which by itself isn't suitable for a template library.
+
+The exact wording of the exception reads as follows:
+
+   As a special exception, you may use the DUNE source files as part
+   of a software library or application without restriction.
+   Specifically, if other files instantiate templates or use macros or
+   inline functions from one or more of the DUNE source files, or you
+   compile one or more of the DUNE source files and link them with
+   other files to produce an executable, this does not by itself cause
+   the resulting executable to be covered by the GNU General Public
+   License.  This exception does not however invalidate any other
+   reasons why the executable file might be covered by the GNU General
+   Public License.
+
+
+        GNU GENERAL PUBLIC LICENSE
+           Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+          Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+        GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+          NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+         END OF TERMS AND CONDITIONS
+
+      How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/README.md b/README.md
index eea5db64117b1b1d69f5999192714477dd4cec7a..1a118b93dfad13a1c44a246fe79750ac6e7efd0d 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,8 @@
+<!--
+SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+-->
+
 DUNE-library
 ============
 
diff --git a/cmake/modules/AddARPACKPPFlags.cmake b/cmake/modules/AddARPACKPPFlags.cmake
index c14345bac44e90509cd83c64b7eda8a1c98d205b..d67eaaa64658f785fae1093174367b40a774ea7c 100644
--- a/cmake/modules/AddARPACKPPFlags.cmake
+++ b/cmake/modules/AddARPACKPPFlags.cmake
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 # Defines the functions to use ARPACKPP
 #
 # .. cmake_function:: add_dune_arpackpp_flags
diff --git a/cmake/modules/AddSuperLUFlags.cmake b/cmake/modules/AddSuperLUFlags.cmake
index b17e5386e0c4da32e368caace6b58f15c8eb0eb3..c14f539b76a8e8d7eddfda2a439395084f7d055e 100644
--- a/cmake/modules/AddSuperLUFlags.cmake
+++ b/cmake/modules/AddSuperLUFlags.cmake
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 # Defines the functions to use SuperLU
 #
 # .. cmake_function:: add_dune_superlu_flags
diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt
index 1ce8f8812d32cfe7680cac78afac8b9c14d912c9..4e70df917ad2052c68a9954b04b695a8eeb819b5 100644
--- a/cmake/modules/CMakeLists.txt
+++ b/cmake/modules/CMakeLists.txt
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 set(modules
   AddARPACKPPFlags.cmake
   AddSuperLUFlags.cmake
diff --git a/cmake/modules/DuneIstlMacros.cmake b/cmake/modules/DuneIstlMacros.cmake
index 8ab346cdac6b6f45fa6a909ad5f20bdd65113881..e3eac5a977e0669619d9e511d810a24008c06462 100644
--- a/cmake/modules/DuneIstlMacros.cmake
+++ b/cmake/modules/DuneIstlMacros.cmake
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 # .. cmake_module::
 #
 #    This modules content is executed whenever a module required or suggests dune-istl!
diff --git a/cmake/modules/FindARPACK.cmake b/cmake/modules/FindARPACK.cmake
index 555bfe1ab18bc56c984ff739bfc1971d4c898d17..e50a2d094738f3fcc6f28fa216cea025337db07d 100644
--- a/cmake/modules/FindARPACK.cmake
+++ b/cmake/modules/FindARPACK.cmake
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 # .. cmake_module::
 #
 #    Module that checks whether ARPACK is available and usable.
diff --git a/cmake/modules/FindARPACKPP.cmake b/cmake/modules/FindARPACKPP.cmake
index 42b103b278340cb933fde3a3229520947cac26cc..1b6f89602e5cafde871a5e618f6ffac67814dff1 100644
--- a/cmake/modules/FindARPACKPP.cmake
+++ b/cmake/modules/FindARPACKPP.cmake
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 # .. cmake_module::
 #
 #    Module that checks whether ARPACK++ is available and usable.
diff --git a/cmake/modules/FindSuperLU.cmake b/cmake/modules/FindSuperLU.cmake
index 62affcbb0800d1a6e8929fbfeeb5c4111ab47b4f..162944c8c27b493ca22dab1ffc1f3cfe6f93b3aa 100644
--- a/cmake/modules/FindSuperLU.cmake
+++ b/cmake/modules/FindSuperLU.cmake
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 # .. cmake_module::
 #
 #    Module that checks whether SuperLU is available and usable.
diff --git a/config.h.cmake b/config.h.cmake
index ae1053f359c3983e5e5fc4072df2a238424c3eda..e8fcee646df811ec93cd479a66f6b73b22d45434 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 /* begin dune-istl
    put the definitions for config.h specific to
    your project here. Everything above will be
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
index 27fb32e985405d4d6683b37c6f6bb0c41d34bc2f..dc446db2e705cac1d4d6875d8974db57c0422e38 100644
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 add_subdirectory(doxygen)
 
 dune_add_latex_document(
diff --git a/doc/blockstructure.eps.license b/doc/blockstructure.eps.license
new file mode 100644
index 0000000000000000000000000000000000000000..ab53c287aa3ac0813eb9af172f0a542bae67f6ba
--- /dev/null
+++ b/doc/blockstructure.eps.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
diff --git a/doc/doxygen/CMakeLists.txt b/doc/doxygen/CMakeLists.txt
index 0f65f1ba5d597b9463f51d0cb5c045e77cd8daab..af60af15affacb40282c168891e073bad4935059 100644
--- a/doc/doxygen/CMakeLists.txt
+++ b/doc/doxygen/CMakeLists.txt
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 # shortcut for creating the Doxyfile.in and Doxyfile
 add_doxygen_target()
 
diff --git a/doc/doxygen/Doxylocal b/doc/doxygen/Doxylocal
index 0b5a2a31066829d473982b711152bd377aea7f0f..51d1742fca866bdd4c8923aeb8777287c53241ff 100644
--- a/doc/doxygen/Doxylocal
+++ b/doc/doxygen/Doxylocal
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 INPUT                 += @srcdir@/mainpage.txt \
                          @srcdir@/modules.txt \
                          @top_srcdir@/dune/istl
diff --git a/doc/doxygen/mainpage.txt b/doc/doxygen/mainpage.txt
index bef720082da5c5a8ca551ede431e522e2a7ccecb..cfda1068de8e31003917e4f0a3cec01b743f397b 100644
--- a/doc/doxygen/mainpage.txt
+++ b/doc/doxygen/mainpage.txt
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 /** \mainpage dune-istl Automatic Documentation
 
 \section intro Introduction
diff --git a/doc/doxygen/modules.txt b/doc/doxygen/modules.txt
index 55c72dbc93b355749e6fe99f6d9903db097fd67a..0bd3a92273f04884f8d0d667537bccb5fbabe5a8 100644
--- a/doc/doxygen/modules.txt
+++ b/doc/doxygen/modules.txt
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 /**
   @defgroup ISTL Iterative Solvers Template Library (ISTL)
 
diff --git a/doc/istl.bib b/doc/istl.bib
index a2070a7302d6a5669c5be8f53ea609bf62b879ed..331a13fda27b1b50ce9c8ba40f10dfbd8cbde869 100644
--- a/doc/istl.bib
+++ b/doc/istl.bib
@@ -1,3 +1,6 @@
+@Comment SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+@Comment SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 @String{ap =     "Ann. der Physik"}
 @String{as =     "Acta Stereol."}
 @String{awr =    "Adv. Water Res."}
@@ -156,4 +159,4 @@
   OPTnote = 	 {},
   OPTannote = 	 {},
  publisher = {Springer-Verlag Wien}
-}
\ No newline at end of file
+}
diff --git a/doc/istl.tex b/doc/istl.tex
index 2733cd27256355d80b280a11c5ea207e35034de5..8f3b9ba1fa262273ca7a1d468d769cedb18296d6 100644
--- a/doc/istl.tex
+++ b/doc/istl.tex
@@ -1,3 +1,6 @@
+% SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+% SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 \documentclass[11pt]{article}
 \usepackage{multicol}
 \usepackage{amsmath}
diff --git a/dune-istl.pc.in b/dune-istl.pc.in
index 6b456fa5731ca3b7d135c2fb2c0cd3c59220879c..e06093c1855bda1fbcb6623c41d89d44f2652002 100644
--- a/dune-istl.pc.in
+++ b/dune-istl.pc.in
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 prefix=@prefix@
 exec_prefix=@exec_prefix@
 libdir=@libdir@
diff --git a/dune.module b/dune.module
index ce049f328a534a5e484f9354df218c0a81ffada7..858aa06cfd3c4bbc58abfc0aa047042063f7dbe6 100644
--- a/dune.module
+++ b/dune.module
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 Module: dune-istl
 Version: 2.10-git
 Author: The Dune Core developers
diff --git a/dune/CMakeLists.txt b/dune/CMakeLists.txt
index e9087bc607541d4e902724e630b38d257dc0f075..c2f799b23637479acabf55d64f972bb55c538704 100644
--- a/dune/CMakeLists.txt
+++ b/dune/CMakeLists.txt
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 add_subdirectory(istl)
 # if Python bindings are enabled, include necessary sub directories.
 if( DUNE_ENABLE_PYTHONBINDINGS )
diff --git a/dune/istl/CMakeLists.txt b/dune/istl/CMakeLists.txt
index 7242adc061e7d08c5d2d6fd374033d608b28fc83..6d3042293a0e59c9f64a596c13f75ea160c88b84 100644
--- a/dune/istl/CMakeLists.txt
+++ b/dune/istl/CMakeLists.txt
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 add_subdirectory("common")
 add_subdirectory("eigenvalue")
 add_subdirectory("paamg")
diff --git a/dune/istl/allocator.hh b/dune/istl/allocator.hh
index c96edff06fd96dca840dc0a3676ef59a17459cbe..b5d75af82267a56af348dac4ab18848302cd4e5d 100644
--- a/dune/istl/allocator.hh
+++ b/dune/istl/allocator.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #ifndef DUNE_ISTL_ALLOCATOR_HH
 #define DUNE_ISTL_ALLOCATOR_HH
 
diff --git a/dune/istl/basearray.hh b/dune/istl/basearray.hh
index fbbff85a777031248c1a35339f01b94faf763f79..180bd82fa6a95a5163867979af2f7bd351f46eb5 100644
--- a/dune/istl/basearray.hh
+++ b/dune/istl/basearray.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_BASEARRAY_HH
diff --git a/dune/istl/bccsmatrix.hh b/dune/istl/bccsmatrix.hh
index a066079dbbae7fb0cd30381c3b1020cfd63ff188..39103f84f0a60f1798e25dbab0a042d279d883fb 100644
--- a/dune/istl/bccsmatrix.hh
+++ b/dune/istl/bccsmatrix.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_BCCSMATRIX_HH
diff --git a/dune/istl/bccsmatrixinitializer.hh b/dune/istl/bccsmatrixinitializer.hh
index 596fcb7b324ef061a032e66e97f563238ec4c758..fb729b8cbb38cc1287064e630e158deb2ed6f42a 100644
--- a/dune/istl/bccsmatrixinitializer.hh
+++ b/dune/istl/bccsmatrixinitializer.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_BCCSMATRIX_INITIALIZER_HH
diff --git a/dune/istl/bcrsmatrix.hh b/dune/istl/bcrsmatrix.hh
index 9384fcdf6d7c311157ab47e36806a20a09c468fe..a429a8bb214823bb885c6fc9dab3b0523f0a1e37 100644
--- a/dune/istl/bcrsmatrix.hh
+++ b/dune/istl/bcrsmatrix.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 
diff --git a/dune/istl/bdmatrix.hh b/dune/istl/bdmatrix.hh
index 9d8582651aacbcfd7efb0000a738509a782da1e4..b579943c421208255d3b8c6a8c42287880946dee 100644
--- a/dune/istl/bdmatrix.hh
+++ b/dune/istl/bdmatrix.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_BDMATRIX_HH
diff --git a/dune/istl/blocklevel.hh b/dune/istl/blocklevel.hh
index b37b2cf603b8ec48bec14411193857b93723a17c..3753508cbd72d6be82c8e13221d2f881dfad814a 100644
--- a/dune/istl/blocklevel.hh
+++ b/dune/istl/blocklevel.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 
diff --git a/dune/istl/btdmatrix.hh b/dune/istl/btdmatrix.hh
index bcd351e83b3ed2311a4b2a565f5b44ffea25d836..17a83516b10f4bc4e28d13fa970300eb49a86e6e 100644
--- a/dune/istl/btdmatrix.hh
+++ b/dune/istl/btdmatrix.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_BTDMATRIX_HH
diff --git a/dune/istl/bvector.hh b/dune/istl/bvector.hh
index aec1b370cf0dd341d057b83b8655093e8e654022..a54a118aa14b6deb951c9f44e8e682db44f4d0e3 100644
--- a/dune/istl/bvector.hh
+++ b/dune/istl/bvector.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 
diff --git a/dune/istl/cholmod.hh b/dune/istl/cholmod.hh
index 5d2eaf8c1389a36faeb4fc0e41fd6da3b2da292e..679cf05f1bd8f27923445bb23753b3c23537c1bc 100644
--- a/dune/istl/cholmod.hh
+++ b/dune/istl/cholmod.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #pragma once
 
 #if HAVE_SUITESPARSE_CHOLMOD
diff --git a/dune/istl/common/CMakeLists.txt b/dune/istl/common/CMakeLists.txt
index 25ba626aeb6319eb1b48cfe2bd72b3cab6368bc6..cd9bf2a694be3d770f0340586749babdde17ae72 100644
--- a/dune/istl/common/CMakeLists.txt
+++ b/dune/istl/common/CMakeLists.txt
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 #install headers
 install(FILES
    counter.hh
diff --git a/dune/istl/common/counter.hh b/dune/istl/common/counter.hh
index 4d6f84ae575adf198094bb5ac1879300c4dd2796..591fab9a4b61427bc3253e0c97ed31da7a1a7bcf 100644
--- a/dune/istl/common/counter.hh
+++ b/dune/istl/common/counter.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #ifndef DUNE_ISTL_COMMON_COUNTER_HH
 #define DUNE_ISTL_COMMON_COUNTER_HH
 
diff --git a/dune/istl/common/registry.hh b/dune/istl/common/registry.hh
index 32d65d0cda141481ade8f2f0493fe1dc4e8fb1f0..43c379c46e3fec0fe3cf0f87d21f2244c47996bb 100644
--- a/dune/istl/common/registry.hh
+++ b/dune/istl/common/registry.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #ifndef DUNE_ISTL_COMMON_REGISTRY_HH
 #define DUNE_ISTL_COMMON_REGISTRY_HH
 
diff --git a/dune/istl/eigenvalue/CMakeLists.txt b/dune/istl/eigenvalue/CMakeLists.txt
index f6b863c3a9b066118c1f5f31addf8cebfbe4637e..a8bd8fb5b56d0d0b796dcb55308b8c3e44c6620e 100644
--- a/dune/istl/eigenvalue/CMakeLists.txt
+++ b/dune/istl/eigenvalue/CMakeLists.txt
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 add_subdirectory(test)
 
 #install headers
diff --git a/dune/istl/eigenvalue/arpackpp.hh b/dune/istl/eigenvalue/arpackpp.hh
index c62eb9c7dfcfe4c159388aa747d59a658609cec6..1f085d782727ab67b0e3cdfea8be4464c635bf99 100644
--- a/dune/istl/eigenvalue/arpackpp.hh
+++ b/dune/istl/eigenvalue/arpackpp.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_EIGENVALUE_ARPACKPP_HH
diff --git a/dune/istl/eigenvalue/poweriteration.hh b/dune/istl/eigenvalue/poweriteration.hh
index 2da068e0662de57abaaa56cf0e5e487bf7c35b70..9802c244b4cba240ea14c30020f1d2e6af6e0fe6 100644
--- a/dune/istl/eigenvalue/poweriteration.hh
+++ b/dune/istl/eigenvalue/poweriteration.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_EIGENVALUE_POWERITERATION_HH
diff --git a/dune/istl/eigenvalue/test/CMakeLists.txt b/dune/istl/eigenvalue/test/CMakeLists.txt
index feb0e902a8cc3fe10b344432598bdcac38a01f23..79e98a276268b4096857bc8cce9f34b1e527ae55 100644
--- a/dune/istl/eigenvalue/test/CMakeLists.txt
+++ b/dune/istl/eigenvalue/test/CMakeLists.txt
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 dune_add_test(NAME poweriterationtest SOURCES cond2test.cc
   CMD_ARGS 40)
 
diff --git a/dune/istl/eigenvalue/test/cond2test.cc b/dune/istl/eigenvalue/test/cond2test.cc
index c49ea951fa3f2e612fcd9e29ce4b56be0810af68..80e40584c65b24cf784d994a49688c1ee0bef757 100644
--- a/dune/istl/eigenvalue/test/cond2test.cc
+++ b/dune/istl/eigenvalue/test/cond2test.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #include <config.h>
 
 #include <iostream>
diff --git a/dune/istl/eigenvalue/test/matrixinfo.hh b/dune/istl/eigenvalue/test/matrixinfo.hh
index d34ab31dd1ebfb0cfe484a6332bcca09be8cdf80..82692b9b986ede24d897d335363f0e33ec227684 100644
--- a/dune/istl/eigenvalue/test/matrixinfo.hh
+++ b/dune/istl/eigenvalue/test/matrixinfo.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_EIGENVALUE_TEST_MATRIXINFO_HH
diff --git a/dune/istl/foreach.hh b/dune/istl/foreach.hh
index de50354d1b1341c8d7a8e71381c87f5dfd562dc9..4e9464db1a1e29de0ea8e5a7c481d02438c7b41f 100644
--- a/dune/istl/foreach.hh
+++ b/dune/istl/foreach.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #pragma once
 
 #include<type_traits>
diff --git a/dune/istl/gsetc.hh b/dune/istl/gsetc.hh
index 21ce510355f3483f9bb06c2ec32226f9c1fb49d9..0cfddb0cda4704d105a558de3b2c8febbcddea4a 100644
--- a/dune/istl/gsetc.hh
+++ b/dune/istl/gsetc.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_GSETC_HH
diff --git a/dune/istl/ildl.hh b/dune/istl/ildl.hh
index d080feec6820ff3abec3d91eeac53eaf76c8c014..9f595854a4327d0ad38cbf778657ee0eb3db510a 100644
--- a/dune/istl/ildl.hh
+++ b/dune/istl/ildl.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #ifndef DUNE_ISTL_ILDL_HH
 #define DUNE_ISTL_ILDL_HH
 
diff --git a/dune/istl/ilu.hh b/dune/istl/ilu.hh
index df38a08496a2cf4276cbdd07a76fe040a72ad503..c390538b837b351d63b597a308d26b056776d72e 100644
--- a/dune/istl/ilu.hh
+++ b/dune/istl/ilu.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_ILU_HH
diff --git a/dune/istl/ilusubdomainsolver.hh b/dune/istl/ilusubdomainsolver.hh
index 0c2473b6374fac83455bbbacb9dbbd881beec14d..8d8436c36fb78308602ccfe3454142a10295fd71 100644
--- a/dune/istl/ilusubdomainsolver.hh
+++ b/dune/istl/ilusubdomainsolver.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_ILUSUBDOMAINSOLVER_HH
diff --git a/dune/istl/io.hh b/dune/istl/io.hh
index a61dd4f5b810be9f32c2d282a0698853df08e9c8..40c675e6c6dfc96e501fe86d407b16b9fb0b6dd4 100644
--- a/dune/istl/io.hh
+++ b/dune/istl/io.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_IO_HH
diff --git a/dune/istl/istlexception.hh b/dune/istl/istlexception.hh
index 916d9f2f06bf100c65fe0539c8e65e6fe8f6fa35..5cf05672b1f0fb15eff4e0b2e41c1acb7f406e04 100644
--- a/dune/istl/istlexception.hh
+++ b/dune/istl/istlexception.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_ISTLEXCEPTION_HH
diff --git a/dune/istl/ldl.hh b/dune/istl/ldl.hh
index 24a35d62f8e95921914cd0a160d69566ec8a8999..d22c6fa8f423d1bfb0140721cda8f812491b2dee 100644
--- a/dune/istl/ldl.hh
+++ b/dune/istl/ldl.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_LDL_HH
diff --git a/dune/istl/matrix.hh b/dune/istl/matrix.hh
index c61cf1dfff39722c786ed1affc9d9f0eb9ec6640..608859273dd986e044884102ff91a321f73f882f 100644
--- a/dune/istl/matrix.hh
+++ b/dune/istl/matrix.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_MATRIX_HH
diff --git a/dune/istl/matrixindexset.hh b/dune/istl/matrixindexset.hh
index d31eabe51eff280ca80804ab5d30db822c299200..10baccf35c6e56b11da8b1ada0c5a8130d8dce63 100644
--- a/dune/istl/matrixindexset.hh
+++ b/dune/istl/matrixindexset.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_MATRIXINDEXSET_HH
diff --git a/dune/istl/matrixmarket.hh b/dune/istl/matrixmarket.hh
index d55d9821eb85d0cdcc52a0869720f0580cd8462b..e07e26e8244e851ee05b3a5c9aa166f93f1938ab 100644
--- a/dune/istl/matrixmarket.hh
+++ b/dune/istl/matrixmarket.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_MATRIXMARKET_HH
diff --git a/dune/istl/matrixmatrix.hh b/dune/istl/matrixmatrix.hh
index 8b4d45452b371670f775a579cc1b8d935972c9c9..526e22529ce8b5721a3ddbfeeee8b1e460b8de8d 100644
--- a/dune/istl/matrixmatrix.hh
+++ b/dune/istl/matrixmatrix.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_MATRIXMATRIX_HH
diff --git a/dune/istl/matrixredistribute.hh b/dune/istl/matrixredistribute.hh
index b8d5f0e04bb883d337364e5b7ad50573d59a9559..00ad7d589805190d3bd83e62794a89f0c283f53a 100644
--- a/dune/istl/matrixredistribute.hh
+++ b/dune/istl/matrixredistribute.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_MATRIXREDISTRIBUTE_HH
diff --git a/dune/istl/matrixutils.hh b/dune/istl/matrixutils.hh
index ef29e588b77a771429df8e1bdb0c2c1335d6c0d6..c5d93ef5c2eafbe56790af9ef9043707db4018ac 100644
--- a/dune/istl/matrixutils.hh
+++ b/dune/istl/matrixutils.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_MATRIXUTILS_HH
diff --git a/dune/istl/multitypeblockmatrix.hh b/dune/istl/multitypeblockmatrix.hh
index 1493467bdaad9978b2fa28e6cef9a11c9fc941f4..7621257e10a6c1c574ec4f35d6883038709e71c8 100644
--- a/dune/istl/multitypeblockmatrix.hh
+++ b/dune/istl/multitypeblockmatrix.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_MULTITYPEBLOCKMATRIX_HH
diff --git a/dune/istl/multitypeblockvector.hh b/dune/istl/multitypeblockvector.hh
index 11df39264a995e0bfbb7e417f4488862d31e50d9..fa770dbcfe5705372cbcf4d4f502d6bcd89d080c 100644
--- a/dune/istl/multitypeblockvector.hh
+++ b/dune/istl/multitypeblockvector.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_MULTITYPEBLOCKVECTOR_HH
diff --git a/dune/istl/novlpschwarz.hh b/dune/istl/novlpschwarz.hh
index 111b179ee847dc76857ae263295daa1ad84f5259..1e5a2714ba82d77e3edfec3e3aee474635530823 100644
--- a/dune/istl/novlpschwarz.hh
+++ b/dune/istl/novlpschwarz.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_NOVLPSCHWARZ_HH
diff --git a/dune/istl/operators.hh b/dune/istl/operators.hh
index c5480872302561b94034498113c0bf7db9b95855..a6e200865562c2c631c60a97361ffb5226b16437 100644
--- a/dune/istl/operators.hh
+++ b/dune/istl/operators.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_OPERATORS_HH
diff --git a/dune/istl/overlappingschwarz.hh b/dune/istl/overlappingschwarz.hh
index c4230ed48c82692f183554c0365fa0b402c4e7f5..fc45abe687ef87cf6d6b6939a0a1bdf563c07f04 100644
--- a/dune/istl/overlappingschwarz.hh
+++ b/dune/istl/overlappingschwarz.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_OVERLAPPINGSCHWARZ_HH
diff --git a/dune/istl/owneroverlapcopy.hh b/dune/istl/owneroverlapcopy.hh
index fde36b7238cf8e83e0d284a685ce0509ea3246f0..7ba01230eefcdcc3a72455e517fc1efdd90eb755 100644
--- a/dune/istl/owneroverlapcopy.hh
+++ b/dune/istl/owneroverlapcopy.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_OWNEROVERLAPCOPY_HH
diff --git a/dune/istl/paamg/CMakeLists.txt b/dune/istl/paamg/CMakeLists.txt
index 4bf5dc147676e62e028dd54a794876c24375b6d5..8637ca2042a7298deffa1b9758731f32ac495139 100644
--- a/dune/istl/paamg/CMakeLists.txt
+++ b/dune/istl/paamg/CMakeLists.txt
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 add_subdirectory(test)
 
 #install headers
diff --git a/dune/istl/paamg/aggregates.hh b/dune/istl/paamg/aggregates.hh
index 82bb01899cb09f8881b89f7adb948b8c0075f3d1..f7a855889468c6d699db240494d8aea9e27c17bc 100644
--- a/dune/istl/paamg/aggregates.hh
+++ b/dune/istl/paamg/aggregates.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_AMG_AGGREGATES_HH
diff --git a/dune/istl/paamg/amg.hh b/dune/istl/paamg/amg.hh
index 3825ce851a4bcea81f4fe98bf5113aebd7c82bf2..417f8e7a7b2234fad86390be68dbcdc79a76581e 100644
--- a/dune/istl/paamg/amg.hh
+++ b/dune/istl/paamg/amg.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_AMG_AMG_HH
diff --git a/dune/istl/paamg/combinedfunctor.hh b/dune/istl/paamg/combinedfunctor.hh
index bbd5dd43d82dc677ace358d0a7eb0962e0969f7b..d055d4a10e18c0e519b2828947f0f2f5c7e61db3 100644
--- a/dune/istl/paamg/combinedfunctor.hh
+++ b/dune/istl/paamg/combinedfunctor.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_AMG_COMBINEDFUNCTOR_HH
diff --git a/dune/istl/paamg/construction.hh b/dune/istl/paamg/construction.hh
index 072c49a8e29cdedf81921fd1e9daf9e06a1248ab..4e0486ea8467bf864a32013ee2fa6856dd615c6c 100644
--- a/dune/istl/paamg/construction.hh
+++ b/dune/istl/paamg/construction.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_AMGCONSTRUCTION_HH
diff --git a/dune/istl/paamg/dependency.hh b/dune/istl/paamg/dependency.hh
index f90e29ecfcf0824187adc0687e1adf636ff0aa1c..5a80f98ddec14770cf5779d7cb6bd7847de489b4 100644
--- a/dune/istl/paamg/dependency.hh
+++ b/dune/istl/paamg/dependency.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_AMG_DEPENDENCY_HH
diff --git a/dune/istl/paamg/fastamg.hh b/dune/istl/paamg/fastamg.hh
index ccaeea4c2e95c7597699316edc283324c65b5b8f..37bad452ba934c376aa7ecf0a1762963b9cb6d4e 100644
--- a/dune/istl/paamg/fastamg.hh
+++ b/dune/istl/paamg/fastamg.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_FASTAMG_HH
diff --git a/dune/istl/paamg/fastamgsmoother.hh b/dune/istl/paamg/fastamgsmoother.hh
index d339af6fa28a12bded093dc24526fd70c57a7cfa..b7c157e554d5c7aed65bebe686a986afcf7c9473 100644
--- a/dune/istl/paamg/fastamgsmoother.hh
+++ b/dune/istl/paamg/fastamgsmoother.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_FASTAMGSMOOTHER_HH
diff --git a/dune/istl/paamg/galerkin.hh b/dune/istl/paamg/galerkin.hh
index 5b15752017de496fdb8bb65ccc2e68241899fe70..6de6abe9edb08d5fd780e09b08d4ce66de5a641b 100644
--- a/dune/istl/paamg/galerkin.hh
+++ b/dune/istl/paamg/galerkin.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_GALERKIN_HH
diff --git a/dune/istl/paamg/globalaggregates.hh b/dune/istl/paamg/globalaggregates.hh
index 353899c6034f524a024327dad2de3ec0a442c012..b9d6710047d41d9310c6692460b8c5df728202d0 100644
--- a/dune/istl/paamg/globalaggregates.hh
+++ b/dune/istl/paamg/globalaggregates.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_GLOBALAGGREGATES_HH
diff --git a/dune/istl/paamg/graph.hh b/dune/istl/paamg/graph.hh
index ede9d20f80e59539f1d9a4feb672cdad519bc1a4..44f5f2c9b7dd804a60b6c8862f45bba11be2b450 100644
--- a/dune/istl/paamg/graph.hh
+++ b/dune/istl/paamg/graph.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_AMG_GRAPH_HH
diff --git a/dune/istl/paamg/graphcreator.hh b/dune/istl/paamg/graphcreator.hh
index 96ba785e9717eb3fb352716c89021584e975a6e8..2aff2a67829a8f09e3e2c38a73a67e9bbd3844ce 100644
--- a/dune/istl/paamg/graphcreator.hh
+++ b/dune/istl/paamg/graphcreator.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_AMG_GRAPHCREATOR_HH
diff --git a/dune/istl/paamg/hierarchy.hh b/dune/istl/paamg/hierarchy.hh
index 54ad243203dbbcff5f0a14c7c2470c7a9487f322..7d3e5a42c41f25e09734ff2ad1566efbe829bc43 100644
--- a/dune/istl/paamg/hierarchy.hh
+++ b/dune/istl/paamg/hierarchy.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_AMGHIERARCHY_HH
diff --git a/dune/istl/paamg/indicescoarsener.hh b/dune/istl/paamg/indicescoarsener.hh
index ebc1d086646fe48514ff60f3a3bc856ac726ee6e..8c68576ee3de0114ea78c13f0d2c08c258c6b90f 100644
--- a/dune/istl/paamg/indicescoarsener.hh
+++ b/dune/istl/paamg/indicescoarsener.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_AMG_INDICESCOARSENER_HH
diff --git a/dune/istl/paamg/kamg.hh b/dune/istl/paamg/kamg.hh
index a6490d30229c691f992018453da1a5af18f0338c..233e302c8f6c04138984160c45c3ced7eac5180d 100644
--- a/dune/istl/paamg/kamg.hh
+++ b/dune/istl/paamg/kamg.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_AMG_KAMG_HH
diff --git a/dune/istl/paamg/matrixhierarchy.hh b/dune/istl/paamg/matrixhierarchy.hh
index c5fe007ac1394495f0432aa74b350e910d910f4b..d984b0c0d46389edd9eeb3b91002260b60c096f4 100644
--- a/dune/istl/paamg/matrixhierarchy.hh
+++ b/dune/istl/paamg/matrixhierarchy.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_AMG_MATRIXHIERARCHY_HH
diff --git a/dune/istl/paamg/parameters.hh b/dune/istl/paamg/parameters.hh
index f66256143d7c671cec4a5c9d039ff13ba984a401..84262fc53e5b0f22b525a815d4fdb2f147c0cb95 100644
--- a/dune/istl/paamg/parameters.hh
+++ b/dune/istl/paamg/parameters.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_AMG_PARAMETERS_HH
diff --git a/dune/istl/paamg/pinfo.hh b/dune/istl/paamg/pinfo.hh
index 8563054d86dc719588eab4cbc1711618eeaaec1a..0c60c074cd783256ae17e6fcd510f1ac576ba99a 100644
--- a/dune/istl/paamg/pinfo.hh
+++ b/dune/istl/paamg/pinfo.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_AMG_PINFO_HH
diff --git a/dune/istl/paamg/properties.hh b/dune/istl/paamg/properties.hh
index b1c960042407457ccc5743bc398e218330a27943..4572805118f85e0ff5c8c6212b98b30767850323 100644
--- a/dune/istl/paamg/properties.hh
+++ b/dune/istl/paamg/properties.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_AMG_PROPERTIES_HH
diff --git a/dune/istl/paamg/renumberer.hh b/dune/istl/paamg/renumberer.hh
index adc0b423b5399295497c978ab0370531a75f7cd4..9fa5f6f7791352f84c374f5b7b93dcda5da008d2 100644
--- a/dune/istl/paamg/renumberer.hh
+++ b/dune/istl/paamg/renumberer.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_AMG_RENUMBERER_HH
diff --git a/dune/istl/paamg/smoother.hh b/dune/istl/paamg/smoother.hh
index 37a5bd99fb3daa7cfee0c6118e8f5e03ed3f51bf..838b13b95ac677343a4be49061718203341eeb7c 100644
--- a/dune/istl/paamg/smoother.hh
+++ b/dune/istl/paamg/smoother.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_AMGSMOOTHER_HH
diff --git a/dune/istl/paamg/test/CMakeLists.txt b/dune/istl/paamg/test/CMakeLists.txt
index e6d8d04b28088b9f1515b98d93ff98b6657187e4..43bc9bc3c0442c0362f76c1aa504d7dd91aad97b 100644
--- a/dune/istl/paamg/test/CMakeLists.txt
+++ b/dune/istl/paamg/test/CMakeLists.txt
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 find_package(Threads)
 if(CMAKE_USE_PTHREADS_INIT)
   dune_add_test(NAME pthreadamgtest SOURCES pthreadamgtest.cc
diff --git a/dune/istl/paamg/test/amgtest.cc b/dune/istl/paamg/test/amgtest.cc
index c7e1843a0d08c97a10cf75e16d61e7b2fe471372..5ca14dc1eb630dd24e1bd1798fcad30bf1af1534 100644
--- a/dune/istl/paamg/test/amgtest.cc
+++ b/dune/istl/paamg/test/amgtest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/paamg/test/anisotropic.hh b/dune/istl/paamg/test/anisotropic.hh
index 344099202a88e5bd9b08696f7046163ea256cf0b..c5cb53d2f0ee62bab50c40cf14dc1ee4c6b9ff97 100644
--- a/dune/istl/paamg/test/anisotropic.hh
+++ b/dune/istl/paamg/test/anisotropic.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef ANISOTROPIC_HH
diff --git a/dune/istl/paamg/test/fastamg.cc b/dune/istl/paamg/test/fastamg.cc
index 3618f4142c8b3ccc69507e155bbb65780a0c0b0d..8431792fd436eccc12b2b50590d972b500afbb66 100644
--- a/dune/istl/paamg/test/fastamg.cc
+++ b/dune/istl/paamg/test/fastamg.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/paamg/test/galerkintest.cc b/dune/istl/paamg/test/galerkintest.cc
index 7033559372b83293af1bc7e9f54235e58ed3a791..6a078e4e88c1991fd3e55a1cd820a0ff613d9a7a 100644
--- a/dune/istl/paamg/test/galerkintest.cc
+++ b/dune/istl/paamg/test/galerkintest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include <config.h>
diff --git a/dune/istl/paamg/test/gr_30_30.mm b/dune/istl/paamg/test/gr_30_30.mm
index 0c4ce6ad793578967977199062cf52a6e934c644..3b7664f9b626797c3aca9a2529906f79ed804061 100644
--- a/dune/istl/paamg/test/gr_30_30.mm
+++ b/dune/istl/paamg/test/gr_30_30.mm
@@ -1,4 +1,6 @@
 %%MatrixMarket matrix coordinate real symmetric
+% SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+% SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 900 900 4322
 1 1  8.0000000000000e+00
 2 1 -1.0000000000000e+00
diff --git a/dune/istl/paamg/test/graphtest.cc b/dune/istl/paamg/test/graphtest.cc
index ab120356e082e3001209011dbb663f21d6bee366..2824487062a4cec3bcc0365b729991bfb54f1e2a 100644
--- a/dune/istl/paamg/test/graphtest.cc
+++ b/dune/istl/paamg/test/graphtest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 // start with including some headers
diff --git a/dune/istl/paamg/test/hierarchytest.cc b/dune/istl/paamg/test/hierarchytest.cc
index 1d263718bdce1214e06eaafcf6150179a961a524..843c4c01af1daa663d1c5bf8509e1522b1bc481e 100644
--- a/dune/istl/paamg/test/hierarchytest.cc
+++ b/dune/istl/paamg/test/hierarchytest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include <config.h>
diff --git a/dune/istl/paamg/test/kamgtest.cc b/dune/istl/paamg/test/kamgtest.cc
index e4e66a892f749a7290b2f888eac4116c77658277..a69cba874eef541e257bdaf330b17783271ab5e9 100644
--- a/dune/istl/paamg/test/kamgtest.cc
+++ b/dune/istl/paamg/test/kamgtest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/paamg/test/pamgmmtest.cc b/dune/istl/paamg/test/pamgmmtest.cc
index 9364defb465134e0262cea26654ebc46a8685c13..fc27fb1b0ded6faf1a9c927d6fbd34af2fb65ce9 100644
--- a/dune/istl/paamg/test/pamgmmtest.cc
+++ b/dune/istl/paamg/test/pamgmmtest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/paamg/test/parallelamgtest.cc b/dune/istl/paamg/test/parallelamgtest.cc
index d62dcbd06af2f954b6d2e7d01eca514b13828d91..c0a11843d9e25dc13b037d66e5314b6dd57649aa 100644
--- a/dune/istl/paamg/test/parallelamgtest.cc
+++ b/dune/istl/paamg/test/parallelamgtest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/paamg/test/pthreadamgtest.cc b/dune/istl/paamg/test/pthreadamgtest.cc
index b9567516b29b9bf3eed51af4b4a486d50d85e7e8..b38f71e88935e3fddf1bb8534705ae5504b33dbf 100644
--- a/dune/istl/paamg/test/pthreadamgtest.cc
+++ b/dune/istl/paamg/test/pthreadamgtest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/paamg/test/pthreadtwoleveltest.cc b/dune/istl/paamg/test/pthreadtwoleveltest.cc
index 9ebaf0f254d8fd4b9cea94294f88f940c9086030..8e102c792cc728f9e8fa55d4ec4a37dced03073b 100644
--- a/dune/istl/paamg/test/pthreadtwoleveltest.cc
+++ b/dune/istl/paamg/test/pthreadtwoleveltest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #include"config.h"
 #include "anisotropic.hh"
 #include <dune/common/timer.hh>
diff --git a/dune/istl/paamg/test/transfertest.cc b/dune/istl/paamg/test/transfertest.cc
index 27cb8a6d26d729e197b9ad7fb7f77835700748b6..5c60a92aa7caf08b3164ba9c9d4d56a805434f75 100644
--- a/dune/istl/paamg/test/transfertest.cc
+++ b/dune/istl/paamg/test/transfertest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/paamg/test/twolevelmethodtest.cc b/dune/istl/paamg/test/twolevelmethodtest.cc
index 7327e5082836171b4ecec0a9a208fd2170d8b4c2..4c83c1df726cc19b7fdd493da714158fb041ed65 100644
--- a/dune/istl/paamg/test/twolevelmethodtest.cc
+++ b/dune/istl/paamg/test/twolevelmethodtest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #include"config.h"
 #include "anisotropic.hh"
 #include <dune/common/timer.hh>
diff --git a/dune/istl/paamg/transfer.hh b/dune/istl/paamg/transfer.hh
index b42aded044ee307fc5f6da59417b2fd493cab976..d28710748a105dea77949e3f1b4e6de3cdf36b43 100644
--- a/dune/istl/paamg/transfer.hh
+++ b/dune/istl/paamg/transfer.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_AMGTRANSFER_HH
diff --git a/dune/istl/paamg/twolevelmethod.hh b/dune/istl/paamg/twolevelmethod.hh
index b0fd7d2744f9e32f297971b00c6f79ddc5f32452..6058ad0c2c25aba39edbeb470d5df29790d43dcf 100644
--- a/dune/istl/paamg/twolevelmethod.hh
+++ b/dune/istl/paamg/twolevelmethod.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_TWOLEVELMETHOD_HH
diff --git a/dune/istl/preconditioner.hh b/dune/istl/preconditioner.hh
index 53806bfa56a8ec3947dfe622ba14713170309b1a..a544b13f671de8780ea18bcfc04f54cbd8f6f544 100644
--- a/dune/istl/preconditioner.hh
+++ b/dune/istl/preconditioner.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_PRECONDITIONER_HH
diff --git a/dune/istl/preconditioners.hh b/dune/istl/preconditioners.hh
index 0d8dddae365176b45f560b814e4ed2d891a604ca..6083e87ac70a8893fe0b90cdbc9b32c94b046597 100644
--- a/dune/istl/preconditioners.hh
+++ b/dune/istl/preconditioners.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_PRECONDITIONERS_HH
diff --git a/dune/istl/repartition.hh b/dune/istl/repartition.hh
index c0902c82d4befd8a061d4af415eb484d9fc981d8..2271fd873c3e3fe5fc606457132d09474fac7971 100644
--- a/dune/istl/repartition.hh
+++ b/dune/istl/repartition.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_REPARTITION_HH
diff --git a/dune/istl/scalarproducts.hh b/dune/istl/scalarproducts.hh
index 0a6cae94867bd1385e4bdce0ec216b1f29e000e9..ecbff5bc6f10648e2f28fa5ae7228ecf2827adc9 100644
--- a/dune/istl/scalarproducts.hh
+++ b/dune/istl/scalarproducts.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_SCALARPRODUCTS_HH
diff --git a/dune/istl/scaledidmatrix.hh b/dune/istl/scaledidmatrix.hh
index 59a9d3f3af100a3581842cab094f64eaae5531d7..973b626f8acac919c0b071e263ed660087da9d30 100644
--- a/dune/istl/scaledidmatrix.hh
+++ b/dune/istl/scaledidmatrix.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_SCALEDIDMATRIX_HH
diff --git a/dune/istl/schwarz.hh b/dune/istl/schwarz.hh
index 1870169e99a45dce697950ed23cedb7df811f461..f3d9f28efb522c92fead7c7302762be19b155232 100644
--- a/dune/istl/schwarz.hh
+++ b/dune/istl/schwarz.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_SCHWARZ_HH
diff --git a/dune/istl/solver.hh b/dune/istl/solver.hh
index f4d97cb145e25a92a9a966cde14f8706d3ffe661..cd03293c49c9f4e66afdca1fb3ecfdb307e4d86c 100644
--- a/dune/istl/solver.hh
+++ b/dune/istl/solver.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 
diff --git a/dune/istl/solvercategory.hh b/dune/istl/solvercategory.hh
index b28605fde6e942d5797610ab26dbd0f4b320ed30..8cdd372b03e39b3eb0e18e956cf5fdb5fbf1971d 100644
--- a/dune/istl/solvercategory.hh
+++ b/dune/istl/solvercategory.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_SOLVERCATEGORY_HH
diff --git a/dune/istl/solverfactory.hh b/dune/istl/solverfactory.hh
index c55b132854626f603046ee250c92b64abe2da670..4d913e7856005b06497250e2c94a4162a41c7c15 100644
--- a/dune/istl/solverfactory.hh
+++ b/dune/istl/solverfactory.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 
diff --git a/dune/istl/solverregistry.hh b/dune/istl/solverregistry.hh
index be36e49a6c246232568d72127d9915660117770d..390df0de2776efc29cc5a9ff2d6091bf1b4147e3 100644
--- a/dune/istl/solverregistry.hh
+++ b/dune/istl/solverregistry.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 
diff --git a/dune/istl/solvers.hh b/dune/istl/solvers.hh
index 24ae04feb9f992daf4798546c3e658be2de72dd4..1a71d45dd44fb81d160838ef8ca589e4515ccafb 100644
--- a/dune/istl/solvers.hh
+++ b/dune/istl/solvers.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 
diff --git a/dune/istl/solvertype.hh b/dune/istl/solvertype.hh
index 12f174f01402a225d37c505fb8d5f88217069843..e6f63b67369e127403f013f221301b3d4f1218f5 100644
--- a/dune/istl/solvertype.hh
+++ b/dune/istl/solvertype.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_SOLVERTYPE_HH
diff --git a/dune/istl/spqr.hh b/dune/istl/spqr.hh
index c2f91d2b8f6483d03a6e0509a6122b4aeb9ee989..d0151ad647e5e1b90e3fb38d23d869bd12351975 100644
--- a/dune/istl/spqr.hh
+++ b/dune/istl/spqr.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_SPQR_HH
diff --git a/dune/istl/superlu.hh b/dune/istl/superlu.hh
index 2f5c463987ad838a8254e781494ac5b40d025310..f8035e119dc87cb34e738c6aa48a24dd8bf0fd78 100644
--- a/dune/istl/superlu.hh
+++ b/dune/istl/superlu.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_SUPERLU_HH
diff --git a/dune/istl/superlufunctions.hh b/dune/istl/superlufunctions.hh
index 298585443f28577024ac06ee6333742956a5509f..12d31039e7b3c09d7bffad82d264502293971aed 100644
--- a/dune/istl/superlufunctions.hh
+++ b/dune/istl/superlufunctions.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_SUPERLUFUNCTIONS_HH
diff --git a/dune/istl/supermatrix.hh b/dune/istl/supermatrix.hh
index f4131480163486d897bc0243d5c5f273441d8299..e5e7fdc13b153e060b7ba4cbed9e211fdd0636ba 100644
--- a/dune/istl/supermatrix.hh
+++ b/dune/istl/supermatrix.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_SUPERMATRIX_HH
diff --git a/dune/istl/test/CMakeLists.txt b/dune/istl/test/CMakeLists.txt
index 70b8fcf93954f9e740b32c496e18228696537c14..4b4e3b40edd72eccfd8a57935a3956de2f3675f2 100644
--- a/dune/istl/test/CMakeLists.txt
+++ b/dune/istl/test/CMakeLists.txt
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 # install the test tools as we want to support testing 3rd-party vectors and matrices with an installed dune-istl
 install(FILES
         matrixtest.hh
diff --git a/dune/istl/test/bcrsassigntest.cc b/dune/istl/test/bcrsassigntest.cc
index 2823d53011d40fa247ab1df0e1246de263e996dd..0674f6fa61977a778746098ffc244fae7f1f38d1 100644
--- a/dune/istl/test/bcrsassigntest.cc
+++ b/dune/istl/test/bcrsassigntest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #include <config.h>
 
 #include <dune/istl/bcrsmatrix.hh>
diff --git a/dune/istl/test/bcrsbuild.cc b/dune/istl/test/bcrsbuild.cc
index 9029fe3dec2898afb704c5b3469fec809725bfbf..fe326c22cad10b24d75a0f35c0f9b2d6779c1bd0 100644
--- a/dune/istl/test/bcrsbuild.cc
+++ b/dune/istl/test/bcrsbuild.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/test/bcrsimplicitbuild.cc b/dune/istl/test/bcrsimplicitbuild.cc
index 2919b6580bfa60e2010f9eacf57193df39993eb8..5d32e5761e397e3575615c27245f8134da56031f 100644
--- a/dune/istl/test/bcrsimplicitbuild.cc
+++ b/dune/istl/test/bcrsimplicitbuild.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 
diff --git a/dune/istl/test/bcrsmatrixtest.cc b/dune/istl/test/bcrsmatrixtest.cc
index 296440adb21f57bbfa606c026e6a79c1856f0060..86c0479ce9cd0a8ea8157cdbc29a0fab7cad13e6 100644
--- a/dune/istl/test/bcrsmatrixtest.cc
+++ b/dune/istl/test/bcrsmatrixtest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/test/bcrsnormtest.cc b/dune/istl/test/bcrsnormtest.cc
index b6c4115e3b189a635c309eff29c4306a75a7cdcb..a32270f81af8c529fae9f5c4921ea49343c235d8 100644
--- a/dune/istl/test/bcrsnormtest.cc
+++ b/dune/istl/test/bcrsnormtest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #include <complex>
 #include <memory>
 
diff --git a/dune/istl/test/blocklevel.cc b/dune/istl/test/blocklevel.cc
index e2ccc7f245f3ebb1b737ec5f0fe2a18dace76b7a..fce4f63d6737f97e56314fd2c615cef8924179c9 100644
--- a/dune/istl/test/blocklevel.cc
+++ b/dune/istl/test/blocklevel.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 /**
diff --git a/dune/istl/test/bvectortest.cc b/dune/istl/test/bvectortest.cc
index 193cfcd2b4d488eb9d3c23cff4b7bb410eb5b0e0..e57ad731eb6c9bcd464f614d64b9417f80c18dbf 100644
--- a/dune/istl/test/bvectortest.cc
+++ b/dune/istl/test/bvectortest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/test/cgconditiontest.cc b/dune/istl/test/cgconditiontest.cc
index c2f551d71494727df6f5951333a87173ccc19aee..f4d4c22b4f13b292fae3927c541606753133b274 100644
--- a/dune/istl/test/cgconditiontest.cc
+++ b/dune/istl/test/cgconditiontest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
diff --git a/dune/istl/test/cholmodtest.cc b/dune/istl/test/cholmodtest.cc
index f8cfe95ae08b8cd10da479899de4daa8ce6de8d1..f112fee87e4d479264d727d76ac871d73e02d77c 100644
--- a/dune/istl/test/cholmodtest.cc
+++ b/dune/istl/test/cholmodtest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/test/complexdata.hh b/dune/istl/test/complexdata.hh
index 11806aa5760b897b9f7ef9e9392eec2525c87188..e9c1601ba0690a93e3ae8832771c803b33fe6e73 100644
--- a/dune/istl/test/complexdata.hh
+++ b/dune/istl/test/complexdata.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 
diff --git a/dune/istl/test/complexmatrixtest.cc b/dune/istl/test/complexmatrixtest.cc
index d03b2d679a3ab7bcd055eb0945c078f3ab68ced2..7e96f1f574f87d68f7f7a708b549bfbbfd2ff709 100644
--- a/dune/istl/test/complexmatrixtest.cc
+++ b/dune/istl/test/complexmatrixtest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 /**
diff --git a/dune/istl/test/complexrhstest.cc b/dune/istl/test/complexrhstest.cc
index 1daaa85800dcf3d31bbe8274857a0615e928d61b..fa68405ba4978dbaada751411fe3068446dbeeac 100644
--- a/dune/istl/test/complexrhstest.cc
+++ b/dune/istl/test/complexrhstest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 /**
diff --git a/dune/istl/test/dotproducttest.cc b/dune/istl/test/dotproducttest.cc
index 25366c23669502a47f244c9dfe14ea7545933ef2..6f094fd6108fa7c1b836264bb8fd5d0928b6894c 100644
--- a/dune/istl/test/dotproducttest.cc
+++ b/dune/istl/test/dotproducttest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/test/fieldvectortest.cc b/dune/istl/test/fieldvectortest.cc
index 14a37ad1c356e212eee8f19673fb12cfe15bf898..6fd8ed87d86694e0529438449a9bd37f51fd8ba4 100644
--- a/dune/istl/test/fieldvectortest.cc
+++ b/dune/istl/test/fieldvectortest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifdef HAVE_CONFIG_H
diff --git a/dune/istl/test/foreachtest.cc b/dune/istl/test/foreachtest.cc
index d7495673174465e0fd5662a95c5d53b962d0f7c1..e4f1f0d3d32837dc7b3b62b4965eb700b060b346 100644
--- a/dune/istl/test/foreachtest.cc
+++ b/dune/istl/test/foreachtest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 
 #include <config.h>
 
diff --git a/dune/istl/test/hilbertmatrix.hh b/dune/istl/test/hilbertmatrix.hh
index bf7df194f2acd9c95279be73101532637fb9fb46..012e56860a497b4e3953b90f40955f4acffa071c 100644
--- a/dune/istl/test/hilbertmatrix.hh
+++ b/dune/istl/test/hilbertmatrix.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #ifndef HILBERTMATRIX_HH
 #define HILBERTMATRIX_HH
 
diff --git a/dune/istl/test/iluildltest.cc b/dune/istl/test/iluildltest.cc
index c521047e801e183b0e374b16373b05ecae333efa..030dc3abcf6de475385b3536e8c185ebf5954c82 100644
--- a/dune/istl/test/iluildltest.cc
+++ b/dune/istl/test/iluildltest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #include <config.h>
 #include <iostream>
 
diff --git a/dune/istl/test/inverseoperator2prectest.cc b/dune/istl/test/inverseoperator2prectest.cc
index ca9299da8fd9ecff0bbece7a09f8acf594d0e2a8..8b93b6ac798adc7ed00b7aae28eb9bf15903854b 100644
--- a/dune/istl/test/inverseoperator2prectest.cc
+++ b/dune/istl/test/inverseoperator2prectest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/test/iotest.cc b/dune/istl/test/iotest.cc
index 568f3cd190b9f42fa5d469b30d5dabb2b14f6ebf..8f2b9745d38eee4d2959b1dfdb0312b0463f4b59 100644
--- a/dune/istl/test/iotest.cc
+++ b/dune/istl/test/iotest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/test/laplacian.hh b/dune/istl/test/laplacian.hh
index 7c6c97c759554f261a6e5e834b3fa7522097cc1b..a43aedf4f411b7b810a73db801692de0ac65d16e 100644
--- a/dune/istl/test/laplacian.hh
+++ b/dune/istl/test/laplacian.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef LAPLACIAN_HH
diff --git a/dune/istl/test/ldltest.cc b/dune/istl/test/ldltest.cc
index 80969af84343499a364d70802cb414e1418ac5dd..6ad3d76cf94bba25c91f0e30508ccdd146679cf8 100644
--- a/dune/istl/test/ldltest.cc
+++ b/dune/istl/test/ldltest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #include <config.h>
 #include <iostream>
 
diff --git a/dune/istl/test/matrixiteratortest.cc b/dune/istl/test/matrixiteratortest.cc
index 4e45f7155c65c562f1aeaee146471288d44238b1..005d822ba2fc648acc6b244822f87af33e149621 100644
--- a/dune/istl/test/matrixiteratortest.cc
+++ b/dune/istl/test/matrixiteratortest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/test/matrixmarkettest.cc b/dune/istl/test/matrixmarkettest.cc
index b73158e78c25c6e3ca9ec316ec5045b4636b14de..076d59844cb677c0bfdb0b1c8ec8c08d4f997900 100644
--- a/dune/istl/test/matrixmarkettest.cc
+++ b/dune/istl/test/matrixmarkettest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/test/matrixnormtest.cc b/dune/istl/test/matrixnormtest.cc
index b36b88486ce0bafb0b7c27942a5b2af168b6dd1a..7bc513e75ac4be7abd47463b1bb0f56194fca8f1 100644
--- a/dune/istl/test/matrixnormtest.cc
+++ b/dune/istl/test/matrixnormtest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #include <complex>
 #include <memory>
 
diff --git a/dune/istl/test/matrixredisttest.cc b/dune/istl/test/matrixredisttest.cc
index 5b9159535fa848eece97d530a5276684ab8e79ad..7432205d9e8dc0634904cb5f47bb2a91a7cbd1e2 100644
--- a/dune/istl/test/matrixredisttest.cc
+++ b/dune/istl/test/matrixredisttest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/test/matrixtest.cc b/dune/istl/test/matrixtest.cc
index 5d27c29e39c156ba8a4cb1912450a4061da93148..c7755dce2431a6bcfd592a9daa8daa7496f4fab2 100644
--- a/dune/istl/test/matrixtest.cc
+++ b/dune/istl/test/matrixtest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 /** \file
diff --git a/dune/istl/test/matrixtest.hh b/dune/istl/test/matrixtest.hh
index 401d8aaeb26eabc453dede9b320e9ad0a50d9959..7c2d99c3736ce51c6c53b83136fab3cee3f5eded 100644
--- a/dune/istl/test/matrixtest.hh
+++ b/dune/istl/test/matrixtest.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_TEST_MATRIXTEST_HH
diff --git a/dune/istl/test/matrixutilstest.cc b/dune/istl/test/matrixutilstest.cc
index 0a6d299e4c3791e6c36ae12129ffa6ec677e4ebc..fb0c88f62af092d345445e067098811b272aa66d 100644
--- a/dune/istl/test/matrixutilstest.cc
+++ b/dune/istl/test/matrixutilstest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/test/mmtest.cc b/dune/istl/test/mmtest.cc
index fae7c693c61eff5c27240ab14fd6665941b64945..b0144420b4fcbf78424dc47a1028e5400436ba98 100644
--- a/dune/istl/test/mmtest.cc
+++ b/dune/istl/test/mmtest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifdef HAVE_CONFIG_H
diff --git a/dune/istl/test/multirhstest.cc b/dune/istl/test/multirhstest.cc
index 3f8234e91013a0255f3bd4c65fb60b02a6b992bd..4ea1552f090f6428302178cdc18e2793cdcda920 100644
--- a/dune/istl/test/multirhstest.cc
+++ b/dune/istl/test/multirhstest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 
diff --git a/dune/istl/test/multirhstest.hh b/dune/istl/test/multirhstest.hh
index afa6a58ed3d19259c6753e5a632360a412c949ec..54e454aa36c011ede0e7fb057d0f4c2ec4e76bc7 100644
--- a/dune/istl/test/multirhstest.hh
+++ b/dune/istl/test/multirhstest.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 
diff --git a/dune/istl/test/multitypeblockmatrixtest.cc b/dune/istl/test/multitypeblockmatrixtest.cc
index 31c6dbc89e2a84ba94ef66ec01273201e586a775..96b99f69dac1f741af561ecd14d0ab47cce38c28 100644
--- a/dune/istl/test/multitypeblockmatrixtest.cc
+++ b/dune/istl/test/multitypeblockmatrixtest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 /**
diff --git a/dune/istl/test/multitypeblockvectortest.cc b/dune/istl/test/multitypeblockvectortest.cc
index 9e0c5d3446351de7e4a3483240483b2b789c0f9a..49a27d599761b30af1e068aef22147fd817f8239 100644
--- a/dune/istl/test/multitypeblockvectortest.cc
+++ b/dune/istl/test/multitypeblockvectortest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 /**
diff --git a/dune/istl/test/mv.cc b/dune/istl/test/mv.cc
index 26cb460a1dd97cda9e0e25eba74703955d153008..50b22065da12775ca2038939f5b300ae5f80f88d 100644
--- a/dune/istl/test/mv.cc
+++ b/dune/istl/test/mv.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/test/overlappingschwarztest.cc b/dune/istl/test/overlappingschwarztest.cc
index 9cebdf21cce3082057d0a24478f88a5c71430c70..e6ce6f6de9bea8337bc989a6a50d7aaa311fbaea 100644
--- a/dune/istl/test/overlappingschwarztest.cc
+++ b/dune/istl/test/overlappingschwarztest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include <config.h>
diff --git a/dune/istl/test/preconditionerstest.cc b/dune/istl/test/preconditionerstest.cc
index c975a8d4f22f0ab6787000344c819f68d46a54ab..0f50dfacd5e198f6bf8b9f3c1eaf29992c06624e 100644
--- a/dune/istl/test/preconditionerstest.cc
+++ b/dune/istl/test/preconditionerstest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifdef HAVE_CONFIG_H
diff --git a/dune/istl/test/registrytest.cc b/dune/istl/test/registrytest.cc
index 3a34e981938933321b564de4692c24d09d94ff9a..be19df5fb204c06de761da175165be4257ab0ee9 100644
--- a/dune/istl/test/registrytest.cc
+++ b/dune/istl/test/registrytest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #if HAVE_CONFIG_H
 #include <config.h>
 #endif
diff --git a/dune/istl/test/scalarproductstest.cc b/dune/istl/test/scalarproductstest.cc
index 7f08d0908acb71825ccf81e4c65136c64619f3e6..6373919295b8a58be226a5779ca657a30832ea08 100644
--- a/dune/istl/test/scalarproductstest.cc
+++ b/dune/istl/test/scalarproductstest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/test/scaledidmatrixtest.cc b/dune/istl/test/scaledidmatrixtest.cc
index ab582db6503304005917ce5bfb82c57650035af3..cb234f53d89f86fd5cb28f7d0fa46f815368bdd3 100644
--- a/dune/istl/test/scaledidmatrixtest.cc
+++ b/dune/istl/test/scaledidmatrixtest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/test/solveraborttest.cc b/dune/istl/test/solveraborttest.cc
index 57ae8f9eb4f5d39191fbd3ed83c59fd288c36620..c040de26b9853ea8a42088028d712117384da6b2 100644
--- a/dune/istl/test/solveraborttest.cc
+++ b/dune/istl/test/solveraborttest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 
diff --git a/dune/istl/test/solverfactorytest.cc.in b/dune/istl/test/solverfactorytest.cc.in
index 37c1c5b663a464714b3592c3953d99a0c531e9e1..39ecf3cdae0aebd2acba00b6b3bb09ff8efd85ea 100644
--- a/dune/istl/test/solverfactorytest.cc.in
+++ b/dune/istl/test/solverfactorytest.cc.in
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/test/solverfactorytest.ini b/dune/istl/test/solverfactorytest.ini
index 070fb753fae7d94096bc7964c150749e6f8796c8..c5eb409c763b3b98db4a7e9b7150284409c74777 100644
--- a/dune/istl/test/solverfactorytest.ini
+++ b/dune/istl/test/solverfactorytest.ini
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 [sequential]
 N = 20
 
diff --git a/dune/istl/test/solvertest.cc b/dune/istl/test/solvertest.cc
index 69cfb5dd1daebfff7329b88fd8bbdd4e54bcea8a..56f3013ad2eb12a862619ccbcf5721703df4d5f3 100644
--- a/dune/istl/test/solvertest.cc
+++ b/dune/istl/test/solvertest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/test/spqrtest.cc b/dune/istl/test/spqrtest.cc
index 961caa23537a93e2fb53b67656c2aca976990a18..13d7dc1e28cfae81f7496f006a92cd1665f5aebd 100644
--- a/dune/istl/test/spqrtest.cc
+++ b/dune/istl/test/spqrtest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #include <config.h>
 #include <complex>
 #include <iostream>
diff --git a/dune/istl/test/superlutest.cc b/dune/istl/test/superlutest.cc
index bbc01eaabfd3800c10f5f0811dababf12a91f1a2..7dfb4d6e1957801c97b3439046e0802a78ef4882 100644
--- a/dune/istl/test/superlutest.cc
+++ b/dune/istl/test/superlutest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include <config.h>
diff --git a/dune/istl/test/umfpacktest.cc b/dune/istl/test/umfpacktest.cc
index 8f687691cb2a36ce816e8479d426fe5affffa123..334107cfac40ddeed9263f074cd52896979733fe 100644
--- a/dune/istl/test/umfpacktest.cc
+++ b/dune/istl/test/umfpacktest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include <config.h>
diff --git a/dune/istl/test/vbvectortest.cc b/dune/istl/test/vbvectortest.cc
index da01126357ef6e4e7e8d94beb04651285baea1b4..9d7e7e0913e35979e9175b20f702d4e52e53d923 100644
--- a/dune/istl/test/vbvectortest.cc
+++ b/dune/istl/test/vbvectortest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/test/vectorcommtest.cc b/dune/istl/test/vectorcommtest.cc
index 19e249f58ae77c5d8cdad653c53ecd601cd0b60c..9196032d0c0f20726a85c2528839472dcb39120f 100644
--- a/dune/istl/test/vectorcommtest.cc
+++ b/dune/istl/test/vectorcommtest.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include "config.h"
diff --git a/dune/istl/test/vectortest.hh b/dune/istl/test/vectortest.hh
index 361ecd3a740e35671389279e0d0358845d351547..ef2de34e99a010b7c0fc0f084111f469fef525b6 100644
--- a/dune/istl/test/vectortest.hh
+++ b/dune/istl/test/vectortest.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_TEST_VECTORTEST_HH
diff --git a/dune/istl/umfpack.hh b/dune/istl/umfpack.hh
index ead3da04dedb051cce16c15fba1a954e1fc8a411..89fc9b9782d4d9b073694ad6b8e230e267e991d9 100644
--- a/dune/istl/umfpack.hh
+++ b/dune/istl/umfpack.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_UMFPACK_HH
diff --git a/dune/istl/vbvector.hh b/dune/istl/vbvector.hh
index 8fc5e9e0c1b42eea62db3cc20f70e0b715be25ef..bf872b65404803ed2b081d3e528109c598959e84 100644
--- a/dune/istl/vbvector.hh
+++ b/dune/istl/vbvector.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #ifndef DUNE_ISTL_VBVECTOR_HH
diff --git a/dune/python/CMakeLists.txt b/dune/python/CMakeLists.txt
index 864ed72ca6489c85e76ba56aafafe8ea6cd7b70e..d6fd5963016ba8545b375adb034aba611440a047 100644
--- a/dune/python/CMakeLists.txt
+++ b/dune/python/CMakeLists.txt
@@ -1,2 +1,5 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 add_subdirectory(istl)
 add_subdirectory(test)
diff --git a/dune/python/istl/CMakeLists.txt b/dune/python/istl/CMakeLists.txt
index ec53ef38a72e279a379ad63c4ca9508a0c5cee9a..289defe03e5de63e86608e9fb0f7d9fb3c97f809 100644
--- a/dune/python/istl/CMakeLists.txt
+++ b/dune/python/istl/CMakeLists.txt
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 set(HEADERS
   bcrsmatrix.hh
   bvector.hh
diff --git a/dune/python/istl/bcrsmatrix.hh b/dune/python/istl/bcrsmatrix.hh
index b391e2969f5b08ba84cfbd43c4c316ed63ba7a41..68bd32aa2c058fd293417cd197859f2625952cd7 100644
--- a/dune/python/istl/bcrsmatrix.hh
+++ b/dune/python/istl/bcrsmatrix.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #ifndef DUNE_PYTHON_ISTL_BCRSMATRIX_HH
 #define DUNE_PYTHON_ISTL_BCRSMATRIX_HH
 
diff --git a/dune/python/istl/bvector.hh b/dune/python/istl/bvector.hh
index 72d7e62aeacd0871b6328d1879c715a3d82c0d5d..ec822af38e635aefd9e6ebc5e14c307b8e896cdf 100644
--- a/dune/python/istl/bvector.hh
+++ b/dune/python/istl/bvector.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #ifndef DUNE_PYTHON_ISTL_BVECTOR_HH
 #define DUNE_PYTHON_ISTL_BVECTOR_HH
 
diff --git a/dune/python/istl/iterator.hh b/dune/python/istl/iterator.hh
index cf49c353c04ae0d11cf09dc4d0fc5f25396cef3d..77dfe9161915d7de26de10515c6e12f788827dc5 100644
--- a/dune/python/istl/iterator.hh
+++ b/dune/python/istl/iterator.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #ifndef DUNE_PYTHON_ISTL_ITERATOR_HH
 #define DUNE_PYTHON_ISTL_ITERATOR_HH
 
diff --git a/dune/python/istl/matrixindexset.hh b/dune/python/istl/matrixindexset.hh
index d4c81e1be801172fd79a1176fd7a2d11bb23ffba..31c4cb8c99d111f626edaad5c1f384ce3c7e9d91 100644
--- a/dune/python/istl/matrixindexset.hh
+++ b/dune/python/istl/matrixindexset.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #ifndef DUNE_PYTHON_ISTL_BCRSMATRIX_HH
 #define DUNE_PYTHON_ISTL_BCRSMATRIX_HH
 
diff --git a/dune/python/istl/operators.hh b/dune/python/istl/operators.hh
index c043da4aa0ae3a775fe50c22816fa0dcaf9bd887..d51b49ff6752bd92bfa13073bf968ec38d0dbfb0 100644
--- a/dune/python/istl/operators.hh
+++ b/dune/python/istl/operators.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #ifndef DUNE_PYTHON_ISTL_OPERATORS_HH
 #define DUNE_PYTHON_ISTL_OPERATORS_HH
 
diff --git a/dune/python/istl/preconditioners.hh b/dune/python/istl/preconditioners.hh
index 87de453c2ceee4719786f6ddb2ceb01680b03716..01725d601b732ff934f1d567513d00ad4e67297a 100644
--- a/dune/python/istl/preconditioners.hh
+++ b/dune/python/istl/preconditioners.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #ifndef DUNE_PYTHON_ISTL_PRECONDITIONER_HH
 #define DUNE_PYTHON_ISTL_PRECONDITIONER_HH
 
diff --git a/dune/python/istl/slice.hh b/dune/python/istl/slice.hh
index 8898877f31da3f1ed9aac378f5dac9ae792af002..c27fe4745257f72fc91d2325ec696ea9743b51ae 100644
--- a/dune/python/istl/slice.hh
+++ b/dune/python/istl/slice.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #ifndef DUNE_PYTHON_ISTL_SLICE_HH
 #define DUNE_PYTHON_ISTL_SLICE_HH
 
diff --git a/dune/python/istl/solvers.hh b/dune/python/istl/solvers.hh
index b4706ec3164155396c640860bda1a252beebcf1c..68ddbcea52db444680162a348f9375d81a40a108 100644
--- a/dune/python/istl/solvers.hh
+++ b/dune/python/istl/solvers.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 #ifndef DUNE_PYTHON_ISTL_SOLVER_HH
 #define DUNE_PYTHON_ISTL_SOLVER_HH
 
diff --git a/dune/python/test/CMakeLists.txt b/dune/python/test/CMakeLists.txt
index 1a3d1adbccf2f5d903c320a17619fce75cb6e089..7adb9ee9acd064eb05e1bacc0a5e5853ffe95278 100644
--- a/dune/python/test/CMakeLists.txt
+++ b/dune/python/test/CMakeLists.txt
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 dune_python_add_test(NAME pybcrsmatrix
                      SCRIPT bcrsmatrix.py
                      WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
diff --git a/dune/python/test/bcrsmatrix.mm b/dune/python/test/bcrsmatrix.mm
index 04709ab6b4433323f06d1f80a4e9c1f13349735e..e73451e88a808f74d455b392db19873fff87ca7b 100644
--- a/dune/python/test/bcrsmatrix.mm
+++ b/dune/python/test/bcrsmatrix.mm
@@ -1,4 +1,6 @@
 %%MatrixMarket matrix coordinate real general
+% SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+% SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 % ISTL_STRUCT blocked 1 1
 5 5 5
 1 1 1.000000e+00
diff --git a/dune/python/test/bcrsmatrix.py b/dune/python/test/bcrsmatrix.py
index 8027f3ff8bc6cb03fd957139e59f74fb46a109a6..afda91a4af5f1d8b0bc41e42d6f118ae5e9a9708 100644
--- a/dune/python/test/bcrsmatrix.py
+++ b/dune/python/test/bcrsmatrix.py
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 import dune.common
 from dune.istl import blockVector, BlockVector, bcrsMatrix, BCRSMatrix, SeqJacobi, CGSolver, BuildMode
 
diff --git a/dune/python/test/bcrsmatrix.txt.license b/dune/python/test/bcrsmatrix.txt.license
new file mode 100644
index 0000000000000000000000000000000000000000..ab53c287aa3ac0813eb9af172f0a542bae67f6ba
--- /dev/null
+++ b/dune/python/test/bcrsmatrix.txt.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
diff --git a/pyproject.toml b/pyproject.toml
index 7089496a51f46c1b1202c7b034e529755c5e9be0..eca9ab4d29343509f86764e99bb82452cf1b2ca5 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 [build-system]
 requires = ['dune-common>=2.8.0.dev0', 'numpy', 'pip', 'setuptools', 'wheel', 'scikit-build', 'cmake', 'ninja', 'requests']
 build-backend = 'setuptools.build_meta'
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index 5c38bc6467825819b8a7b22434b509b482115323..c458db3f308755865523a72d1fb227c92d6223aa 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 add_subdirectory(dune)
 
 dune_python_install_package(
diff --git a/python/dune/CMakeLists.txt b/python/dune/CMakeLists.txt
index e93d9cba6bc17643f35959eaac7fb9c7afe603a3..1812d2000d1bdf3df3e4ccf227a0aa9732691760 100644
--- a/python/dune/CMakeLists.txt
+++ b/python/dune/CMakeLists.txt
@@ -1 +1,4 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 add_subdirectory(istl)
diff --git a/python/dune/istl/CMakeLists.txt b/python/dune/istl/CMakeLists.txt
index 37e5f9137c1a4c56eeae885cb52e5672d96d7715..3b6fd768f7109f855b9b276dd0e9aa162a71936a 100644
--- a/python/dune/istl/CMakeLists.txt
+++ b/python/dune/istl/CMakeLists.txt
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 add_python_targets(istl
   __init__
 )
diff --git a/python/dune/istl/__init__.py b/python/dune/istl/__init__.py
index a3943b1aca06c6bcb2eb2dfbc7f2d3691dfa0d61..775f64952cd8ada99eb2daf8ef4c5894f8b3fd3b 100644
--- a/python/dune/istl/__init__.py
+++ b/python/dune/istl/__init__.py
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 import dune.common
 
 from ._istl import BCRSMatrix as BCRSMatrix11
diff --git a/python/dune/istl/_istl.cc b/python/dune/istl/_istl.cc
index c6e2cc2c1532d4bd68bb4a0ad84fe9fb1eb2f94c..e83580c855611af47dfec1c3df53c53f052e5839 100644
--- a/python/dune/istl/_istl.cc
+++ b/python/dune/istl/_istl.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 #include <config.h>
diff --git a/setup.py b/setup.py
index 6568839f1292291fd7c019fa6a11d8e822d672fa..9dfdbcaaa8d771da731d9b8f916c2f1a7e90fe8f 100644
--- a/setup.py
+++ b/setup.py
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 import os, sys
 try:
     from dune.packagemetadata import metaData
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 316a9cb7aac9b3834e1c1088ad9346db54f670fe..27da6262b1473340e9a76e05ae907d11536bc6a0 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 add_executable(istl-solver-playground EXCLUDE_FROM_ALL istl-solver-playground.cc)
 add_dune_all_flags(istl-solver-playground)
 dune_symlink_to_source_files(FILES playground.ini)
diff --git a/src/istl-solver-playground.cc b/src/istl-solver-playground.cc
index 94797f1d2b9c009feab00d9d66973ffec0502de6..6c8225d8297742b775d09911da0634df3fdffb62 100644
--- a/src/istl-solver-playground.cc
+++ b/src/istl-solver-playground.cc
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 
diff --git a/src/istl-solver-playground.hh b/src/istl-solver-playground.hh
index 7c04b223fcca5bad74f6c7ab53759e386598a098..0ff3abd5ed2bcfeff862d782086330433879bd2b 100644
--- a/src/istl-solver-playground.hh
+++ b/src/istl-solver-playground.hh
@@ -1,3 +1,5 @@
+// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
 
diff --git a/src/playground.ini b/src/playground.ini
index dcefd4e380e5243a23354a4df183430ca0883028..37869238f283e4f543dcee451818294f2717148b 100644
--- a/src/playground.ini
+++ b/src/playground.ini
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
+# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
+
 random_rhs=1
 [solver]
 type=cgsolver