IPPL API Reference
Independent Parallel Particle Layer C++ API
Loading...
Searching...
No Matches
ippl::EvalFunctor< T, Dim, numElementDOFs > Struct Template Reference

Representation of the lhs of the problem we are trying to solve. More...

#include <FEMMaxwellDiffusionSolver.h>

+ Collaboration diagram for ippl::EvalFunctor< T, Dim, numElementDOFs >:

Public Member Functions

 EvalFunctor (Vector< T, Dim > DPhiInvT, T absDetDPhi)
 Constructor.
 
KOKKOS_FUNCTION auto operator() (size_t i, size_t j, const QuadratureData< Vector< T, Dim >, Vector< T, Dim >, numElementDOFs > &qd) const
 Returns the evaluation of (curl(b_i)*curl(b_j) + b_i*b_j)*absDetDPhi.
 
 EvalFunctor (Vector< Tlhs, Dim > DPhiInvT, Tlhs absDetDPhi)
 
KOKKOS_FUNCTION auto operator() (const size_t &i, const size_t &j, const QuadratureData< Tlhs, Vector< Tlhs, Dim >, numElemDOFs > &qd) const
 

Public Attributes

const Vector< T, Dim > DPhiInvT
 The inverse transpose Jacobian.
 
const T absDetDPhi
 The determinant of the Jacobian.
 
const Vector< Tlhs, Dim > DPhiInvT
 
const Tlhs absDetDPhi
 

Detailed Description

template<typename T, unsigned Dim, unsigned numElementDOFs>
struct ippl::EvalFunctor< T, Dim, numElementDOFs >

Representation of the lhs of the problem we are trying to solve.

In our case this corresponds to the variational formulation of the curl(curl(E)) + E and is curl(b_i)*curl(b_j) + b_i*b_j.

Template Parameters
TThe type we are working with.
Dimthe dimension of the space.
numElementDOFsthe number of DOFs per element that we have.

Member Function Documentation

◆ operator()()

template<typename T , unsigned Dim, unsigned numElementDOFs>
KOKKOS_FUNCTION auto ippl::EvalFunctor< T, Dim, numElementDOFs >::operator() ( size_t  i,
size_t  j,
const QuadratureData< Vector< T, Dim >, Vector< T, Dim >, numElementDOFs > &  qd 
) const
inline

Returns the evaluation of (curl(b_i)*curl(b_j) + b_i*b_j)*absDetDPhi.

This function takes as input the basis function values and their curl for the different DOFs and returns the evaluation of the inner part of the integral of the variational formuation, which corresponds to (curl(b_i)*curl(b_j) + b_i*b_j), but note that we additionally also multiply this with absDetDPhi, which is required by the quadrature rule. In theroy this could also be done outside of this.

Parameters
iThe first DOF index.
jThe second DOF index.
qdPer-quadrature basis values and curls.
Returns
(curl(b_i)*curl(b_j) + b_i*b_j)*absDetDPhi

Member Data Documentation

◆ absDetDPhi

template<typename T , unsigned Dim, unsigned numElementDOFs>
const T ippl::EvalFunctor< T, Dim, numElementDOFs >::absDetDPhi

The determinant of the Jacobian.

As we have a unirectangular grid it is the same for all the differnt Elements and we therefore have to store it only once.

◆ DPhiInvT

template<typename T , unsigned Dim, unsigned numElementDOFs>
const Vector<T, Dim> ippl::EvalFunctor< T, Dim, numElementDOFs >::DPhiInvT

The inverse transpose Jacobian.

As we have a unirectangular grid it is the same for all the differnt Elements and we therefore have to store it only once.


The documentation for this struct was generated from the following files: