OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
AmrOpenBoundary< Level > Class Template Reference

#include <AmrOpenBoundary.h>

Inheritance diagram for AmrOpenBoundary< Level >:
Collaboration diagram for AmrOpenBoundary< Level >:

Public Types

enum  ABC {
  Zeroth , First , Second , Third ,
  Robin
}
typedef Level::umap_t umap_t
typedef Level::lo_t lo_t
typedef Level::go_t go_t
typedef Level::scalar_t scalar_t
typedef amr::AmrIntVect_t AmrIntVect_t
typedef Level::basefab_t basefab_t

Public Member Functions

 AmrOpenBoundary ()
void apply (const AmrIntVect_t &iv, const lo_t &dir, umap_t &map, const scalar_t &value, Level *mglevel, const go_t *nr)
bool isBoundary (const AmrIntVect_t &iv, const go_t *nr) const
bool isBoundary (const AmrIntVect_t &iv, const lo_t &dir, const go_t *nr) const
const go_tgetNumberOfPoints () const

Private Member Functions

scalar_t coordinate_m (const AmrIntVect_t &iv, const lo_t &dir, Level *mglevel, const go_t *nr)
void robin_m (const AmrIntVect_t &iv, const lo_t &dir, umap_t &map, const scalar_t &value, Level *mglevel, const go_t *nr)
void abc0_m (const AmrIntVect_t &iv, const lo_t &dir, umap_t &map, const scalar_t &value, Level *mglevel, const go_t *nr)
void abc1_m (const AmrIntVect_t &iv, const lo_t &dir, umap_t &map, const scalar_t &value, Level *mglevel, const go_t *nr)
void abc2_m (const AmrIntVect_t &iv, const lo_t &dir, umap_t &map, const scalar_t &value, Level *mglevel, const go_t *nr)
void abc3_m (const AmrIntVect_t &iv, const lo_t &dir, umap_t &map, const scalar_t &value, Level *mglevel, const go_t *nr)

Private Attributes

int order_m
double dist_m
const go_t nPoints_m
 Number of points used for boundary.

Detailed Description

template<class Level>
class AmrOpenBoundary< Level >

Definition at line 30 of file AmrOpenBoundary.h.

Member Typedef Documentation

◆ AmrIntVect_t

template<class Level>
typedef amr::AmrIntVect_t AmrOpenBoundary< Level >::AmrIntVect_t

Definition at line 37 of file AmrOpenBoundary.h.

◆ basefab_t

template<class Level>
typedef Level::basefab_t AmrBoundary< Level >::basefab_t
inherited

Definition at line 36 of file AmrBoundary.h.

◆ go_t

template<class Level>
typedef Level::go_t AmrOpenBoundary< Level >::go_t

Definition at line 35 of file AmrOpenBoundary.h.

◆ lo_t

template<class Level>
typedef Level::lo_t AmrOpenBoundary< Level >::lo_t

Definition at line 34 of file AmrOpenBoundary.h.

◆ scalar_t

template<class Level>
typedef Level::scalar_t AmrOpenBoundary< Level >::scalar_t

Definition at line 36 of file AmrOpenBoundary.h.

◆ umap_t

template<class Level>
typedef Level::umap_t AmrOpenBoundary< Level >::umap_t

Definition at line 33 of file AmrOpenBoundary.h.

Member Enumeration Documentation

◆ ABC

template<class Level>
enum AmrOpenBoundary::ABC
Enumerator
Zeroth 
First 
Second 
Third 
Robin 

Definition at line 54 of file AmrOpenBoundary.h.

Constructor & Destructor Documentation

◆ AmrOpenBoundary()

template<class Level>
AmrOpenBoundary< Level >::AmrOpenBoundary ( )
inline

Definition at line 41 of file AmrOpenBoundary.h.

References AmrBoundary< Level >::AmrBoundary(), dist_m, order_m, and Robin.

Here is the call graph for this function:

Member Function Documentation

◆ abc0_m()

template<class Level>
void AmrOpenBoundary< Level >::abc0_m ( const AmrIntVect_t & iv,
const lo_t & dir,
umap_t & map,
const scalar_t & value,
Level * mglevel,
const go_t * nr )
private

Asymptotic boundary condition 0th order (ABC0)

Definition at line 202 of file AmrOpenBoundary.h.

References nr.

Referenced by apply().

◆ abc1_m()

template<class Level>
void AmrOpenBoundary< Level >::abc1_m ( const AmrIntVect_t & iv,
const lo_t & dir,
umap_t & map,
const scalar_t & value,
Level * mglevel,
const go_t * nr )
private

Asymptotic boundary condition 1st order (ABC1)

Definition at line 226 of file AmrOpenBoundary.h.

References coordinate_m(), dist_m, nr, and sign().

Referenced by apply().

Here is the call graph for this function:

◆ abc2_m()

template<class Level>
void AmrOpenBoundary< Level >::abc2_m ( const AmrIntVect_t & iv,
const lo_t & dir,
umap_t & map,
const scalar_t & value,
Level * mglevel,
const go_t * nr )
private

Asymptotic boundary condition 2nd order (ABC2)

Definition at line 273 of file AmrOpenBoundary.h.

References coordinate_m(), dist_m, nr, and sign().

Referenced by apply().

Here is the call graph for this function:

◆ abc3_m()

template<class Level>
void AmrOpenBoundary< Level >::abc3_m ( const AmrIntVect_t & iv,
const lo_t & dir,
umap_t & map,
const scalar_t & value,
Level * mglevel,
const go_t * nr )
private

Asymptotic boundary condition 3rd order (ABC3)

Definition at line 318 of file AmrOpenBoundary.h.

References coordinate_m(), nr, and sign().

Referenced by apply().

Here is the call graph for this function:

◆ apply()

template<class Level>
void AmrOpenBoundary< Level >::apply ( const AmrIntVect_t & iv,
const lo_t & dir,
umap_t & map,
const scalar_t & value,
Level * mglevel,
const go_t * nr )
virtual

Apply boundary in a certain direction.

Parameters
ivis the cell where we want to have the boundary value
dirdirection of physical / mesh boundary
mapwith indices global matrix indices and matrix values
valuematrix entry (coefficients)
valueof matrix entry that is supposed for index
nris the number of grid points

Implements AmrBoundary< Level >.

Definition at line 127 of file AmrOpenBoundary.h.

References abc0_m(), abc1_m(), abc2_m(), abc3_m(), First, nr, order_m, Robin, robin_m(), Second, Third, and Zeroth.

Here is the call graph for this function:

◆ coordinate_m()

template<class Level>
AmrOpenBoundary< Level >::scalar_t AmrOpenBoundary< Level >::coordinate_m ( const AmrIntVect_t & iv,
const lo_t & dir,
Level * mglevel,
const go_t * nr )
private

Definition at line 379 of file AmrOpenBoundary.h.

References nr.

Referenced by abc1_m(), abc2_m(), and abc3_m().

◆ getNumberOfPoints()

template<class Level>
const go_t & AmrBoundary< Level >::getNumberOfPoints ( ) const
inlineinherited
Returns
the number of stencil points required

Definition at line 88 of file AmrBoundary.h.

References nPoints_m.

◆ isBoundary() [1/2]

template<class Level>
bool AmrBoundary< Level >::isBoundary ( const AmrIntVect_t & iv,
const go_t * nr ) const
inlineinherited

Check if we are on the physical boundary (all directions)

Parameters
ivcell to check
nris the number of grid points

Definition at line 52 of file AmrBoundary.h.

References isBoundary(), and nr.

Referenced by isBoundary().

Here is the call graph for this function:

◆ isBoundary() [2/2]

template<class Level>
bool AmrBoundary< Level >::isBoundary ( const AmrIntVect_t & iv,
const lo_t & dir,
const go_t * nr ) const
inlineinherited

Check if we are on the physical boundary (certain direction)

Parameters
ivcell to check
nris the number of grid points

Definition at line 63 of file AmrBoundary.h.

References nr.

◆ robin_m()

template<class Level>
void AmrOpenBoundary< Level >::robin_m ( const AmrIntVect_t & iv,
const lo_t & dir,
umap_t & map,
const scalar_t & value,
Level * mglevel,
const go_t * nr )
private

Robin boundary condition

Definition at line 170 of file AmrOpenBoundary.h.

References dist_m, and nr.

Referenced by apply().

Member Data Documentation

◆ dist_m

template<class Level>
double AmrOpenBoundary< Level >::dist_m
private

Definition at line 64 of file AmrOpenBoundary.h.

Referenced by abc1_m(), abc2_m(), AmrOpenBoundary(), and robin_m().

◆ nPoints_m

template<class Level>
const go_t AmrBoundary< Level >::nPoints_m
privateinherited

Number of points used for boundary.

Definition at line 93 of file AmrBoundary.h.

Referenced by AmrBoundary(), and getNumberOfPoints().

◆ order_m

template<class Level>
int AmrOpenBoundary< Level >::order_m
private

Definition at line 63 of file AmrOpenBoundary.h.

Referenced by AmrOpenBoundary(), and apply().


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