Medusa
Welcome to the Medusa wiki. To visit the main website, go to http://e6.ijs.si/medusa/.
In Parallel and Distributed Systems Laboratory we are working on a C++ library that is first and foremost focused on tools for solving Partial Differential Equations by meshless methods. The basic idea is to create generic codes for tools that are needed for solving not only PDEs but many other problems, e.g. Moving Least Squares approximation, $k$-d tree, domain generation engines, etc. We call this open source meshless project Medusa: Coordinate Free Meshless Method implementation (MM).
Technical details about code and examples can be found on our documentation page and Gitlab repository.
This wiki site is meant for more relaxed discussions about general principles, possible and already implemented applications, preliminary analyses, etc. Note, that there are many grammatical mistakes, typos, stupid sentences, etc. This wiki is meant for quick information exchange and therefore we do not invest a lot of energy into styling :).
Documentation
- Code on Gitlab
- Installation and building
- Including this library in your project
- Running tests
- Technical documentation
- Coding style
- Wiki editing and backup guide
Building blocks
Medusa is modular coordinate-free parallel implementation of a numerical framework designed, but not limited to, for solving PDEs. In this section we present main modules of the library that can be also used as a standalone tools.
- Positioning of computational nodes
- Relaxation of the nodal distribution
- Refinement of the nodal distribution
- k-d tree and other spatial search structures
- Solving linear system - including over and underdetermined systems
- Weighted Least Squares (WLS)
- Computation of shape functions
- Radial basis function-generated finite differences (RBF-FD)
- Ghost nodes (theory)
- Integrators for time stepping
Examples
In this section we present exact examples. Each of the below solutions can be found also in in the repository under examples. More explanation about the physical background and solution procedure can be found in following sections.
- Philosophy of examples and how to run them
- Poisson's equation
- Heat equation
- Linear elasticity
- Complex-valued problems
- Coupled domains
- Parametric domains – Curved surface with variable density
- Domains modeled with non-uniform rational basis spline's (NURBS)
- Determining the interior of the domain by oversampling the boundary
- Computer-aided design - Importing IGES and STEP files
- Working with 3D surface mesh models
- Operator customization
- Ghost nodes
- Electromagnetic scattering
- Schrödinger equation
- Wave equation
- Cahn-Hilliard equation
- Fluid mechanics
- Solid mechanics
Discussions / Applications
This section is meant for general discussion about the physical background of the examples, the solution procedures, various applications, etc. Note, that code snippets presented in discussion might not reflect the actual state of Medusa.
- Convection Diffusion equation
- H-adaptivity
- Hp-adaptivity
- Solid Mechanics
- Fluid Mechanics
- Computational electromagnetics
- Other applications
Performance analyses
- Execution on Intel® Xeon Phi™ co-processor
- 1D MLSM and FDM comparison
- Execution overheads due to clumsy types::technical report
- Solving sparse systems
- Eigen paralelization
Last changes
- 17:11, 26 August 2024 :: Burgers'_equation
- 14:31, 12 July 2024 :: Customization
Miscellaneous
- FAQ - Frequently asked questions.
- List of wiki contributors
- List of library contributors: See the official website
References
For all pre-prints check https://e6.ijs.si/ParallelAndDistributedSystems/publications/
Related papers
- J. Slak, G. Kosec; Medusa : A C++ library for solving PDEs using strong form mesh-free methods, ACM transactions on mathematical software, vol. 47, 2021 [DOI: 10.1145/3450966]
- R. Trobec, G. Kosec; Parallel scientific computing : theory, algorithms, and applications of mesh based and meshless methods, 2015