Smith  0.1
Smith is an implicit thermal structural mechanics simulation code.
Classes | Namespaces | Functions
functional.hpp File Reference

Implementation of the quadrature-function-based functional enabling rapid development of FEM formulations. More...

#include <algorithm>
#include <array>
#include <functional>
#include <memory>
#include <tuple>
#include <type_traits>
#include <utility>
#include <vector>
#include "mfem.hpp"
#include "smith/smith_config.hpp"
#include "smith/infrastructure/logger.hpp"
#include "smith/numerics/functional/tensor.hpp"
#include "smith/numerics/functional/quadrature.hpp"
#include "smith/numerics/functional/finite_element.hpp"
#include "smith/numerics/functional/integral.hpp"
#include "smith/numerics/functional/differentiate_wrt.hpp"
#include "smith/numerics/functional/element_restriction.hpp"
#include "smith/numerics/functional/domain.hpp"
#include "functional_qoi.inl"
Include dependency graph for functional.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  smith::DependsOn< i >
 
struct  smith::Index< ind >
 Compile-time alias for index of differentiation. More...
 
class  smith::Functional< test(trials...), exec >
 Intended to be like std::function for finite element kernels. More...
 

Namespaces

 smith
 Accelerator functionality.
 

Functions

template<typename... T>
constexpr uint32_t smith::index_of_differentiation ()
 given a list of types, this function returns the index that corresponds to the type dual_vector. More...
 
void smith::check_for_missing_nodal_gridfunc (const mfem::Mesh &mesh)
 function for verifying that the mesh has been fully initialized
 
void smith::check_for_unsupported_elements (const mfem::Mesh &mesh)
 function for verifying that there are no unsupported element types in the mesh
 
template<typename function_space >
std::pair< std::unique_ptr< mfem::ParFiniteElementSpace >, std::unique_ptr< mfem::FiniteElementCollection > > smith::generateParFiniteElementSpace (mfem::ParMesh *mesh)
 create an mfem::ParFiniteElementSpace from one of Smith's tag types: H1, Hcurl, L2 More...
 
void smith::updateFaceNbrData (const mfem::ParFiniteElementSpace *const_trial_space, mfem::ParGridFunction &trial_pgf, mfem::Vector &trial_tdof_vals)
 helper function to locally cast away const on FE space so we can update face neighbor data with ExchangeFaceNbrData. This is ok because : 1) the original trial FE space is declared without const; 2) we constrained the non-constness locally; 3) the locally owned data associated with the trial function space is NOT altered and ONLY ghost data is updated.
 
void smith::appendFaceNbrData (const mfem::ParFiniteElementSpace *trial_space, const mfem::ParGridFunction &trial_pgf, const int LSize, mfem::Vector &input_L)
 helper functional to reorder the ordering of FaceNbrData for L2 space to byVDIM and append this vector to the end of local dof vector, which will result in a vector in form [ — L — | — FND — ]
 
void smith::rearrangeFaceNbrDofGlobalIndex (const mfem::ParFiniteElementSpace *trial_space, mfem::Array< HYPRE_BigInt > &face_nbr_glob_vdof_map)
 helper functional to reorder the face_nbr_glob_dof_map for L2 space to byVDIM
 

Detailed Description

Implementation of the quadrature-function-based functional enabling rapid development of FEM formulations.

Definition in file functional.hpp.