Serac  0.1
Serac is an implicit thermal strucural 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 "serac/serac_config.hpp"
#include "serac/infrastructure/logger.hpp"
#include "serac/numerics/functional/tensor.hpp"
#include "serac/numerics/functional/quadrature.hpp"
#include "serac/numerics/functional/finite_element.hpp"
#include "serac/numerics/functional/integral.hpp"
#include "serac/numerics/functional/differentiate_wrt.hpp"
#include "serac/numerics/functional/element_restriction.hpp"
#include "serac/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  serac::DependsOn< i >
 
struct  serac::Index< ind >
 Compile-time alias for index of differentiation. More...
 
class  serac::Functional< test(trials...), exec >
 Intended to be like std::function for finite element kernels. More...
 

Namespaces

 serac
 Accelerator functionality.
 

Functions

template<typename... T>
constexpr uint32_t serac::index_of_differentiation ()
 given a list of types, this function returns the index that corresponds to the type dual_vector. More...
 
void serac::check_for_missing_nodal_gridfunc (const mfem::Mesh &mesh)
 function for verifying that the mesh has been fully initialized
 
void serac::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 > > serac::generateParFiniteElementSpace (mfem::ParMesh *mesh)
 create an mfem::ParFiniteElementSpace from one of serac's tag types: H1, Hcurl, L2 More...
 
void serac::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 serac::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 serac::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.