Code Monkey home page Code Monkey logo

yafel's Introduction

YAFEL

Linux, OSX: Build Status

Yet Another Finite Element Library

YAFEL is a general-purpose finite element library written entirely in C++14 (c++17 necessary if using task scheduler). It is being developed primarily as a learning exercise and research code. Since this library is primarily for personal use, features are added as the need for them arises. If you have any good ideas for something to add, please get in contact with me to discuss them.

A quick and dirty list of features that I currently (or plan to) support:

  • Eigen3 for linear algebra data structures
  • ViennaCL for GPU-accelerated iterative linear system solvers
  • Mixed element topologies (eg: triangles + quads)
  • Arbitrary-order interpolation
  • Multiple dofs per node
  • Continuous-galerkin DoFManager
  • (in progress) Discontinuous-galerkin DoFManager
  • ASCII Output to XML-based VTU files (most simply supports single-frame data)
  • HDF5 + XDMF Output for paraview (supports time-dependent data) (feature-poor, but working)
  • Mesh Import from Gmsh
  • (future) Mesh creation for rectilinear meshes
  • (future) Mesh creation for transfinite interpolation meshes, with boundary specification with Lambda

I'd like to give credit where it's due: this library was originally inspired by the Deal.II library (https://github.com/dealii/dealii), which is maintained by Professor Wolfgang Bangerth at Colorado State University (formerly Texas A&M). I had the privilege of using his library in a class, and it inspired me to really get my hands dirty learning what goes on in these codes.

Compilation and installation

(Currently in flux. Requires some reasonably recent version of cmake.)

The library and applications should be compiled using CMake. The easiest way to incorporate new applications is to create them in a subdirectory inside the "apps" folder. Add your directory/executable to the apps/CMakeLists.txt file, and link against the "yafel" target. Other libraries requiring linking (HDF5) are added automatically by CMake, if available.

Compilation is periodically tested using GCC (5.4, 6.1) and Clang (3.8, 3.9, 4.0).

At the time of writing, the library is under rapid-enough development that it is not worth installing into a system-wide directory (eg, /usr/local/).

Warning

This library is currently being re-written, and since it has no active users (to my knowledge) the re-work is happening on the master branch. Feel free to check out a previous version if you need something that actually works...

yafel's People

Watchers

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