Help - FAQ

What is Intrepid?

Intrepid is a package of tools for compatible discretizations of Partial Differential Equations (PDE's). The present release of Intrepid includes the "expert" version of the package for Finite Element discretizations. It targets application developers who seek access to a wider range of finite element basis functions definitions, but want to retain the bulk of their existing code framework. Top

What's significant about the name 'Intrepid'?

Intrepid stands for INteroperable Tools for Rapid dEveloPment of compatIble Discretizations. Top

What can I do with Intrepid?

While this release of Intrepid is intended to serve primarily as a finite element discretization library to be used within an existing code framework, the package can be used to develop stand-alone finite element codes. The intrepid/Example/Drivers directory contains example drivers that show assembly of the linear systems for the Galerkin formulation of the Poisson equation and two compatible least-squares finite element formulations of the div-curl equations. Top

When will the Finite Volume and Finite Difference capabilities of Intrepid be available?

Addition of Finite Volume and Finite Difference capabilities is planned for the Fall of 2010. Top

When will the "user-friendly" interface of Intrepid be available?

Release of the user-friendly interface is planned for the Fall of 2010. Top

What are the known issues with Intrepid?

  1. Potential segmentation fault if getDofOrdinal and getDofTag methods of the Basis class are invoked with invalid arguments.
    • Compiler: g++ (GCC) 3.4.6 20060404 (Red Hat 3.4.6-11)
    • Platform: 32-bit Red Hat Enterprise Linux 4
    • Error type: Runtime
    • Symptom: Segmentation fault (example: executable corresponding to test/Discretization/Basis/HCURL_HEX_I1_FEM/test_01)
    • Description / Analysis: Compiler optimization flags -O2, -O3, and -O4 cause unexpected behavior of the 'at ( size_type n )' method of the STL vector container. This method is used by the Intrepid class Basis, in the file Intrepid_BasisDef.hpp, in getDofOrdinal and getDofTag. When the argument to std::vector::at() is outside of the size range of the calling container, an exception is thrown (which is the CORRECT behavior), followed by an invalid read/write (which is INCORRECT behavior). This behavior is confirmed by valgrind.
    • Fix / Workaround: This issue appears to be specific to the above platform, compiler, and the two Basis methods (getDofOrdinal and getDofTag). Limiting the level of optimization to -O1 is a potential workaround. Also, if the size range of the calling container is not violated in the calls to getDofOrdinal and getDofTag, i.e. if the user verifies that the calling arguments are valid, this error does not occur, and higher-level optimization flags can be used. Top