pub trait HyperelasticFiniteElement<C, const G: usize, const N: usize>where
    C: Hyperelastic,
    Self: ElasticFiniteElement<C, G, N>,{
    // Required method
    fn helmholtz_free_energy(
        &self,
        nodal_coordinates: &CurrentCoordinates<D>,
    ) -> Result<Scalar, FiniteElementError>;
}