SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
serif::discretization::domain::relation::validation Namespace Reference

Classes

struct  RelationsUseRegisteredEntities
 Compile time type to check if a list of relations uses the registered entities. More...
 
struct  RelationsUseRegisteredEntities< DomainIDsT, BoundaryIDsT, lists::RelationList< RelationTs... > >
 Compile time type to check if a list of relations uses the registered entities. This specialization is for the RelationList type, which is a variadic template that takes a list of relation types as template parameters. It checks if all relations in the list use registered entities based on the provided domain and boundary IDs. This will distribute to the various specializations of the singular RelationUsesRegisteredEntities struct while folding at compile time. More...
 
struct  RelationUsesRegisteredEntities
 Compile-time validation to check if a relation uses registered entities based on provided domain and boundary IDs. This struct is specialized for different relation types to determine if they use registered entities. More...
 
struct  RelationUsesRegisteredEntities< DomainBoundary< BoundaryT, DomainTs... >, DomainIDsT, BoundaryIDsT >
 Compile-time validation to check if a relation uses registered entities based on provided domain and boundary IDs. This specialization is for the Relation type DomainBoundary. DomainBoundary requires a boundary and one or more domains, and we enforce that the boundary and all domains are registered. More...
 
struct  RelationUsesRegisteredEntities< FullyConnected< DomainT >, DomainIDsT, BoundaryIDsT >
 Compile-time validation to check if a relation uses registered entities based on provided domain and boundary IDs. This specialization is for the Relation type FullyConnected. Fully connected only requires a single domain so we only enforce that the domain is registered. More...
 
struct  RelationUsesRegisteredEntities< Inscribed< InnerDomainT, OuterDomainT >, DomainIDsT, BoundaryIDsT >
 Compile-time validation to check if a relation uses registered entities based on provided domain and boundary IDs. This specialization is for the Relation type Inscribed. Inscribed requires two domains, an inner and an outer domain, and we enforce that both domains are registered. More...
 
struct  RelationValidationResult
 Struct representing the result of validating a relation in the domain module. It contains information about the validation failure, if any, and optional diagnostics for specific relation types. More...
 

Concepts

concept  HaveValidRelationEntities
 Concept to validate that a set of domain IDs, boundary IDs, and relations are valid. This concept checks if the relations use registered entities based on the provided domain and boundary IDs.
 

Enumerations

enum class  RelationValidationFailure : std::uint8_t {
  None , DomainAbsent , DomainDisconnected , InnerDomainAbsent ,
  OuterDomainAbsent , InnerDomainHasNoBoundary , InnerDomainTouchesMeshBoundary , InnerDomainTouchesUnexpectedDomain ,
  DomainBoundaryAbsent , DomainBoundaryTaggedFaceHasWrongTopology , DomainBoundaryTaggedFaceTouchesUnexpectedDomain , DomainBoundaryExpectedFaceIsUntagged ,
  DomainBoundaryExpectedFaceHasWrongID
}
 Enum representing the types of validation failures that can occur when validating relations in the domain module. More...
 

Enumeration Type Documentation

◆ RelationValidationFailure

Enum representing the types of validation failures that can occur when validating relations in the domain module.

Note
these are split into different categories based on their relation type; however, this is weakly enforced by convention and not the compiler.
Enumerator
None 

No validation failure occurred.

DomainAbsent 

The specified domain is absent in the provided domain ID list.

DomainDisconnected 

The specified domain is disconnected, meaning it does not form a single connected component.

InnerDomainAbsent 

The inner domain is absent in the provided domain ID list.

OuterDomainAbsent 

The outer domain is absent in the provided domain ID list.

InnerDomainHasNoBoundary 

The inner domain has no boundary, which is required for the inscribed relation (the boundary must be shared)

InnerDomainTouchesMeshBoundary 

The inner domain touches the mesh boundary, which is not allowed for the inscribed relation (the inner domain must be fully contained within the outer domain).

InnerDomainTouchesUnexpectedDomain 

The inner domain touches an unexpected domain, which is not allowed for the inscribed relation (the inner domain must be fully contained within the outer domain).

DomainBoundaryAbsent 

The specified domain boundary is absent in the provided boundary ID list.

DomainBoundaryTaggedFaceHasWrongTopology 

The tagged face of the domain boundary has the wrong topology, which is not allowed for the domain boundary relation (the face must have the correct topology).

DomainBoundaryTaggedFaceTouchesUnexpectedDomain 

The tagged face of the domain boundary touches an unexpected domain, which is not allowed for the domain boundary relation (the face must only touch the specified domains).

DomainBoundaryExpectedFaceIsUntagged 

The expected face of the domain boundary is untagged, which is not allowed for the domain boundary relation (the face must be tagged).

DomainBoundaryExpectedFaceHasWrongID 

The expected face of the domain boundary has the wrong ID, which is not allowed for the domain boundary relation (the face must have the correct ID).