The Finite-Element Method (FEM) is a computationally method to
    solve boundary value problems over an unstructured mesh.  FEM is
    particularly well suited for modeling domains of arbitrary shape, and
    efficiently modeling small features in large computational domains.

    Both 2D and 3D FEM codes can be downloaded below.  Please see
    the requirements at the bottom of this page, before downloading.

    Please also see the section below on citing these codes.  Thanks.
Counter

    jFEM (2D/3D):

    In 2D, the Helmholtz equation equation is solved for the magnetic field,
    from which the electric field is calculated. In 3D, the vector wave
    equation is solved for the electric or magnetic field directly.

    - (2D) Triangular elements, with first order nodal basis functions
    - (3D) Tetrahedral elements, with 0, 1st, or 2nd order H0 curl
    interpolatory vector basis functions (constructed from Whitney edge
    elements) or H1 curl 1st order vector basis functions
    - Sommerfeld radiation condition imposed on exterior of computational
    domains (1st order) to model open-region scattering problems
    - (3D) Truncation of domains using a dielectric material
    - Absorption, scattering, and extinction cross sections
    - Field intensity profiles
    - Sparse LU decomposition (PARDISO from Intel MKL) used to solve
    matrix equations


    2D Finite element simulation of
    coupled infinite cylinders,
    separated by 1 nm. |E|^2 is shown.
    The mesh used to calculate the
    above result, generated using
    NETGEN (external link).

    Requirements:

    - jScience library (v1.1 will only 2D work for jFEM3D -- for jFEM2D
    use v1.0)
    - Intel Math Kernel Library (MKL)
        - Non-Commecial Download: Intel Non-Commercial Software
    - Mesh generation program (see Recommendations below)

    Recommendations:

    - NETGEN mesh generator: www.hpfem.jku.at/netgen/
The Computational Physicist

    Citing:

    The codes provided on this site are distributed open source under the
    GPL. If these codes are used to obtain useful results, please acknowledge
    them with reference to their name and link to where they were obtained.
    Also, if this (or associated) site(s) are useful, please provide a link to it.
    These requests are not required, but are greatly appreciated.
ANNOUNCEMENT: jFEM and parts of jScience have
been rewritten from scratch, following coding standards
and utilizing C++
11 functionalities. jFEM is also much
faster, and has been written to be user-friendly. These
codes will be distributed elsewhere, TBD.