Skip to content

EASIFEM

EASIFEM is modern-fortran platform developed to facilitate Expandable And Scalable Infrastructure for Finite Element Methods. It is designed to solve partial differential equations (PDEs) using finite element methods. However, you can also implement finite difference and finite volume methods by using it. You can also plot graphs, generate mesh, and perform linear algebra related stuffs. But the main feature of EASIFEM is to “eases” the efforts to develop scientific programs in FORTRAN. It is meant for researchers, scientists, and engineers using FORTRAN to implement numerical methods for solving the initial-boundary-value problems (IBVPs). EASIFEM is equipped with both low- and high-level datatype and classes for implementing finite element methods.

Following are some features which may interest you.

  • Building, installing, updating, and linking EASIFEM is painless.
  • EASIFEM provides much helpful functionality, such as Mesh-generation, Domain creation, a massive list of shape functions, 1D/2D/3D elements, 1D/2D/3D plotting, file input-output, constitutive material laws, linear solvers, sparse-matrices, full support for performing linear algebra analysis, Fast Fourier Transform, among many other features.
  • One of the strengths of EASIFEM is its comprehensive documentation and command line interface.
  • EASIFEM comes with snippets and automation scripts for vs-code and vim users.
  • Expanding EASIFEM as per your requirement; you can link a new library with EASIFEM or link EASIFEM with your own software library.

Structure of EASIFEM

EASIFEM consists following three hierarchical components:

  • Base libeasifemBase
  • Classes libeasifemClasses
  • Kernels libeasifemKernels

Base

easifemBase (henceforth read as Base) contains a lot of valuable routines and derived types. In Base, we do not use object-oriented programming concepts and mainly use multiple dispatch approach. This approach improves the flexibility and speed of easifemBase. All user-defined datatype are declared in the BaseType module, and all methods are exposed through BaseMethods modules.

:::info Base Currently, easifemBase has interface with BLAS95, Lapack95, Sparsekit, Metis, PlPlot, SuperLU, ARPACK, etc. :::

Classes

easifemClasses (hereafter, read as the Classes) defines high-level derived types such as domain, mesh, fields, linear solvers, etc. Classes are primarily based on object-oriented programming. Most of the functionality of Classes comes from the Base. In other words, most of the computation is deployed to the Base library. This approach improves flexibility at the cost of reducing some speed. :::info Classes Currently, easifemBase has interface with HDF5, Gmsh, PlPlot, GTK4, PETsc, Matplotlib, Python, Lua, etc. In the future, we will add interfaces to many other useful FORTRAN and C libraries. :::

Kernels

easifemKernels (henceforth, read as Kernels) contains physics simulators. For example, we have:

  • Abstract Kernels
  • Elasticity analysis of soils and solids
  • Elastodynamics analysis of soils and solids
  • Elasto-plastic analysis of soils and solids
  • Large deformation with Hyper Elastic material behavior
  • Heat conduction, convection, radiation in soils and solids
  • Darcy-flow in fully saturated and variably saturated soils
  • Darcy-Brinkman flow in saturated soils
  • Solver for convection-diffusion-reaction in single variable
  • Stokes flow
  • Incompressible and Isothermal Navier-Stokes Flow
  • Space-Time Finite element methods

Programming paradigm

EASIFEM manly follows two types of programming paradigm:

  • Object-oriented-programming (OOP)
  • Multi-dispatch programming.

System requirements

Before installing the EASIFEM, please make sure your system is up-to-date and have requirements mentioned here.

External packages

Before installing the EASIFEM, make sure to install the external packages on your system by following the details given here.

Pinned Loading

  1. base base Public

    Expandable And Scalable Infrastructure for Finite Element Methods, EASIFEM, is [Modern Fortran](https://fortran-lang.org) framework for solving partial differential equations (PDEs) using finite el…

    Fortran 8 2

  2. classes classes Public

    Expandable And Scalable Infrastructure for Finite Element Methods, EASIFEM, is [Modern Fortran](https://fortran-lang.org) framework for solving partial differential equations (PDEs) using finite el…

    Fortran 6 1

Repositories

Showing 10 of 23 repositories
  • classes Public

    Expandable And Scalable Infrastructure for Finite Element Methods, EASIFEM, is [Modern Fortran](https://fortran-lang.org) framework for solving partial differential equations (PDEs) using finite element methods. EASIFEM "eases" the efforts to develop scientific programs in Fortran.

    easifem/classes’s past year of commit activity
    Fortran 6 1 70 0 Updated Nov 4, 2024
  • base Public

    Expandable And Scalable Infrastructure for Finite Element Methods, EASIFEM, is [Modern Fortran](https://fortran-lang.org) framework for solving partial differential equations (PDEs) using finite element methods. EASIFEM "eases" the efforts to develop scientific programs in Fortran.

    easifem/base’s past year of commit activity
    Fortran 8 2 67 1 Updated Sep 23, 2024
  • easifem.github.io Public

    Documentation of easifem

    easifem/easifem.github.io’s past year of commit activity
    HTML 1 Apache-2.0 0 9 0 Updated Sep 23, 2024
  • lis Public Forked from anishida/lis

    Lis (Library of Iterative Solvers for linear systems, pronounced [lis]) is a scalable parallel software library for solving linear equations and eigenvalue problems that arise in the numerical solution of partial differential equations using iterative methods.

    easifem/lis’s past year of commit activity
    C 0 40 0 0 Updated Sep 17, 2024
  • config Public

    This repository contains the config files and shell commands for working with easifem platform.

    easifem/config’s past year of commit activity
    Shell 0 MIT 1 0 0 Updated Jul 29, 2024
  • easifemGO Public

    easifem cli written in GO language.

    easifem/easifemGO’s past year of commit activity
    Go 0 0 0 0 Updated Jul 1, 2024
  • easifem-fish-utility Public

    Fish plugin for easifem

    easifem/easifem-fish-utility’s past year of commit activity
    Shell 0 MIT 0 0 0 Updated Jun 18, 2024
  • archlinux-plplot-fortran Public

    PlPlot is a cross-platform software package for creating scientific plots. This repository contains the plplot build for Fortran on archlinux.

    easifem/archlinux-plplot-fortran’s past year of commit activity
    Shell 0 GPL-3.0 0 1 0 Updated May 20, 2024
  • superlu Public Forked from xiaoyeli/superlu

    Supernodal sparse direct solver. https://portal.nersc.gov/project/sparse/superlu/

    easifem/superlu’s past year of commit activity
    C 0 98 0 0 Updated May 10, 2024
  • kdtree2 Public Forked from jmhodges/kdtree2

    A kd-tree implementation in C++ (and Fortran) by Matthew B. Kennel

    easifem/kdtree2’s past year of commit activity
    Fortran 0 41 0 0 Updated Apr 9, 2024

Top languages

Loading…

Most used topics

Loading…