finite difference method: second centeral diff More...
#include <FDMSecondCenteralDiff.hpp>
Public Member Functions | |
virtual void | updateAllCoef () |
update all coefficients of FDM More... | |
auto & | updateCoefDW () |
update the coefs of the first derivation at Rw More... | |
auto & | updateCoefDP () |
update the coefs of the first derivation at Rp More... | |
auto & | updateCoefDDW () |
update the coefs of the second derivation at Rw More... | |
auto & | updateCoefDDP () |
update the coefs of the second derivation at Rp More... | |
auto & | updateCoefInterpW2P () |
update the coefs of interpolation from Rw to Rp More... | |
auto & | updateCoefInterpP2W () |
update the coefs of interpolation from Rp to Rw More... | |
auto & | updateCoefDW2P () |
update the coefs of the first deriation from Rw to Rp More... | |
auto & | updateCoefDP2W () |
update the coefs of the first deriation from Rp to Rw More... | |
auto & | updateCoefHelm () |
update the coefs of helmholtz equation More... | |
auto & | updateStride (int sd_p, int sd_w) |
update the stride More... | |
auto & | updateStrideIn (int sd_p) |
auto & | updateStrideOut (int sd_w) |
template<typename T > | |
void | diffAtRw (T in[], T out[], Real alpha=1., Real beta=0.) |
Diff at Rw. More... | |
template<int Dir, typename T_Field > | |
void | diffAtRwForField (T_Field &in, T_Field &out, Real alpha=1.0, Real beta=0.) |
template<typename T > | |
void | diffAtRwxA (T in[], T xA[], T out[], Real alpha=1., Real beta=0.) |
template<int Dir, typename T_Field > | |
void | diffAtRwxAForField (T_Field &in, T_Field &xA, T_Field &out, Real alpha=1.0, Real beta=0.) |
template<typename T > | |
void | diffAtRp (T in[], T out[], Real alpha=1., Real beta=0.) |
Diff at Rp. More... | |
template<int Dir, typename T_Field > | |
void | diffAtRpForField (T_Field &in, T_Field &out, Real alpha=1.0, Real beta=0.) |
template<typename T > | |
void | diffAtRpxA (T in[], T xA[], T out[], Real alpha=1., Real beta=0.) |
template<int Dir, typename T_Field > | |
void | diffAtRpxAForField (T_Field &in, T_Field &xA, T_Field &out, Real alpha=1.0, Real beta=0.) |
template<typename T > | |
void | diff2AtRw (T in[], T out[], Real alpha=1., Real beta=0.) |
second Diff at Rw More... | |
template<int Dir, typename T_Field > | |
void | diff2AtRwForField (T_Field &in, T_Field &out, Real alpha=1.0, Real beta=0.) |
template<typename T > | |
void | diff2AtRp (T in[], T out[], Real alpha=1., Real beta=0.) |
Second Diff at Rp. More... | |
template<int Dir, typename T_Field > | |
void | diff2AtRpForField (T_Field &in, T_Field &out, Real alpha=1.0, Real beta=0.) |
template<typename T > | |
void | interpFromRwToRp (T in[], T out[], Real alpha=1., Real beta=0.) |
template<int Dir, typename T_Field > | |
void | interpFromRwToRpForField (T_Field &in, T_Field &out, Real alpha=1.0, Real beta=0.) |
template<typename T > | |
void | interpFromRwToRpxA (T in[], T xA[], T out[], Real alpha=1., Real beta=0.) |
template<int Dir, typename T_Field > | |
void | interpFromRwToRpxAForField (T_Field &in, T_Field &xA, T_Field &out, Real alpha=1.0, Real beta=0.) |
template<typename T > | |
void | interpFromRpToRw (T in[], T out[], Real alpha=1., Real beta=0.) |
template<int Dir, typename T_Field > | |
void | interpFromRpToRwForField (T_Field &in, T_Field &out, Real alpha=1.0, Real beta=0.) |
template<typename T > | |
void | interpFromRpToRwxA (T in[], T xA[], T out[], Real alpha=1., Real beta=0.) |
template<int Dir, typename T_Field > | |
void | interpFromRpToRwxAForField (T_Field &in, T_Field &xA, T_Field &out, Real alpha=1.0, Real beta=0.) |
template<typename T > | |
void | diffFromRpToRw (T in[], T out[], Real alpha=1., Real beta=0.) |
template<int Dir, typename T_Field > | |
void | diffFromRpToRwForField (T_Field &in, T_Field &out, Real alpha=1.0, Real beta=0.) |
template<typename T > | |
void | diffFromRwToRp (T in[], T out[], Real alpha=1., Real beta=0.) |
template<int Dir, typename T_Field > | |
void | diffFromRwToRpForField (T_Field &in, T_Field &out, Real alpha=1.0, Real beta=0.) |
template<typename T0 , typename T1 > | |
void | solveHelmholtzAtRp (T0 lam[], T1 rhs[], T1 out[], const blockelm::BoundaryType btype0=blockelm::BoundaryType::Neumann, const T0 bval0=0., const blockelm::BoundaryType btype1=blockelm::BoundaryType::Neumann, const T0 bval1=0.) |
Solve helmholtz equation f''+lam f=rhs. More... | |
template<typename T0 , typename T1 > | |
void | solveHelmholtzAtRw (T0 lam[], T1 rhs[], T1 out[], const blockelm::BoundaryType btype0=blockelm::BoundaryType::Neumann, const T0 bval0=0., const blockelm::BoundaryType btype1=blockelm::BoundaryType::Neumann, const T0 bval1=0.) |
template<typename T0 , typename T1 > | |
void | explicitBoundaryAtRp (T0 in[], const blockelm::BoundaryType btype0=blockelm::BoundaryType::Neumann, const T1 bval0=0., const blockelm::BoundaryType btype1=blockelm::BoundaryType::Neumann, const T1 bval1=0.) |
template<int Dir, typename T_Field , typename T1 > | |
void | explicitBoundaryAtRpForField (T_Field &in, const blockelm::BoundaryType btype0=blockelm::BoundaryType::Neumann, const T1 bval0=0., const blockelm::BoundaryType btype1=blockelm::BoundaryType::Neumann, const T1 bval1=0.) |
template<int Dir, typename T_Field > | |
void | explicitBoundaryAtRpForField (T_Field &in, auto &boundary0, auto &boundary1) |
template<typename T0 , typename T1 > | |
void | explicitBoundaryAtRw (T0 in[], const blockelm::BoundaryType btype0=blockelm::BoundaryType::Neumann, const T1 bval0=0., const blockelm::BoundaryType btype1=blockelm::BoundaryType::Neumann, const T1 bval1=0.) |
template<int Dir, typename T_Field , typename T1 > | |
void | explicitBoundaryAtRwForField (T_Field &in, const blockelm::BoundaryType btype0=blockelm::BoundaryType::Neumann, const T1 bval0=0., const blockelm::BoundaryType btype1=blockelm::BoundaryType::Neumann, const T1 bval1=0.) |
template<int Dir, typename T_Field > | |
void | explicitBoundaryAtRwForField (T_Field &in, auto &boundary0, auto &boundary1) |
![]() | |
auto & | setMesh (const int num, const Real R[], FDMWPTag tag) |
auto & | setMeshFromRw (const int num, const Real R[]) |
auto & | updateGhostMesh (int ghost) |
Additional Inherited Members | |
![]() | |
int | nm |
int | gh = 1 |
blin::Array2r | coef_dw |
blin::Array2r | coef_dp |
blin::Array2r | coef_dw2p |
blin::Array2r | coef_dp2w |
blin::Array2r | coef_ddw |
blin::Array2r | coef_ddp |
blin::Array2r | coef_interp_w2p |
blin::Array2r | coef_interp_p2w |
blin::Array2r | coef_ddw2p |
blin::Array2r | coef_ddp2w |
blin::Array1r | xw |
blin::Array1r | xp |
blin::Array1r | helm_u |
blin::Array1r | helm_l |
int | dist |
int | stride_in = 1 |
int | stride_out = 1 |
finite difference method: second centeral diff
Type |
|
inline |
Second Diff at Rp.
T |
in | |
out | |
alpha | |
beta |
References fdm::FDMDiffBase::coef_ddp, fdm::FDMDiffBase::gh, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::stride_in, and fdm::FDMDiffBase::stride_out.
|
inline |
References fdm::FDMSecondCenteralDiff< Type >::diff2AtRp(), and fdm::FDMSecondCenteralDiff< Type >::updateStride().
|
inline |
second Diff at Rw
T |
in | |
out | |
alpha | |
beta |
References fdm::FDMDiffBase::coef_ddw, fdm::FDMDiffBase::gh, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::stride_in, and fdm::FDMDiffBase::stride_out.
|
inline |
References fdm::FDMSecondCenteralDiff< Type >::diff2AtRw(), and fdm::FDMSecondCenteralDiff< Type >::updateStride().
|
inline |
Diff at Rp.
T |
in | |
out | |
alpha | |
beta |
References fdm::FDMDiffBase::coef_dp, fdm::FDMDiffBase::gh, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::stride_in, and fdm::FDMDiffBase::stride_out.
|
inline |
References fdm::FDMSecondCenteralDiff< Type >::diffAtRp(), and fdm::FDMSecondCenteralDiff< Type >::updateStride().
|
inline |
References fdm::FDMDiffBase::coef_dp, fdm::FDMDiffBase::gh, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::stride_in, and fdm::FDMDiffBase::stride_out.
|
inline |
References fdm::FDMSecondCenteralDiff< Type >::diffAtRpxA(), and fdm::FDMSecondCenteralDiff< Type >::updateStride().
|
inline |
Diff at Rw.
T |
in | |
out | |
alpha | |
beta |
References fdm::FDMDiffBase::coef_dw, fdm::FDMDiffBase::gh, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::stride_in, and fdm::FDMDiffBase::stride_out.
|
inline |
References fdm::FDMSecondCenteralDiff< Type >::diffAtRw(), and fdm::FDMSecondCenteralDiff< Type >::updateStride().
|
inline |
References fdm::FDMDiffBase::coef_dw, fdm::FDMDiffBase::gh, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::stride_in, and fdm::FDMDiffBase::stride_out.
|
inline |
References fdm::FDMSecondCenteralDiff< Type >::diffAtRwxA(), and fdm::FDMSecondCenteralDiff< Type >::updateStride().
|
inline |
References fdm::FDMDiffBase::coef_dp2w, fdm::FDMDiffBase::gh, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::stride_in, and fdm::FDMDiffBase::stride_out.
|
inline |
References fdm::FDMSecondCenteralDiff< Type >::diffFromRpToRw(), and fdm::FDMSecondCenteralDiff< Type >::updateStride().
|
inline |
References fdm::FDMDiffBase::coef_dw2p, fdm::FDMDiffBase::gh, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::stride_in, and fdm::FDMDiffBase::stride_out.
|
inline |
References fdm::FDMSecondCenteralDiff< Type >::diffFromRwToRp(), and fdm::FDMSecondCenteralDiff< Type >::updateStride().
|
inline |
References blockelm::Dirichlet, fdm::FDMDiffBase::gh, blockelm::LR, blockelm::Neumann, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::stride_in, and fdm::FDMDiffBase::xp.
|
inline |
References fdm::FDMSecondCenteralDiff< Type >::explicitBoundaryAtRp(), and fdm::FDMSecondCenteralDiff< Type >::updateStrideIn().
|
inline |
References fdm::FDMSecondCenteralDiff< Type >::explicitBoundaryAtRp(), and fdm::FDMSecondCenteralDiff< Type >::updateStrideIn().
|
inline |
References blockelm::Dirichlet, fdm::FDMDiffBase::gh, blockelm::LR, blockelm::Neumann, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::stride_in, and fdm::FDMDiffBase::xw.
|
inline |
References fdm::FDMSecondCenteralDiff< Type >::explicitBoundaryAtRw(), and fdm::FDMSecondCenteralDiff< Type >::updateStrideIn().
|
inline |
References fdm::FDMSecondCenteralDiff< Type >::explicitBoundaryAtRw(), and fdm::FDMSecondCenteralDiff< Type >::updateStrideIn().
|
inline |
References fdm::FDMDiffBase::coef_interp_p2w, fdm::FDMDiffBase::gh, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::stride_in, and fdm::FDMDiffBase::stride_out.
|
inline |
References fdm::FDMSecondCenteralDiff< Type >::interpFromRpToRw(), and fdm::FDMSecondCenteralDiff< Type >::updateStride().
|
inline |
References fdm::FDMDiffBase::coef_interp_p2w, fdm::FDMDiffBase::gh, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::stride_in, and fdm::FDMDiffBase::stride_out.
|
inline |
References fdm::FDMSecondCenteralDiff< Type >::interpFromRpToRwxA(), and fdm::FDMSecondCenteralDiff< Type >::updateStride().
|
inline |
References fdm::FDMDiffBase::coef_interp_w2p, fdm::FDMDiffBase::gh, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::stride_in, and fdm::FDMDiffBase::stride_out.
|
inline |
References fdm::FDMSecondCenteralDiff< Type >::interpFromRwToRp(), and fdm::FDMSecondCenteralDiff< Type >::updateStride().
|
inline |
References fdm::FDMDiffBase::coef_interp_w2p, fdm::FDMDiffBase::gh, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::stride_in, and fdm::FDMDiffBase::stride_out.
|
inline |
References fdm::FDMSecondCenteralDiff< Type >::interpFromRwToRpxA(), and fdm::FDMSecondCenteralDiff< Type >::updateStride().
|
inline |
Solve helmholtz equation f''+lam f=rhs.
T | |
T1 |
lam | |
rhs | |
out | f |
btype0 | boundary type for lower boundary |
bval0 | boundary value for lower boundary |
btype1 | boundary type for upper boundary |
bval1 | boudnary value for upper boundary |
References fdm::FDMDiffBase::coef_ddp, blockelm::Dirichlet, fdm::FDMSecondCenteralDiff< Type >::explicitBoundaryAtRp(), fdm::FDMDiffBase::gh, fdm::FDMDiffBase::helm_l, fdm::FDMDiffBase::helm_u, blockelm::Neumann, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::stride_in, fdm::FDMDiffBase::stride_out, and fdm::FDMDiffBase::xp.
|
inline |
References fdm::FDMDiffBase::coef_ddw, blockelm::Dirichlet, fdm::FDMSecondCenteralDiff< Type >::explicitBoundaryAtRw(), fdm::FDMDiffBase::gh, fdm::FDMDiffBase::helm_l, fdm::FDMDiffBase::helm_u, blockelm::Neumann, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::stride_in, fdm::FDMDiffBase::stride_out, and fdm::FDMDiffBase::xw.
|
inlinevirtual |
update all coefficients of FDM
Implements fdm::FDMDiffBase.
References fdm::FDMSecondCenteralDiff< Type >::updateCoefDW().
|
inline |
update the coefs of the second derivation at Rp
References fdm::FDMDiffBase::coef_ddp, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::xp, and fdm::FDMDiffBase::xw.
|
inline |
update the coefs of the second derivation at Rw
References fdm::FDMDiffBase::coef_ddw, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::xp, and fdm::FDMDiffBase::xw.
|
inline |
update the coefs of the first derivation at Rp
References fdm::FDMDiffBase::coef_dp, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::xp, and fdm::FDMDiffBase::xw.
|
inline |
update the coefs of the first deriation from Rp to Rw
References fdm::FDMDiffBase::coef_dp2w, fdm::FDMDiffBase::nm, and fdm::FDMDiffBase::xp.
|
inline |
update the coefs of the first derivation at Rw
References fdm::FDMDiffBase::coef_dw, fdm::FDMDiffBase::nm, and fdm::FDMDiffBase::xp.
|
inline |
update the coefs of the first deriation from Rw to Rp
References fdm::FDMDiffBase::coef_dw2p, fdm::FDMDiffBase::nm, and fdm::FDMDiffBase::xw.
|
inline |
update the coefs of helmholtz equation
f''+kf=g
References fdm::FDMDiffBase::helm_l, fdm::FDMDiffBase::helm_u, and fdm::FDMDiffBase::nm.
|
inline |
update the coefs of interpolation from Rp to Rw
References fdm::FDMDiffBase::coef_interp_p2w, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::xp, and fdm::FDMDiffBase::xw.
|
inline |
update the coefs of interpolation from Rw to Rp
References fdm::FDMDiffBase::coef_interp_w2p, fdm::FDMDiffBase::nm, fdm::FDMDiffBase::xp, and fdm::FDMDiffBase::xw.
|
inline |
update the stride
sd_p | stride for variable at Rp |
sd_w | stride for variable at Rw |
References fdm::FDMDiffBase::stride_in, and fdm::FDMDiffBase::stride_out.
|
inline |
|
inline |
References fdm::FDMDiffBase::stride_out.