mfem

Lightweight, general, scalable C++ library for finite element methods

https://github.com/mfem/mfem

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    118 of 219 committers (53.9%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.6%) to scientific vocabulary

Keywords

amr computational-science fem finite-elements high-order high-performance-computing hpc math-physics parallel-computing radiuss scientific-computing

Keywords from Contributors

hpsf build-tools spack llnl app-infrastructure exascale-computing ceed ecp mpi parallel
Last synced: 4 months ago · JSON representation ·

Repository

Lightweight, general, scalable C++ library for finite element methods

Basic Info
  • Host: GitHub
  • Owner: mfem
  • License: bsd-3-clause
  • Language: C++
  • Default Branch: master
  • Homepage: http://mfem.org
  • Size: 271 MB
Statistics
  • Stars: 1,957
  • Watchers: 130
  • Forks: 552
  • Open Issues: 300
  • Releases: 14
Topics
amr computational-science fem finite-elements high-order high-performance-computing hpc math-physics parallel-computing radiuss scientific-computing
Created over 10 years ago · Last pushed 4 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation Notice

.gitlab/README.md

                Finite Element Discretization Library
                               __
                   _ __ ___   / _|  ___  _ __ ___
                  | '_ ` _ \ | |_  / _ \| '_ ` _ \
                  | | | | | ||  _||  __/| | | | | |
                  |_| |_| |_||_|   \___||_| |_| |_|

                           https://mfem.org

This directory contains most of the GitLab CI configuration. MFEM runs both PR and nightly testing on GitLab.

Structure

Top level

The root configuration file is .gitlab-ci.yml at the root of MFEM repo. This file only defines one stage, in which we trigger several sub-pipelines.

We use sub-pipelines to isolate the test for one combination of machine and test type.

Machines typically include:

  • Dane: Intel Sapphire Rapids
  • Lassen: Power9 + Nvidia GPU
  • Corona: AMD GPU

Test types include:

  • Build and test: Spack driven build of dependencies, mfem build, mfem test
  • Baseline: Script driven build of dependencies, thorough testing

⚠️ The sub-pipeline design allows to add a new machine or a new test type without altering the scheduling, execution and displaying of the others.

Sub-pipelines

Each file is this directory is the root configuration file for one sub-pipeline. The naming reflects the corresponding couple (machine, test_type).

Those files define the stages and the jobs for the sub-pipeline. They also contain any configuration that cannot be shared. For the most part though, the configuration is shared and is placed in .gitlab/configs.

We try to keep scripts out of the CI config and share them among similar jobs. They are gathered in .gitlab/scripts.

Scripts

Scripts specific to the CI only are in .gitlab/scripts. It is best practice to keep scripts outside the CI configuration (no bash scripts embedded in a yaml file) because it helps with readability, maintenance and also with transition to another CI system.

⚠️ Most of the scripts there are driven by environment variables and do not have a usage function. This should be improved.

More testing

Adding a new target to a buildandtest pipeline

build_and_test pipelines rely on Spack to install dependencies. Spack is driven by Uberenv which helps freezing Spack configuration: the goal being to point to specific commit in Spack and isolate its configuration so that it is not influenced by the user environment. More documentation about this can be found in tests/gitlab.

In the end, the MFEM target for which to build the dependencies is expressed with a spack spec of MFEM, within the limits permitted by the MFEM spack package.

In any build-and-test sub-pipeline a job basically consists in defining the spack spec to use. Adding a job on Dane for example resumes to:

yaml <job_name>: variables: SPEC: "<spack_spec>" extends: .build_and_test_on_dane

The remaining and non trivial work is to make sure this spec is working. To test a spec before adding it, or reproduce a CI configuration, please refer to tests/gitlab/reproduce-ci-jobs-interactively.md.

⚠️ It is assumed that the spack spec applies to mfem@develop. That's why in the CI all the specs start with the compiler or the variants to apply to mfem. The mechanism still works with a full spec.

Owner

  • Name: MFEM
  • Login: mfem
  • Kind: organization
  • Location: Lawrence Livermore National Laboratory

a lightweight, general, scalable C++ library for finite element methods

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use MFEM, please cite it as follows."
authors:
- family-names: "MFEM Team"
title: "MFEM: Modular Finite Element Methods [Software]"
doi: 10.11578/dc.20171025.1248
url: "https://mfem.org"
preferred-citation:
  type: article
  authors:
  - family-names: "Anderson"
    given-names: "Robert"
    orcid: "https://orcid.org/0000-0002-3508-9944"
  - family-names: "Andrej"
    given-names: "Julian"
    orcid: "https://orcid.org/0000-0001-7661-4840"
  - family-names: "Barker"
    given-names: "Andrew"
    orcid: "https://orcid.org/0000-0003-3572-911X"
  - family-names: "Bramwell"
    given-names: "Jamie"
  - family-names: "Camier"
    given-names: "Jean-Sylvain"
    orcid: "https://orcid.org/0000-0003-2421-1999"
  - family-names: "Cerveny"
    given-names: "Jakub"
    orcid: "https://orcid.org/0000-0003-4231-2531"
  - family-names: "Dobrev"
    given-names: "Veselin"
    orcid: "https://orcid.org/0000-0003-1793-5622"
  - family-names: "Dudouit"
    given-names: "Yohann"
    orcid: "https://orcid.org/0000-0001-5831-561X"
  - family-names: "Fisher"
    given-names: "Aaron"
  - family-names: "Kolev"
    given-names: "Tzanio"
    orcid: "https://orcid.org/0000-0002-2810-3090"
  - family-names: "Pazner"
    given-names: "Will"
    orcid: "https://orcid.org/0000-0003-4885-2934"
  - family-names: "Stowell"
    given-names: "Mark"
    orcid: "https://orcid.org/0000-0002-5389-7435"
  - family-names: "Tomov"
    given-names: "Vladimir"
    orcid: "https://orcid.org/0000-0002-1846-6816"
  - family-names: "Akkerman"
    given-names: "Ido"
    orcid: "https://orcid.org/0000-0002-5937-0300"
  - family-names: "Dahm"
    given-names: "Johann"
    orcid: "https://orcid.org/0000-0001-9657-3564"
  - family-names: "Medina"
    given-names: "David"
  - family-names: "Zampini"
    given-names: "Stefano"
    orcid: "https://orcid.org/0000-0002-0435-0433"
  doi: "10.1016/j.camwa.2020.06.009"
  journal: "Computers \\& Mathematics with Applications"
  month: 1
  start: 42 # First page number
  end: 74 # Last page number
  title: "MFEM: A Modular Finite Element Methods Library"
  volume: 81
  year: 2021

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 18,562
  • Total Committers: 219
  • Avg Commits per committer: 84.758
  • Development Distribution Score (DDS): 0.908
Past Year
  • Commits: 1,581
  • Committers: 57
  • Avg Commits per committer: 27.737
  • Development Distribution Score (DDS): 0.814
Top Committers
Name Email Commits
Stowell, Mark L s****1@l****v 1,714
Will Pazner w****p@g****m 1,695
camierjs c****1@l****v 1,664
Yohann Dudouit d****1@l****v 1,222
Veselin Dobrev d****v@l****v 1,203
Tzanio t****o@l****v 1,184
Ketan Mittal k****l@g****m 751
Vladimir Z Tomov t****2@l****v 635
Jakub Červený c****1@l****v 614
Dylan Copeland d****d@g****m 554
Ido Akkerman I****n@t****l 479
Arturo Vargas v****5@l****v 435
Adrien M. Bernede b****1@l****v 428
Socratis Petrides p****1@l****v 412
Andrew T. Barker b****9@l****v 389
Julian Andrej a****1@l****v 381
Jan Nikl n****1@l****v 287
Stefano Zampini s****i@g****m 197
Sebastian Grimberg s****g@a****m 188
blaz b****v@g****m 178
JacobLotz j****z@g****m 152
Hugh Carson h****s@a****m 148
Daniel Drzisga d****1@l****v 137
chakshinglee c****e@g****m 134
Andrew Ho h****7@l****v 133
Tom Stitt s****4@l****v 131
stefanhenneking s****g@g****m 130
Brendan Keith b****h@b****u 121
Aaron Fisher f****7@l****v 113
Christopher vogl v****2@l****v 108
and 189 more...

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 644
  • Total pull requests: 921
  • Average time to close issues: 3 months
  • Average time to close pull requests: 3 months
  • Total issue authors: 249
  • Total pull request authors: 117
  • Average comments per issue: 4.04
  • Average comments per pull request: 4.86
  • Merged pull requests: 480
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 189
  • Pull requests: 388
  • Average time to close issues: 26 days
  • Average time to close pull requests: 21 days
  • Issue authors: 99
  • Pull request authors: 60
  • Average comments per issue: 2.71
  • Average comments per pull request: 3.23
  • Merged pull requests: 169
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • Wayne901 (41)
  • v-dobrev (19)
  • denislachapelle (18)
  • sungho91 (16)
  • adam-sim-dev (16)
  • ryanblack129 (14)
  • AIBSCT80 (13)
  • hughcars (11)
  • victor-decaria-nnl (10)
  • lmolin3 (10)
  • cglwdm (10)
  • termi-official (9)
  • Heinrich-BR (9)
  • mlstowell (8)
  • karthichockalingam (7)
Pull Request Authors
  • pazner (111)
  • v-dobrev (68)
  • najlkin (45)
  • kmittal2 (44)
  • sebastiangrimberg (43)
  • helloworld922 (35)
  • mlstowell (35)
  • adam-sim-dev (29)
  • hughcars (28)
  • dylan-copeland (27)
  • tomstitt (24)
  • jandrej (24)
  • vladotomov (24)
  • victor-decaria-nnl (23)
  • tzanio (21)
Top Labels
Issue Labels
fem (151) stale (132) question (117) usage (97) mesh (84) bug (65) building (60) examples & miniapps (52) enhancement (42) linalg (39) WIP (34) hpc (27) amr (20) GPU (19) documentation (16) todo (14) libraries (13) cmake (9) python (9) general (8) minor (8) testing (5) visualization (5) Windows (5) low-priority (4) PETSc (4) in-next (3) spam (3) in-review (3) low-impact (3)
Pull Request Labels
in-review (598) in-next (471) bug (192) enhancement (156) fem (134) minor (130) GPU (126) mesh (113) WIP (89) examples & miniapps (79) linalg (65) ready-for-review (63) building (54) TMOP (33) amr (28) CI (26) low-impact (25) testing (25) documentation (22) general (21) cmake (21) stale (17) visualization (16) high-priority (16) request-for-comments (15) libraries (14) PETSc (11) Windows (9) hpc (9) github (7)

Packages

  • Total packages: 2
  • Total downloads: unknown
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 11
proxy.golang.org: github.com/mfem/mfem
  • Versions: 7
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 6.5%
Average: 6.7%
Dependent repos count: 6.9%
Last synced: 4 months ago
conda-forge.org: mfem

MFEM is a modular parallel C++ library for finite element methods. Its goal is to enable high-performance scalable finite element discretization research and application development on a wide variety of platforms, ranging from laptops to supercomputers.

  • Homepage: https://mfem.org/
  • License: BSD-3-Clause
  • Latest release: 4.5
    published about 3 years ago
  • Versions: 4
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Forks count: 7.8%
Stargazers count: 11.1%
Average: 26.0%
Dependent repos count: 34.0%
Dependent packages count: 51.2%
Last synced: 4 months ago

Dependencies

.github/workflows/builds-and-tests.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • mfem/github-actions/build-hypre v2.2 composite
  • mfem/github-actions/build-metis v2.2 composite
  • mfem/github-actions/build-mfem v2.2 composite
  • mfem/github-actions/upload-coverage v2.2 composite
  • mpi4py/setup-mpi v1.1.2 composite
  • styfle/cancel-workflow-action 0.11.0 composite
.github/workflows/codeql-analysis.yml actions
  • actions/checkout v3 composite
  • github/codeql-action/analyze v2 composite
  • github/codeql-action/autobuild v2 composite
  • github/codeql-action/init v2 composite
.github/workflows/mfem-analysis.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • mfem/github-actions/build-hypre v2.2 composite
  • mfem/github-actions/build-metis v2.2 composite
  • mfem/github-actions/build-mfem v2.2 composite
  • styfle/cancel-workflow-action 0.11.0 composite
.github/workflows/repo-check.yml actions
  • actions/checkout v3 composite
  • styfle/cancel-workflow-action 0.11.0 composite
config/docker/Dockerfile docker
  • ghcr.io/mfem/mfem-ubuntu-base latest build
  • ubuntu 22.04 build
.github/workflows/mfem-sanitizer.yml actions
  • actions/checkout v3 composite
  • mfem/github-actions/build-mfem v2.4 composite
  • styfle/cancel-workflow-action 0.11.0 composite
config/vcpkg/ports/metis-mfem/vcpkg.json vcpkg
.github/workflows/build-container.yml actions
  • actions/checkout v3 composite
  • docker/login-action v2 composite
  • easimon/maximize-build-space v8 composite
.binder/environment.yml pypi
  • glvis ==0.3.2