Giter Site home page Giter Site logo

dschwen / apollo Goto Github PK

View Code? Open in Web Editor NEW

This project forked from aurora-multiphysics/apollo

0.0 1.0 0.0 67.59 MB

Enabling 3D electromagnetics simulation in MOOSE, using the MFEM FE library.

License: GNU Lesser General Public License v2.1

Shell 1.72% C++ 21.22% Python 0.55% C 51.95% Assembly 4.11% Makefile 1.90% Dockerfile 0.70% SWIG 17.86%

apollo's Introduction

Apollo

Apollo is a MOOSE-based application created for the scalable solution of finite element electromagnetics problems using the MFEM-based library Hephaestus, as part of the Aurora multiphysics package.

Apollo provides a MOOSE interface to the Hephaestus electromagnetic solvers and formulations, and allows MFEM based finite element problems to be customised and launched from the MOOSE user interface. This enables access to electromagnetic formulations relying on use of finite elements that are conformal to underlying electromagnetic fields, that are well supported in MFEM, but which have less support in MOOSE's native libMesh finite element library.

Apollo facilitates coupling between the extensive range of existing MOOSE physics modules and derived electromagnetic variables such as heat sources from Ohmic heating, allowing the simulation of systems such as induction heaters.

Apollo is still under active development and is being updated frequently.

Getting Started

Docker images of Apollo for Ubuntu with all dependencies are built weekly and uploaded to DockerHub, and can be downloaded via

docker pull alexanderianblair/apollo:master

Once downloaded, the image can be run in interactive mode with the command

docker run -it alexanderianblair/apollo:master

Additional information and options for using Docker can be found at this tutorial on the Docker website.

Alternatively, up-to-date images of only the current dependencies for Apollo can be downloaded from

docker pull alexanderianblair/apollo-deps:master

for those who wish to build Apollo themselves.

Dockerfiles used to build these images can be found in the apollo/docker directory.

Building Software and Tests

After downloading Apollo from this repository, first update the Hephaestus git submodule with

git submodule update --init --recursive

This step is not needed if using the supplied alexanderianblair/apollo container. After updating, build the Hephaestus library with

cd /opt/apollo/contrib/hephaestus/
mkdir build
cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DMFEM_DIR=/opt/mfem/build ..
ninja

Apollo can then be built with the following commands from the top level apollo directory in either of the above containers:

make -j4 
make test -j4

Running make test after Apollo is built will run the entire set of tests found in apollo/test. Running a specific test (or tests) is possible by using the apollo/run_tests python script and using the --re command line argument to pass in a regular expression satisfied by the names of the tests you wish to run; for example:

/opt/apollo/run_tests --re=CoupledFONodalMFEMVar

Electromagnetic Models

Apollo currently provides access to a range of electromagnetic formulations in MOOSE, for use in different regimes:

  • Definite curl-curl formulations in the time domain for solving low frequency problems using H(Curl) conforming FEs - AFormulation, HFormulation, EFormulation.
  • Mixed formulations in the time domain using H(Curl) and H1 conforming FEs for the representation of vector and scalar potentials respectively - AVFormulation.
  • Indefinite complex Maxwell problem in the frequency domain using H(Curl) conforming FEs (currently requires use of direct solvers, limiting scalability) - ComplexEFormulation and ComplexAFormulation.

Custom MFEM-based formulations and weak forms can also be developed based on CustomFormulation from Apollo.

More information on the available formulations can be found at https://aurora-multiphysics.github.io/apollo/

apollo's People

Contributors

alexanderianblair avatar thebellis avatar nmnobre avatar edwardpalmer99 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.