Proto  3.2
Public Types | Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
Proto::LevelOp< OpType, T, BCType, MEM > Class Template Reference

Level-Scope Operator. More...

#include <Proto_LevelOp.H>

Public Types

typedef OpType< T, MEM > OP
 
typedef BCType< T, OP::numState(), MEM, PR_CELLBC
 
typedef BoxData< T, OP::numState(), MEM > StateData
 
typedef BoxData< T, OP::numAux(), MEM > AuxData
 
typedef LevelBoxData< T, OP::numState(), MEM, PR_CELLLevelStateData
 
typedef LevelBoxData< T, OP::numAux(), MEM, PR_CELLLevelAuxData
 

Public Member Functions

 LevelOp ()
 Default Constructor. More...
 
 LevelOp (DisjointBoxLayout &a_layout, T a_dx)
 Non-Trivial Constructor. More...
 
 LevelOp (DisjointBoxLayout &a_layout, Array< T, DIM > a_dx)
 
 LevelOp (LevelOp< OpType, T, BCType, MEM > &&a_op)=default
 
LevelOp< OpType, T, BCType, MEM > & operator= (LevelOp< OpType, T, BCType, MEM > &&a_op)=default
 
void define (DisjointBoxLayout &a_layout, T a_dx)
 Lazy Constructor. More...
 
void define (DisjointBoxLayout &a_layout, Array< T, DIM > a_dx)
 
spectralRadius () const
 Spectral Radius. More...
 
void operator() (LevelStateData &a_output, const LevelStateData &a_state, const LevelAuxData &a_aux, T a_scale=1.0) const
 Apply. More...
 
void operator() (LevelStateData &a_output, const LevelStateData &a_state, T a_scale=1.0) const
 Apply. More...
 
void applyBC (LevelStateData &a_state) const
 
void setDiagScale (T a_value)
 
void setFluxScale (T a_value)
 
void setTime (T a_time)
 
void setRKStage (unsigned int a_stage)
 
diagScale () const
 
fluxScale () const
 
time () const
 
unsigned int RKStage () const
 
Array< T, DIM > dx () const
 
BCbc ()
 
const DisjointBoxLayoutlayout () const
 
const OPoperator[] (const LevelIndex &a_index) const
 
OPoperator[] (const LevelIndex &a_index)
 

Static Public Member Functions

static constexpr unsigned int numState ()
 
static constexpr unsigned int numAux ()
 
static Point ghost ()
 Ghost Region Size (State) More...
 
static Point auxGhost ()
 Ghost Region Size (Auxiliary) More...
 
static int order ()
 

Private Attributes

m_diagScale
 
m_fluxScale
 
m_time
 
unsigned int m_rkStage
 
Array< T, DIM > m_dx
 
DisjointBoxLayout m_layout
 
std::vector< std::shared_ptr< OP > > m_ops
 
BC m_bc
 

Detailed Description

template<template< typename, MemType > class OpType, typename T, template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
class Proto::LevelOp< OpType, T, BCType, MEM >

Level-Scope Operator.

LevelOp contains the necessary tools to apply a user-defined descendent of BoxOp on a level.

Template Parameters
OpTypeA BoxOp class
TDatatype of the data holder (e.g. int, double, etc.)
MEMProto::MemType of the data holder

Member Typedef Documentation

◆ OP

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
typedef OpType<T, MEM> Proto::LevelOp< OpType, T, BCType, MEM >::OP

◆ BC

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
typedef BCType<T, OP::numState(), MEM, PR_CELL> Proto::LevelOp< OpType, T, BCType, MEM >::BC

◆ StateData

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
typedef BoxData<T, OP::numState(), MEM> Proto::LevelOp< OpType, T, BCType, MEM >::StateData

◆ AuxData

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
typedef BoxData<T, OP::numAux(), MEM> Proto::LevelOp< OpType, T, BCType, MEM >::AuxData

◆ LevelStateData

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
typedef LevelBoxData<T, OP::numState(), MEM, PR_CELL> Proto::LevelOp< OpType, T, BCType, MEM >::LevelStateData

◆ LevelAuxData

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
typedef LevelBoxData<T, OP::numAux(), MEM, PR_CELL> Proto::LevelOp< OpType, T, BCType, MEM >::LevelAuxData

Constructor & Destructor Documentation

◆ LevelOp() [1/4]

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType, MemType MEM>
Proto::LevelOp< OpType, T, BCType, MEM >::LevelOp ( )
inline

Default Constructor.

Referenced by Proto::LevelOp< OpType, T, BCType, MEM >::order().

◆ LevelOp() [2/4]

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType, MemType MEM>
Proto::LevelOp< OpType, T, BCType, MEM >::LevelOp ( DisjointBoxLayout a_layout,
a_dx 
)
inline

Non-Trivial Constructor.

Parameters
dxGrid spacing

◆ LevelOp() [3/4]

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType, MemType MEM>
Proto::LevelOp< OpType, T, BCType, MEM >::LevelOp ( DisjointBoxLayout a_layout,
Array< T, DIM >  a_dx 
)
inline

◆ LevelOp() [4/4]

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
Proto::LevelOp< OpType, T, BCType, MEM >::LevelOp ( LevelOp< OpType, T, BCType, MEM > &&  a_op)
inlinedefault

Member Function Documentation

◆ numState()

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
static constexpr unsigned int Proto::LevelOp< OpType, T, BCType, MEM >::numState ( )
inlinestatic

◆ numAux()

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
static constexpr unsigned int Proto::LevelOp< OpType, T, BCType, MEM >::numAux ( )
inlinestatic

◆ ghost()

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
static Point Proto::LevelOp< OpType, T, BCType, MEM >::ghost ( )
inlinestatic

Ghost Region Size (State)

Amount of data needed in ghost regions of state variables to apply the operator

◆ auxGhost()

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
static Point Proto::LevelOp< OpType, T, BCType, MEM >::auxGhost ( )
inlinestatic

Ghost Region Size (Auxiliary)

Amount of data needed in ghost regions of auxiliary variables to apply the operator

References Proto::LevelOp< OpType, T, BCType, MEM >::numAux(), and Proto::Point::Zeros().

◆ order()

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
static int Proto::LevelOp< OpType, T, BCType, MEM >::order ( )
inlinestatic

◆ operator=()

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
LevelOp<OpType, T, BCType, MEM>& Proto::LevelOp< OpType, T, BCType, MEM >::operator= ( LevelOp< OpType, T, BCType, MEM > &&  a_op)
inlinedefault

◆ define() [1/2]

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType, MemType MEM>
void Proto::LevelOp< OpType, T, BCType, MEM >::define ( DisjointBoxLayout a_layout,
a_dx 
)
inline

Lazy Constructor.

Parameters
dxGrid spacing

◆ define() [2/2]

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType, MemType MEM>
void Proto::LevelOp< OpType, T, BCType, MEM >::define ( DisjointBoxLayout a_layout,
Array< T, DIM >  a_dx 
)
inline

◆ spectralRadius()

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
T Proto::LevelOp< OpType, T, BCType, MEM >::spectralRadius ( ) const
inline

◆ operator()() [1/2]

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType, MemType MEM>
void Proto::LevelOp< OpType, T, BCType, MEM >::operator() ( LevelStateData a_output,
const LevelStateData a_state,
const LevelAuxData a_aux,
a_scale = 1.0 
) const
inline

Apply.

Compute L(phi, rho)

Parameters
outputEvaluated operator (output)
stateState variables
auxAuxiliary variables

◆ operator()() [2/2]

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType, MemType MEM>
void Proto::LevelOp< OpType, T, BCType, MEM >::operator() ( LevelStateData a_output,
const LevelStateData a_state,
a_scale = 1.0 
) const
inline

Apply.

Compute L(phi)

Parameters
outputEvaluated operator (output)
stateState variables

◆ applyBC()

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType, MemType MEM>
void Proto::LevelOp< OpType, T, BCType, MEM >::applyBC ( LevelStateData a_state) const
inline

This is a stopgap implementation until I can finish the LevelBC implementation

◆ setDiagScale()

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType, MemType MEM>
void Proto::LevelOp< OpType, T, BCType, MEM >::setDiagScale ( a_value)
inline

◆ setFluxScale()

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType, MemType MEM>
void Proto::LevelOp< OpType, T, BCType, MEM >::setFluxScale ( a_value)
inline

◆ setTime()

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType, MemType MEM>
void Proto::LevelOp< OpType, T, BCType, MEM >::setTime ( a_time)
inline

◆ setRKStage()

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType, MemType MEM>
void Proto::LevelOp< OpType, T, BCType, MEM >::setRKStage ( unsigned int  a_stage)
inline

◆ diagScale()

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
T Proto::LevelOp< OpType, T, BCType, MEM >::diagScale ( ) const
inline

◆ fluxScale()

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
T Proto::LevelOp< OpType, T, BCType, MEM >::fluxScale ( ) const
inline

◆ time()

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
T Proto::LevelOp< OpType, T, BCType, MEM >::time ( ) const
inline

◆ RKStage()

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
unsigned int Proto::LevelOp< OpType, T, BCType, MEM >::RKStage ( ) const
inline

◆ dx()

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
Array<T, DIM> Proto::LevelOp< OpType, T, BCType, MEM >::dx ( ) const
inline

◆ bc()

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
BC& Proto::LevelOp< OpType, T, BCType, MEM >::bc ( )
inline

◆ layout()

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
const DisjointBoxLayout& Proto::LevelOp< OpType, T, BCType, MEM >::layout ( ) const
inline

◆ operator[]() [1/2]

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
const OP& Proto::LevelOp< OpType, T, BCType, MEM >::operator[] ( const LevelIndex a_index) const
inline

◆ operator[]() [2/2]

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
OP& Proto::LevelOp< OpType, T, BCType, MEM >::operator[] ( const LevelIndex a_index)
inline

Member Data Documentation

◆ m_diagScale

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
T Proto::LevelOp< OpType, T, BCType, MEM >::m_diagScale
private

◆ m_fluxScale

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
T Proto::LevelOp< OpType, T, BCType, MEM >::m_fluxScale
private

◆ m_time

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
T Proto::LevelOp< OpType, T, BCType, MEM >::m_time
private

◆ m_rkStage

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
unsigned int Proto::LevelOp< OpType, T, BCType, MEM >::m_rkStage
private

◆ m_dx

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
Array<T, DIM> Proto::LevelOp< OpType, T, BCType, MEM >::m_dx
private

◆ m_layout

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
DisjointBoxLayout Proto::LevelOp< OpType, T, BCType, MEM >::m_layout
private

◆ m_ops

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
std::vector<std::shared_ptr<OP> > Proto::LevelOp< OpType, T, BCType, MEM >::m_ops
private

◆ m_bc

template<template< typename, MemType > class OpType, typename T , template< typename, unsigned int, MemType, Centering > class BCType = PeriodicBC, MemType MEM = MEMTYPE_DEFAULT>
BC Proto::LevelOp< OpType, T, BCType, MEM >::m_bc
private

The documentation for this class was generated from the following file: