IPPL (Independent Parallel Particle Layer)
IPPL
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 ippl::Vector< ippl::Vector< T, Dim >, numElementDOFs > &curl_b_q_k, const ippl::Vector< ippl::Vector< T, Dim >, numElementDOFs > &val_b_q_k) 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 Vector< Vector< Tlhs, Dim >, numElemDOFs > &grad_b_q_k) const
 EvalFunctor (Vector< Tlhs, Dim > DPhiInvT, Tlhs absDetDPhi)
KOKKOS_FUNCTION auto operator() (const size_t &i, const size_t &j, const Vector< Vector< Tlhs, Dim >, numElemDOFs > &grad_b_q_k) const

Public Attributes

const Vector< T, DimDPhiInvT
 The inverse transpose Jacobian.
const T absDetDPhi
 The determinant of the Jacobian.
const Vector< Tlhs, DimDPhiInvT
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.

Definition at line 27 of file FEMMaxwellDiffusionSolver.h.

Constructor & Destructor Documentation

◆ EvalFunctor() [1/3]

template<typename T, unsigned Dim, unsigned numElementDOFs>
ippl::EvalFunctor< T, Dim, numElementDOFs >::EvalFunctor ( Vector< T, Dim > DPhiInvT,
T absDetDPhi )
inline

Constructor.

Definition at line 47 of file FEMMaxwellDiffusionSolver.h.

References absDetDPhi, and DPhiInvT.

◆ EvalFunctor() [2/3]

template<typename T, unsigned Dim, unsigned numElementDOFs>
ippl::EvalFunctor< T, Dim, numElementDOFs >::EvalFunctor ( Vector< Tlhs, Dim > DPhiInvT,
Tlhs absDetDPhi )
inline

Definition at line 18 of file FEMPoissonSolver.h.

References absDetDPhi, and DPhiInvT.

◆ EvalFunctor() [3/3]

template<typename T, unsigned Dim, unsigned numElementDOFs>
ippl::EvalFunctor< T, Dim, numElementDOFs >::EvalFunctor ( Vector< Tlhs, Dim > DPhiInvT,
Tlhs absDetDPhi )
inline

Definition at line 20 of file PreconditionedFEMPoissonSolver.h.

References absDetDPhi, and DPhiInvT.

Member Function Documentation

◆ operator()() [1/3]

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

Definition at line 22 of file FEMPoissonSolver.h.

References absDetDPhi, ippl::dot(), and DPhiInvT.

Here is the call graph for this function:

◆ operator()() [2/3]

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

Definition at line 24 of file PreconditionedFEMPoissonSolver.h.

References absDetDPhi, ippl::dot(), and DPhiInvT.

Here is the call graph for this function:

◆ operator()() [3/3]

template<typename T, unsigned Dim, unsigned numElementDOFs>
KOKKOS_FUNCTION auto ippl::EvalFunctor< T, Dim, numElementDOFs >::operator() ( size_t i,
size_t j,
const ippl::Vector< ippl::Vector< T, Dim >, numElementDOFs > & curl_b_q_k,
const ippl::Vector< ippl::Vector< T, Dim >, numElementDOFs > & val_b_q_k ) 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.
curl_b_q_kThe curl of the DOFs.
val_b_q_kThe values of the DOFs.
Returns
(curl(b_i)*curl(b_j) + b_i*b_j)*absDetDPhi

Definition at line 69 of file FEMMaxwellDiffusionSolver.h.

References absDetDPhi, ippl::dot(), and DPhiInvT.

Here is the call graph for this function:

Member Data Documentation

◆ absDetDPhi [1/2]

template<typename T, unsigned Dim, unsigned numElementDOFs>
const Tlhs 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.

Definition at line 42 of file FEMMaxwellDiffusionSolver.h.

Referenced by EvalFunctor(), EvalFunctor(), operator()(), and operator()().

◆ absDetDPhi [2/2]

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

Definition at line 16 of file FEMPoissonSolver.h.

◆ DPhiInvT [1/2]

template<typename T, unsigned Dim, unsigned numElementDOFs>
const Vector< Tlhs, 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.

Definition at line 34 of file FEMMaxwellDiffusionSolver.h.

Referenced by EvalFunctor(), EvalFunctor(), operator()(), and operator()().

◆ DPhiInvT [2/2]

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

Definition at line 15 of file FEMPoissonSolver.h.


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