specfem::algorithms::transfer¶
-
template<typename IndexType, typename TransferFunctionType, typename EdgeFunctionType, typename IntersectionReturnCallback, typename std::enable_if_t<TransferFunctionType::connection_tag == specfem::connections::type::nonconforming, int> = 0>
void transfer(const IndexType &chunk_edge_index, const TransferFunctionType &transfer_function, const EdgeFunctionType &edge_function, const IntersectionReturnCallback &callback)¶ Takes a chunk_edge::field and maps it onto the intersection, using a single-sided transfer-function container.
- Template Parameters:
CoupledInterfaceType – transfer function container type (specfem::assembly::coupled_interfaces_impl::stores_transfer_function_coupled<CoupledInterfaceType>::value must be true)
EdgeFieldType – The chunk_edge field type
IntersectionFieldViewType – - a view that the intersection field should be stored into
- Parameters:
interface_data – transfer function container
coupled_field – The chunk_edge field to map from
intersection_field – a view that the intersection field should be stored into
specfem::algorithms::coupling_integral¶
-
template<specfem::dimension::type dimension_tag, typename IndexType, typename IntersectionFieldViewType, typename IntersectionFactor, typename CallableType>
void coupling_integral(const specfem::assembly::assembly<dimension_tag> &assembly, const IndexType &chunk_index, const IntersectionFieldViewType &intersection_field, const IntersectionFactor &intersection_factor, const CallableType &callback)¶ Takes a field
intersection_fieldon the intersection and computes, for each self GLL point, the integral ofintersection_fieldtimes the shape function at that point.intersection_fieldshould be call-accessible (e.g. Kokkos::View) with shape:(chunk_size, n_quad_intersection, self::components())
After handling any other intersection forces, boundary conditions, etc. the result can be
atomic_added to the acceleration field.- Template Parameters:
dimension_tag – dimension of the simulation
IndexType – The chunk_edge iterator type
IntersectionFieldViewType – The type of
intersection_fieldChunkEdgeWeightJacobianType – A nonconforming chunk_edge accessor holding
intersection_factorCallableType – The callback function, which will be given the point index and corresponding evaluated integral
- Parameters:
assembly – - assembly struct
chunk_index – - the outer index (chunk_edge) that gets iterated for points
intersection_field – - the field to integrate
weight_jacobian – - nonconforming chunk_edge accessor holding
intersection_factorcallback – - callback function to capture integral values