mfem

VnV Equipped Version of MFEM

https://github.com/vnvlabs/mfem

Science Score: 44.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
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.3%) to scientific vocabulary

Keywords

application
Last synced: 6 months ago · JSON representation ·

Repository

VnV Equipped Version of MFEM

Basic Info
  • Host: GitHub
  • Owner: vnvlabs
  • License: bsd-3-clause
  • Language: C++
  • Default Branch: master
  • Size: 58.4 MB
Statistics
  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Topics
application
Created over 3 years ago · Last pushed over 1 year ago
Metadata Files
Readme Changelog Contributing License Citation

.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:

  • Quartz: Intel bi-socket x86
  • 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 quartz for example resumes to:

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

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: VnV
  • Login: vnvlabs
  • Kind: organization
  • Email: boneill@rnet-tech.com
  • Location: United States of America

Code Related to the VnV Toolkit.

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

GitHub Events

Total
Last Year

Dependencies

vnv/Dockerfile docker
  • ${FROM_IMAGE} latest build
.binder/environment.yml conda
  • pip
  • widgetsnbextension 3.5.1.*
  • xeus-cling 0.13.0.*
  • xwidgets 0.26.0.*