|
| template<typename... Ts> |
| constexpr auto | mfem::future::to_array (const std::tuple< Ts... > &tuple) |
| |
| template<typename lambda , std::size_t... i> |
| constexpr void | mfem::future::detail::for_constexpr (lambda &&f, std::integral_constant< std::size_t, i >... Is) |
| |
| template<std::size_t... n, typename lambda , typename... arg_types> |
| constexpr void | mfem::future::detail::for_constexpr (lambda &&f, std::integer_sequence< std::size_t, n... >, arg_types... args) |
| |
| template<typename lambda , std::size_t... i> |
| constexpr void | mfem::future::for_constexpr (lambda &&f, std::integer_sequence< std::size_t, i ... >) |
| |
| template<typename lambda > |
| constexpr void | mfem::future::for_constexpr (lambda &&f, std::integer_sequence< std::size_t >) |
| |
| template<int... n, typename lambda > |
| constexpr void | mfem::future::for_constexpr (lambda &&f) |
| |
| template<typename lambda , typename arg_t > |
| constexpr void | mfem::future::for_constexpr_with_arg (lambda &&f, arg_t &&arg, std::integer_sequence< std::size_t >) |
| |
| template<typename lambda , typename arg_t , std::size_t i, std::size_t... Is> |
| constexpr void | mfem::future::for_constexpr_with_arg (lambda &&f, arg_t &&arg, std::integer_sequence< std::size_t, i, Is... >) |
| |
| template<typename lambda , typename arg_t > |
| constexpr void | mfem::future::for_constexpr_with_arg (lambda &&f, arg_t &&arg) |
| |
| template<std::size_t I, typename Tuple , std::size_t... Is> |
| std::array< bool, sizeof...(Is)> | mfem::future::make_dependency_array (const Tuple &inputs, std::index_sequence< Is... >) |
| |
| template<typename... input_ts, std::size_t... Is> |
| auto | mfem::future::make_dependency_map_impl (tuple< input_ts... > inputs, std::index_sequence< Is... >) |
| |
| template<typename... input_ts> |
| auto | mfem::future::make_dependency_map (tuple< input_ts... > inputs) |
| |
| template<typename T > |
| constexpr auto | mfem::future::get_type_name () -> std::string_view |
| |
| template<typename Tuple , std::size_t... Is> |
| void | mfem::future::print_tuple_impl (const Tuple &t, std::index_sequence< Is... >) |
| |
| template<typename... Args> |
| void | mfem::future::print_tuple (const std::tuple< Args... > &t) |
| |
| void | mfem::future::pretty_print (std::ostream &out, const mfem::DenseMatrix &A) |
| | Pretty print an mfem::DenseMatrix to out.
|
| |
| void | mfem::future::pretty_print (const mfem::Vector &v) |
| | Pretty print an mfem::Vector to out.
|
| |
| template<typename T > |
| void | mfem::future::pretty_print (const mfem::Array< T > &v) |
| | Pretty print an mfem::Array to out.
|
| |
| template<typename K , typename T , std::size_t N> |
| void | mfem::future::pretty_print (const std::unordered_map< K, std::array< T, N > > &map) |
| | Pretty prints an unordered map of std::array to out.
|
| |
| void | mfem::future::print_mpi_root (const std::string &msg) |
| |
| void | mfem::future::print_mpi_sync (const std::string &msg) |
| | print with MPI rank synchronization
|
| |
| void | mfem::future::pretty_print_mpi (const mfem::Vector &v) |
| | Pretty print an mfem::Vector with MPI rank.
|
| |
| template<typename ... Ts> |
| constexpr auto | mfem::future::decay_types (tuple< Ts... > const &) -> tuple< std::remove_cv_t< std::remove_reference_t< Ts > >... > |
| |
| template<typename T > |
| constexpr int | mfem::future::GetFieldId () |
| |
| template<typename Tuple , std::size_t... Is> |
| constexpr auto | mfem::future::extract_field_ids_impl (Tuple &&t, std::index_sequence< Is... >) |
| |
| template<typename... Ts> |
| constexpr auto | mfem::future::extract_field_ids (const std::tuple< Ts... > &t) |
| | Extracts field IDs from a tuple of objects derived from FieldOperator.
|
| |
| constexpr bool | mfem::future::contains (const int *arr, std::size_t size, int value) |
| | Helper function to check if an element is in the array.
|
| |
| template<typename... Ts> |
| constexpr std::size_t | mfem::future::count_unique_field_ids (const std::tuple< Ts... > &t) |
| | Function to count unique field IDs in a tuple.
|
| |
| template<typename T , std::size_t N> |
| auto | mfem::future::get_marked_entries (const std::array< T, N > &a, const std::array< bool, N > &marker) |
| | Get marked entries from an std::array based on a marker array.
|
| |
| template<typename... Ts> |
| constexpr auto | mfem::future::filter_fields (const std::tuple< Ts... > &t) |
| | Filter fields from a tuple based on their field IDs.
|
| |
| template<typename func_t > |
| __global__ void | mfem::future::forall_kernel_shmem (func_t f, int n) |
| |
| template<typename func_t > |
| void | mfem::future::forall (func_t f, const int &N, const ThreadBlocks &blocks, int num_shmem=0, real_t *shmem=nullptr) |
| |
| std::size_t | mfem::future::FindIdx (const std::size_t &id, const std::vector< FieldDescriptor > &fields) |
| | Find the index of a field descriptor in a vector of field descriptors.
|
| |
| int | mfem::future::GetVSize (const FieldDescriptor &f) |
| | Get the vdof size of a field descriptor.
|
| |
| void | mfem::future::GetElementVDofs (const FieldDescriptor &f, int el, Array< int > &vdofs) |
| | Get the element vdofs of a field descriptor.
|
| |
| int | mfem::future::GetTrueVSize (const FieldDescriptor &f) |
| | Get the true dof size of a field descriptor.
|
| |
| int | mfem::future::GetVDim (const FieldDescriptor &f) |
| | Get the vdim of a field descriptor.
|
| |
| template<typename entity_t > |
| int | mfem::future::GetDimension (const FieldDescriptor &f) |
| | Get the spatial dimension of a field descriptor.
|
| |
| const Operator * | mfem::future::get_prolongation (const FieldDescriptor &f) |
| | Get the prolongation operator for a field descriptor.
|
| |
| const Operator * | mfem::future::get_element_restriction (const FieldDescriptor &f, ElementDofOrdering o) |
| | Get the element restriction operator for a field descriptor.
|
| |
| const Operator * | mfem::future::get_face_restriction (const FieldDescriptor &f, ElementDofOrdering o, FaceType ft, L2FaceValues m) |
| | Get the face restriction operator for a field descriptor.
|
| |
| template<typename entity_t > |
| const Operator * | mfem::future::get_restriction (const FieldDescriptor &f, const ElementDofOrdering &o) |
| | Get the restriction operator for a field descriptor.
|
| |
| template<typename entity_t , typename fop_t > |
| std::tuple< std::function< void(const Vector &, Vector &)>, int > | mfem::future::get_restriction_transpose (const FieldDescriptor &f, const ElementDofOrdering &o, const fop_t &fop) |
| | Get a transpose restriction callback for a field descriptor.
|
| |
| void | mfem::future::prolongation (const FieldDescriptor field, const Vector &x, Vector &field_l) |
| | Apply the prolongation operator to a field.
|
| |
| template<std::size_t N, std::size_t M> |
| void | mfem::future::prolongation (const std::array< FieldDescriptor, N > fields, const Vector &x, std::array< Vector, M > &fields_l) |
| | Apply the prolongation operator to a vector of fields.
|
| |
| void | mfem::future::prolongation (const std::vector< FieldDescriptor > fields, const Vector &x, std::vector< Vector > &fields_l) |
| | Apply the prolongation operator to a vector of fields.
|
| |
| void | mfem::future::get_lvectors (const std::vector< FieldDescriptor > fields, const Vector &x, std::vector< Vector > &fields_l) |
| |
| template<typename fop_t > |
| std::function< void(const Vector &, Vector &)> | mfem::future::get_prolongation_transpose (const FieldDescriptor &f, const fop_t &fop, MPI_Comm mpi_comm) |
| | Get a transpose prolongation callback for a field descriptor.
|
| |
| template<typename entity_t > |
| void | mfem::future::restriction (const FieldDescriptor u, const Vector &u_l, Vector &field_e, ElementDofOrdering ordering) |
| | Apply the restriction operator to a field.
|
| |
| template<typename entity_t > |
| void | mfem::future::restriction (const std::vector< FieldDescriptor > u, const std::vector< Vector > &u_l, std::vector< Vector > &fields_e, ElementDofOrdering ordering, const int offset=0) |
| | Apply the restriction operator to a vector of fields.
|
| |
| template<std::size_t N, std::size_t M> |
| void | mfem::future::element_restriction (const std::array< FieldDescriptor, N > u, const std::array< Vector, N > &u_l, std::array< Vector, M > &fields_e, ElementDofOrdering ordering, const int offset=0) |
| |
| template<typename entity_t > |
| int | mfem::future::GetNumEntities (const mfem::Mesh &mesh) |
| | Get the number of entities of a given type.
|
| |
| template<typename entity_t > |
| const DofToQuad * | mfem::future::GetDofToQuad (const FieldDescriptor &f, const IntegrationRule &ir, DofToQuad::Mode mode) |
| | Get the GetDofToQuad object for a given entity type.
|
| |
| template<typename field_operator_t > |
| void | mfem::future::CheckCompatibility (const FieldDescriptor &f) |
| | Check the compatibility of a field operator type with a FieldDescriptor.
|
| |
| template<typename entity_t , typename field_operator_t > |
| int | mfem::future::GetSizeOnQP (const field_operator_t &, const FieldDescriptor &f) |
| | Get the size on quadrature point for a field operator type and FieldDescriptor combination.
|
| |
| template<typename entity_t , typename field_operator_ts > |
| std::array< size_t, tuple_size< field_operator_ts >::value > | mfem::future::create_descriptors_to_fields_map (const std::vector< FieldDescriptor > &fields, field_operator_ts &fops) |
| | Create a map from field operator types to FieldDescriptor indices.
|
| |
| template<typename input_t , std::size_t... i> |
| std::array< DeviceTensor< 3 >, sizeof...(i)> | mfem::future::wrap_input_memory (std::array< Vector, sizeof...(i)> &input_qp_mem, int num_qp, int num_entities, const input_t &inputs, std::index_sequence< i... >) |
| | Wrap input memory for a given set of inputs.
|
| |
| template<typename input_t , std::size_t... i> |
| std::array< Vector, sizeof...(i)> | mfem::future::create_input_qp_memory (int num_qp, int num_entities, input_t &inputs, std::index_sequence< i... >) |
| | Create input memory for a given set of inputs.
|
| |
| template<typename input_t , std::size_t... i> |
| std::vector< int > | mfem::future::get_input_size_on_qp (const input_t &inputs, std::index_sequence< i... >) |
| | Get the size on quadrature point for a given set of inputs.
|
| |
| template<typename entity_t , std::size_t num_fields, std::size_t num_inputs, std::size_t num_outputs, typename input_t > |
| SharedMemoryInfo< num_fields, num_inputs, num_outputs > | mfem::future::get_shmem_info (const std::array< DofToQuadMap, num_inputs > &input_dtq_maps, const std::array< DofToQuadMap, num_outputs > &output_dtq_maps, const std::vector< FieldDescriptor > &fields, const int &num_entities, const input_t &inputs, const int &num_qp, const std::vector< int > &input_size_on_qp, const int &residual_size_on_qp, const ElementDofOrdering &dof_ordering, const int &derivative_action_field_idx=-1) |
| |
| template<typename shmem_info_t > |
| void | mfem::future::print_shared_memory_info (shmem_info_t &shmem_info) |
| |
| template<std::size_t N> |
| MFEM_HOST_DEVICE std::array< DofToQuadMap, N > | mfem::future::load_dtq_mem (void *mem, int offset, const std::array< std::array< int, 2 >, N > &sizes, const std::array< DofToQuadMap, N > &dtq) |
| |
| template<std::size_t num_fields> |
| MFEM_HOST_DEVICE std::array< DeviceTensor< 1 >, num_fields > | mfem::future::load_field_mem (void *mem, int offset, const std::array< int, num_fields > &sizes, const std::array< DeviceTensor< 2 >, num_fields > &fields_e, const int &entity_idx) |
| |
| MFEM_HOST_DEVICE DeviceTensor< 1 > | mfem::future::load_direction_mem (void *mem, int offset, const int &size, const DeviceTensor< 2 > &direction, const int &entity_idx) |
| |
| template<std::size_t N> |
| MFEM_HOST_DEVICE std::array< DeviceTensor< 2 >, N > | mfem::future::load_input_mem (void *mem, int offset, const std::array< int, N > &sizes, const int &num_qp) |
| |
| MFEM_HOST_DEVICE DeviceTensor< 2 > | mfem::future::load_residual_mem (void *mem, int offset, const int &residual_size, const int &num_qp) |
| |
| template<std::size_t N> |
| MFEM_HOST_DEVICE std::array< DeviceTensor< 1 >, 6 > | mfem::future::load_scratch_mem (void *mem, int offset, const std::array< int, N > &sizes) |
| |
| template<typename shared_mem_info_t , std::size_t num_inputs, std::size_t num_outputs, std::size_t num_fields> |
| MFEM_HOST_DEVICE auto | mfem::future::unpack_shmem (void *shmem, const shared_mem_info_t &shmem_info, const std::array< DofToQuadMap, num_inputs > &input_dtq_maps, const std::array< DofToQuadMap, num_outputs > &output_dtq_maps, const std::array< DeviceTensor< 2 >, num_fields > &wrapped_fields_e, const int &num_qp, const int &e) |
| |
| template<typename shared_mem_info_t , std::size_t num_inputs, std::size_t num_outputs, std::size_t num_fields> |
| MFEM_HOST_DEVICE auto | mfem::future::unpack_shmem (void *shmem, const shared_mem_info_t &shmem_info, const std::array< DofToQuadMap, num_inputs > &input_dtq_maps, const std::array< DofToQuadMap, num_outputs > &output_dtq_maps, const std::array< DeviceTensor< 2 >, num_fields > &wrapped_fields_e, const DeviceTensor< 2 > &wrapped_direction_e, const int &num_qp, const int &e) |
| |
| template<std::size_t... i> |
| MFEM_HOST_DEVICE std::array< DeviceTensor< 2 >, sizeof...(i)> | mfem::future::get_local_input_qp (const std::array< DeviceTensor< 3 >, sizeof...(i)> &input_qp_global, int e, std::index_sequence< i... >) |
| |
| template<std::size_t N> |
| MFEM_HOST_DEVICE void | mfem::future::set_zero (std::array< DeviceTensor< 2 >, N > &v) |
| |
| template<std::size_t n> |
| MFEM_HOST_DEVICE void | mfem::future::set_zero (DeviceTensor< n > &u) |
| |
| template<int n> |
| MFEM_HOST_DEVICE void | mfem::future::copy (DeviceTensor< n > &u, DeviceTensor< n > &v) |
| | Copy data from DeviceTensor u to DeviceTensor v.
|
| |
| template<int n, std::size_t m> |
| MFEM_HOST_DEVICE void | mfem::future::copy (std::array< DeviceTensor< n >, m > &u, std::array< DeviceTensor< n >, m > &v) |
| | Copy data from array of DeviceTensor u to array of DeviceTensor v.
|
| |
| template<std::size_t num_fields> |
| std::array< DeviceTensor< 2 >, num_fields > | mfem::future::wrap_fields (std::vector< Vector > &fields, std::array< int, num_fields > &field_sizes, const int &num_entities) |
| | Wraps plain data in DeviceTensors for fields.
|
| |
| template<typename input_t , std::size_t num_fields, std::size_t... i> |
| int | mfem::future::accumulate_sizes_on_qp (const input_t &inputs, std::array< bool, sizeof...(i)> &kinput_is_dependent, const std::array< int, sizeof...(i)> &input_to_field, const std::array< FieldDescriptor, num_fields > &fields, std::index_sequence< i... > seq) |
| | Accumulates the sizes of field operators on quadrature points for dependent inputs.
|
| |
| template<typename entity_t , typename field_operator_ts , std::size_t N = tuple_size<field_operator_ts>::value, std::size_t... Is> |
| std::array< DofToQuadMap, N > | mfem::future::create_dtq_maps_impl (field_operator_ts &fops, std::vector< const DofToQuad * > &dtqs, const std::array< size_t, N > &field_map, std::index_sequence< Is... >) |
| |
| template<typename entity_t , typename field_operator_ts , std::size_t num_fields> |
| std::array< DofToQuadMap, num_fields > | mfem::future::create_dtq_maps (field_operator_ts &fops, std::vector< const DofToQuad * > &dtqmaps, const std::array< size_t, num_fields > &to_field_map) |
| | Create DofToQuad maps for a given set of field operators.
|
| |