Rodin/FormLanguage/Traits.h file

Type traits system for form language objects.

This file defines the Traits template, which provides a uniform interface for querying type information and properties of form language objects. Specialized versions of Traits are defined throughout the library for specific form language types.

Design Pattern

The Traits system follows the trait-based design pattern common in C++ template metaprogramming. Each form language type can specialize the Traits template to expose:

  • Associated types (e.g., scalar type, function space type)
  • Compile-time properties (e.g., space type, dimension)
  • Type transformations

Usage

// Query traits of a form language object
using MyFES = typename Traits<MyFormObject>::FESType;
constexpr auto space = Traits<MyFormObject>::SpaceType;

Namespaces

namespace Rodin
The Rodin library for Shape and Topology Optimization.
namespace Rodin::FormLanguage
Module for writing high level abstract expressions.