DFT-FE 1.1.0-pre
Density Functional Theory With Finite-Elements
Loading...
Searching...
No Matches
meshMovementAffineTransform.h
Go to the documentation of this file.
1// ---------------------------------------------------------------------
2//
3// Copyright (c) 2017-2025 The Regents of the University of Michigan and DFT-FE
4// authors.
5//
6// This file is part of the DFT-FE code.
7//
8// The DFT-FE code is free software; you can use it, redistribute
9// it, and/or modify it under the terms of the GNU Lesser General
10// Public License as published by the Free Software Foundation; either
11// version 2.1 of the License, or (at your option) any later version.
12// The full text of the license can be found in the file LICENSE at
13// the top level of the DFT-FE distribution.
14//
15// ---------------------------------------------------------------------
16
17
18#ifndef meshMovementAffineTransform_H_
19#define meshMovementAffineTransform_H_
20#include "meshMovement.h"
21
22namespace dftfe
23{
24 /**
25 * @brief Class to update triangulation under affine transformation
26 *
27 * @author Sambit Das
28 */
30 {
31 public:
32 /** @brief Constructor
33 *
34 * @param mpi_comm_parent parent mpi communicator
35 * @param mpi_comm_domain mpi communicator domain decomposition
36 */
37 meshMovementAffineTransform(const MPI_Comm & mpi_comm_parent,
38 const MPI_Comm & mpi_comm_domain,
39 const dftParameters &dftParams);
40
41 /** @brief Performs affine transformation of the triangulation
42 *
43 * @param deformationGradient
44 * @return std::pair<bool,double> mesh quality metrics
45 * pair(bool for is negative jacobian, maximum jacobian ratio)
46 */
47 std::pair<bool, double>
48 transform(const dealii::Tensor<2, 3, double> &deformationGradient);
49
50 /// Not implemented, just present to override the pure virtual from base
51 /// class
52 std::pair<bool, double>
53 moveMesh(const std::vector<dealii::Point<3>> &controlPointLocations,
54 const std::vector<dealii::Tensor<1, 3, double>>
55 & controlPointDisplacements,
56 const double controllingParameter,
57 const bool moveSubdivided = false);
58
59 private:
60 /** @brief internal function which computes the nodal increment field in the local processor
61 *
62 */
63 void
65
66 /// storage for the deformation gradient to be applied to the triangulation
67 dealii::Tensor<2, 3, double> d_deformationGradient;
68 };
69
70} // namespace dftfe
71
72#endif
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
void computeIncrement()
internal function which computes the nodal increment field in the local processor
std::pair< bool, double > transform(const dealii::Tensor< 2, 3, double > &deformationGradient)
Performs affine transformation of the triangulation.
dealii::Tensor< 2, 3, double > d_deformationGradient
storage for the deformation gradient to be applied to the triangulation
Definition meshMovementAffineTransform.h:67
meshMovementAffineTransform(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)
Constructor.
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)
meshMovementClass(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)
Constructor.
Definition pseudoPotentialToDftfeConverter.cc:34