pub trait HyperelasticFiniteElementBlock<C, F, const G: usize, const N: usize>where
    C: Hyperelastic,
    F: HyperelasticFiniteElement<C, G, N>,
    Self: ElasticFiniteElementBlock<C, F, G, N>,{
    // Required method
    fn helmholtz_free_energy(
        &self,
        nodal_coordinates: &NodalCoordinatesBlock,
    ) -> Result<Scalar, FiniteElementBlockError>;
}