a partial template specialization of Functional with test == double, implying "quantity of interest"
More...
|
| Functional (std::array< const mfem::ParFiniteElementSpace *, num_trial_spaces > trial_fes) |
| Constructs using a mfem::ParFiniteElementSpace object corresponding to the trial space. More...
|
|
template<int dim, int... args, typename lambda , typename qpt_data_type = Nothing> |
void | AddDomainIntegral (Dimension< dim >, DependsOn< args... >, lambda &&integrand, mfem::Mesh &mesh, std::shared_ptr< QuadratureData< qpt_data_type >> qdata=NoQData) |
| Adds a domain integral term to the Functional object. More...
|
|
template<int dim, int... args, typename lambda , typename qpt_data_type = Nothing> |
void | AddDomainIntegral (Dimension< dim >, DependsOn< args... >, lambda &&integrand, Domain &domain, std::shared_ptr< QuadratureData< qpt_data_type >> qdata=NoQData) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
|
template<int dim, int... args, typename lambda , typename qpt_data_type = void> |
void | AddBoundaryIntegral (Dimension< dim >, DependsOn< args... >, lambda &&integrand, mfem::Mesh &mesh) |
| Adds a boundary integral term to the Functional object. More...
|
|
template<int dim, int... args, typename lambda > |
void | AddBoundaryIntegral (Dimension< dim >, DependsOn< args... >, lambda &&integrand, const Domain &domain) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
|
template<int... args, typename lambda , typename qpt_data_type = Nothing> |
void | AddAreaIntegral (DependsOn< args... > which_args, lambda &&integrand, mfem::Mesh &domain, std::shared_ptr< QuadratureData< qpt_data_type >> &data=NoQData) |
| Adds an area integral, i.e., over 2D elements in R^2. More...
|
|
template<int... args, typename lambda , typename qpt_data_type = Nothing> |
void | AddVolumeIntegral (DependsOn< args... > which_args, lambda &&integrand, mfem::Mesh &domain, std::shared_ptr< QuadratureData< qpt_data_type >> &data=NoQData) |
| Adds a volume integral, i.e., over 3D elements in R^3. More...
|
|
template<int... args, typename lambda > |
void | AddSurfaceIntegral (DependsOn< args... > which_args, lambda &&integrand, mfem::Mesh &domain) |
| alias for Functional::AddBoundaryIntegral(Dimension<2>{}, integrand, domain);
|
|
double | ActionOfGradient (const mfem::Vector &input_T, uint32_t which) const |
| this function computes the directional derivative of the quantity of interest functional More...
|
|
template<uint32_t wrt, typename... T> |
operator_paren_return< wrt >::type | operator() (DifferentiateWRT< wrt >, double t, const T &... args) |
| this function lets the user evaluate the serac::Functional with the given trial space values More...
|
|
template<typename... T> |
auto | operator() (double t, const T &... args) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
|
template<typename... trials, ExecutionSpace exec>
class serac::Functional< double(trials...), exec >
a partial template specialization of Functional with test == double, implying "quantity of interest"
Definition at line 59 of file functional_qoi.inl.
template<typename... trials, ExecutionSpace exec>
double serac::Functional< double(trials...), exec >::ActionOfGradient |
( |
const mfem::Vector & |
input_T, |
|
|
uint32_t |
which |
|
) |
| const |
|
inline |
this function computes the directional derivative of the quantity of interest functional
- Parameters
-
input_T | a T-vector to apply the action of gradient to |
which | describes which trial space input_T corresponds to |
note: it accepts exactly num_trial_spaces
arguments of type mfem::Vector. Additionally, one of those arguments may be a dual_vector, to indicate that Functional::operator() should not only evaluate the element calculations, but also differentiate them w.r.t. the specified dual_vector argument
Definition at line 282 of file functional_qoi.inl.
template<typename... trials, ExecutionSpace exec>
template<uint32_t wrt, typename... T>
operator_paren_return<wrt>::type serac::Functional< double(trials...), exec >::operator() |
( |
DifferentiateWRT< wrt > |
, |
|
|
double |
t, |
|
|
const T &... |
args |
|
) |
| |
|
inline |
this function lets the user evaluate the serac::Functional with the given trial space values
- Parameters
-
t | the time |
args | the input T-vectors |
note: it accepts exactly num_trial_spaces
arguments of type mfem::Vector. Additionally, one of those arguments may be a dual_vector, to indicate that Functional::operator() should not only evaluate the element calculations, but also differentiate them w.r.t. the specified dual_vector argument
Definition at line 323 of file functional_qoi.inl.