All Projects → trixi-framework → Trixi.jl

trixi-framework / Trixi.jl

Licence: mit
A tree-based numerical simulation framework for hyperbolic PDEs written in Julia

Programming Languages

julia
2034 projects

Labels

Projects that are alternatives of or similar to Trixi.jl

amr
Cornell AMR Semantic Parser (Artzi et al., EMNLP 2015)
Stars: ✭ 23 (-68.06%)
Mutual labels:  amr
linorobot2
Autonomous mobile robots (2WD, 4WD, Mecanum Drive)
Stars: ✭ 97 (+34.72%)
Mutual labels:  amr
Moose
Multiphysics Object Oriented Simulation Environment
Stars: ✭ 652 (+805.56%)
Mutual labels:  amr
foo input amr
amr-nb decoder for foobar2000
Stars: ✭ 15 (-79.17%)
Mutual labels:  amr
MAESTRO
A low Mach number stellar hydrodynamics code
Stars: ✭ 29 (-59.72%)
Mutual labels:  amr
bitpit
Open source library for scientific HPC
Stars: ✭ 80 (+11.11%)
Mutual labels:  amr
ZWAudioRecordTool
集合了MP3和AMR转录,线上正常运行(Recording MP3 and AMR In iOS App)
Stars: ✭ 32 (-55.56%)
Mutual labels:  amr
Neuralamr
Sequence-to-sequence models for AMR parsing and generation
Stars: ✭ 60 (-16.67%)
Mutual labels:  amr
AMPE
Adaptive Mesh Phase-field Evolution
Stars: ✭ 18 (-75%)
Mutual labels:  amr
Libmesh
libMesh github repository
Stars: ✭ 450 (+525%)
Mutual labels:  amr
amr-wind
AMReX-based structured wind solver
Stars: ✭ 46 (-36.11%)
Mutual labels:  amr
asap
A scalable bacterial genome assembly, annotation and analysis pipeline
Stars: ✭ 47 (-34.72%)
Mutual labels:  amr
Libstreaming
A solution for streaming H.264, H.263, AMR, AAC using RTP on Android
Stars: ✭ 3,167 (+4298.61%)
Mutual labels:  amr
MeterLogger
Wireless MeterLogger for Kamstrup heat energy meters and pulse based meters
Stars: ✭ 20 (-72.22%)
Mutual labels:  amr
Mfem
Lightweight, general, scalable C++ library for finite element methods
Stars: ✭ 667 (+826.39%)
Mutual labels:  amr
spring
SPRING is a seq2seq model for Text-to-AMR and AMR-to-Text (AAAI2021).
Stars: ✭ 103 (+43.06%)
Mutual labels:  amr
amrlib
A python library that makes AMR parsing, generation and visualization simple.
Stars: ✭ 107 (+48.61%)
Mutual labels:  amr
Penman
PENMAN notation (e.g. AMR) in Python
Stars: ✭ 63 (-12.5%)
Mutual labels:  amr
Rtpdump
Extract audio file from RTP streams in pcap format
Stars: ✭ 54 (-25%)
Mutual labels:  amr
Ffmpegcommand
FFmpegCommand适用于Android的FFmpeg命令库,实现了对音视频相关的处理,能够快速的处理音视频,大概功能包括:音视频剪切,音视频转码,音视频解码原始数据,音视频编码,视频转图片或gif,视频添加水印,多画面拼接,音频混音,视频亮度和对比度,音频淡入和淡出效果等
Stars: ✭ 394 (+447.22%)
Mutual labels:  amr

Trixi.jl

Docs-stable Docs-dev Build Status Coveralls License: MIT DOI GitHub commits since tagged version

Trixi.jl is a numerical simulation framework for hyperbolic conservation laws written in Julia. A key objective for the framework is to be useful to both scientists and students. Therefore, next to having an extensible design with a fast implementation, Trixi is focused on being easy to use for new or inexperienced users, including the installation and postprocessing procedures. Its features include:

  • Hierarchical quadtree/octree grid with adaptive mesh refinement
  • Native support for 1D, 2D, and 3D simulations
  • High-order accuracy in space in time
  • Nodal discontinuous Galerkin spectral element methods
    • Kinetic energy-preserving and entropy-stable split forms
    • Entropy-stable shock capturing
    • Positivity-preserving limiting
  • Compatible with the SciML ecosystem for ordinary differential equations
  • Native support for differentiable programming
  • Square/cubic domains with periodic and weakly-enforced boundary conditions
  • Multiple governing equations:
    • Compressible Euler equations
    • Magnetohydrodynamics equations
    • Hyperbolic diffusion equations for elliptic problems
    • Lattice-Boltzmann equations (D2Q9 and D3Q27 schemes)
    • Scalar advection
  • Multi-physics simulations
  • Shared-memory parallelization via multithreading
  • Visualization and postprocessing of the results
    • In-situ and a posteriori visualization with Plots.jl
    • Postprocessing with ParaView/VisIt via Trixi2Vtk

Installation

If you have not yet installed Julia, please follow the instructions for your operating system. Trixi works with Julia v1.5.

For users

Trixi and its related tools are registered Julia packages. Hence, you can install Trixi, the visualization tool Trixi2Vtk, OrdinaryDiffEq.jl, and Plots.jl by executing the following commands in the Julia REPL:

julia> import Pkg

julia> Pkg.add("Trixi"); Pkg.add("Trixi2Vtk"); Pkg.add("OrdinaryDiffEq"); Pkg.add("Plots")

You can copy and paste all commands to the REPL including the leading julia> prompts - they will automatically be stripped away by Julia. The package OrdinaryDiffEq.jl provides time integration schemes used by Trixi, while Plots.jl can be used to directly visualize Trixi's results from the REPL.

Note on package versions: If some of the examples for how to use Trixi do not work, verify that you are using a recent Trixi release by comparing the installed Trixi version from

julia> import Pkg; Pkg.update("Trixi"); Pkg.status("Trixi")

to the latest release. If the installed version does not match the current release, please check the Troubleshooting section in the documentation.

The commands above can also be used to update Trixi. A brief list of notable changes to Trixi is available in NEWS.md.

For developers

If you plan on editing Trixi itself, you can download Trixi locally and run it from within the cloned directory:

git clone [email protected]:trixi-framework/Trixi.jl.git
cd Trixi.jl
julia --project=@. -e 'import Pkg; Pkg.instantiate()' # Install Trixi's dependencies
julia -e 'import Pkg; Pkg.add("Trixi2Vtk"); Pkg.add("Plots")' # Install postprocessing tools
julia -e 'import Pkg; Pkg.add("OrdinaryDiffEq")' # Install time integration schemes

If you installed Trixi this way, you always have to start Julia with the --project flag set to your local Trixi clone, e.g.,

julia --project=@.

Further details can be found in the documentation.

Usage

In the Julia REPL, first load the package Trixi

julia> using Trixi

Then start a simulation by executing

julia> trixi_include(default_example())

To visualize the results, load the package Plots

julia> using Plots

and generate a heatmap plot of the results with

julia> plot(sol) # No trailing semicolon, otherwise no plot is shown

This will open a new window with a 2D visualization of the final solution:

The method trixi_include(...) expects a single string argument with the path to a Trixi elixir, i.e., a text file containing Julia code necessary to set up and run a simulation. To quickly see Trixi in action, default_example() returns the path to an example elixir with a short, two-dimensional problem setup. A list of all example elixirs packaged with Trixi can be obtained by running get_examples(). Alternatively, you can also browse the examples/ subdirectory. If you want to modify one of the elixirs to set up your own simulation, download it to your machine, edit the configuration, and pass the file path to trixi_include(...).

Note on performance: Julia uses just-in-time compilation to transform its source code to native, optimized machine code at the time of execution and caches the compiled methods for further use. That means that the first execution of a Julia method is typically slow, with subsequent runs being much faster. For instance, in the example above the first execution of trixi_include takes about 20 seconds, while subsequent runs require less than 60 milliseconds.

Documentation

Additional documentation is available that contains more information on how to modify/extend Trixi's implementation, how to visualize output files etc. It also includes a section on our preferred development workflow and some tips for using Git. The latest documentation can be accessed either online or under docs/src.

Referencing

If you use Trixi in your own research or write a paper using results obtained with the help of Trixi, please cite the following paper:

@online{schlottkelakemper2020purely,
  title={A purely hyperbolic discontinuous {G}alerkin approach for
         self-gravitating gas dynamics},
  author={Schlottke-Lakemper, Michael and Winters, Andrew R and
          Ranocha, Hendrik and Gassner, Gregor J},
  year={2020},
  month={08},
  eprint={2008.10593},
  eprinttype={arXiv},
  eprintclass={math.NA}
}

In addition, you can also refer to Trixi directly as

@misc{schlottkelakemper2020trixi,
  title={{T}rixi.jl: A tree-based numerical simulation framework
         for hyperbolic {PDE}s written in {J}ulia},
  author={Schlottke-Lakemper, Michael and Gassner, Gregor J and
          Ranocha, Hendrik and Winters, Andrew R},
  year={2020},
  month={08},
  howpublished={\url{https://github.com/trixi-framework/Trixi.jl}},
  doi={10.5281/zenodo.3996439}
}

Authors

Trixi was initiated by Michael Schlottke-Lakemper and Gregor Gassner (both University of Cologne, Germany). Together with Hendrik Ranocha (University of Münster, Germany) and Andrew Winters (Linköping University, Sweden), they are the principal developers of Trixi. The full list of contributors can be found in AUTHORS.md.

License and contributing

Trixi is licensed under the MIT license (see LICENSE.md). Since Trixi is an open-source project, we are very happy to accept contributions from the community. Please refer to CONTRIBUTING.md for more details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].