Commit a6e89868 authored by Spencer Sherwin's avatar Spencer Sherwin

Merge branch 'fix/IncNS_Stability_ImagShift_OnlyWithHomoSingleMode' into 'master'

Add a test in an Arpack driver and a comment in documentation. Minor documentation fix

See merge request nektar/nektar!928
parents ff75dfa7 0fbfbf33
...@@ -133,6 +133,9 @@ v4.4.2 ...@@ -133,6 +133,9 @@ v4.4.2
- Updated PETSc to 3.7.7 (!916) - Updated PETSc to 3.7.7 (!916)
- Fix typcase to an integer which set Lz < 1 to zero when postprocess hdf5 output (!9922) - Fix typcase to an integer which set Lz < 1 to zero when postprocess hdf5 output (!9922)
**IncNavierStokesSolver**
- Add a test for imaginary shift to be only used with Homogenous and SingleMode on. (!928)
**NekMesh** **NekMesh**
- Fix missing periodic boundary meshing and boundary layer mesh adjustment - Fix missing periodic boundary meshing and boundary layer mesh adjustment
configurations in 2D (!859) configurations in 2D (!859)
...@@ -142,6 +145,7 @@ v4.4.2 ...@@ -142,6 +145,7 @@ v4.4.2
- Fix sign of the viscous term in the velocity correction scheme equations in - Fix sign of the viscous term in the velocity correction scheme equations in
the user guide (!856) the user guide (!856)
- Fixed anonymous clone URL (!909) - Fixed anonymous clone URL (!909)
- Add information on the limitations of Imaginary Shift for stability. (!928)
**FieldConvert** **FieldConvert**
- Allow passing input name with trailing separator (!879) - Allow passing input name with trailing separator (!879)
......
...@@ -1165,8 +1165,9 @@ The following parameters can be specified in the \texttt{PARAMETERS} section of ...@@ -1165,8 +1165,9 @@ The following parameters can be specified in the \texttt{PARAMETERS} section of
\item \inltt{Re}: sets the Reynolds number \item \inltt{Re}: sets the Reynolds number
\item \inltt{Kinvis}: sets the kinematic viscosity $\nu$. \item \inltt{Kinvis}: sets the kinematic viscosity $\nu$.
\item \inltt{kdim}: sets the dimension of the Krylov subspace $\kappa$. Can be used in: \inltt{ModifiedArnoldi} and \inltt{Arpack}. Default value: 16. \item \inltt{kdim}: sets the dimension of the Krylov subspace $\kappa$. Can be used in: \inltt{ModifiedArnoldi} and \inltt{Arpack}. Default value: 16.
\item \inltt{evtol}: sets the tolerance of the eigenvalues. Can be used in: \item \inltt{imagShift}: provide an imaginary shift to the direct sovler eigenvalue problem by the specified value. \item \inltt{evtol}: sets the tolerance of the eigenvalues. Can be used in: \item \inltt{imagShift}:
ltt{ModifiedArnoldi} and \inltt{Arpack}. Default value: $10^{-6}$. provide an imaginary shift to the direct solver eigenvalue problem by the specified value.
\inltt{ModifiedArnoldi} and \inltt{Arpack}. Default value: $0.0$. Works only with \inltt{Homogeneous} set to \inltt{1D} and inltt{ModeType} set to \inltt{SingleMode}.
\item \inltt{nits}: sets the maximum number of iterations. Can be used in: \inltt{ModifiedArnoldi} and \inltt{Arpack}. Default value: 500. \item \inltt{nits}: sets the maximum number of iterations. Can be used in: \inltt{ModifiedArnoldi} and \inltt{Arpack}. Default value: 500.
\item \inltt{LZ}: sets the length in the spanswise direction $L_z$. Can be used in \inltt{Homogeneous} set to \inltt{1D}. Default value: 1. \item \inltt{LZ}: sets the length in the spanswise direction $L_z$. Can be used in \inltt{Homogeneous} set to \inltt{1D}. Default value: 1.
\item \inltt{HomModesZ}: sets the number of planes in the homogeneous directions. Can be used in \inltt{Homogeneous} set to \inltt{1D} and \inltt{ModeType} set to \inltt{MultipleModes}. \item \inltt{HomModesZ}: sets the number of planes in the homogeneous directions. Can be used in \inltt{Homogeneous} set to \inltt{1D} and \inltt{ModeType} set to \inltt{MultipleModes}.
......
...@@ -109,7 +109,21 @@ void DriverArnoldi::v_InitObject(ostream &out) ...@@ -109,7 +109,21 @@ void DriverArnoldi::v_InitObject(ostream &out)
m_session->LoadParameter("realShift", m_realShift, 0.0); m_session->LoadParameter("realShift", m_realShift, 0.0);
m_equ[0]->SetLambda(m_realShift); m_equ[0]->SetLambda(m_realShift);
m_session->LoadParameter("imagShift", m_imagShift, 0.0); m_session->LoadParameter("imagShift",m_imagShift,0.0);
// The imaginary shift is applied at system assembly
// Only if using HOMOGENEOUS expansion and ModeType set to SingleMode
if(m_imagShift != 0.0)
{
if(!m_session->DefinesSolverInfo("HOMOGENEOUS")&&!m_session->DefinesSolverInfo("ModeType"))
{
NEKERROR(ErrorUtil::efatal, "Imaginary shift only supported with HOMOGENEOUS expansion and ModeType set to SingleMode");
}
else if(!boost::iequals(m_session->GetSolverInfo("ModeType"),"SingleMode"))
{
NEKERROR(ErrorUtil::efatal, "Imaginary shift only supported with HOMOGENEOUS expansion and ModeType set to SingleMode");
}
}
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment