DFT-FE 1.1.0-pre
Density Functional Theory With Finite-Elements
Loading...
Searching...
No Matches
dftfe::meshMovementAffineTransform Class Reference

Class to update triangulation under affine transformation. More...

#include <meshMovementAffineTransform.h>

Inheritance diagram for dftfe::meshMovementAffineTransform:
dftfe::meshMovementClass

Public Member Functions

 meshMovementAffineTransform (const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)
 Constructor.
 
std::pair< bool, double > transform (const dealii::Tensor< 2, 3, double > &deformationGradient)
 Performs affine transformation of the triangulation.
 
std::pair< bool, double > moveMesh (const std::vector< dealii::Point< 3 > > &controlPointLocations, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements, const double controllingParameter, const bool moveSubdivided=false)
 
- Public Member Functions inherited from dftfe::meshMovementClass
 meshMovementClass (const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)
 Constructor.
 
virtual ~meshMovementClass ()
 
void init (dealii::Triangulation< 3, 3 > &triangulation, dealii::Triangulation< 3, 3 > &serialTriangulation, const std::vector< std::vector< double > > &domainBoundingVectors)
 Initializes the required data-structures for a given triangulation.
 
void initMoved (const std::vector< std::vector< double > > &domainBoundingVectors)
 Re-initializes the required data-structures for a given triangulation.
 
void findClosestVerticesToDestinationPoints (const std::vector< dealii::Point< 3 > > &destinationPoints, std::vector< dealii::Point< 3 > > &closestTriaVertexToDestPointsLocation, std::vector< dealii::Tensor< 1, 3, double > > &dispClosestTriaVerticesToDestPoints)
 Finds the closest triangulation vertices to a given vector of position coordinates.
 

Private Member Functions

void computeIncrement ()
 internal function which computes the nodal increment field in the local processor
 

Private Attributes

dealii::Tensor< 2, 3, double > d_deformationGradient
 storage for the deformation gradient to be applied to the triangulation
 

Additional Inherited Members

- Protected Member Functions inherited from dftfe::meshMovementClass
void initIncrementField ()
 Initializes the parallel layout of d_incrementalDisplacementParallel.
 
void finalizeIncrementField ()
 
void updateTriangulationVertices ()
 Function which updates the locally relevant triangulation vertices.
 
void moveSubdividedMesh ()
 Function which moves subdivided mesh.
 
std::pair< bool, double > movedMeshCheck ()
 
- Protected Attributes inherited from dftfe::meshMovementClass
distributedCPUVec< double > d_incrementalDisplacement
 vector of displacements of the triangulation vertices
 
bool d_isParallelMesh
 
dealii::FESystem< 3 > FEMoveMesh
 
dealii::DoFHandler< 3 > d_dofHandlerMoveMesh
 
dealii::parallel::distributed::Triangulation< 3 > * d_triaPtr
 
dealii::Triangulation< 3, 3 > * d_triaPtrSerial
 
dealii::IndexSet d_locally_owned_dofs
 
dealii::IndexSet d_locally_relevant_dofs
 
dealii::AffineConstraints< double > d_constraintsMoveMesh
 
std::vector< dealii::GridTools::PeriodicFacePair< typename dealii::DoFHandler< 3 >::cell_iterator > > d_periodicity_vector
 
std::vector< std::vector< double > > d_domainBoundingVectors
 
const dftParametersd_dftParams
 
MPI_Comm d_mpiCommParent
 
MPI_Comm mpi_communicator
 
const unsigned int this_mpi_process
 
dealii::ConditionalOStream pcout
 

Detailed Description

Class to update triangulation under affine transformation.

Author
Sambit Das

Constructor & Destructor Documentation

◆ meshMovementAffineTransform()

dftfe::meshMovementAffineTransform::meshMovementAffineTransform ( const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain,
const dftParameters & dftParams )

Constructor.

Parameters
mpi_comm_parentparent mpi communicator
mpi_comm_domainmpi communicator domain decomposition

Member Function Documentation

◆ computeIncrement()

void dftfe::meshMovementAffineTransform::computeIncrement ( )
private

internal function which computes the nodal increment field in the local processor

◆ moveMesh()

std::pair< bool, double > dftfe::meshMovementAffineTransform::moveMesh ( const std::vector< dealii::Point< 3 > > & controlPointLocations,
const std::vector< dealii::Tensor< 1, 3, double > > & controlPointDisplacements,
const double controllingParameter,
const bool moveSubdivided = false )

Not implemented, just present to override the pure virtual from base class

◆ transform()

std::pair< bool, double > dftfe::meshMovementAffineTransform::transform ( const dealii::Tensor< 2, 3, double > & deformationGradient)

Performs affine transformation of the triangulation.

Parameters
deformationGradient
Returns
std::pair<bool,double> mesh quality metrics pair(bool for is negative jacobian, maximum jacobian ratio)

Member Data Documentation

◆ d_deformationGradient

dealii::Tensor<2, 3, double> dftfe::meshMovementAffineTransform::d_deformationGradient
private

storage for the deformation gradient to be applied to the triangulation


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