The logic of using SVV for Q3D should be corrected.
I guess the logic of using SVV for Q3D has some problems. A simpler logic should be used.
-
No matter if we use Q3D SVV, We should have the same logic for SpectralVanishingViscositySpectralHP and SpectralVanishingViscosity.
-
The logic for switching on Q3D SVV is problematic. It caused for some configuratios, no matter what cutoff or damping is used, there is no effect.
I think these have already caused the blow-up of some calculations.
======================================================================= ......... ......... Smoothing-SpecHP: SVV (spectral/hp DG Kernel (diff coeff = 100*Uh/p))
Smoothing-Homo1D: SVV (Homogeneous1D - Exp Kernel(cut-off = 0.5, diff coeff = 100))
=======================================================================
no H1D svv SVV H1D is off .......
Smoothing-Homo1D is on. But did not set up the coefficients.
Monitoring the logic by using "cout"
// Case of only Homo1D kernel if(m_useSpecVanVisc == false) { m_session->MatchSolverInfo("SpectralVanishingViscosityHomo1D", "True", m_useHomo1DSpecVanVisc, false); if(m_useHomo1DSpecVanVisc == false) { m_session->MatchSolverInfo("SpectralVanishingViscosityHomo1D", "ExpKernel", m_useHomo1DSpecVanVisc, false); } cout << "H1D svv" << endl; } else { bool testForFalse; // Case where Homo1D is turned off but has been turned on // impliictly by SpectralVanishingViscosity solver info m_session->MatchSolverInfo("SpectralVanishingViscosityHomo1D", "False", testForFalse, false); if(testForFalse) { m_useHomo1DSpecVanVisc = false; } cout << "no H1D svv" << endl; }
if (!m_useHomo1DSpecVanVisc)
{
cout<< " SVV H1D is off " <<endl;
}
m_session->LoadParameter("SVVCutoffRatio",m_sVVCutoffRatio,0.75);
m_session->LoadParameter("SVVCutoffRatioHomo1D",m_sVVCutoffRatioHomo1D,m_sVVCutoffRatio);
m_session->LoadParameter("SVVDiffCoeffHomo1D", m_sVVDiffCoeffHomo1D, m_sVVDiffCoeff);
if(m_HomogeneousType == eHomogeneous1D)
{
ASSERTL0(m_nConvectiveFields > 2,
"Expect to have three velocity fields with homogenous expansion");
if(m_useHomo1DSpecVanVisc)
{
cout<< " SVV H1D is on " <<endl;
Array<OneD, unsigned int> planes;
planes = m_fields[0]->GetZIDs();
int num_planes = planes.num_elements();
Array<OneD, NekDouble> SVV(num_planes,0.0);
NekDouble fac;
int kmodes = m_fields[0]->GetHomogeneousBasis()->GetNumModes();
int pstart;
pstart = m_sVVCutoffRatioHomo1D*kmodes;