# Fortran_cubatures and fortran_shapefuncs: FE quadrature and shape functions of any order

> Source: <https://fortran-lang.discourse.group/t/fortran-cubatures-and-fortran-shapefuncs-fe-quadrature-and-shape-functions-of-any-order/11174#post_1>
> Published: 2026-10-14 14:59:17+00:00

Greetings,

I’d like to share two companion fpm packages for writing finite element codes:

```
use cubatures
use shapefuncs
type(cubature)  :: q
type(shapefunc) :: s

q = cubature(CUB_HEX, 4)                     ! integration points
s = shapefunc(q, 2)                          ! 27-node hexahedron at those points
print *, s%nnodes, sum(s%func(:,1))          ! 27  1.0
s = shapefunc(q, 2, family=SHP_SERENDIPITY)  ! 20 nodes
```

**Packages’ contents**

As far as I could find, nothing else in Fortran covers this: stdlib and quadpack are one-dimensional, triasymq is FORTRAN 77 without line or wedge rules, and solvers like Elmer keep their shape functions internal. Corrections are welcome if I missed something.

**How they were made**

I originally wrote these modules for use in `FEAP` for my research. For this release, I used Claude Code extensively to generalize both modules to arbitrary element order, add serendipity elements, expand the tests, and polish them for GitHub release. I’ve started verifying the packages with an FE modal analysis project, also on my page. The code hasn’t been independently reviewed, so I’d especially welcome eyes on the higher order elements.

Each repo also has an AGENTS.md with instructions for coding agents working on the package, and an llms.txt with the whole API in one plain-text file (it’s also the source of the user manual).

**Install** (shapefuncs pulls in cubatures):

```
[dependencies]
fortran_shapefuncs = { git = "https://github.com/willklausler/fortran_shapefuncs", tag = "v0.2.0" }
```

Docs: [cubatures](https://willklausler.github.io/fortran_cubatures/) · [shapefuncs](https://willklausler.github.io/fortran_shapefuncs/)

DOI: [10.5281/zenodo.23300827](https://doi.org/10.5281/zenodo.23300827) · [10.5281/zenodo.23301496](https://doi.org/10.5281/zenodo.23301496)

**Question:** would hierarchical bases, or node numberings that match Gmsh or VTK, be useful to you?
