MFEM v4.9.0
Finite element discretization library
Loading...
Searching...
No Matches
qfunction_apply.hpp File Reference

Go to the source code of this file.

Namespaces

namespace  mfem
 
namespace  mfem::future
 
namespace  mfem::future::detail
 

Functions

template<typename qf_param_ts , typename qfunc_t , std::size_t num_fields>
MFEM_HOST_DEVICE void mfem::future::call_qfunction (qfunc_t &qfunc, const std::array< DeviceTensor< 2 >, num_fields > &input_shmem, DeviceTensor< 2 > &residual_shmem, const int &rs_qp, const int &num_qp, const int &q1d, const int &dimension, const bool &use_sum_factorization)
 Call a qfunction with the given parameters.
 
template<typename qf_param_ts , typename qfunc_t , std::size_t num_fields>
MFEM_HOST_DEVICE void mfem::future::call_qfunction_derivative_action (qfunc_t &qfunc, const std::array< DeviceTensor< 2 >, num_fields > &input_shmem, const std::array< DeviceTensor< 2 >, num_fields > &shadow_shmem, DeviceTensor< 2 > &residual_shmem, const int &das_qp, const int &num_qp, const int &q1d, const int &dimension, const bool &use_sum_factorization)
 Call a qfunction with the given parameters and compute it's derivative action.
 
template<typename qf_param_ts , typename qfunc_t , std::size_t num_fields>
MFEM_HOST_DEVICE void mfem::future::detail::call_qfunction_derivative (qfunc_t &qfunc, const std::array< DeviceTensor< 2 >, num_fields > &input_shmem, const std::array< DeviceTensor< 2 >, num_fields > &shadow_shmem, DeviceTensor< 2 > &residual_shmem, DeviceTensor< 5 > &qpdc, const DeviceTensor< 1, const real_t > &itod, const int &das_qp, const int &q)
 
template<typename qf_param_ts , typename qfunc_t , std::size_t num_fields>
MFEM_HOST_DEVICE void mfem::future::call_qfunction_derivative (qfunc_t &qfunc, const std::array< DeviceTensor< 2 >, num_fields > &input_shmem, const std::array< DeviceTensor< 2 >, num_fields > &shadow_shmem, DeviceTensor< 2 > &residual_shmem, DeviceTensor< 5 > &qpdc, const DeviceTensor< 1, const real_t > &itod, const int &das_qp, const int &q1d, const int &dimension, const bool &use_sum_factorization)
 Call a qfunction with the given parameters and compute it's derivative represented by the Jacobian on each quadrature point.
 
template<size_t num_fields>
MFEM_HOST_DEVICE void mfem::future::detail::apply_qpdc (DeviceTensor< 3 > &fhat, const std::array< DeviceTensor< 2 >, num_fields > &shadow_shmem, const DeviceTensor< 5, const real_t > &qpdc, const DeviceTensor< 1, const real_t > &itod, const int &q)
 Apply the quadrature point data cache (qpdc) to a vector (usually a direction) on quadrature point q.
 
template<size_t num_fields>
MFEM_HOST_DEVICE void mfem::future::apply_qpdc (DeviceTensor< 3 > &fhat, const std::array< DeviceTensor< 2 >, num_fields > &shadow_shmem, const DeviceTensor< 5, const real_t > &qpdc, const DeviceTensor< 1, const real_t > &itod, const int &q1d, const int &dimension, const bool &use_sum_factorization)
 Apply the quadrature point data cache (qpdc) to a vector (usually a direction).
 
template<typename qfunc_t , typename args_ts , size_t num_args>
MFEM_HOST_DEVICE void mfem::future::apply_kernel (DeviceTensor< 1, real_t > &f_qp, const qfunc_t &qfunc, args_ts &args, const std::array< DeviceTensor< 2 >, num_args > &u, int qp)
 
template<typename qfunc_t , typename arg_ts , size_t num_args>
MFEM_HOST_DEVICE void mfem::future::apply_kernel_native_dual (DeviceTensor< 1, real_t > &f_qp, const qfunc_t &qfunc, arg_ts &args, const std::array< DeviceTensor< 2 >, num_args > &u, const std::array< DeviceTensor< 2 >, num_args > &v, const int &qp_idx)
 
template<typename func_t , typename... arg_ts>
MFEM_HOST_DEVICE auto mfem::future::qfunction_wrapper (const func_t &f, arg_ts &&...args)
 
template<typename qfunc_t , typename arg_ts , std::size_t... Is, typename inactive_arg_ts >
MFEM_HOST_DEVICE auto mfem::future::fwddiff_apply_enzyme_indexed (qfunc_t &qfunc, arg_ts &&args, arg_ts &&shadow_args, std::index_sequence< Is... >, inactive_arg_ts &&inactive_args, std::index_sequence<>)
 
template<typename qfunc_t , typename arg_ts , std::size_t... Is, typename inactive_arg_ts , std::size_t... Js>
MFEM_HOST_DEVICE auto mfem::future::fwddiff_apply_enzyme_indexed (qfunc_t &qfunc, arg_ts &&args, arg_ts &&shadow_args, std::index_sequence< Is... >, inactive_arg_ts &&inactive_args, std::index_sequence< Js... >)
 
template<typename qfunc_t , typename arg_ts , typename inactive_arg_ts >
MFEM_HOST_DEVICE auto mfem::future::fwddiff_apply_enzyme (qfunc_t &qfunc, arg_ts &&args, arg_ts &&shadow_args, inactive_arg_ts &&inactive_args)
 
template<typename qfunc_t , typename arg_ts , size_t num_args>
MFEM_HOST_DEVICE void mfem::future::apply_kernel_fwddiff_enzyme (DeviceTensor< 1, real_t > &f_qp, qfunc_t &qfunc, arg_ts &args, arg_ts &shadow_args, const std::array< DeviceTensor< 2 >, num_args > &u, const std::array< DeviceTensor< 2 >, num_args > &v, int qp_idx)