BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
belfem::mesh::PeriodicityFactory Class Reference

Creates a Periodicity object by matching nodes on two periodic boundary planes. More...

#include <cl_Mesh_PeriodicityFactory.hpp>

Public Member Functions

 PeriodicityFactory (Mesh *aMesh, ProtoMesh *aProtoMesh=nullptr)
 ~PeriodicityFactory ()
void set_master_plane (const Vector< id_t > &aPointIDs)
void set_slave_plane (const Vector< id_t > &aPointIDs)
void set_master_plane (Cell< Node * > &aNodes)
void set_slave_plane (Cell< Node * > &aNodes)
void set_master_plane (const id_t A, const id_t B, const id_t C)
 Define the master plane from three .geo Point IDs.
void set_slave_plane (const id_t A, const id_t B, const id_t C)
 Define the slave plane from three .geo Point IDs.
Periodicitycreate_periodicity ()
proto::PeriodicityDatato_proto (Periodicity *aPeriodicity)
Periodicityfrom_proto (proto::PeriodicityData *aPeriodicity, const bool aCrosslinkEntities)
void update_periodicity (Periodicity *aPeriodicity)
 Match nodes, then derive edge and face pairs.
void tag_periodic_sidesets ()

Detailed Description

Creates a Periodicity object by matching nodes on two periodic boundary planes.

The planes are defined by three .geo Point IDs each. Nodes on sidesets lying on each plane are detected automatically. Master-to-slave correspondence is established by projecting both sides into a shared in-plane coordinate system: facets are paired through their centroids with a 2D k-d tree nearest-neighbor search, and nodes are then matched within each facet pair.

Constructor & Destructor Documentation

◆ PeriodicityFactory()

belfem::mesh::PeriodicityFactory::PeriodicityFactory ( Mesh * aMesh,
ProtoMesh * aProtoMesh = nullptr )

◆ ~PeriodicityFactory()

belfem::mesh::PeriodicityFactory::~PeriodicityFactory ( )

Member Function Documentation

◆ create_periodicity()

Periodicity * belfem::mesh::PeriodicityFactory::create_periodicity ( )

◆ from_proto()

Periodicity * belfem::mesh::PeriodicityFactory::from_proto ( proto::PeriodicityData * aPeriodicity,
const bool aCrosslinkEntities )

◆ set_master_plane() [1/3]

void belfem::mesh::PeriodicityFactory::set_master_plane ( Cell< Node * > & aNodes)

◆ set_master_plane() [2/3]

void belfem::mesh::PeriodicityFactory::set_master_plane ( const id_t A,
const id_t B,
const id_t C )

Define the master plane from three .geo Point IDs.

Points A, B, C must not be collinear.

◆ set_master_plane() [3/3]

void belfem::mesh::PeriodicityFactory::set_master_plane ( const Vector< id_t > & aPointIDs)

◆ set_slave_plane() [1/3]

void belfem::mesh::PeriodicityFactory::set_slave_plane ( Cell< Node * > & aNodes)

◆ set_slave_plane() [2/3]

void belfem::mesh::PeriodicityFactory::set_slave_plane ( const id_t A,
const id_t B,
const id_t C )

Define the slave plane from three .geo Point IDs.

The point mapping (e.g. 11->11, 14->15, 16->16) must produce the same in-plane coordinate system as the master.

◆ set_slave_plane() [3/3]

void belfem::mesh::PeriodicityFactory::set_slave_plane ( const Vector< id_t > & aPointIDs)

◆ tag_periodic_sidesets()

void belfem::mesh::PeriodicityFactory::tag_periodic_sidesets ( )

◆ to_proto()

proto::PeriodicityData * belfem::mesh::PeriodicityFactory::to_proto ( Periodicity * aPeriodicity)

◆ update_periodicity()

void belfem::mesh::PeriodicityFactory::update_periodicity ( Periodicity * aPeriodicity)

Match nodes, then derive edge and face pairs.

The resulting Periodicity object is owned by the mesh.


The documentation for this class was generated from the following files: