SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
forms.hpp File Reference

This file defines the forms used in the discretization framework, including mass, divergence, source, force, boundary flux, and projection forms. More...

#include <concepts>
#include <type_traits>
#include "serif/discretization/blocks/concepts.hpp"
#include "serif/discretization/forms/operands.hpp"
#include "serif/utils/types/type_list.hpp"
#include "serif/meta/names.hpp"
Include dependency graph for forms.hpp:
This graph shows which files directly or indirectly include this file:

Classes

struct  serif::discretization::forms::form
 The form struct is a tag type that is used to identify a form in the discretization. It is used to group together forms that belong to the same mathematical operation. Each form should have a unique name and a list of operand types that belong to it. More...
 
struct  serif::discretization::forms::mass< TrialT, TestT >
 The mass form represents the mass matrix operation in the discretization framework. It takes a trial term and a test term as template parameters and defines the operand types for the mass operation. More...
 
struct  serif::discretization::forms::divergence< TrialT, TestT >
 The divergence form represents the divergence operation in the discretization framework. It takes a trial term and a test term as template parameters and defines the operand types for the divergence operation. More...
 
struct  serif::discretization::forms::source< TrialT, TestT >
 The source form represents the source term in the discretization framework. It takes a trial term and a test term as template parameters and defines the operand types for the source operation. More...
 
struct  serif::discretization::forms::force< TrialT, TestT >
 The force form represents the force term in the discretization framework. It takes a trial term and a test term as template parameters and defines the operand types for the force operation. More...
 
struct  serif::discretization::forms::boundary_flux< TrialT, TestT >
 The boundary_flux form represents the boundary flux operation in the discretization framework. It takes a trial term and a test term as template parameters and defines the operand types for the boundary flux operation. More...
 
struct  serif::discretization::forms::projection< TrialT, TestT >
 The projection form represents the projection operation in the discretization framework. It takes a trial term and a test term as template parameters and defines the operand types for the projection operation. More...
 

Namespaces

namespace  serif
 
namespace  serif::discretization
 
namespace  serif::discretization::forms
 

Detailed Description

This file defines the forms used in the discretization framework, including mass, divergence, source, force, boundary flux, and projection forms.

Author
Emily M. Boudreaux
Note
If you are a developer tasked with the likely horrid task of adding some new equation that cannot be represented within the current framework that SERiF provides, this should probably be your first stop. This file essentially defines the mathematical operations that SERiF can perform. As you can see below none of these forms are particularly complex, and they certainly do not actually describe how to perform these operations. Rather, these form the base of a chain of compile-time probability that SERiF knows how to do something. Effectively this file is a contract with the rest of the code that says "If someone asks for the divergence of a trial field against some test field that is okay because I have claimed in this file that I know how to do that". The actual implementation lives elsewhere.
Todo
Come back and fill in more information about elsewhere. If you are the developer from above and you are reading this todo, then I am, and I mean this truly, very sorry....