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) |
Public Member Functions inherited from fdm::FDMDiffBase | |
| 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 | |
Public Attributes inherited from fdm::FDMDiffBase | |
| 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.