Canoe
Comprehensive Atmosphere N' Ocean Engine
ImplicitSolver Class Reference

#include <implicit_solver.hpp>

Public Member Functions

 ImplicitSolver (MeshBlock *pmb, ParameterInput *pin)
 
 ~ImplicitSolver ()
 
void SetDirection (CoordinateDirection dir)
 
int GetImplicitFlag ()
 
void FindNeighbors ()
 
int CreateMPITag (int lid, int bufid, std::string phy)
 
void PartialCorrection (AthenaArray< Real > &du, AthenaArray< Real > const &w, Real dt)
 
void FullCorrection (AthenaArray< Real > &du, AthenaArray< Real > const &w, Real dt)
 
template<typename T1 , typename T2 >
void ForwardSweep (std::vector< T1 > &a, std::vector< T1 > &b, std::vector< T1 > &c, std::vector< T2 > &delta, std::vector< T2 > &corr, Real dt, int k, int j, int il, int iu)
 
template<typename T1 , typename T2 >
void BackwardSubstitution (std::vector< T1 > &a, std::vector< T2 > &delta, int kl, int ku, int jl, int ju, int il, int iu)
 
template<typename T1 , typename T2 >
void PeriodicForwardSweep (std::vector< T1 > &a, std::vector< T1 > &b, std::vector< T1 > &c, std::vector< T2 > &corr, Real dt, int k, int j, int il, int iu)
 
template<typename T1 , typename T2 >
void PeriodicBackwardSubstitution (std::vector< T1 > &a, std::vector< T1 > &c, std::vector< T2 > &delta, int kl, int ku, int jl, int ju, int il, int iu)
 
template<typename T >
void JacobianGravityCoriolis (T &jac, Real const prim[], int k, int j, int i)
 
template<typename T >
void SendBuffer (T const &a, int k, int j, NeighborBlock nb)
 
template<typename T1 , typename T2 >
void SendBuffer (T1 const &a, T2 const &b, int k, int j, NeighborBlock nb)
 
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 >
void SendBuffer (T1 const &a, T2 const &b, T3 const &c, T4 const &d, T5 const &e, T6 const &f, int k, int j, NeighborBlock ntop)
 
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 >
void SendBuffer (T1 const &a, T2 const &b, T3 const &c, T4 const &d, T5 const &e, T6 const &f, T7 const &g, int k, int j, NeighborBlock ntop)
 
template<typename T >
void RecvBuffer (T &a, int k, int j, NeighborBlock nb)
 
template<typename T1 , typename T2 >
void RecvBuffer (T1 &a, T2 &b, int k, int j, NeighborBlock nb)
 
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 >
void RecvBuffer (T1 &a, T2 &b, T3 &c, T4 &d, T5 &e, T6 &f, int k, int j, NeighborBlock nb)
 
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 >
void RecvBuffer (T1 &a, T2 &b, T3 &c, T4 &d, T5 &e, T6 &f, T7 &g, int k, int j, NeighborBlock nb)
 
template<typename T1 , typename T2 >
void SaveCoefficients (std::vector< T1 > &a, std::vector< T2 > &b, int k, int j, int il, int iu)
 
template<typename T1 , typename T2 , typename T3 , typename T4 >
void SaveCoefficients (std::vector< T1 > &a, std::vector< T2 > &b, std::vector< T3 > &c, std::vector< T4 > &d, int k, int j, int il, int iu)
 
template<typename T1 , typename T2 >
void LoadCoefficients (std::vector< T1 > &a, std::vector< T2 > &b, int k, int j, int il, int iu)
 
template<typename T1 , typename T2 , typename T3 , typename T4 >
void LoadCoefficients (std::vector< T1 > &a, std::vector< T2 > &b, std::vector< T3 > &c, std::vector< T4 > &d, int k, int j, int il, int iu)
 

Public Attributes

EIGEN_MAKE_ALIGNED_OPERATOR_NEW bool has_top_neighbor
 
EIGEN_MAKE_ALIGNED_OPERATOR_NEW bool has_bot_neighbor
 
bool first_block
 
bool last_block
 
bool periodic_boundary
 
bool pole_at_bot
 
bool pole_at_top
 
NeighborBlock tblock
 
NeighborBlock bblock
 
int implicit_flag
 

Private Attributes

MeshBlock const * pmy_block_
 
CoordinateDirection mydir_
 
Real *** buffer_
 
AthenaArray< Real > du_
 
AthenaArray< Real > coefficients_
 
Eigen::Matrix< Real, 5, 5 > p2_
 
Eigen::Matrix< Real, 5, 5 > p3_
 

Friends

class Hydro
 

Detailed Description

Definition at line 28 of file implicit_solver.hpp.

Constructor & Destructor Documentation

◆ ImplicitSolver()

ImplicitSolver::ImplicitSolver ( MeshBlock *  pmb,
ParameterInput *  pin 
)

Definition at line 34 of file implicit_solver.cpp.

◆ ~ImplicitSolver()

ImplicitSolver::~ImplicitSolver ( )

Definition at line 85 of file implicit_solver.cpp.

Member Function Documentation

◆ SetDirection()

void ImplicitSolver::SetDirection ( CoordinateDirection  dir)

Definition at line 106 of file implicit_solver.cpp.

◆ GetImplicitFlag()

int ImplicitSolver::GetImplicitFlag ( )
inline

Definition at line 45 of file implicit_solver.hpp.

◆ FindNeighbors()

void ImplicitSolver::FindNeighbors ( )

Definition at line 146 of file implicit_solver.cpp.

◆ CreateMPITag()

int ImplicitSolver::CreateMPITag ( int  lid,
int  bufid,
std::string  phy 
)

Definition at line 306 of file implicit_solver.cpp.

◆ PartialCorrection()

void ImplicitSolver::PartialCorrection ( AthenaArray< Real > &  du,
AthenaArray< Real > const &  w,
Real  dt 
)

Definition at line 26 of file partial_correction.cpp.

◆ FullCorrection()

void ImplicitSolver::FullCorrection ( AthenaArray< Real > &  du,
AthenaArray< Real > const &  w,
Real  dt 
)

Definition at line 32 of file full_correction.cpp.

◆ ForwardSweep()

template<typename T1 , typename T2 >
void ImplicitSolver::ForwardSweep ( std::vector< T1 > &  a,
std::vector< T1 > &  b,
std::vector< T1 > &  c,
std::vector< T2 > &  delta,
std::vector< T2 > &  corr,
Real  dt,
int  k,
int  j,
int  il,
int  iu 
)

Definition at line 15 of file forward_backward.hpp.

◆ BackwardSubstitution()

template<typename T1 , typename T2 >
void ImplicitSolver::BackwardSubstitution ( std::vector< T1 > &  a,
std::vector< T2 > &  delta,
int  kl,
int  ku,
int  jl,
int  ju,
int  il,
int  iu 
)

Definition at line 87 of file forward_backward.hpp.

◆ PeriodicForwardSweep()

template<typename T1 , typename T2 >
void ImplicitSolver::PeriodicForwardSweep ( std::vector< T1 > &  a,
std::vector< T1 > &  b,
std::vector< T1 > &  c,
std::vector< T2 > &  corr,
Real  dt,
int  k,
int  j,
int  il,
int  iu 
)

Definition at line 15 of file periodic_forward_backward.hpp.

◆ PeriodicBackwardSubstitution()

template<typename T1 , typename T2 >
void ImplicitSolver::PeriodicBackwardSubstitution ( std::vector< T1 > &  a,
std::vector< T1 > &  c,
std::vector< T2 > &  delta,
int  kl,
int  ku,
int  jl,
int  ju,
int  il,
int  iu 
)

Definition at line 176 of file periodic_forward_backward.hpp.

◆ JacobianGravityCoriolis()

template<typename T >
void ImplicitSolver::JacobianGravityCoriolis ( T &  jac,
Real const  prim[],
int  k,
int  j,
int  i 
)

Definition at line 14 of file forcing_jacobians.hpp.

◆ SendBuffer() [1/4]

template<typename T >
void ImplicitSolver::SendBuffer ( T const &  a,
int  k,
int  j,
NeighborBlock  nb 
)

Definition at line 27 of file communication.hpp.

◆ SendBuffer() [2/4]

template<typename T1 , typename T2 >
void ImplicitSolver::SendBuffer ( T1 const &  a,
T2 const &  b,
int  k,
int  j,
NeighborBlock  nb 
)

Definition at line 48 of file communication.hpp.

◆ SendBuffer() [3/4]

template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 >
void ImplicitSolver::SendBuffer ( T1 const &  a,
T2 const &  b,
T3 const &  c,
T4 const &  d,
T5 const &  e,
T6 const &  f,
int  k,
int  j,
NeighborBlock  ntop 
)

Definition at line 72 of file communication.hpp.

◆ SendBuffer() [4/4]

template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 >
void ImplicitSolver::SendBuffer ( T1 const &  a,
T2 const &  b,
T3 const &  c,
T4 const &  d,
T5 const &  e,
T6 const &  f,
T7 const &  g,
int  k,
int  j,
NeighborBlock  ntop 
)

Definition at line 110 of file communication.hpp.

◆ RecvBuffer() [1/4]

template<typename T >
void ImplicitSolver::RecvBuffer ( T &  a,
int  k,
int  j,
NeighborBlock  nb 
)

Definition at line 148 of file communication.hpp.

◆ RecvBuffer() [2/4]

template<typename T1 , typename T2 >
void ImplicitSolver::RecvBuffer ( T1 &  a,
T2 &  b,
int  k,
int  j,
NeighborBlock  nb 
)

Definition at line 168 of file communication.hpp.

◆ RecvBuffer() [3/4]

template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 >
void ImplicitSolver::RecvBuffer ( T1 &  a,
T2 &  b,
T3 &  c,
T4 &  d,
T5 &  e,
T6 &  f,
int  k,
int  j,
NeighborBlock  nb 
)

Definition at line 190 of file communication.hpp.

◆ RecvBuffer() [4/4]

template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 >
void ImplicitSolver::RecvBuffer ( T1 &  a,
T2 &  b,
T3 &  c,
T4 &  d,
T5 &  e,
T6 &  f,
T7 &  g,
int  k,
int  j,
NeighborBlock  nb 
)

Definition at line 226 of file communication.hpp.

◆ SaveCoefficients() [1/2]

template<typename T1 , typename T2 >
void ImplicitSolver::SaveCoefficients ( std::vector< T1 > &  a,
std::vector< T2 > &  b,
int  k,
int  j,
int  il,
int  iu 
)

Definition at line 263 of file communication.hpp.

◆ SaveCoefficients() [2/2]

template<typename T1 , typename T2 , typename T3 , typename T4 >
void ImplicitSolver::SaveCoefficients ( std::vector< T1 > &  a,
std::vector< T2 > &  b,
std::vector< T3 > &  c,
std::vector< T4 > &  d,
int  k,
int  j,
int  il,
int  iu 
)

Definition at line 273 of file communication.hpp.

◆ LoadCoefficients() [1/2]

template<typename T1 , typename T2 >
void ImplicitSolver::LoadCoefficients ( std::vector< T1 > &  a,
std::vector< T2 > &  b,
int  k,
int  j,
int  il,
int  iu 
)

Definition at line 287 of file communication.hpp.

◆ LoadCoefficients() [2/2]

template<typename T1 , typename T2 , typename T3 , typename T4 >
void ImplicitSolver::LoadCoefficients ( std::vector< T1 > &  a,
std::vector< T2 > &  b,
std::vector< T3 > &  c,
std::vector< T4 > &  d,
int  k,
int  j,
int  il,
int  iu 
)

Definition at line 297 of file communication.hpp.

Friends And Related Function Documentation

◆ Hydro

friend class Hydro
friend

Definition at line 29 of file implicit_solver.hpp.

Member Data Documentation

◆ has_top_neighbor

EIGEN_MAKE_ALIGNED_OPERATOR_NEW bool ImplicitSolver::has_top_neighbor

Definition at line 34 of file implicit_solver.hpp.

◆ has_bot_neighbor

EIGEN_MAKE_ALIGNED_OPERATOR_NEW bool ImplicitSolver::has_bot_neighbor

Definition at line 34 of file implicit_solver.hpp.

◆ first_block

bool ImplicitSolver::first_block

Definition at line 35 of file implicit_solver.hpp.

◆ last_block

bool ImplicitSolver::last_block

Definition at line 35 of file implicit_solver.hpp.

◆ periodic_boundary

bool ImplicitSolver::periodic_boundary

Definition at line 36 of file implicit_solver.hpp.

◆ pole_at_bot

bool ImplicitSolver::pole_at_bot

Definition at line 37 of file implicit_solver.hpp.

◆ pole_at_top

bool ImplicitSolver::pole_at_top

Definition at line 37 of file implicit_solver.hpp.

◆ tblock

NeighborBlock ImplicitSolver::tblock

Definition at line 38 of file implicit_solver.hpp.

◆ bblock

NeighborBlock ImplicitSolver::bblock

Definition at line 38 of file implicit_solver.hpp.

◆ implicit_flag

int ImplicitSolver::implicit_flag

Definition at line 39 of file implicit_solver.hpp.

◆ pmy_block_

MeshBlock const* ImplicitSolver::pmy_block_
private

Definition at line 143 of file implicit_solver.hpp.

◆ mydir_

CoordinateDirection ImplicitSolver::mydir_
private

Definition at line 145 of file implicit_solver.hpp.

◆ buffer_

Real*** ImplicitSolver::buffer_
private

Definition at line 149 of file implicit_solver.hpp.

◆ du_

AthenaArray<Real> ImplicitSolver::du_
private

Definition at line 151 of file implicit_solver.hpp.

◆ coefficients_

AthenaArray<Real> ImplicitSolver::coefficients_
private

Definition at line 153 of file implicit_solver.hpp.

◆ p2_

Eigen::Matrix<Real, 5, 5> ImplicitSolver::p2_
private

Definition at line 155 of file implicit_solver.hpp.

◆ p3_

Eigen::Matrix<Real, 5, 5> ImplicitSolver::p3_
private

Definition at line 155 of file implicit_solver.hpp.


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