...
 
Commits (44)
......@@ -6,6 +6,7 @@ v5.0.0
**Library**
- Added in sum factorisation version for pyramid expansions and orthogonal
expansion in pyramids (!750)
- Added detection of 'abort' file to cleanly terminate simulation early (!772)
- Significant overhaul of CMake infrastructure (!770, !804)
- Fix ThridpartyCCM options (!802)
- Fix Windows CRLF tokens in GEO reader and improve comment handling (!805)
......@@ -82,6 +83,8 @@ v5.0.0
- Fix XML attributes in conditions.cpp to be unordered (!1015)
- Fix issue with HDF5 mesh input in serial (!1049)
- Add estimate of filters CPU time (!1044)
- Update CompressibleFlowSolver/Examples/Test_IsentropicVortex1.xml example (!1045)
- Add error if HDG used with periodic BCs (!1071)
**NekMesh**:
- Add feature to read basic 2D geo files as CAD (!731)
......@@ -166,6 +169,7 @@ v5.0.0
- Modified pressure outlet BCs to allow for the reference static pressure to be
set from the VALUE fields (!981)
- hp scaling for Laplacian AV (!1013)
- Removed smooth AV (!1072)
**AcousticSolver:**
- Added two new boundary conditions to the APE system: RiemannInvariantBC
......@@ -184,11 +188,15 @@ v5.0.0
**PulseWaveSolver**
- Added two new boundary conditions: AInflow and UInflow
**CardiacEPSolver**
- Converted FentonKarma model to dimensional form and added variants (!1011)
**Documentation**:
- Added an initial developer's guide (!1001)
**Tester**
- Fix build with boost 1.67 (!947)
- Various change to tests to decrease test time (!1053)
**Packaging:**
- Add Dockerfiles and gitlab CI configuration for automatic builds (!1021)
......
......@@ -444,8 +444,7 @@ Under the two following sections it is possible to define the initial conditions
\section{Examples}
\subsection{Shock capturing}
Compressible flows can be characterised by abrupt changes in density within the flow domain often referred to as shocks. These discontinuities lead to numerical instabilities (Gibbs phenomena). This problem is prevented by locally adding a diffusion term to the equations to damp the numerical oscillations.
An artificial diffusion term is introduced locally to the Euler equations to deal with flow discontinuity and the consequential numerical oscillations. Two models are implemented, a non-smooth and a smooth artificial viscosity model.
Compressible flows can be characterised by abrupt changes in density within the flow domain often referred to as shocks. These discontinuities can lead to numerical instabilities (Gibbs phenomena). This problem is prevented by locally adding a diffusion term to the equations to damp the numerical oscillations.
\subsubsection{Non-smooth artificial viscosity model}
For the non-smooth artificial viscosity model the added artificial viscosity is constant in each element and discontinuous between the elements. The Euler system is augmented by an added Laplacian term on right hand side of equation \ref{eq:euler} \cite{persson2006sub}.
......@@ -480,9 +479,9 @@ where $s_0 = s_\kappa - 4.25\;log_{10}(p)$.
To enable the non-smooth viscosity model, the following line has to be added to the \inltt{SOLVERINFO} section:
\begin{lstlisting}[style=XmlStyle]
<SOLVERINFO>
<SOLVERINFO>
<I PROPERTY="ShockCaptureType" VALUE="NonSmooth" />
<SOLVERINFO>
<SOLVERINFO>
\end{lstlisting}
The diffusivity and the sensor can be controlled by the following parameters:
\begin{lstlisting}[style=XmlStyle]
......@@ -502,45 +501,6 @@ The diffusivity and the sensor can be controlled by the following parameters:
\end{center}
\end{figure}
\subsubsection{Smooth artificial viscosity model}
For the smooth artificial viscosity model an extra PDE for the artificial viscosity is appended to the Euler system
\begin{equation}\label{eq:eulerplusvis}\begin{split}
\frac{\partial \epsilon}{\partial t} &= \nabla\cdot \left(\nabla \epsilon\right) + \frac{1}{\tau}\left(\frac{h}{p}\lambda_{max}S_\kappa - \epsilon\right)\ \ \ \ \ \ \textrm{on}\ \ \ \ \ \ \ \Omega\\
\frac{\partial \epsilon}{\partial n} &= 0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textrm{on}\ \ \ \ \ \ \ \Gamma
\end{split}
\end{equation}
where $S_\kappa$ is a normalised sensor value and serves as a forcing term for the artificial viscosity. A smooth artificial viscosity distribution is obtained.\\
\\
To enable the smooth viscosity model, the following line has to be added to the \inltt{SOLVERINFO} section:
\begin{lstlisting}[style=XmlStyle]
<SOLVERINFO>
<I PROPERTY="ShockCaptureType" VALUE="Smooth" />
<SOLVERINFO>
\end{lstlisting}
Furthermore, the extra viscosity variable \inltt{eps} has to be added to the variable list:
\begin{lstlisting}[style=XmlStyle]
<VARIABLES>
<V ID="0"> rho </V>
<V ID="1"> rhou </V>
<V ID="2"> rhov </V>
<V ID="4"> E </V>
<V ID="5"> eps </V>
</VARIABLES>
\end{lstlisting}
A similar addition has to be made for the boundary conditions and initial conditions. The tests that have been run started with a uniform homogeneous boundary condition and initial condition.
The following parameters can be set in the xml session file:
\begin{lstlisting}[style=XmlStyle]
<PARAMETERS>
<P> Skappa = -1.3 </P>
<P> Kappa = 0.2 </P>
<P> mu0 = 1.0 </P>
<P> FH = 3 </P>
<P> FL = 0.01*FH </P>
<P> C1 = 0.03 </P>
<P> C2 = 5/3*C1 </P>
</PARAMETERS>
\end{lstlisting}
where for now \inltt{FH} and \inltt{FL} are used to tune which range of the sensor is used as a forcing term and \inltt{C1} and \inltt{C2} are fixed constants which can be played around with to make the model more diffusive or not. However these constants are generally fixed.
\subsection{Variable polynomial order}
A sensor based $p$-adaptive algorithm is implemented to optimise the computational cost and accuracy.
The DG scheme allows one to use different polynomial orders since the fluxes over the elements are determined using a Riemann solver and there is now further coupling between the elements. Furthermore, the initial $p$-adaptive algorithm uses the same sensor as the shock capturing algorithm to identify the smoothness of the local solution so it rather straightforward to implement both algorithms at the same time.\\
......
......@@ -1258,6 +1258,12 @@ namespace Nektar
id = m_traceMap->GetBndCondCoeffsToGlobalCoeffsMap(i);
BndRhs[id] += m_bndCondExpansions[i]->GetCoeff(0);
}
else if (m_bndConditions[i]->GetBoundaryConditionType() ==
SpatialDomains::ePeriodic)
{
ASSERTL0(false, "HDG implementation does not support "
"periodic boundary conditions at present.");
}
}
//----------------------------------
......
......@@ -1957,6 +1957,12 @@ namespace Nektar
BndRhs[id] += m_bndCondExpansions[i]->GetCoeffs()[j];
}
}
else if (m_bndConditions[i]->GetBoundaryConditionType() ==
SpatialDomains::ePeriodic)
{
ASSERTL0(false, "HDG implementation does not support "
"periodic boundary conditions at present.");
}
}
//----------------------------------
......
......@@ -2332,6 +2332,12 @@ using namespace std;
BndRhs[id] += m_bndCondExpansions[i]->GetCoeffs()[j];
}
}
else if (m_bndConditions[i]->GetBoundaryConditionType() ==
SpatialDomains::ePeriodic)
{
ASSERTL0(false, "HDG implementation does not support "
"periodic boundary conditions at present.");
}
}
//----------------------------------
......
......@@ -130,11 +130,6 @@ namespace Nektar
int numConvFields = nConvectiveFields;
if (m_shockCaptureType == "Smooth")
{
numConvFields = nConvectiveFields - 1;
}
for (j = 0; j < nDim; ++j)
{
for (i = 0; i < numConvFields; ++i)
......
......@@ -91,7 +91,7 @@ namespace Nektar
m_session->MatchSolverInfo("REACTIONADVANCEMENT", "Explicit",
m_explicitReaction, true);
m_session->LoadParameter("CheckNanSteps", m_nanSteps, 1);
m_session->LoadParameter("CheckAbortSteps", m_abortSteps, 1);
// Steady state tolerance
m_session->LoadParameter("SteadyStateTol", m_steadyStateTol, 0.0);
// Frequency for checking steady state
......@@ -263,20 +263,28 @@ namespace Nektar
NekDouble elapsed = 0.0;
NekDouble totFilterTime = 0.0;
while (step < m_steps ||
m_time < m_fintime - NekConstants::kNekZeroTol)
Array<OneD, int> abortFlags(2, 0);
string abortFile = "abort";
if (m_session->DefinesSolverInfo("CheckAbortFile"))
{
abortFile = m_session->GetSolverInfo("CheckAbortFile");
}
while ((step < m_steps ||
m_time < m_fintime - NekConstants::kNekZeroTol) &&
abortFlags[1] == 0)
{
if (m_cflSafetyFactor)
{
m_timestep = GetTimeStep(fields);
// Ensure that the final timestep finishes at the final
// time, or at a prescribed IO_CheckTime.
if (m_time + m_timestep > m_fintime && m_fintime > 0.0)
{
m_timestep = m_fintime - m_time;
}
else if (m_checktime &&
else if (m_checktime &&
m_time + m_timestep - lastCheckTime >= m_checktime)
{
lastCheckTime += m_checktime;
......@@ -284,7 +292,7 @@ namespace Nektar
doCheckTime = true;
}
}
// Perform any solver-specific pre-integration steps
timer.Start();
if (v_PreIntegrate(step))
......@@ -358,21 +366,34 @@ namespace Nektar
}
}
// search for NaN and quit if found
if (m_nanSteps && !((step+1) % m_nanSteps) )
// test for abort conditions (nan, or abort file)
if (m_abortSteps && !((step+1) % m_abortSteps) )
{
int nanFound = 0;
abortFlags[0] = 0;
for (i = 0; i < nvariables; ++i)
{
if (Vmath::Nnan(fields[i].num_elements(),
fields[i], 1) > 0)
{
nanFound = 1;
abortFlags[0] = 1;
}
}
m_session->GetComm()->AllReduce(nanFound,
//rank zero looks for abort file and deltes it
//if it exists. The communicates the abort
if(m_session->GetComm()->GetRank() == 0)
{
if(boost::filesystem::exists(abortFile))
{
boost::filesystem::remove(abortFile);
abortFlags[1] = 1;
}
}
m_session->GetComm()->AllReduce(abortFlags,
LibUtilities::ReduceMax);
ASSERTL0 (!nanFound,
ASSERTL0 (!abortFlags[0],
"NaN found during time integration.");
}
......@@ -458,7 +479,7 @@ namespace Nektar
++step;
++stepCounter;
}
// Print out summary statistics
if (m_session->GetComm()->GetRank() == 0)
{
......@@ -473,7 +494,7 @@ namespace Nektar
cout << "Time-integration : " << intTime << "s" << endl;
}
}
// If homogeneous, transform back into physical space if necessary.
if(m_HomogeneousType != eNotHomogeneous)
{
......@@ -502,7 +523,7 @@ namespace Nektar
{
x.second->Finalise(m_fields, m_time);
}
// Print for 1D problems
if(m_spacedim == 1)
{
......
......@@ -60,6 +60,8 @@ public:
protected:
/// Number of time steps between outputting status information.
int m_infosteps;
/// Number of steps between checks for abort conditions.
int m_abortSteps;
/// Number of time steps between outputting filters information.
int m_filtersInfosteps;
int m_nanSteps;
......
......@@ -91,13 +91,13 @@ IF( NEKTAR_SOLVER_ADR )
ADD_NEKTAR_TEST(UnsteadyAdvectionDiffusion_2D_WeakDG)
# 3D discontinous advection
ADD_NEKTAR_TEST(Advection3D_m12_DG_hex_periodic_nodal LENGTHY)
ADD_NEKTAR_TEST(Advection3D_m12_DG_hex_nodal)
ADD_NEKTAR_TEST(Advection3D_m10_DG_hex_periodic_nodal LENGTHY)
ADD_NEKTAR_TEST(Advection3D_m8_DG_hex_nodal)
ADD_NEKTAR_TEST(Advection3D_m12_DG_hex_periodic)
ADD_NEKTAR_TEST(Advection3D_m12_DG_hex)
ADD_NEKTAR_TEST(Advection3D_m12_DG_hex_VarP)
ADD_NEKTAR_TEST(Advection3D_m8_DG_hex)
ADD_NEKTAR_TEST(Advection3D_m10_DG_hex_VarP)
ADD_NEKTAR_TEST(Advection3D_m12_DG_prism)
ADD_NEKTAR_TEST(Advection3D_m12_DG_prism_VarP)
ADD_NEKTAR_TEST(Advection3D_m10_DG_prism_VarP)
ADD_NEKTAR_TEST(Advection3D_m12_DG_tet)
ADD_NEKTAR_TEST(Advection3D_m12_DG_tet_VarP)
# face rotation test
......@@ -227,12 +227,12 @@ IF( NEKTAR_SOLVER_ADR )
ADD_NEKTAR_TEST(RotPerBcs3D LENGTHY)
IF (NEKTAR_USE_MPI)
ADD_NEKTAR_TEST(Advection3D_m12_DG_hex_par LENGTHY)
ADD_NEKTAR_TEST(Advection3D_m8_DG_hex_par LENGTHY)
ADD_NEKTAR_TEST(Advection3D_m12_DG_prism_par LENGTHY)
ADD_NEKTAR_TEST(Advection3D_m12_DG_tet_par LENGTHY)
ADD_NEKTAR_TEST(Advection3D_m12_DG_hex_VarP_par LENGTHY)
ADD_NEKTAR_TEST(Advection3D_m10_DG_hex_VarP_par LENGTHY)
ADD_NEKTAR_TEST(Advection3D_m12_DG_tet_VarP_par LENGTHY)
ADD_NEKTAR_TEST(Advection3D_m12_DG_prism_VarP_par LENGTHY)
ADD_NEKTAR_TEST(Advection3D_m10_DG_prism_VarP_par LENGTHY)
ADD_NEKTAR_TEST(Advection3D_m12_DG_hex_periodic_par)
ADD_NEKTAR_TEST(ImDiffusion_Quad_Periodic_m7_par LENGTHY)
ADD_NEKTAR_TEST(ImDiffusion_Hex_Periodic_m5_par)
......@@ -242,7 +242,7 @@ IF( NEKTAR_SOLVER_ADR )
ADD_NEKTAR_TEST(Advection2D_m12_DG_quad_VarP_par)
ADD_NEKTAR_TEST(Advection2D_m12_DG_tri_VarP_par)
IF (NEKTAR_USE_HDF5)
ADD_NEKTAR_TEST(Advection3D_m12_DG_prism_VarP_hdf)
ADD_NEKTAR_TEST(Advection3D_m10_DG_prism_VarP_hdf)
ENDIF()
ADD_NEKTAR_TEST(RotPerBcs3D_Annulus LENGTHY)
ENDIF (NEKTAR_USE_MPI)
......
......@@ -2,16 +2,16 @@
<test>
<description>3D unsteady DG advection, tetrahedra, order 4, P=Variable</description>
<executable>ADRSolver</executable>
<parameters>Advection3D_m12_DG_hex_VarP.xml</parameters>
<parameters>Advection3D_m10_DG_hex_VarP.xml</parameters>
<files>
<file description="Session File">Advection3D_m12_DG_hex_VarP.xml</file>
<file description="Session File">Advection3D_m10_DG_hex_VarP.xml</file>
</files>
<metrics>
<metric type="L2" id="1">
<value variable="u" tolerance="1e-12">3.99686e-06</value>
<value variable="u" tolerance="1e-12">5.67026e-06</value>
</metric>
<metric type="Linf" id="2">
<value variable="u" tolerance="1e-9">1.50105e-05</value>
<value variable="u" tolerance="1e-9">1.94197e-05</value>
</metric>
</metrics>
</test>
......@@ -209,14 +209,14 @@
<DOMAIN> C[1-8] </DOMAIN>
</GEOMETRY>
<EXPANSIONS>
<E COMPOSITE="C[1]" NUMMODES="15" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[2]" NUMMODES="8" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[3]" NUMMODES="11" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[4]" NUMMODES="9" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[5]" NUMMODES="13" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[6]" NUMMODES="7" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[1]" NUMMODES="7" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[2]" NUMMODES="7" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[3]" NUMMODES="8" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[4]" NUMMODES="8" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[5]" NUMMODES="9" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[6]" NUMMODES="9" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[7]" NUMMODES="10" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[8]" NUMMODES="12" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[8]" NUMMODES="10" TYPE="MODIFIED" FIELDS="u" />
</EXPANSIONS>
<CONDITIONS>
<PARAMETERS>
......
<?xml version="1.0" encoding="utf-8"?>
<test>
<description>3D unsteady DG advection, hexahedra, order 1, P=12,periodic bcs</description>
<description>3D unsteady DG advection, hexahedra, order 1, P=10,periodic bcs</description>
<executable>ADRSolver</executable>
<parameters>--use-scotch Advection3D_m12_DG_hex_VarP.xml</parameters>
<parameters>--use-scotch Advection3D_m10_DG_hex_VarP.xml</parameters>
<processes>3</processes>
<files>
<file description="Session File">Advection3D_m12_DG_hex_VarP.xml</file>
<file description="Session File">Advection3D_m10_DG_hex_VarP.xml</file>
</files>
<metrics>
<metric type="L2" id="1">
<value variable="u" tolerance="1e-12">3.99686e-06</value>
<metric type="L2" id="1">
<value variable="u" tolerance="1e-12">5.67026e-06</value>
</metric>
<metric type="Linf" id="2">
<value variable="u" tolerance="1e-09">1.50105e-05</value>
<value variable="u" tolerance="1e-09">1.94197e-05</value>
</metric>
</metrics>
</test>
</test>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<test>
<description>3D unsteady DG advection, hexahedra, order 1, P=12,periodic bcs</description>
<description>3D unsteady DG advection, hexahedra, order 1, P=10,periodic bcs</description>
<executable>ADRSolver</executable>
<parameters>Advection3D_m12_DG_hex_periodic_nodal.xml</parameters>
<parameters>Advection3D_m10_DG_hex_periodic_nodal.xml</parameters>
<files>
<file description="Session File">Advection3D_m12_DG_hex_periodic_nodal.xml</file>
<file description="Session File">Advection3D_m10_DG_hex_periodic_nodal.xml</file>
</files>
<metrics>
<metric type="L2" id="1">
<value variable="u" tolerance="1e-12"> 7.03905e-7 </value>
<value variable="u" tolerance="1e-12"> 3.59823e-05 </value>
</metric>
<metric type="Linf" id="2">
<value variable="u" tolerance="1e-03"> 1.10476e-5 </value>
<value variable="u" tolerance="1e-03"> 0.000532131 </value>
</metric>
</metrics>
</test>
......@@ -51,7 +51,7 @@
<DOMAIN> C[0] </DOMAIN>
</GEOMETRY>
<EXPANSIONS>
<E COMPOSITE="C[0]" NUMMODES="12" TYPE="GLL_LAGRANGE" FIELDS="u" />
<E COMPOSITE="C[0]" NUMMODES="10" TYPE="GLL_LAGRANGE" FIELDS="u" />
</EXPANSIONS>
<CONDITIONS>
<PARAMETERS>
......
......@@ -2,16 +2,16 @@
<test>
<description>3D unsteady DG advection, tetrahedra, order 4, P=Variable</description>
<executable>ADRSolver</executable>
<parameters>Advection3D_m12_DG_prism_VarP.xml</parameters>
<parameters>Advection3D_m10_DG_prism_VarP.xml</parameters>
<files>
<file description="Session File">Advection3D_m12_DG_prism_VarP.xml</file>
<file description="Session File">Advection3D_m10_DG_prism_VarP.xml</file>
</files>
<metrics>
<metric type="L2" id="1">
<value variable="u" tolerance="1e-12">1.74811e-05</value>
<value variable="u" tolerance="1e-12">1.5189e-07</value>
</metric>
<metric type="Linf" id="2">
<value variable="u" tolerance="1e-12">0.00323074</value>
<value variable="u" tolerance="1e-12">7.42306e-06</value>
</metric>
</metrics>
</test>
......
......@@ -498,15 +498,15 @@
<DOMAIN> C[0-8] </DOMAIN>
</GEOMETRY>
<EXPANSIONS>
<E COMPOSITE="C[0]" NUMMODES="12" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[1]" NUMMODES="9" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[2]" NUMMODES="5" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[3]" NUMMODES="14" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[4]" NUMMODES="8" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[5]" NUMMODES="15" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[6]" NUMMODES="12" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[7]" NUMMODES="7" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[8]" NUMMODES="13" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[0]" NUMMODES="7" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[1]" NUMMODES="7" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[2]" NUMMODES="8" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[3]" NUMMODES="8" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[4]" NUMMODES="9" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[5]" NUMMODES="9" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[6]" NUMMODES="10" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[7]" NUMMODES="10" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[8]" NUMMODES="10" TYPE="MODIFIED" FIELDS="u" />
</EXPANSIONS>
<CONDITIONS>
<PARAMETERS>
......
......@@ -2,16 +2,16 @@
<test>
<description>3D unsteady DG advection, prisms, order 4, P=Variable, HDF output</description>
<executable>ADRSolver</executable>
<parameters>--io-format Hdf5 Advection3D_m12_DG_prism_VarP.xml</parameters>
<parameters>--io-format Hdf5 Advection3D_m10_DG_prism_VarP.xml</parameters>
<files>
<file description="Session File">Advection3D_m12_DG_prism_VarP.xml</file>
<file description="Session File">Advection3D_m10_DG_prism_VarP.xml</file>
</files>
<metrics>
<metric type="L2" id="1">
<value variable="u" tolerance="1e-12">1.74811e-05</value>
<value variable="u" tolerance="1e-12">1.5189e-07</value>
</metric>
<metric type="Linf" id="2">
<value variable="u" tolerance="1e-12">0.00323074</value>
<value variable="u" tolerance="1e-12">7.42306e-06</value>
</metric>
</metrics>
</test>
......
......@@ -2,17 +2,17 @@
<test>
<description>3D unsteady DG advection, tetrahedra, order 4, P=Variable</description>
<executable>ADRSolver</executable>
<parameters>--use-scotch Advection3D_m12_DG_prism_VarP.xml</parameters>
<parameters>--use-scotch Advection3D_m10_DG_prism_VarP.xml</parameters>
<processes>3</processes>
<files>
<file description="Session File">Advection3D_m12_DG_prism_VarP.xml</file>
<file description="Session File">Advection3D_m10_DG_prism_VarP.xml</file>
</files>
<metrics>
<metric type="L2" id="1">
<value variable="u" tolerance="1e-12">1.74811e-05</value>
<value variable="u" tolerance="1e-12">1.5189e-07</value>
</metric>
<metric type="Linf" id="2">
<value variable="u" tolerance="1e-12">0.00323074</value>
<value variable="u" tolerance="1e-12">7.42306e-06</value>
</metric>
</metrics>
</test>
......
......@@ -2,16 +2,16 @@
<test>
<description>3D unsteady DG advection, hexahedra, order 4, P=12</description>
<executable>ADRSolver</executable>
<parameters>Advection3D_m12_DG_hex.xml</parameters>
<parameters>Advection3D_m8_DG_hex.xml</parameters>
<files>
<file description="Session File">Advection3D_m12_DG_hex.xml</file>
<file description="Session File">Advection3D_m8_DG_hex.xml</file>
</files>
<metrics>
<metric type="L2" id="1">
<value variable="u" tolerance="1e-12">3.1094e-8 </value>
<value variable="u" tolerance="1e-12">1.08584e-05</value>
</metric>
<metric type="Linf" id="2">
<value variable="u" tolerance="1e-12">1.3031e-6 </value>
<value variable="u" tolerance="1e-12">2.52297e-05</value>
</metric>
</metrics>
</test>
......
......@@ -126,7 +126,7 @@
<DOMAIN> C[0] </DOMAIN>
</GEOMETRY>
<EXPANSIONS>
<E COMPOSITE="C[0]" NUMMODES="12" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[0]" NUMMODES="8" TYPE="MODIFIED" FIELDS="u" />
</EXPANSIONS>
<CONDITIONS>
<PARAMETERS>
......
<?xml version="1.0" encoding="utf-8"?>
<test>
<description>3D unsteady DG advection, hexahedra, order 4, P=12</description>
<description>3D unsteady DG advection, hexahedra, order 4, P=8</description>
<executable>ADRSolver</executable>
<parameters>Advection3D_m12_DG_hex_nodal.xml</parameters>
<parameters>Advection3D_m8_DG_hex_nodal.xml</parameters>
<files>
<file description="Session File">Advection3D_m12_DG_hex_nodal.xml</file>
<file description="Session File">Advection3D_m8_DG_hex_nodal.xml</file>
</files>
<metrics>
<metric type="L2" id="1">
<value variable="u" tolerance="1e-12">3.1094e-8 </value>
<value variable="u" tolerance="1e-12">1.08584e-05</value>
</metric>
<metric type="Linf" id="2">
<value variable="u" tolerance="1e-12">1.3031e-6 </value>
<value variable="u" tolerance="1e-12"> 2.52297e-05</value>
</metric>
</metrics>
</test>
......
......@@ -126,7 +126,7 @@
<DOMAIN> C[0] </DOMAIN>
</GEOMETRY>
<EXPANSIONS>
<E COMPOSITE="C[0]" NUMMODES="12" TYPE="GLL_LAGRANGE" FIELDS="u" />
<E COMPOSITE="C[0]" NUMMODES="8" TYPE="GLL_LAGRANGE" FIELDS="u" />
</EXPANSIONS>
<CONDITIONS>
<PARAMETERS>
......
......@@ -2,17 +2,17 @@
<test>
<description>3D unsteady DG advection, hexahedra, order 4, P=12, par(3)</description>
<executable>ADRSolver</executable>
<parameters>--use-scotch Advection3D_m12_DG_hex.xml</parameters>
<parameters>--use-scotch Advection3D_m8_DG_hex.xml</parameters>
<processes>3</processes>
<files>
<file description="Session File">Advection3D_m12_DG_hex.xml</file>
<file description="Session File">Advection3D_m8_DG_hex.xml</file>
</files>
<metrics>
<metric type="L2" id="1">
<value variable="u" tolerance="1e-12">3.1094e-8</value>
<value variable="u" tolerance="1e-12">1.08584e-05</value>
</metric>
<metric type="Linf" id="2">
<value variable="u" tolerance="1e-12">1.3031e-6</value>
<value variable="u" tolerance="1e-12">2.52297e-05</value>
</metric>
</metrics>
</test>
......
......@@ -9,7 +9,7 @@
</files>
<metrics>
<metric type="L2" id="1">
<value variable="u" tolerance="1e-5"> 0.000129406</value>
<value variable="u" tolerance="5e-5"> 0.000129406</value>
</metric>
<metric type="Linf" id="2">
<value variable="u" tolerance="4e-3"> 0.0461794 </value>
......
......@@ -8,10 +8,10 @@
</files>
<metrics>
<metric type="L2" id="0">
<value variable="u" tolerance="1e-05">0.0337347</value>
<value variable="u" tolerance="1e-05">0.0371179</value>
</metric>
<metric type="Linf" id="1">
<value variable="u" tolerance="1e-05"> 0.205011</value>
<value variable="u" tolerance="1e-05"> 0.115599</value>
</metric>
</metrics>
</test>
......@@ -98,7 +98,7 @@
<DOMAIN> C[1] </DOMAIN>
</GEOMETRY>
<EXPANSIONS>
<E COMPOSITE="C[1]" NUMMODES="16" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[1]" NUMMODES="8" TYPE="MODIFIED" FIELDS="u" />
</EXPANSIONS>
<CONDITIONS>
<PARAMETERS>
......
......@@ -8,10 +8,10 @@
</files>
<metrics>
<metric type="L2" id="0">
<value variable="u" tolerance="1e-05">0.0116705</value>
<value variable="u" tolerance="1e-05">0.0264016</value>
</metric>
<metric type="Linf" id="1">
<value variable="u" tolerance="1e-05"> 0.177522</value>
<value variable="u" tolerance="1e-05">0.0861253</value>
</metric>
</metrics>
</test>
......@@ -540,7 +540,7 @@
<DOMAIN> C[1] </DOMAIN>
</GEOMETRY>
<EXPANSIONS>
<E COMPOSITE="C[1]" NUMMODES="12" TYPE="MODIFIED" FIELDS="u" />
<E COMPOSITE="C[1]" NUMMODES="6" TYPE="MODIFIED" FIELDS="u" />
</EXPANSIONS>
<CONDITIONS>
......
///////////////////////////////////////////////////////////////////////////////
//
// File: SmoothShockCapture.cpp
//
// For more information, please see: http://www.nektar.info
//
// The MIT License
//
// Copyright (c) 2006 Division of Applied Mathematics, Brown University (USA),
// Department of Aeronautics, Imperial College London (UK), and Scientific
// Computing and Imaging Institute, University of Utah (USA).
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
//
// Description: Smooth artificial diffusion for shock capture
//
///////////////////////////////////////////////////////////////////////////////
#include "SmoothShockCapture.h"
using namespace std;
namespace Nektar
{
std::string SmoothShockCapture::className = GetArtificialDiffusionFactory().
RegisterCreatorFunction("Smooth",
SmoothShockCapture::create,
"Smooth artificial diffusion for shock capture.");
SmoothShockCapture::SmoothShockCapture(
const LibUtilities::SessionReaderSharedPtr& pSession,
const Array<OneD, MultiRegions::ExpListSharedPtr>& pFields,
const int spacedim)
: ArtificialDiffusion(pSession, pFields, spacedim)
{
ASSERTL0(m_fields.num_elements() == spacedim + 3,
"Not enough variables for smooth shock capturing; "
"make sure you have added eps to variable list.");
m_session->LoadParameter ("FL", m_FacL, 0.0);
m_session->LoadParameter ("FH", m_FacH, 0.0);
m_session->LoadParameter ("hFactor", m_hFactor, 1.0);
m_session->LoadParameter ("C1", m_C1, 3.0);
m_session->LoadParameter ("C2", m_C2, 5.0);
m_session->LoadParameter ("mu0", m_mu0, 1.0);
m_session->LoadParameter ("SensorOffset", m_offset, 1);
ROOTONLY_NEKERROR(Nektar::ErrorUtil::ewarning,
"h/p Lambda scaling not implemented for SmoothShockCapture."
"There seems to be something wrong with the boundary conditions "
"as well.")
}
void SmoothShockCapture::v_DoArtificialDiffusion(
const Array<OneD, const Array<OneD, NekDouble> > &inarray,
Array<OneD, Array<OneD, NekDouble> > &outarray)
{
int i;
int nvariables = inarray.num_elements();
int npoints = m_fields[0]->GetNpoints();
Array<OneD, Array<OneD, NekDouble> > outarrayDiff(nvariables);
for (i = 0; i < nvariables; ++i)
{
outarrayDiff[i] = Array<OneD, NekDouble>(npoints, 0.0);
}
m_diffusion->Diffuse(nvariables, m_fields, inarray, outarrayDiff);
const Array<OneD, int> ExpOrder = m_fields[0]->EvalBasisNumModesMaxPerExp();
NekDouble pOrder = Vmath::Vmax(ExpOrder.num_elements(), ExpOrder, 1);
Array <OneD, NekDouble > a_vel (npoints, 0.0);
Array <OneD, NekDouble > u_abs (npoints, 0.0);
Array <OneD, NekDouble > tmp (npoints, 0.0);
m_varConv->GetSoundSpeed(inarray, a_vel);
m_varConv->GetAbsoluteVelocity(inarray, u_abs);
Vmath::Vadd(npoints, a_vel, 1, u_abs, 1, tmp, 1);
NekDouble max_wave_sp = Vmath::Vmax(npoints, tmp, 1);
NekDouble fac = m_C2*max_wave_sp*pOrder;
Vmath::Smul(npoints,
fac,
outarrayDiff[nvariables-1], 1,
outarrayDiff[nvariables-1], 1);
for (i = 0; i < nvariables; ++i)
{
Vmath::Vadd(npoints,
outarray[i], 1,
outarrayDiff[i], 1,
outarray[i], 1);
}
Array<OneD, Array<OneD, NekDouble> > outarrayForcing(nvariables);
for (i = 0; i < nvariables; ++i)
{
outarrayForcing[i] = Array<OneD, NekDouble>(npoints, 0.0);
}
GetForcingTerm(inarray, outarrayForcing);
for (i = 0; i < nvariables; ++i)
{
// Add Forcing Term
Vmath::Vadd(npoints,
outarray[i], 1,
outarrayForcing[i], 1,
outarray[i], 1);
}
}
void SmoothShockCapture::v_GetArtificialViscosity(
const Array<OneD, Array<OneD, NekDouble> > &physfield,
Array<OneD, NekDouble > &mu)
{
int nvariables = physfield.num_elements();
NekDouble Phi0 = (m_FacH+m_FacL)/2;
NekDouble DeltaPhi = m_FacH-Phi0;
for (int e = 0; e < mu.num_elements(); e++)
{
if (physfield[nvariables-1][e] <= (Phi0 - DeltaPhi))
{
mu[e] = 0;
}
else if(physfield[nvariables-1][e] >= (Phi0 + DeltaPhi))
{
mu[e] = m_mu0;
}
else if(abs(physfield[nvariables-1][e]-Phi0) < DeltaPhi)
{
mu[e] = m_mu0/2*(1+sin(M_PI*
(physfield[nvariables-1][e]-Phi0)/(2*DeltaPhi)));
}
}
}
void SmoothShockCapture::GetForcingTerm(
const Array<OneD, const Array<OneD, NekDouble> > &inarray,
Array<OneD, Array<OneD, NekDouble> > outarrayForcing)
{
const int nPts = m_fields[0]->GetTotPoints();
const int nvariables = m_fields.num_elements();
const int nElements = m_fields[0]->GetExpSize();
Array<OneD, NekDouble> Sensor(nPts, 0.0);
Array<OneD, NekDouble> SensorKappa(nPts, 0.0);
Array <OneD, NekDouble > Lambda(nPts, 0.0);
Array <OneD, NekDouble > soundspeed(nPts, 0.0);
Array <OneD, NekDouble > absVelocity(nPts, 0.0);
NekDouble tau, pOrder;
Array<OneD,int> pOrderElmt = m_fields[0]->EvalBasisNumModesMaxPerExp();
// Thermodynamic related quantities
m_varConv->GetSoundSpeed(inarray, soundspeed);
m_varConv->GetAbsoluteVelocity(inarray, absVelocity);
m_varConv->GetSensor(m_fields[0], inarray, Sensor, SensorKappa, m_offset);
// Determine the maximum wavespeed
Vmath::Vadd(nPts, absVelocity, 1, soundspeed, 1, Lambda, 1);
NekDouble LambdaMax = Vmath::Vmax(nPts, Lambda, 1);
int PointCount = 0;
for (int e = 0; e < nElements; e++)
{
int nQuadPointsElement = m_fields[0]->GetExp(e)->GetTotPoints();
for (int n = 0; n < nQuadPointsElement; n++)
{
pOrder = pOrderElmt[e];
// order 1.0e-06
tau = 1.0 / (m_C1*pOrder*LambdaMax);
outarrayForcing[nvariables-1][n + PointCount] =
1 / tau * (m_hFactor * LambdaMax /
pOrder *
SensorKappa[n + PointCount] -
inarray[nvariables-1][n + PointCount]);
}
PointCount += nQuadPointsElement;
}
}
}
///////////////////////////////////////////////////////////////////////////////
//
// File: SmoothShockCapture.h
//
// For more information, please see: http://www.nektar.info
//
// The MIT License
//
// Copyright (c) 2006 Division of Applied Mathematics, Brown University (USA),
// Department of Aeronautics, Imperial College London (UK), and Scientific
// Computing and Imaging Institute, University of Utah (USA).
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
//
// Description: Smooth artificial diffusion for shock capture
//
///////////////////////////////////////////////////////////////////////////////
#ifndef NEKTAR_SOLVERS_COMPRESSIBLEFLOWSOLVER_ARTIFICIALDIFFUSION_SMOOTH
#define NEKTAR_SOLVERS_COMPRESSIBLEFLOWSOLVER_ARTIFICIALDIFFUSION_SMOOTH
#include "ArtificialDiffusion.h"
namespace Nektar
{
/**
* @brief Smooth artificial diffusion for shock capture for compressible flow
* problems.
*/
class SmoothShockCapture : public ArtificialDiffusion
{
public:
friend class MemoryManager<SmoothShockCapture>;
/// Creates an instance of this class
static ArtificialDiffusionSharedPtr create(
const LibUtilities::SessionReaderSharedPtr& pSession,
const Array<OneD, MultiRegions::ExpListSharedPtr>& pFields,
const int spacedim)
{
ArtificialDiffusionSharedPtr p = MemoryManager<SmoothShockCapture>::
AllocateSharedPtr(pSession, pFields, spacedim);
return p;
}
///Name of the class
static std::string className;
protected:
virtual void v_DoArtificialDiffusion(
const Array<OneD, const Array<OneD, NekDouble> > &inarray,
Array<OneD, Array<OneD, NekDouble> > &outarray);
virtual void v_GetArtificialViscosity(
const Array<OneD, Array<OneD, NekDouble> > &physfield,
Array<OneD, NekDouble > &mu);
private:
SmoothShockCapture(const LibUtilities::SessionReaderSharedPtr& pSession,
const Array<OneD, MultiRegions::ExpListSharedPtr>& pFields,
const int spacedim);
virtual ~SmoothShockCapture(void){};
void GetForcingTerm(
const Array<OneD, const Array<OneD, NekDouble> > &inarray,
Array<OneD, Array<OneD, NekDouble> > outarrayForcing);
/// Parameters
NekDouble m_FacL;
NekDouble m_FacH;
NekDouble m_hFactor;
NekDouble m_C1;
NekDouble m_C2;
NekDouble m_mu0;
int m_offset;
};
}
#endif
......@@ -10,7 +10,6 @@ IF( NEKTAR_SOLVER_COMPRESSIBLE_FLOW )
SET(CompressibleFlowSolverSource
./ArtificialDiffusion/ArtificialDiffusion.cpp
./ArtificialDiffusion/NonSmoothShockCapture.cpp
./ArtificialDiffusion/SmoothShockCapture.cpp
./BoundaryConditions/CFSBndCond.cpp
./BoundaryConditions/ExtrapOrder0BC.cpp
./BoundaryConditions/IsentropicVortexBC.cpp
......
......@@ -49,27 +49,29 @@
</GEOMETRY>
<EXPANSIONS>
<E COMPOSITE="C[0]" NUMMODES="3" TYPE="MODIFIED" />
<E COMPOSITE="C[0]" NUMMODES="15" TYPE="MODIFIED" />
</EXPANSIONS>
<CONDITIONS>
<PARAMETERS>
<P> TimeStep = 0.00001 </P>
<P> NumSteps = 0 </P>
<P> FinTime = 0.38 </P>
<P> IO_CheckSteps = 10000 </P>
<P> IO_InfoSteps = 100 </P>
<P> Gamma = 1.4 </P>
<P> IO_CheckTime = 100 </P>
<P> FinTime = 1 </P>
<P> IO_CheckTime = 0.1 </P>
<P> IO_InfoSteps = 10 </P>
<P> Gamma = 1.4 </P>
<P> pInf = 101325 </P>
<P> rhoInf = 1.225 </P>
<P> uInf = 0.1 </P>
<P> vInf = 0.0 </P>
<P> CFL = 0.5 </P>
</PARAMETERS>
<SOLVERINFO>
<I PROPERTY="EQType" VALUE="EulerCFE" />
<I PROPERTY="Projection" VALUE="DisContinuous" />
<I PROPERTY="TimeIntegrationMethod" VALUE="ClassicalRungeKutta4" />
<I PROPERTY="UpwindType" VALUE="ExactToro" />
<I PROPERTY="ProblemType" VALUE="IsentropicVortex" />
<I PROPERTY="EQType" VALUE="IsentropicVortex" />
<I PROPERTY="Projection" VALUE="DisContinuous" />
<I PROPERTY="AdvectionType" VALUE="WeakDG" />
<I PROPERTY="TimeIntegrationMethod" VALUE="ClassicalRungeKutta4"/>
<I PROPERTY="UpwindType" VALUE="ExactToro" />
</SOLVERINFO>
<VARIABLES>
......@@ -92,13 +94,6 @@
</REGION>
</BOUNDARYCONDITIONS>
<FUNCTION NAME="InitialConditions">
<E VAR="rho" VALUE="0" />
<E VAR="rhou" VALUE="0" />
<E VAR="rhov" VALUE="0" />
<E VAR="E" VALUE="0" />
</FUNCTION>
</CONDITIONS>
</NEKTAR>
......
......@@ -62,8 +62,7 @@ IF( NEKTAR_SOLVER_INCNAVIERSTOKES )
ADD_NEKTAR_TEST(Pyr_channel_m3)
ADD_NEKTAR_TEST(Pyr_channel_varP)
ADD_NEKTAR_TEST(Hex_channel_m6_nodalRestart)
ADD_NEKTAR_TEST(Hex_channel_m8 LENGTHY)
ADD_NEKTAR_TEST(Hex_channel_m8_srhs LENGTHY)
ADD_NEKTAR_TEST(Hex_channel_m3_srhs LENGTHY)
ADD_NEKTAR_TEST(Hex_Kovasnay_SubStep)
ADD_NEKTAR_TEST(HM)
ADD_NEKTAR_TEST(HM_Adj)
......@@ -160,10 +159,10 @@ IF( NEKTAR_SOLVER_INCNAVIERSTOKES )
ADD_NEKTAR_TEST(KovaFlow_expFromFile_par)
ADD_NEKTAR_TEST(ChanFlow_m8_BodyForce_par LENGTHY)
ADD_NEKTAR_TEST(KovaFlow_varP_per_par)
ADD_NEKTAR_TEST(Hex_channel_m8_par LENGTHY)
ADD_NEKTAR_TEST(Hex_channel_m3_par LENGTHY)
ADD_NEKTAR_TEST(Hex_channel_varP_par)
ADD_NEKTAR_TEST(Pyr_channel_m6_par LENGTHY)
ADD_NEKTAR_TEST(Hex_channel_m8_srhs_par LENGTHY)
ADD_NEKTAR_TEST(Hex_channel_m3_srhs_par LENGTHY)
ADD_NEKTAR_TEST(Tet_channel_m4_per_xxt_ml_par)
ADD_NEKTAR_TEST(Tet_channel_m8_par)
ADD_NEKTAR_TEST(Tet_channel_m8_iter_ml_par LENGTHY)
......
......@@ -247,7 +247,7 @@
</GEOMETRY>
<EXPANSIONS>
<E COMPOSITE="C[0]" NUMMODES="11" FIELDS="u,v,p" TYPE="GLL_LAGRANGE" />
<E COMPOSITE="C[0]" NUMMODES="10" FIELDS="u,v,p" TYPE="GLL_LAGRANGE" />
</EXPANSIONS>
<CONDITIONS>
......@@ -263,8 +263,8 @@
</SOLVERINFO>
<PARAMETERS>
<P> TimeStep = 0.002 </P>
<P> NumSteps = 70 </P>
<P> TimeStep = 0.007 </P>
<P> NumSteps = 20 </P>
<P> IO_CheckSteps = 1000 </P>
<P> IO_InfoSteps = 20 </P>
<P> Re = 7500 </P>
......
......@@ -253,13 +253,13 @@
</SOLVERINFO>
<PARAMETERS>
<P> TimeStep = 0.002 </P>
<P> NumSteps = 70 </P>
<P> TimeStep = 0.007 </P>
<P> NumSteps = 20 </P>
<P> IO_CheckSteps = 1000 </P>
<P> IO_InfoSteps = 20 </P>
<P> Re = 7500 </P>
<P> Kinvis = 1.0/Re </P>
<P> kdim = 16 </P>
<P> kdim = 16 </P>
<P> nvec =2 </P>
<P> evtol =1e-6 </P>
......
......@@ -14,7 +14,7 @@
</SOLVERINFO>
<PARAMETERS>
<P> TimeStep = 0.01 </P>
<P> NumSteps = 1.0/TimeStep </P>
<P> NumSteps = 0.5/TimeStep </P>
<P> IO_CheckSteps = 25.0/TimeStep </P>
<P> IO_InfoSteps = 0.5/TimeStep </P>
<P> IO_CFLSteps = IO_InfoSteps </P>
......
<?xml version="1.0" encoding="utf-8"?>
<test>
<description>3D channel flow, Hex elements, par(2), P=8</description>
<description>3D channel flow, Hex elements, par(2), P=3</description>
<executable>IncNavierStokesSolver</executable>
<parameters>--use-scotch Hex_channel_m8_par.xml</parameters>
<parameters>--use-scotch Hex_channel_m3_par.xml</parameters>
<processes>2</processes>
<files>
<file description="Session File">Hex_channel_m8_par.xml</file>
<file description="Session File">Hex_channel_m3_par.xml</file>
</files>
<metrics>
<metric type="L2" id="1">
......
......@@ -146,7 +146,7 @@
<DOMAIN> C[0] </DOMAIN>
</GEOMETRY>
<EXPANSIONS>
<E COMPOSITE="C[0]" NUMMODES="8" FIELDS="u,v,w,p" TYPE="MODIFIED" />
<E COMPOSITE="C[0]" NUMMODES="3" FIELDS="u,v,w,p" TYPE="MODIFIED" />
</EXPANSIONS>
<CONDITIONS>
<SOLVERINFO>
......
<?xml version="1.0" encoding="utf-8"?>
<test>
<description>3D channel flow, Hexahedral elements, P=8, Successive RHS(5)</description>
<description>3D channel flow, Hexahedral elements, P=3, Successive RHS(5)</description>
<executable>IncNavierStokesSolver</executable>
<parameters>Hex_channel_m8_srhs.xml</parameters>
<parameters>Hex_channel_m3_srhs.xml</parameters>
<files>
<file description="Session File">Hex_channel_m8_srhs.xml</file>
<file description="Session File">Hex_channel_m3_srhs.xml</file>
</files>
<metrics>
<metric type="L2" id="1">
......
......@@ -146,7 +146,7 @@
<DOMAIN> C[0] </DOMAIN>
</GEOMETRY>
<EXPANSIONS>
<E COMPOSITE="C[0]" NUMMODES="8" FIELDS="u,v,w,p" TYPE="MODIFIED" />
<E COMPOSITE="C[0]" NUMMODES="3" FIELDS="u,v,w,p" TYPE="MODIFIED" />
</EXPANSIONS>