Compare commits

..
Author SHA1 Message Date
Mathias Rainer Schmidt 64d004e63e - added mma test 2025-09-02 12:12:36 -07:00
Mittal, Ketan b69d0ea283 minor change to makefile 2025-07-17 12:32:17 -07:00
Mittal, Ketan e3b34e73a0 unpushed stuff for final runs for paper 2025-07-17 12:22:30 -07:00
Mathias Rainer Schmidt c2457ae184 - minor change 2025-06-04 16:23:39 -07:00
Mathias Rainer Schmidt b785b8d673 - updated thermal compliance QoI 2025-06-04 16:18:51 -07:00
Mittal, Ketan fb16e0a8ad update sample runs and weight for weak enforcement of bcs in Diffusion_Solve 2025-05-28 18:06:21 -07:00
mittal3 3e75a814ce Merge branch 'ethos_MS' of https://github.com/mfem/mfem into ethos_MS 2025-05-18 19:36:26 -07:00
mittal3 b405f89608 print compliance init/final/ref 2025-05-18 19:36:12 -07:00
Mathias Rainer Schmidt 43e91c109b - added latest version of thermal comliance 2025-05-15 16:15:57 -07:00
Mittal, Ketan dc649bac36 update some sample runs 2025-04-08 12:53:50 -07:00
Mittal, Ketan 0cfe8bfdc1 add jid for saving 2025-03-19 12:54:17 -07:00
Mittal, Ketan 080bd54393 make different orders for solution and mesh 2025-03-13 17:45:32 -07:00
Mittal, Ketan 4aa312b79b clean up 2025-03-13 11:33:36 -07:00
Mathias Rainer Schmidt d498f0e816 - deleted metric 107 2025-03-11 16:37:01 -07:00
Mittal, Ketan ac520528f1 beam restore linear sample run 2025-03-10 17:21:37 -07:00
Mittal, Ketan 907dd7ed97 more sample runs and misc changes 2025-03-10 17:13:16 -07:00
Mittal, Ketan 73a94ccec3 Merge branch 'ethos_MS' of https://github.com/mfem/mfem into ethos_MS 2025-03-06 19:05:26 -08:00
Mathias Rainer Schmidt dcfb5fd2bc - added beam example 2025-03-06 15:22:07 -08:00
Mathias Rainer Schmidt 4de17d9eba - added additional command run 2025-03-06 12:03:52 -08:00
Mathias Rainer Schmidt eae97c983e - update for boundary integrators 2025-03-06 11:58:09 -08:00
Mittal, Ketan e3d11b4595 Merge branch 'ethos_MS' of https://github.com/mfem/mfem into ethos_MS 2025-03-04 11:42:28 -08:00
Mathias Rainer Schmidt b5f0fe5239 - added command line arguments for max comliance elaasticity run 2025-03-04 11:38:29 -08:00
Mittal, Ketan e8c9151c35 Merge branch 'ethos_MS' of https://github.com/mfem/mfem into ethos_MS 2025-03-04 10:42:48 -08:00
Mittal, Ketan 72013a4ebd add some new metrics 2025-03-04 10:42:44 -08:00
Mathias Rainer Schmidt e67f0515da -updated driver 2025-03-03 12:03:09 -08:00
Mathias Rainer Schmidt 9fd181459c - updated elasticity opt 2025-03-03 11:59:16 -08:00
Mathias Rainer Schmidt 641405d4e3 - added set function for elasticity QoI 2025-02-28 01:27:45 -08:00
Mathias Rainer Schmidt 4f5466e78c - added elasticity solver to driver 2025-02-28 01:19:19 -08:00
Mathias Rainer Schmidt fc2d6fe9fb - added physic solver base class
- eleminated redundancies
2025-02-28 00:15:03 -08:00
Mathias Rainer Schmidt 39f321f202 - added elasticity and comliance derivative integrators 2025-02-27 23:32:50 -08:00
Mathias Rainer Schmidt 2d309f35c7 Merge branch 'ethos_MS' of https://github.com/mfem/mfem into ethos_MS 2025-02-27 22:29:54 -08:00
Mittal, Ketan b9a9cf55be add simplices 2025-02-25 13:48:55 -08:00
Mittal, Ketan 069207e963 fix essential bc for default mesh 2025-02-25 11:18:17 -08:00
Mittal, Ketan d65ca15e88 filter as function coefficient 2025-02-25 10:25:50 -08:00
Mittal, Ketan 512b14f13f filter with line search and some sample runs for presentation 2025-02-21 10:44:29 -08:00
Mittal, Ketan 612757ff14 wip: add filter to tmop-mma solver 2025-02-20 16:39:27 -08:00
Mittal, Ketan 1b2782c173 remove default order to bug proof 2025-02-20 13:35:27 -08:00
Mittal, Ketan ad0d15ef2c add dimension to QoI constructors 2025-02-20 10:58:38 -08:00
Mathias Rainer Schmidt 1130067657 erge branch 'ethos_MS' of https://github.com/mfem/mfem into ethos_MS 2025-02-19 23:37:28 -08:00
Mathias Rainer Schmidt 20d36f54c2 Merge branch 'ethos_MS' of https://github.com/mfem/mfem into ethos_MS 2025-02-19 21:48:09 -08:00
Mittal, Ketan b09c35caf8 ZZ fix for o > 1 2025-02-19 21:44:51 -08:00
Mathias Rainer Schmidt c929b4e3dd - added break 2025-02-19 21:43:15 -08:00
Mittal, Ketan f4988376e3 fix segfault 2025-02-19 21:33:40 -08:00
Mittal, Ketan f1c2bf09b5 cosmetic 2025-02-19 21:20:58 -08:00
Mathias Rainer Schmidt 42ba75fef1 Merge branch 'ethos_MS' of https://github.com/mfem/mfem into ethos_MS 2025-02-19 18:04:50 -08:00
Mathias Rainer Schmidt ddb94fbc08 - added global ZZ 2025-02-19 17:12:04 -08:00
Mittal, Ketan 4ff3aad852 misc changes: mainly add h1 qoi 2025-02-18 22:32:27 -08:00
Mathias Rainer Schmidt 3eb2f65b7e - added shape true solution shape derivative for weak BCs 2025-02-18 00:38:15 -08:00
Mathias Rainer Schmidt 719be06fe0 Merge branch 'ethos_MS' of https://github.com/mfem/mfem into ethos_MS 2025-02-17 23:37:18 -08:00
Mathias Rainer Schmidt aac6dcfe54 - added filter and projection 2025-02-17 23:32:48 -08:00
Mittal, Ketan 248123ceeb use discrete gradient of exact solution for l2 and h1 qoi 2025-02-17 17:46:02 -08:00
Mittal, Ketan bdc83d63e6 Hessian of true solution for H1 error qoi 2025-02-16 11:20:44 -08:00
Mathias Rainer Schmidt 30747c432e - added tanh function to AD dual
- switched ft 1 to AD computation
2025-02-14 00:10:34 -08:00
Mathias Rainer Schmidt 4f2270be9f - added AD function for 3rd derivative 2025-02-13 23:06:25 -08:00
Mathias Rainer Schmidt 2c5c7f4931 - added AD functionality for 1st and 2nd derivative for true sol func 2025-02-13 21:05:03 -08:00
Mathias Rainer Schmidt 14ed152f68 - added load grad of ft 0 2025-02-13 16:41:51 -08:00
Mittal, Ketan 238812a0f2 fix custom derivative and add sensitivity to load on rhs 2025-02-13 16:17:28 -08:00
Mathias Rainer Schmidt e77c42b114 Merge branch 'ethos_MS' of https://github.com/mfem/mfem into ethos_MS 2025-02-13 15:36:21 -08:00
Mathias Rainer Schmidt 064022c50c - additional integrators and weak BCs 2025-02-13 15:24:07 -08:00
Mittal, Ketan 5e021920d7 merge and resolve conflicts 2025-02-12 22:03:17 -08:00
Mittal, Ketan ebcaa59e51 fix integration rules 2025-02-12 18:54:23 -08:00
Mathias Rainer Schmidt dd7fac00a7 - added outputs for debugging 2025-02-11 17:06:18 -08:00
Mittal, Ketan b18d555059 Merge branch 'ethos_MS' of https://github.com/mfem/mfem into ethos_MS 2025-02-10 18:04:30 -08:00
Mittal, Ketan a484253628 option to specify int rule 2025-02-10 18:04:25 -08:00
Mathias Rainer Schmidt c9bcdf58f0 - added global FD functionality 2025-02-10 17:30:43 -08:00
Mittal, Ketan e5050f1ab0 add dQdu and dqdx test working 2025-02-10 17:18:23 -08:00
Mittal, Ketan c1a3f71f5e Merge branch 'ethos_MS' of https://github.com/mfem/mfem into ethos_MS 2025-02-10 10:13:09 -08:00
Mittal, Ketan 1841863347 vis for solver and independent elasticity example 2025-02-10 10:13:06 -08:00
Mathias Rainer Schmidt 3fc4a8e808 - added vector hemholt filter 2025-02-07 17:26:59 -08:00
Mathias Rainer Schmidt d394f4190f - added debug functionality 2025-02-07 16:41:38 -08:00
Mittal, Ketan da4c65d520 fix loadfunc for circular wave 2025-02-04 13:29:10 -08:00
Mittal, Ketan 72203ac37d minor and updated sample runs 2025-02-04 12:00:26 -08:00
Mathias Rainer Schmidt b3e3f17173 Merge branch 'ethos_MS' of https://github.com/mfem/mfem into ethos_MS 2025-02-04 00:31:24 -08:00
Mathias Rainer Schmidt 982a798d32 - corrected constructor for use of energy QoI 2025-02-04 00:30:47 -08:00
Mittal, Ketan 3a26e8412e minor 2025-01-31 13:01:47 -08:00
Mittal, Ketan 1cbf5794d9 Merge branch 'ethos_MS' of https://github.com/mfem/mfem into ethos_MS 2025-01-30 14:54:35 -08:00
Mittal, Ketan 7da33e16c7 WIP: inhomogeneous boundary conditions 2025-01-30 14:54:21 -08:00
Mathias Rainer Schmidt 05bca56390 - initial version of elasticity solver 2025-01-30 12:19:10 -08:00
Mittal, Ketan f363f21f6d bug fix due to line search 2025-01-28 20:59:09 -08:00
Mittal, Ketan d343be0ca5 working for o>1 2025-01-28 18:43:37 -08:00
Mittal, Ketan a7a68751e8 minor: try 3D run 2025-01-28 16:28:19 -08:00
Mittal, Ketan 63312b5927 minor 2025-01-27 15:53:09 -08:00
Vladimir Z Tomov 8a48030256 minor, renamed some things. 2024-12-29 11:43:42 -08:00
Mathias Rainer Schmidt 65ef9ce570 - fixed BC
- WIP added energy QoI
2024-12-06 21:00:16 -08:00
Mathias Rainer Schmidt afd00f3bd5 - switched to correct MMA interface 2024-12-06 15:35:10 -08:00
Mathias Rainer Schmidt 304469c206 - minor change 2024-12-06 15:13:06 -08:00
Mathias Rainer Schmidt 81486f919a - fixed FD test 2024-12-06 14:59:18 -08:00
Mathias Rainer Schmidt 099997986d - added AVG error QoI 2024-12-05 17:41:33 -08:00
Mittal, Ketan 1161b60b22 adding missing tmop_ad_err files 2024-12-05 11:16:16 -08:00
Mittal, Ketan 1cddea7f91 minor 2024-12-04 16:13:32 -08:00
Mittal, Ketan 6c3baecbe1 integrate with QoI 2024-12-04 15:51:36 -08:00
Mittal, Ketan 8f78ff7ecb Merge branch 'ethos_MS' of https://github.com/mfem/mfem into ethos_MS 2024-12-04 10:06:17 -08:00
Mittal, Ketan f40153d89e WIP: TMOP+MMA solver 2024-12-04 10:06:13 -08:00
Mathias Rainer Schmidt 572e8076d0 - added parallel consistent functionality
- added ZZ inspired QoI

Please enter the commit message for your changes. Lines starting
2024-12-03 23:28:41 -08:00
Mathias Rainer Schmidt 466619f95a Merge branch 'ethos_MS' of https://github.com/mfem/mfem into ethos_MS 2024-11-20 12:14:31 -08:00
Mathias Rainer Schmidt 48f9522f59 - update cmake 2024-11-20 12:14:03 -08:00
Mittal, Ketan fd8d9a38ad restore exact solution being used in the driver 2024-11-18 10:39:57 -08:00
Mittal, Ketan ec24efb9aa pull in AD and MMA branch, and use native MMA if not compiled with petsc 2024-11-18 10:38:10 -08:00
Mittal, Ketan 02850aa3d1 Merge branch 'TMOP_AD_ms' of https://github.com/mfem/mfem into ethos_MS 2024-11-14 23:08:12 -08:00
Mittal, Ketan 4b4b7b430e Merge branch 'MMA_PR' of https://github.com/mfem/mfem into ethos_MS 2024-11-14 17:49:20 -08:00
Mittal, Ketan f171f6e3aa Merge branch 'master' of https://github.com/mfem/mfem into ethos_MS 2024-11-14 17:48:22 -08:00
linke2 c8d39a3090 Code Style 2024-09-09 14:45:46 -07:00
linke2 2e4bb12589 Updated MMA variable 2024-09-09 13:16:56 -07:00
linke2 38abb9bee4 Updated to real_t 2024-09-09 10:07:41 -07:00
linke2 e0569296e7 fix MMA test 2024-09-09 09:47:03 -07:00
linke2 0b6881390f remove unused variable in test 2024-09-09 09:46:25 -07:00
linke2 9a1baddd61 fixed shadowed variables 2024-09-04 11:58:25 -07:00
linke2 01eab3864d removed subcommunicator 2024-09-04 11:28:49 -07:00
linke2 455c52f520 MMA Final 2024-09-03 16:42:04 -07:00
Mathias Rainer Schmidt 3f309d4fa6 - mesh optimizer with NLP 2024-05-15 16:02:59 -07:00
1028 changed files with 16403 additions and 29355 deletions
+8 -22
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
@@ -29,10 +29,6 @@ on:
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
HYPRE_ARCHIVE: v2.19.0.tar.gz
HYPRE_TOP_DIR: hypre-2.19.0
@@ -96,7 +92,6 @@ jobs:
build-system: cmake
hypre-target: int32
precision: fp64
config-opts: '-DCMAKE_INSTALL_PREFIX=../cmake-install'
# This option can be set to pass additional configuration options to
# the MFEM configuration command.
# config-opts: '-DCMAKE_VERBOSE_MAKEFILE=ON'
@@ -119,6 +114,13 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
# This external action allows to interrupt a workflow already running on
# the same branch to save resources.
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.12.1
with:
access_token: ${{ github.token }}
# Fix 'No space left on device' errors for Ubuntu builds.
- name: Run Actions Cleaner
if: matrix.os == 'ubuntu-latest'
@@ -304,22 +306,6 @@ jobs:
ctest --rerun-failed --output-on-failure -C ${CTEST_CONFIG}
shell: bash
- name: make install
if: matrix.build-system == 'make'
run: |
cd ${{ env.MFEM_TOP_DIR }} && make install
- name: cmake install
if: matrix.build-system == 'cmake'
run: |
CONFIG="Release"
[[ ${{ matrix.target }} == 'dbg' ]] && CONFIG="Debug"
TARGET="install"
[[ ${{ matrix.os }} == 'windows-latest' ]] && TARGET="INSTALL"
cd ${{ env.MFEM_TOP_DIR }} && \
cmake --build build --target ${TARGET} --config ${CONFIG}
shell: bash
# Code coverage (process and upload reports)
- name: codecov
if: matrix.codecov == 'YES'
-4
View File
@@ -18,10 +18,6 @@ on:
# The branches below must be a subset of the branches above
branches: ["master"]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
analyze:
name: Analyze
+6 -5
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
@@ -22,10 +22,6 @@ on:
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
HYPRE_ARCHIVE: v2.19.0.tar.gz
HYPRE_TOP_DIR: hypre-2.19.0
@@ -38,6 +34,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.12.1
with:
access_token: ${{ github.token }}
- name: checkout MFEM
uses: actions/checkout@v4
with:
+14 -7
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
@@ -22,15 +22,22 @@ on:
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
Serial:
runs-on: ubuntu-24.04
runs-on: ubuntu-latest
steps:
- name: Temporary workaround for sanitizer crashes
# See https://github.com/actions/runner-images/issues/9491
# The issue should be fixed in the next runner image for Ubuntu 22.04,
# see https://github.com/actions/runner-images/pull/9513
run: sudo sysctl vm.mmap_rnd_bits=28
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.12.1
with:
access_token: ${{ github.token }}
- name: MFEM Checkout
uses: actions/checkout@v4
with:
@@ -48,7 +55,7 @@ jobs:
build-system: make
library-only: false
config-options:
CXX="clang++-18"
CXX="clang++-14"
CXXFLAGS="-g -O1 -std=c++11
-fsanitize=address
-fno-omit-frame-pointer
+6 -5
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
@@ -19,10 +19,6 @@ on:
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# This workflow is run on pushes to any branch in the MFEM repo (with or without
# PRs), as well as on updates to PRs from forks. In particular, we do not
# duplicate work by running on both pushes and updates to local PRs. We do that
@@ -37,6 +33,11 @@ jobs:
(github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository)
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.12.1
with:
access_token: ${{ github.token }}
- name: checkout mfem
uses: actions/checkout@v4
+2 -4
View File
@@ -3,7 +3,6 @@
name: Mark stale issues and pull requests
on:
workflow_dispatch:
schedule:
- cron: '0 0 * * *'
@@ -14,10 +13,9 @@ jobs:
permissions:
issues: write
pull-requests: write
actions: write
steps:
- uses: actions/stale@v9
- uses: actions/stale@v5
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: ':warning: This issue has been automatically marked as stale because it has not had any activity in the last month. *If no activity occurs in the next week, it will be automatically closed.* Thank you for your contributions.'
@@ -26,6 +24,6 @@ jobs:
days-before-close: 7
stale-issue-label: 'stale'
stale-pr-label: 'stale'
operations-per-run: 500
operations-per-run: 30
exempt-issue-labels: "bug,WIP,ready-for-review,in-review,in-next"
exempt-pr-labels: "bug,WIP,ready-for-review,in-review,in-next"
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
-11
View File
@@ -8,7 +8,6 @@
# Object and library files
*.o
*.o.tmp
/libmfem.*
/miniapps/common/libmfem-common.*
@@ -227,7 +226,6 @@ miniapps/meshing/extruder
miniapps/meshing/fit-node-position
miniapps/meshing/trimmer
miniapps/meshing/reflector
miniapps/meshing/ref321
miniapps/meshing/mesh-optimizer
miniapps/meshing/pmesh-optimizer
miniapps/meshing/pmesh-fitting
@@ -247,8 +245,6 @@ miniapps/meshing/shaper.mesh
miniapps/meshing/extruder.mesh
miniapps/meshing/trimmer.mesh
miniapps/meshing/reflected.mesh
miniapps/meshing/ref321.mesh
miniapps/meshing/sol.gf
miniapps/meshing/optimized*
miniapps/meshing/perturbed*
miniapps/meshing/polar-nc.mesh
@@ -343,7 +339,6 @@ miniapps/toys/rubik
miniapps/toys/snake
miniapps/toys/lissajous
miniapps/toys/mondrian
miniapps/toys/spiral
miniapps/toys/snake-init.mesh
miniapps/toys/snake-user.mesh
miniapps/toys/snake-joined.mesh
@@ -432,9 +427,3 @@ pkg.gitcommit
# Jupyter Notebook Checkpoints
.ipynb_checkpoints
# emacs tag file
TAGS
# vs code
.vscode
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
@@ -1,6 +1,6 @@
#!/bin/bash
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
@@ -1,6 +1,6 @@
#!/bin/bash
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
-72
View File
@@ -12,8 +12,6 @@ Version 4.7.1 (development)
===========================
- Refactored ALGOIM cut integration rules. The interface is unified with
the interface for moment based cut integration rules.
- Altered (Par)GridFunction::Compute*Error functions to ensure they return
non-negative values and therefore behave as "norms".
Discretization improvements
---------------------------
@@ -22,32 +20,11 @@ Discretization improvements
- Added support for boundary constraints to the hybridization class.
- Added support for external boundary submeshes with nonconformal mesh adaptation.
- Added assembly of Jacobians to `HyperbolicFormIntegrator`.
- Added average fluxes to `NumericalFlux` (formerly `RiemannSolver`)
and `FluxFunction`.
- Added component-wise upwinded flux (`ComponentwiseUpwindFlux`).
- Added support for H(div) spaces in class QuadratureInterpolator. For now, only
(vector) VALUES, (vector) PHYSICAL_VALUES, and PHYSICAL_MAGNITUDES evaluations
are implemented. [PR #4669]
Meshing improvements
--------------------
- Added native AD support for numerous TMOP metrics that didn't have first or
second derivative implementations.
- The ExodusII reader now handles pyramid and wedge element types. Mixed meshes
are also supported.
- Added support for nonuniform anisotropic (nonconforming) mesh refinement with
arbitrary spacing in each direction, for quadrilateral (2D) and hexahedral
(3D) meshes. This enables in particular 3:1 refinement, as demonstrated in the
new meshing miniapp ref321.
New and updated examples and miniapps
-------------------------------------
- Added miniapps to demonstrate the H(div) and H(curl) NURBS elements.
@@ -55,9 +32,6 @@ New and updated examples and miniapps
- Added an MFEM example for the eikonal equation. This new solver is based on
the proximal Galerkin method introduced by Keith and Surowiec.
- Added a new toy miniapp that animates an interesting fidget spiral cone toy.
See miniapps/toys/spiral.cpp.
- Added a command line option to all miniapps (`-p` or `--send-port`) for
specifying the GLVis server socket port (19916 by default).
@@ -82,13 +56,6 @@ GPU computing
high-order transfer operators. New kernels can be offloaded as device
kernels. Example usage may be found in lor-transfer.cpp under miniapps/tools.
- Added support for GPU accelerated FindPointsGSLIB. Note that this will require
the users to switch from gslib v1.0.7 to v1.0.9.
- Allow BlockLowerTriangularPreconditioner to run on GPU.
- Use device vectors in GMRES, FGMRES and other iterative methods.
Miscellaneous
-------------
- Added support for SUNDIALS v7. See the section "API changes" for some small
@@ -106,49 +73,10 @@ Miscellaneous
- Added support for custom interpolation procedure in FindPointsGSLIB.
- `FiniteElementSpace` has new methods to directly set prolongation and
restriction operators to arbitrary sparse matrices.
- There are new convenience constructors for NURBS patches and knot vectors.
- Added convenience methods for manipulating boundary attribute marker arrays;
`(Par)Mesh::MarkExternalBoundaries`, `(Par)Mesh::UnmarkInternalBoundaries`,
`(Par)Mesh::MarkNamedBoundaries`, and `(Par)Mesh::UnmarkNamedBoundaries`.
See examples `ex1.cpp`, `ex1p.cpp`, and `ex11p.cpp` for basic usage.
- Added `(Par)Mesh::GetExteriorFaceMarker` for identifying faces on the
exterior of the mesh irrespective of their presence in the list of "boundary
elements".
- Added methods to `(Par)FiniteElementSpace` to identify all degrees of freedom
located on the exterior of the domain without reference to the list of
"boundary elements"; `GetExteriorVDofs` and `GetExteriorTrueDofs`.
- `LinearFormIntegrator` and `NonlinearFormIntegrator` (including
`BilinearFormIntegrator`) now all inherit from a base class `Integrator`
that combines some logic related to selecting quadrature rules. This includes
a virtual method `Integrator::GetDefaultIntegrationRule`, which should be
favored over directly defining a default integration rule in the element-level
assembly routines (although the latter is still possible, by leaving the new
virtual method as its default base implementation of returning `NULL`).
- Updated the benchmarks (in tests/benchmarks) to work with the latest Google
Benchmarks classes (version 1.9.1). Renamed the MFEM_ENABLE_GOOGLE_BENCHMARKS
CMake option to just MFEM_ENABLE_BENCHMARKS.
- Changed the name of `IterativeSolverMonitor` to `IterativeSolverController`
which now allows for declaring convergence by a user defined criterion. For
backward compatibility, the old name is still available.
API changes
-----------
- API change: 'TMOP_Metric_skew2D' has been marked as deprecated.
- API change: in class GridFunction, 'fec' was renamed to 'fec_owned'.
- API change: `RiemannSolver` was renamed to `NumericalFlux` (the old name has
been been deprecated through typedef)
- API change: support for SUNDIALS v7:
* the SUNDIALS types `realtype` and `booleantype` are no longer defined by v7
and therefore MFEM now uses the new type names `sunrealtype` and
+31 -57
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
@@ -87,16 +87,13 @@ if (MFEM_USE_STRUMPACK OR MFEM_USE_MUMPS)
# Just needed to find the MPI_Fortran libraries to link with
set(XSDK_ENABLE_Fortran ON)
endif()
# Ginkgo requires C++17:
if ((MFEM_USE_GINKGO) AND ("${CMAKE_CXX_STANDARD}" LESS "17"))
set(CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard to use." FORCE)
# Google Benchmark, SUNDIALS, STRUMPACK, Tribol, RAJA and Umpire require C++14:
elseif ((MFEM_USE_BENCHMARK OR
MFEM_USE_SUNDIALS OR
MFEM_USE_STRUMPACK OR
MFEM_USE_TRIBOL OR
MFEM_USE_RAJA OR
MFEM_USE_UMPIRE) AND
# SUNDIALS, STRUMPACK, Ginkgo, Tribol, RAJA and Umpire require C++14:
if ((MFEM_USE_SUNDIALS OR
MFEM_USE_STRUMPACK OR
MFEM_USE_GINKGO OR
MFEM_USE_TRIBOL OR
MFEM_USE_RAJA OR
MFEM_USE_UMPIRE) AND
("${CMAKE_CXX_STANDARD}" LESS "14"))
set(CMAKE_CXX_STANDARD 14 CACHE STRING "C++ standard to use." FORCE)
endif()
@@ -621,37 +618,15 @@ set(MASTER_HEADERS
${PROJECT_SOURCE_DIR}/mfem.hpp
${PROJECT_SOURCE_DIR}/mfem-performance.hpp)
# Installation options (we use GNUInstallDirs but prefer lib by default)
set(MFEM_USE_GNUINSTALLDIRS OFF CACHE BOOL
"Use CMAKE_INSTALL_LIBDIR as defined by the GNUInstallDirs CMake module.")
if (NOT MFEM_USE_GNUINSTALLDIRS)
mfem_cache_path(CMAKE_INSTALL_LIBDIR "lib" "Object code libraries (lib)")
endif()
include(GNUInstallDirs)
mfem_cache_path(INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_INCLUDEDIR}"
"Relative or absolute path for installing header files.")
mfem_cache_path(INSTALL_BIN_DIR "${CMAKE_INSTALL_BINDIR}"
"Relative or absolute path for installing the binaries.")
mfem_cache_path(INSTALL_LIB_DIR "${CMAKE_INSTALL_LIBDIR}"
"Relative or absolute path for installing the library.")
mfem_cache_path(INSTALL_SHARE_DIR "${CMAKE_INSTALL_DATAROOTDIR}"
"Relative or absolute path for installing shared data.")
# other options: "share/mfem/cmake", "lib/mfem/cmake"
mfem_cache_path(INSTALL_CMAKE_DIR "${INSTALL_LIB_DIR}/cmake/mfem"
"Relative or absolute path for installing cmake config files.")
mfem_path_to_fullpath("${INSTALL_LIB_DIR}" "${CMAKE_INSTALL_PREFIX}" _lib_path)
set(_lib_path "${CMAKE_INSTALL_PREFIX}/lib")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH ON CACHE BOOL "")
if(NOT DEFINED CMAKE_INSTALL_RPATH)
set(CMAKE_INSTALL_RPATH "${_lib_path}")
endif()
if(NOT DEFINED CMAKE_INSTALL_NAME_DIR)
set(CMAKE_INSTALL_NAME_DIR "${_lib_path}")
endif()
set(CMAKE_INSTALL_RPATH "${_lib_path}" CACHE PATH "")
set(CMAKE_INSTALL_NAME_DIR "${_lib_path}" CACHE PATH "")
# Variables used when generating _config.hpp, and config.mk
set(MFEM_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(MFEM_INSTALL_DIR ${CMAKE_INSTALL_PREFIX})
set(MFEM_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH
"The MFEM source directory" FORCE)
set(MFEM_INSTALL_DIR ${CMAKE_INSTALL_PREFIX} CACHE PATH
"The MFEM install directory" FORCE)
# Declaring the library
mfem_add_library(mfem ${SOURCES} ${HEADERS} ${MASTER_HEADERS})
@@ -747,17 +722,11 @@ if (MFEM_ENABLE_TESTING)
add_mfem_target(${MFEM_ALL_TESTS_TARGET_NAME} OFF)
add_subdirectory(tests EXCLUDE_FROM_ALL)
if (MFEM_USE_BENCHMARK)
# Create a target for all benchmarks and, optionally, enable it.
set(MFEM_ALL_BENCHMARKS_TARGET_NAME benchmarks)
add_mfem_target(${MFEM_ALL_BENCHMARKS_TARGET_NAME}
${MFEM_ENABLE_BENCHMARKS})
if (MFEM_ENABLE_BENCHMARKS)
add_subdirectory(tests/benchmarks) #install benchmarks if enabled
else()
add_subdirectory(tests/benchmarks EXCLUDE_FROM_ALL)
endif()
endif()
# Create a target for all benchmarks and, optionally, enable it.
set(MFEM_ALL_BENCHMARKS_TARGET_NAME benchmarks)
add_mfem_target(${MFEM_ALL_BENCHMARKS_TARGET_NAME}
${MFEM_ENABLE_GOOGLE_BENCHMARKS})
add_subdirectory(tests/benchmarks EXCLUDE_FROM_ALL)
endif()
# Define a target that all examples and miniapps will depend on.
@@ -776,11 +745,7 @@ endif()
# Create a target for all miniapps and, optionally, enable it.
set(MFEM_ALL_MINIAPPS_TARGET_NAME miniapps)
add_mfem_target(${MFEM_ALL_MINIAPPS_TARGET_NAME} ${MFEM_ENABLE_MINIAPPS})
if (MFEM_ENABLE_MINIAPPS)
add_subdirectory(miniapps) #install miniapps if enabled
else()
add_subdirectory(miniapps EXCLUDE_FROM_ALL)
endif()
add_subdirectory(miniapps EXCLUDE_FROM_ALL)
# Target to build all executables, i.e. everything.
add_custom_target(exec)
@@ -830,6 +795,15 @@ add_subdirectory(doc)
#-------------------------------------------------------------------------------
message(STATUS "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}")
set(INSTALL_INCLUDE_DIR include
CACHE PATH "Relative path for installing header files.")
set(INSTALL_BIN_DIR bin
CACHE PATH "Relative path for installing the binaries.")
set(INSTALL_LIB_DIR lib
CACHE PATH "Relative path for installing the library.")
# other options: "share/mfem/cmake", "lib/mfem/cmake"
set(INSTALL_CMAKE_DIR lib/cmake/mfem
CACHE PATH "Relative path for installing cmake config files.")
target_include_directories(mfem BEFORE
PUBLIC
@@ -854,7 +828,7 @@ foreach(Header mfem.hpp mfem-performance.hpp)
endforeach()
install(FILES ${MASTER_HEADERS} DESTINATION ${INSTALL_INCLUDE_DIR}/mfem)
# Install the headers (except common miniapp which is installed from its subdir)
# Install the headers; currently, the miniapps headers are excluded
install(DIRECTORY ${MFEM_SOURCE_DIRS}
DESTINATION ${INSTALL_INCLUDE_DIR}/mfem
FILES_MATCHING PATTERN "*.hpp")
+13 -27
View File
@@ -220,10 +220,9 @@ An optional installation of the library and the headers can be performed with
make install [PREFIX=<dir>]
The library will be installed in ${PREFIX}/lib, the headers in
${PREFIX}/include, and the configuration and testing makefiles (config.mk and
test.mk) in ${PREFIX}/share/mfem. The PREFIX option can also be set during
configuration.
The library will be installed in $(PREFIX)/lib, the headers in
$(PREFIX)/include, and the configuration makefile (config.mk) in
$(PREFIX)/share/mfem. The PREFIX option can also be set during configuration.
Information about the current build configuration can be viewed using
@@ -272,9 +271,8 @@ Build options:
Installation options:
PREFIX - Specify the installation directory. The library (libmfem.a) will be
installed in ${PREFIX}/lib, the headers in ${PREFIX}/include, and
the configuration and testing makefiles (config.mk and test.mk) in
${PREFIX}/share/mfem.
installed in $(PREFIX)/lib, the headers in $(PREFIX)/include, and
the configuration makefile (config.mk) in $(PREFIX)/share/mfem.
INSTALL - Specify the install program, default = /usr/bin/install
INSTALL_DEF_PERM - Specify the default install permissions. This affects
headers and configuration makefiles, default = 644
@@ -704,12 +702,12 @@ The specific libraries and their options are:
Versions: STRUMPACK >= 3.0.0.
- Ginkgo (optional), used when MFEM_USE_GINKGO = YES. Note that Ginkgo needs a
C++ compiler that supports the C++-17 standard. For additional requirements
C++ compiler that supports the C++-14 standard. For additional requirements
and dependencies of specific modules, see the Ginkgo webpage below.
URL: https://ginkgo-project.github.io
Options: GINKGO_OPT, GINKGO_LIB, GINKGO_DIR, GINKGO_BUILD_TYPE (Release or
Debug).
Versions: Ginkgo >= 1.9.0.
Versions: Ginkgo >= 1.4.0.
- AmgX (optional), used when MFEM_USE_AMGX = YES.
URL: https://github.com/NVIDIA/AMGX
@@ -793,14 +791,14 @@ The specific libraries and their options are:
Versions: 1.9.3
- GSLIB (optional), used when MFEM_USE_GSLIB = YES. The gslib library must be
built prior to the MFEM build, as follows: download gslib-1.0.9, untar it at
the same level as MFEM and create a symbolic link: "ln -s gslib-1.0.9 gslib".
built prior to the MFEM build, as follows: download gslib-1.0.7, untar it at
the same level as MFEM and create a symbolic link: "ln -s gslib-1.0.7 gslib".
Build gslib in parallel or in serial based on the desired MFEM build: "make
clean; make CC=mpicc" or "make clean; make CC=gcc MPI=0". Build MFEM with
MFEM_USE_GSLIB=YES.
URL: https://github.com/gslib/gslib/archive/v1.0.9.tar.gz
URL: https://github.com/gslib/gslib/archive/v1.0.7.tar.gz
Options: GSLIB_OPT, GSLIB_LIB.
Versions: GSLIB >= 1.0.9.
Versions: GSLIB >= 1.0.7.
- ALGOIM (optional), used when MFEM_USE_ALGOIM=YES. The library provides only
headers so it just needs to be downloaded at the same level as MFEM. Download
@@ -982,20 +980,8 @@ or
cmake --build . --config Release --target install [Xcode]
cmake --build . --config Release --target INSTALL [Visual Studio]
By default, the library will be installed in ${CMAKE_INSTALL_PREFIX}/lib, the
headers in ${CMAKE_INSTALL_PREFIX}/include, the configuration CMake files in
${CMAKE_INSTALL_PREFIX}/lib/cmake/mfem, and the configuration and testing GNU
make files in ${CMAKE_INSTALL_PREFIX}/share/mfem. For fine-tuning the
installation directories the following variables can be used:
INSTALL_INCLUDE_DIR, INSTALL_LIB_DIR, INSTALL_BIN_DIR (e.g. for dll files on
Windows), INSTALL_SHARE_DIR, and INSTALL_CMAKE_DIR; alternatively, with lower
precedence, the CMake GNUInstallDirs variables can also be used:
CMAKE_INSTALL_INCLUDEDIR, CMAKE_INSTALL_LIBDIR, CMAKE_INSTALL_BINDIR and
CMAKE_INSTALL_DATAROOTDIR. Note that the default for INSTALL_LIB_DIR and
CMAKE_INSTALL_LIBDIR is lib. This is in contrast to the default behavior for
GNUInstallDirs, which defines a platform-dependent default value for
CMAKE_INSTALL_LIBDIR (lib or lib64 or lib/<multiarch-tuple> on Debian). To
restore this behavior, the user can set MFEM_USE_GNUINSTALLDIRS=YES.
The library will be installed in <PREFIX>/lib, the headers in <PREFIX>/include,
and the configuration CMake files in <PREFIX>/lib/cmake/mfem.
Configuration variables (CMake)
+1 -1
View File
@@ -1,6 +1,6 @@
BSD 3-Clause License
Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC
Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC
All rights reserved.
Redistribution and use in source and binary forms, with or without
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -2
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
@@ -50,7 +50,6 @@ set(MFEM_USE_FMS @MFEM_USE_FMS@)
set(MFEM_USE_CONDUIT @MFEM_USE_CONDUIT@)
set(MFEM_USE_PUMI @MFEM_USE_PUMI@)
set(MFEM_USE_CUDA @MFEM_USE_CUDA@)
set(MFEM_USE_HIP @MFEM_USE_HIP@)
set(MFEM_USE_OCCA @MFEM_USE_OCCA@)
set(MFEM_USE_RAJA @MFEM_USE_RAJA@)
set(MFEM_USE_CEED @MFEM_USE_CEED@)
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
// Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
// at the Lawrence Livermore National Laboratory. All Rights reserved. See files
// LICENSE and NOTICE for details. LLNL-CODE-806117.
//
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
@@ -117,8 +117,8 @@ macro (MULTIPASS_SOURCE_RUNS includes libraries source runs language)
math (EXPR _tmp "${MULTIPASS_TEST_COUNT} + 1") # Why can't I add to a cache variable?
set (MULTIPASS_TEST_COUNT ${_tmp} CACHE INTERNAL "Unique test ID")
set (testname MULTIPASS_TEST_${MULTIPASS_TEST_COUNT}_${runs})
set (CMAKE_REQUIRED_INCLUDES ${includes} ${MPI_${language}_INCLUDE_PATH})
set (CMAKE_REQUIRED_LIBRARIES ${libraries} ${MPI_${language}_LIBRARIES})
set (CMAKE_REQUIRED_INCLUDES ${includes})
set (CMAKE_REQUIRED_LIBRARIES ${libraries})
if(${language} STREQUAL "C")
check_c_source_runs ("${source}" ${testname})
elseif(${language} STREQUAL "CXX")
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+2 -2
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
@@ -14,7 +14,7 @@
# - SLEPC_INCLUDE_DIRS
# - SLEPC_LIBRARIES
set(SLEPc_REQUIRED_PACKAGES "PETSC" "MPI" CACHE STRING
set(SLEPc_REQUIRED_PACKAGES "PETSC" CACHE STRING
"Additional packages required by SLEPc")
include(MfemCmakeUtilities)
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+6 -47
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
@@ -138,8 +138,6 @@ macro(add_mfem_miniapp MFEM_EXE_NAME)
# Actually add the executable
mfem_add_executable(${MFEM_EXE_NAME} ${MAIN_LIST}
${EXTRA_SOURCES_LIST} ${EXTRA_HEADERS_LIST})
install(TARGETS ${MFEM_EXE_NAME}
RUNTIME DESTINATION miniapps)
add_dependencies(${MFEM_ALL_MINIAPPS_TARGET_NAME} ${MFEM_EXE_NAME})
add_dependencies(${MFEM_EXE_NAME} ${MFEM_EXEC_PREREQUISITES_TARGET_NAME})
@@ -827,20 +825,6 @@ function(mfem_get_target_options Target CompileOptsVar LinkOptsVar)
endfunction(mfem_get_target_options)
#
# If ${Path} is not an absolute path, assign ${Prefix}/${Path} to the variable
# ${OutVar}. If ${Path} is an absolute path, assign ${Path} to the variable
# ${OutVar}.
#
function(mfem_path_to_fullpath Path Prefix OutVar)
if(IS_ABSOLUTE "${Path}")
set(${OutVar} "${Path}" PARENT_SCOPE)
else()
set(${OutVar} "${Prefix}/${Path}" PARENT_SCOPE)
endif()
endfunction()
#
# Function that creates 'config.mk' from 'config.mk.in' for the both the
# build- and the install-locations and define install rules for 'config.mk'
@@ -1007,12 +991,9 @@ function(mfem_export_mk_files)
"${PROJECT_BINARY_DIR}/config/test.mk" COPYONLY)
# Update variables for the install-tree version of 'config.mk'
mfem_path_to_fullpath(
"${INSTALL_INCLUDE_DIR}" "${CMAKE_INSTALL_PREFIX}" MFEM_INC_DIR)
mfem_path_to_fullpath(
"${INSTALL_LIB_DIR}" "${CMAKE_INSTALL_PREFIX}" MFEM_LIB_DIR)
mfem_path_to_fullpath(
"${INSTALL_SHARE_DIR}/mfem/test.mk" "${CMAKE_INSTALL_PREFIX}" MFEM_TEST_MK)
set(MFEM_INC_DIR "${CMAKE_INSTALL_PREFIX}/include")
set(MFEM_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib")
set(MFEM_TEST_MK "${CMAKE_INSTALL_PREFIX}/share/mfem/test.mk")
set(MFEM_CONFIG_EXTRA "")
# Create the install-tree version of 'config.mk'
@@ -1022,30 +1003,8 @@ function(mfem_export_mk_files)
# Install rules for 'config.mk' and 'test.mk'
install(FILES ${PROJECT_SOURCE_DIR}/config/test.mk
DESTINATION ${INSTALL_SHARE_DIR}/mfem/)
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/mfem/)
install(FILES ${PROJECT_BINARY_DIR}/config/config-install.mk
DESTINATION ${INSTALL_SHARE_DIR}/mfem/
RENAME config.mk)
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/mfem/ RENAME config.mk)
endfunction()
#
# Function similar to the macro _GNUInstallDirs_cache_path from the module
# GNUInstallDirs. Used to process variables like INSTALL_LIB_DIR if they are
# set on the cmake command line without specifying type: -DINSTALL_LIB_DIR=lib.
# Without this special treatment, relative paths are expanded to full paths
# and we want to avoid that.
#
function(mfem_cache_path PathVar DefaultPath HelpStr)
if(NOT DEFINED ${PathVar})
set(${PathVar} "${DefaultPath}" CACHE PATH "${HelpStr}")
endif()
get_property(cache_type CACHE ${PathVar} PROPERTY TYPE)
if(cache_type STREQUAL "UNINITIALIZED")
file(TO_CMAKE_PATH "${${PathVar}}" cmakepath)
set_property(CACHE ${PathVar} PROPERTY TYPE PATH)
set_property(CACHE ${PathVar} PROPERTY VALUE "${cmakepath}")
set_property(CACHE ${PathVar} PROPERTY HELPSTRING "${HelpStr}")
endif()
endfunction()
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
// Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
// at the Lawrence Livermore National Laboratory. All Rights reserved. See files
// LICENSE and NOTICE for details. LLNL-CODE-806117.
//
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
// Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
// at the Lawrence Livermore National Laboratory. All Rights reserved. See files
// LICENSE and NOTICE for details. LLNL-CODE-806117.
//
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+2 -2
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
@@ -86,7 +86,7 @@ set(MFEM_MPI_NP 4 CACHE STRING "Number of processes used for MPI tests")
option(MFEM_ENABLE_TESTING "Enable the ctest framework for testing" ON)
option(MFEM_ENABLE_EXAMPLES "Build all of the examples" OFF)
option(MFEM_ENABLE_MINIAPPS "Build all of the miniapps" OFF)
option(MFEM_ENABLE_BENCHMARKS "Build all of the benchmarks" OFF)
option(MFEM_ENABLE_GOOGLE_BENCHMARKS "Build all of the Google benchmarks" OFF)
# Setting CXX/MPICXX on the command line or in user.cmake will overwrite the
# autodetected C++ compiler.
+20 -10
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
@@ -271,6 +271,10 @@ POSIX_CLOCKS_LIB = -lrt
# For sundials_nvecmpiplusx and nvecparallel remember to build with MPI_ENABLE=ON
# and modify cmake variables for hypre for sundials
SUNDIALS_DIR = @MFEM_DIR@/../sundials-5.0.0/instdir
# SUNDIALS >= 6.4.0 requires C++14:
ifeq ($(MFEM_USE_SUNDIALS),YES)
BASE_FLAGS = -std=c++14
endif
SUNDIALS_OPT = -I$(SUNDIALS_DIR)/include
SUNDIALS_LIB = $(XLINKER)-rpath,$(SUNDIALS_DIR)/lib64\
$(XLINKER)-rpath,$(SUNDIALS_DIR)/lib\
@@ -349,6 +353,9 @@ MUMPS_LIB += -lmumps_common -lpord $(SCALAPACK_LIB) $(LAPACK_LIB) $(MPI_FORTRAN_
# STRUMPACK library configuration
STRUMPACK_DIR = @MFEM_DIR@/../STRUMPACK-build
ifeq ($(MFEM_USE_STRUMPACK),YES)
BASE_FLAGS = -std=c++14
endif
STRUMPACK_OPT = -I$(STRUMPACK_DIR)/include $(SCOTCH_OPT)
# If STRUMPACK was build with OpenMP support, the following may be need:
# STRUMPACK_OPT += $(OPENMP_OPT)
@@ -359,6 +366,9 @@ STRUMPACK_LIB = -L$(STRUMPACK_DIR)/lib -lstrumpack $(MPI_FORTRAN_LIB)\
GINKGO_DIR = @MFEM_DIR@/../ginkgo/install
GINKGO_SEARCH_DIR = $(subst @MFEM_DIR@,$(MFEM_DIR),$(GINKGO_DIR))
GINKGO_BUILD_TYPE=Release
ifeq ($(MFEM_USE_GINKGO),YES)
BASE_FLAGS = -std=c++14
endif
GINKGO_OPT = -isystem $(GINKGO_DIR)/include
GINKGO_LIB_DIR = $(sort $(dir $(wildcard\
$(GINKGO_SEARCH_DIR)/lib*/libginkgo*.a\
@@ -552,6 +562,9 @@ CEED_OPT = -I$(CEED_DIR)/include
CEED_LIB = $(XLINKER)-rpath,$(CEED_DIR)/lib -L$(CEED_DIR)/lib -lceed
# RAJA library configuration
ifeq ($(MFEM_USE_RAJA),YES)
BASE_FLAGS = -std=c++14
endif
RAJA_DIR = @MFEM_DIR@/../raja
RAJA_OPT = -I$(RAJA_DIR)/include
ifdef CUB_DIR
@@ -566,6 +579,9 @@ endif
RAJA_LIB = $(XLINKER)-rpath,$(RAJA_DIR)/lib -L$(RAJA_DIR)/lib -lRAJA $(CAMP_LIB)
# UMPIRE library configuration
ifeq ($(MFEM_USE_UMPIRE),YES)
BASE_FLAGS = -std=c++14
endif
UMPIRE_DIR = @MFEM_DIR@/../umpire
UMPIRE_OPT = -I$(UMPIRE_DIR)/include $(if $(CAMP_DIR), -I$(CAMP_DIR)/include)
UMPIRE_LIB = -L$(UMPIRE_DIR)/lib -lumpire $(CAMP_LIB)
@@ -593,6 +609,9 @@ PARELAG_OPT = -I$(PARELAG_DIR)/src -I$(PARELAG_DIR)/build/src
PARELAG_LIB = -L$(PARELAG_DIR)/build/src -lParELAG
# Tribol library configuration
ifeq ($(MFEM_USE_TRIBOL),YES)
BASE_FLAGS = -std=c++14
endif
AXOM_DIR = @MFEM_DIR@/../axom
TRIBOL_DIR = @MFEM_DIR@/../tribol
TRIBOL_OPT = -I$(TRIBOL_DIR)/include -I$(AXOM_DIR)/include
@@ -615,15 +634,6 @@ ENZYME_VERSION ?= 14
ENZYME_OPT = -fno-experimental-new-pass-manager -Xclang -load -Xclang $(ENZYME_DIR)/ClangEnzyme-$(ENZYME_VERSION).so
ENZYME_LIB = ""
# Google Benchmark, SUNDIALS >= 6.4.0, STRUMPACK, RAJA, UMPIRE, and Tribol require C++14:
ifneq ($(filter YES,$(MFEM_USE_BENCHMARK) $(MFEM_USE_SUNDIALS) $(MFEM_USE_STRUMPACK) $(MFEM_USE_RAJA) $(MFEM_USE_UMPIRE) $(MFEM_USE_TRIBOL)),)
BASE_FLAGS = -std=c++14
endif
# Ginkgo requires C++17:
ifeq ($(MFEM_USE_GINKGO),YES)
BASE_FLAGS = -std=c++17
endif
# If YES, enable some informational messages
VERBOSE = NO
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
// Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
// at the Lawrence Livermore National Laboratory. All Rights reserved. See files
// LICENSE and NOTICE for details. LLNL-CODE-806117.
//
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
// Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
// at the Lawrence Livermore National Laboratory. All Rights reserved. See files
// LICENSE and NOTICE for details. LLNL-CODE-806117.
//
+3 -3
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
@@ -36,8 +36,8 @@ cd $(git rev-parse --show-toplevel)
# copyright check
copyright=true
if [[ "${option}" == "--copyright" || "${option}" == "" ]]; then
if git grep -n "^\(#\|//\).*Copyright.*2010-20\(2[^5]\|[^2].\)" > matches.txt; then
echo "Please update the following files to Copyright (c) 2010-2025:"
if git grep -n "^\(#\|//\).*Copyright.*2010-20\(2[^4]\|[^2].\)" > matches.txt; then
echo "Please update the following files to Copyright (c) 2010-2024:"
cat matches.txt
copyright=false
fi
+2 -3
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
@@ -110,5 +110,4 @@ config-mk:
clean:
rm -f $(CONFIG_HPP) $(CONFIG_MK) sample-runs-build.log
rm -f $(GHV) $(GHV).out $(GMV) $(GMV).out
rm -rf *.dSYM
rm -f $(GHV) $(GHV).out $(GMV) $(GMV).out *.dSYM
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
// Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
// at the Lawrence Livermore National Laboratory. All Rights reserved. See files
// LICENSE and NOTICE for details. LLNL-CODE-806117.
//
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
# Copyright (c) 2010-2024, Lawrence Livermore National Security, LLC. Produced
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
# LICENSE and NOTICE for details. LLNL-CODE-806117.
#
+362
View File
@@ -0,0 +1,362 @@
#include "mfem.hpp"
#include <fstream>
#include <iostream>
// Problem 1 - L-shaped domain with homogeneous dirichlet and inhomogeneous traction
// make elasticity -j && ./elasticity -rs 5 -o 2 -m lshaped.mesh -prob 1
// Problem 2 - Plate with hole domain with homogeneous dirichlet and inhomogeneous traction
// make elasticity -j && ./elasticity -rs 3 -o 2 -m platewhole.mesh -prob 2
// Problem 3 - Plate with hole but homogeneous and inhomogeneous dirichlet
// make elasticity -j && ./elasticity -rs 3 -o 2 -m platewhole.mesh -prob 3
using namespace mfem;
using namespace std;
//----------------------------------------------------------------
// Forcing function: Zero body force.
void ZeroForce(const Vector &x, Vector &f)
{
f.SetSize(x.Size());
f = 0.0;
}
//----------------------------------------------------------------
// Traction function: Apply a constant (nonzero) traction.
// For example, here we apply a constant upward traction.
// (You can adjust the constant vector as needed.)
void ConstantTractionY(const Vector &x, Vector &g)
{
g.SetSize(x.Size());
g = 0.0;
// Let the vertical component be nonzero.
// For a 2D problem, we set g = [0, 1] (traction in the y-direction).
g[1] = 1.0;
}
void ConstantTractionX(const Vector &x, Vector &g)
{
g.SetSize(x.Size());
g = 0.0;
// Let the vertical component be nonzero.
// For a 2D problem, we set g = [0, 1] (traction in the y-direction).
g[0] = 1.0;
}
void ConstantTractionNegX(const Vector &x, Vector &g)
{
g.SetSize(x.Size());
g = 0.0;
// Let the vertical component be nonzero.
// For a 2D problem, we set g = [0, 1] (traction in the y-direction).
g[0] = -1.0;
}
// Unit displacement on x=1 smoothly going to zero at y=0 and y=1
void ConstantDisplacementPlateHoleX1(const Vector &x, Vector &g)
{
g.SetSize(x.Size());
g = 0.0;
double alpha = 10;
double dx1 = std::pow(x[0]-1.0,2.0);
double dx2 = std::pow(x[0]-0.0,2.0);
g[0] = 5.0*std::exp(-alpha*(x[0]-0.5)*(x[0]-0.5))*x[1]*(1.0-x[1]);
g[0] = std::tanh(alpha*(x[0]-0.5))*x[1]*(1.0-x[1]);
}
int main(int argc, char *argv[])
{
// 1. Parse command-line options.
OptionsParser args(argc, argv);
const char *mesh_file = "lshaped.mesh"; // Your L-shaped mesh file.
int order = 2; // Finite element order
int ref_levels = 3; // Number of uniform refinements
bool visualization = true;
int problem = 3;
args.AddOption(&mesh_file, "-m", "--mesh",
"Mesh file to use.");
args.AddOption(&order, "-o", "--order",
"Polynomial degree of mesh finite element space.");
args.AddOption(&ref_levels, "-rs", "--refine-serial",
"Number of times to refine the mesh uniformly in serial.");
args.AddOption(&problem, "-prob", "--problem type"," ");
args.Parse();
if (!args.Good())
{
args.PrintUsage(cout);
return 1;
}
args.PrintOptions(cout);
// 2. Read the mesh.
Mesh *mesh = new Mesh(mesh_file, 1, 1);
int dim = mesh->Dimension();
// 3. Uniform mesh refinements.
for (int l = 0; l < ref_levels; l++)
{
mesh->UniformRefinement();
}
// 4. Define a vector finite element space (each displacement component is in H1).
FiniteElementCollection *fec = new H1_FECollection(order, dim);
FiniteElementSpace *fespace = new FiniteElementSpace(mesh, fec, dim);
// 5. Mark essential (Dirichlet) boundaries.
// Here we assume boundary attribute 1 is for Dirichlet conditions (clamped boundaries).
Array<int> ess_bdr(mesh->bdr_attributes.Max());
ess_bdr = 0;
// ess_bdr[3] = 1;
if (problem == 1)
{
ess_bdr[3] = 1;
}
if (problem == 3)
{
ess_bdr = 1;
ess_bdr[4] = 0.0;
// ess_bdr[4] = 1;
}
Array<int> ess_tdof_list;
fespace->GetEssentialTrueDofs(ess_bdr, ess_tdof_list);
// 6. Define the GridFunction (solution) and initialize it to zero.
GridFunction x(fespace);
x = 0.0;
VectorFunctionCoefficient dbc_coeff(dim, ConstantDisplacementPlateHoleX1);
if (problem == 3)
{
x.ProjectBdrCoefficient(dbc_coeff, ess_bdr);
}
// 7. Set up the right-hand side linear form.
LinearForm *b = new LinearForm(fespace);
// Domain integrator for the body force: here, zero.
VectorFunctionCoefficient f_coeff(dim, ZeroForce);
b->AddDomainIntegrator(new VectorDomainLFIntegrator(f_coeff));
// Neumann boundary: apply a nonzero (constant) traction on attribute 2.
Array<int> neumann_bdr(mesh->bdr_attributes.Max());
neumann_bdr = 0;
if (problem == 1 || problem == 2)
{
neumann_bdr[1] = 1;
}
VectorFunctionCoefficient g_coeff(dim, ConstantTractionX);
b->AddBdrFaceIntegrator(new VectorBoundaryLFIntegrator(g_coeff), neumann_bdr);
Array<int> neumann_bdr_negx(mesh->bdr_attributes.Max());
neumann_bdr_negx = 0;
neumann_bdr_negx[3] = 1;
VectorFunctionCoefficient g_coeff_negx(dim, ConstantTractionNegX);
if (problem == 2)
{
b->AddBdrFaceIntegrator(new VectorBoundaryLFIntegrator(g_coeff_negx), neumann_bdr_negx);
}
b->Assemble();
// 8. Set up the bilinear form corresponding to the linear elasticity operator.
BilinearForm *a = new BilinearForm(fespace);
// Define the material properties.
// For a given Young's modulus E and Poisson's ratio nu:
double E = 1.0; // Young's modulus (you can adjust as needed)
double nu = 0.3; // Poisson's ratio
double mu = E / (2.0 * (1.0 + nu));
double lambda = E * nu / ((1.0 + nu) * (1.0 - 2.0*nu));
ConstantCoefficient lc(lambda);
ConstantCoefficient muc(mu);
// MFEM's ElasticityIntegrator implements:
// a(u,v) = ∫ [λ (div u)(div v) + 2μ ε(u):ε(v)] dx.
a->AddDomainIntegrator(new ElasticityIntegrator(lc, muc));
a->Assemble();
// 9. Form the linear system A X = B, eliminating the Dirichlet DOFs.
SparseMatrix A;
Vector X, Bvec;
a->FormLinearSystem(ess_tdof_list, x, *b, A, X, Bvec);
// 10. Solve the linear system.
// Here we use the Conjugate Gradient (CG) method with a Gauss-Seidel smoother.
GSSmoother M(A);
PCG(A, M, Bvec, X, 1, 1000, 1e-12, 0.0);
// 11. Recover the finite element solution.
a->RecoverFEMSolution(X, *b, x);
// 12. Save the solution for visualization.
{
ofstream sol_ofs("solution.gf");
x.Save(sol_ofs);
}
// Optionally, visualize the solution in GLVis.
if (visualization)
{
osockstream sock(19916, "localhost");
sock << "solution\n";
mesh->Print(sock);
x.Save(sock);
sock.send();
sock << "window_title 'Elasticity: Displacement'\n"
<< "window_geometry "
<< 0 << " " << 0 << " " << 400 << " " << 400 << "\n"
<< "keys jRmclA" << endl;
}
FiniteElementCollection *fec_dc = new L2_FECollection(order-1, dim);
FiniteElementSpace *fespace_dc = new FiniteElementSpace(mesh, fec_dc);
GridFunction stress_gf(fespace_dc);
GridFunction trace_strain(fespace_dc);
FiniteElementCollection *fec_dc2 = new L2_FECollection(0, dim);
FiniteElementSpace *fespace_dc2 = new FiniteElementSpace(mesh, fec_dc2);
GridFunction stress_gf2(fespace_dc2);
stress_gf = 0.0;
// Loop over elements.
for (int i = 0; i < mesh->GetNE(); i++)
{
const FiniteElement *fe = fespace->GetFE(i);
const FiniteElement *fe2 = fespace_dc->GetFE(i);
ElementTransformation *T = mesh->GetElementTransformation(i);
int nd = fe->GetDof();
int nd2 = fe2->GetDof();
int order = fe->GetOrder();
int int_order = 2*order + 3;
const IntegrationRule *ir = &IntRules.Get(fe->GetGeomType(), int_order);
Vector shape(nd2);
Array<int> dofs;
Vector vals;
fespace->GetElementVDofs(i, dofs);
x.GetSubVector(dofs, vals);
DenseMatrix dshape(nd, dim);
Vector elvec(nd2);
elvec = 0.0;
Vector elvec2(nd2);
elvec2 = 0.0;
for (int q = 0; q < ir->GetNPoints(); q++)
{
const IntegrationPoint &ip = ir->IntPoint(q);
T->SetIntPoint(&ip);
double w = ip.weight;
fe->CalcDShape(ip, dshape);
DenseMatrix grad(dim, dim);
grad = 0.0;
for (int a = 0; a < nd; a++)
{
for (int j = 0; j < dim; j++)
{
for (int k = 0; k < dim; k++)
{
// In the vector FE, the a-th node has "dim" components stored consecutively.
// du_j/dr_k
grad(j,k) += vals[a + j*nd] * dshape(a,k);
}
}
}
DenseMatrix Jac(dim);
Jac = T->Jacobian();
DenseMatrix invJac(dim);
invJac = Jac;
invJac.Invert();
DenseMatrix grad_phys(dim, dim);
Mult(grad, invJac, grad_phys);
DenseMatrix strain(dim, dim);
strain = 0.0;
for (int j = 0; j < dim; j++)
{
for (int k = 0; k < dim; k++)
{
strain(j,k) = 0.5*(grad_phys(j,k) + grad_phys(k,j));
}
}
// Compute the stress tensor: σ = λ (tr ε) I + 2 μ ε.
DenseMatrix stress(dim, dim);
double trace = strain(0,0) + strain(1,1);
stress(0,0) = lambda * trace + 2 * mu * strain(0,0);
stress(1,1) = lambda * trace + 2 * mu * strain(1,1);
stress(0,1) = 2 * mu * strain(0,1);
stress(1,0) = stress(0,1);
// Compute the von Mises stress (for plane stress/strain in 2D)
double sigma_vm = sqrt( 0.5*stress(0,0)*stress(0,0)
+ 0.5*stress(1,1)*stress(1,1)
+ 0.5*(stress(0,0)-stress(1,1))*(stress(0,0)-stress(1,1))
+ 3.0*stress(0,1)*stress(0,1) );
// Store the computed stress in the DG GridFunction.
fe2->CalcShape(ip, shape);
elvec.Add(ip.weight*sigma_vm, shape);
elvec2.Add(ip.weight*trace, shape);
}
fespace_dc->GetElementDofs(i, dofs);
stress_gf.AddElementVector(dofs, elvec);
trace_strain.AddElementVector(dofs, elvec2);
stress_gf2(i) = elvec.Sum();
}
ConstantCoefficient zero(0.0);
std::cout << stress_gf2.ComputeL2Error(zero) << " k10l2\n";
// 14. Save the stress field.
{
ofstream stress_ofs("stress.gf");
stress_gf.Save(stress_ofs);
}
// 15. Visualize the displacement solution and the stress field using GLVis.
if (visualization)
{
osockstream sock(19916, "localhost");
sock << "solution\n";
mesh->Print(sock);
stress_gf.Save(sock);
sock.send();
sock << "window_title 'Elasticity: Von Mises Stress'\n"
<< "window_geometry "
<< 470 << " " << 0 << " " << 400 << " " << 400 << "\n"
<< "keys jRmclA" << endl;
}
if (visualization)
{
osockstream sock(19916, "localhost");
sock << "solution\n";
mesh->Print(sock);
stress_gf2.Save(sock);
sock.send();
sock << "window_title 'Elasticity: Von Mises Stress (element-total)'\n"
<< "window_geometry "
<< 940 << " " << 0 << " " << 400 << " " << 400 << "\n"
<< "keys jRmclA" << endl;
}
if (visualization)
{
osockstream sock(19916, "localhost");
sock << "solution\n";
mesh->Print(sock);
trace_strain.Save(sock);
sock.send();
sock << "window_title 'Elasticity: Trace strain'\n"
<< "window_geometry "
<< 470 << " " << 500 << " " << 400 << " " << 400 << "\n"
<< "keys jRmclA" << endl;
}
// 13. Free the allocated memory.
delete a;
delete b;
delete fespace;
delete fec;
delete mesh;
return 0;
}
+3 -8
View File
@@ -163,18 +163,13 @@ int main(int argc, char *argv[])
// 6. Determine the list of true (i.e. conforming) essential boundary dofs.
// In this example, the boundary conditions are defined by marking all
// the external boundary attributes from the mesh as essential (Dirichlet)
// and converting them to a list of true dofs.
// the boundary attributes from the mesh as essential (Dirichlet) and
// converting them to a list of true dofs.
Array<int> ess_tdof_list;
if (mesh.bdr_attributes.Size())
{
Array<int> ess_bdr(mesh.bdr_attributes.Max());
ess_bdr = 0;
// Apply boundary conditions on all external boundaries:
mesh.MarkExternalBoundaries(ess_bdr);
// Boundary conditions can also be applied based on named attributes:
// mesh.MarkNamedBoundaries(set_name, ess_bdr)
ess_bdr = 1;
fespace.GetEssentialTrueDofs(ess_bdr, ess_tdof_list);
}
+1 -5
View File
@@ -192,11 +192,7 @@ int main(int argc, char *argv[])
if (pmesh->bdr_attributes.Size())
{
ess_bdr.SetSize(pmesh->bdr_attributes.Max());
ess_bdr = 0;
// Apply boundary conditions on all external boundaries:
pmesh->MarkExternalBoundaries(ess_bdr);
// Boundary conditions can also be applied based on named attributes:
// pmesh->MarkNamedBoundaries(set_name, ess_bdr)
ess_bdr = 1;
}
ParBilinearForm *a = new ParBilinearForm(fespace);
+1 -1
View File
@@ -59,7 +59,7 @@ private:
void GeneralResidualMonitor::MonitorResidual(int it, real_t norm,
const Vector &r, bool final)
{
if ((print_level == 1 && !final) || (print_level == 3 && (final || it == 0)))
if (print_level == 1 || (print_level == 3 && (final || it == 0)))
{
mfem::out << prefix << " iteration " << setw(2) << it
<< " : ||r|| = " << norm;
+1 -1
View File
@@ -73,7 +73,7 @@ private:
void GeneralResidualMonitor::MonitorResidual(int it, real_t norm,
const Vector &r, bool final)
{
if ((print_level == 1 && !final) || (print_level == 3 && (final || it == 0)))
if (print_level == 1 || (print_level == 3 && (final || it == 0)))
{
mfem::out << prefix << " iteration " << setw(2) << it
<< " : ||r|| = " << norm;

Some files were not shown because too many files have changed in this diff Show More