Skip to content
Snippets Groups Projects
Commit f57df1e7 authored by Jacques Xing's avatar Jacques Xing
Browse files

Merge branch 'feature/L2ErrorInPhysPhys' into 'master'

Fixed L2norm for FilterError

See merge request nektar/nektar!1871
parents 7a1925b2 bd171141
No related branches found
No related tags found
No related merge requests found
...@@ -13,6 +13,7 @@ v5.7.0 ...@@ -13,6 +13,7 @@ v5.7.0
- Fix AdaptiveSFD for MPI (!1821) - Fix AdaptiveSFD for MPI (!1821)
- Fix IterativeStaticCond when using absolute tolerance (!1850) - Fix IterativeStaticCond when using absolute tolerance (!1850)
- Fix deadlock by scotch with multi-threading support (!1853) - Fix deadlock by scotch with multi-threading support (!1853)
- Fixed L2norm for FilterError (!1871)
**IncNavierStokesSolver** **IncNavierStokesSolver**
- Fix initial and boundary conditions in the moving reference frame (!1692, !1820) - Fix initial and boundary conditions in the moving reference frame (!1692, !1820)
......
...@@ -804,6 +804,16 @@ NekDouble EquationSystem::v_L2Error(unsigned int field, ...@@ -804,6 +804,16 @@ NekDouble EquationSystem::v_L2Error(unsigned int field,
m_fields[field]->UpdatePhys()); m_fields[field]->UpdatePhys());
} }
// Transform from (phys, wave) -> (phys, phys), for 2.5D
bool physwavetrans = false;
if (m_fields[field]->GetWaveSpace() == true)
{
m_fields[field]->HomogeneousBwdTrans(
m_fields[field]->GetTotPoints(), m_fields[field]->GetPhys(),
m_fields[field]->UpdatePhys());
physwavetrans = true;
}
if (exactsoln.size()) if (exactsoln.size())
{ {
L2error = L2error =
...@@ -831,6 +841,15 @@ NekDouble EquationSystem::v_L2Error(unsigned int field, ...@@ -831,6 +841,15 @@ NekDouble EquationSystem::v_L2Error(unsigned int field,
NekDouble Vol = m_fields[field]->Integral(one); NekDouble Vol = m_fields[field]->Integral(one);
L2error = sqrt(L2error * L2error / Vol); L2error = sqrt(L2error * L2error / Vol);
} }
// Transform from (phys, phys) -> (phys, wave), for 2.5D
if (physwavetrans == true)
{
m_fields[field]->HomogeneousFwdTrans(
m_fields[field]->GetTotPoints(), m_fields[field]->GetPhys(),
m_fields[field]->UpdatePhys());
physwavetrans = false;
}
} }
else else
{ {
......
...@@ -149,14 +149,6 @@ void FilterError::v_Update( ...@@ -149,14 +149,6 @@ void FilterError::v_Update(
Array<OneD, NekDouble> exactsoln(pFields[i]->GetTotPoints(), 0.0); Array<OneD, NekDouble> exactsoln(pFields[i]->GetTotPoints(), 0.0);
equationSys->EvaluateExactSolution(i, exactsoln, time); equationSys->EvaluateExactSolution(i, exactsoln, time);
// If homogeneous expansion is used, transform the solution to
// Fourier (Wave) space
if (m_homogeneous)
{
pFields[i]->HomogeneousFwdTrans(pFields[i]->GetTotPoints(),
exactsoln, exactsoln);
}
NekDouble vL2Error = equationSys->L2Error(i, exactsoln); NekDouble vL2Error = equationSys->L2Error(i, exactsoln);
NekDouble vLinfError = equationSys->LinfError(i, exactsoln); NekDouble vLinfError = equationSys->LinfError(i, exactsoln);
......
...@@ -219,6 +219,7 @@ IF( NEKTAR_SOLVER_INCNAVIERSTOKES ) ...@@ -219,6 +219,7 @@ IF( NEKTAR_SOLVER_INCNAVIERSTOKES )
ADD_NEKTAR_TEST(CylFlow3DH1D_SPM) ADD_NEKTAR_TEST(CylFlow3DH1D_SPM)
ADD_NEKTAR_TEST(manufactured_3DH1D) ADD_NEKTAR_TEST(manufactured_3DH1D)
ADD_NEKTAR_TEST(PlungingAirfoil_2D) ADD_NEKTAR_TEST(PlungingAirfoil_2D)
ADD_NEKTAR_TEST(3DH1D_L2ErrorFilter)
IF(NEKTAR_USE_SCOTCH) IF(NEKTAR_USE_SCOTCH)
# This tests exhibits sensitivity to the choice of DirectStaticCond vs. # This tests exhibits sensitivity to the choice of DirectStaticCond vs.
......
<?xml version="1.0" encoding="utf-8" ?>
<test>
<description>Computes L2norm for 3DH1D expansions</description>
<executable>IncNavierStokesSolver</executable>
<parameters>3DH1D_L2ErrorFilter.xml</parameters>
<files>
<file description="Session File">3DH1D_L2ErrorFilter.xml</file>
</files>
<metrics>
<metric type="L2" id="1">
<value variable="u" tolerance="1e-11">3.14159e+00</value>
<value variable="v" tolerance="1e-11">3.14159e+00</value>
<value variable="w" tolerance="1e-11">3.14159e+00</value>
<value variable="theta" tolerance="1e-11">3.14159e+00</value>
<value variable="p" tolerance="1e-09">0.000000e+00</value>
</metric>
</metrics>
</test>
<?xml version="1.0" encoding="utf-8" ?>
<NEKTAR>
<EXPANSIONS>
<E COMPOSITE="C[5]" NUMMODES="2" TYPE="MODIFIED" FIELDS="u,v,w,theta,p" />
</EXPANSIONS>
<CONDITIONS>
<SOLVERINFO>
<I PROPERTY="SolverType" VALUE="VelocityCorrectionScheme"/>
<I PROPERTY="EQTYPE" VALUE="UnsteadyNavierStokes" />
<I PROPERTY="EvolutionOperator" VALUE="Nonlinear" />
<I PROPERTY="Projection" VALUE="Galerkin" />
<I PROPERTY="GlobalSysSoln" VALUE="IterativeStaticCond" />
<I PROPERTY="TimeIntegrationMethod" VALUE="IMEXOrder2" />
<I PROPERTY="Driver" VALUE="Standard" />
<I PROPERTY="SpectralHPDealiasing" VALUE="True" />
<I PROPERTY="Homogeneous" VALUE="1D" />
</SOLVERINFO>
<PARAMETERS>
<!-- Need to pick Delta t strategically, dont want CFL number to be too large! -->
<P> TimeStep = 0.01 </P>
<!-- Final time -->
<P> TFinal = 0.00 </P>
<P> NumSteps = TFinal/TimeStep </P>
<P> IO_CheckSteps = 1/TimeStep </P>
<P> IO_InfoSteps = 1/TimeStep </P>
<P> IO_CFLSteps = 1/TimeStep </P>
<!-- Reynolds number -->
<P> Pr = 1 </P>
<P> Kinvis = Pr </P>
<P> HomModesZ = 8 </P>
<P> LZ = PI </P>
<!-- Heating parameters -->
<P> Ra = 0 </P>
<P> kdim = 512 </P>
<P> nvec = 2 </P>
<P> evtol = 1e-6 </P>
</PARAMETERS>
<VARIABLES>
<V ID="0">u</V>
<V ID="1">v</V>
<V ID="2">w</V>
<V ID="3">theta</V>
<V ID="4">p</V>
</VARIABLES>
<BOUNDARYREGIONS>
<B ID="0"> C[1] </B> <!-- Inlet -->
<B ID="1"> C[2] </B> <!-- Outlet -->
<B ID="2"> C[3] </B> <!-- UWall -->
<B ID="3"> C[4] </B> <!-- Lwall -->
</BOUNDARYREGIONS>
<BOUNDARYCONDITIONS>
<REGION REF="0">
<P VAR="u" VALUE="[1]" />
<P VAR="v" VALUE="[1]" />
<P VAR="w" VALUE="[1]" />
<P VAR="theta" VALUE="[1]" />
<P VAR="p" VALUE="[1]" />
</REGION>
<REGION REF="1">
<P VAR="u" VALUE="[0]" />
<P VAR="v" VALUE="[0]" />
<P VAR="w" VALUE="[0]" />
<P VAR="theta" VALUE="[0]" />
<P VAR="p" VALUE="[0]" />
</REGION>
<REGION REF="2">
<D VAR="u" VALUE="cos(2*PI*z / LZ)" />
<D VAR="v" VALUE="cos(2*PI*z / LZ)" />
<D VAR="w" VALUE="cos(2*PI*z / LZ)" />
<D VAR="theta" VALUE="cos(2*PI*z / LZ)" />
<N VAR="p" VALUE="0" USERDEFINEDTYPE="H" />
</REGION>
<REGION REF="3">
<D VAR="u" VALUE="cos(2*PI*z / LZ)" />
<D VAR="v" VALUE="cos(2*PI*z / LZ)" />
<D VAR="w" VALUE="cos(2*PI*z / LZ)" />
<D VAR="theta" VALUE="cos(2*PI*z / LZ)" />
<N VAR="p" VALUE="0" USERDEFINEDTYPE="H" />
</REGION>
</BOUNDARYCONDITIONS>
<FUNCTION NAME="DiffusionCoefficient" >
<E VAR="theta" VALUE="1" />
</FUNCTION>
<FUNCTION NAME="BodyForce">
<E VAR="u" VALUE="0" EVARS="u v w theta" />
<E VAR="w" VALUE="0" EVARS="u v w theta" />
<E VAR="v" VALUE="Ra * theta * Pr" EVARS="u v w theta" />
<E VAR="theta" VALUE="0" EVARS="u v w theta"/>
</FUNCTION>
<FUNCTION NAME="InitialConditions">
<E VAR="u" VALUE="cos(2*PI*z / LZ)" />
<E VAR="v" VALUE="cos(2*PI*z / LZ)" />
<E VAR="w" VALUE="cos(2*PI*z / LZ)" />
<E VAR="theta" VALUE="cos(2*PI*z / LZ)"/>
<E VAR="p" VALUE="0" />
</FUNCTION>
</CONDITIONS>
<FORCING>
<FORCE TYPE="Body">
<BODYFORCE>BodyForce</BODYFORCE>
</FORCE>
</FORCING>
<FILTERS>
<FILTER TYPE="Error">
<PARAM NAME="OutputFile">L2File</PARAM>
<PARAM NAME="OutputFrequency">1</PARAM>
<PARAM NAME="ConsoleOutput">1</PARAM>
</FILTER>
</FILTERS>
<GEOMETRY DIM="2" SPACE="2">
<VERTEX COMPRESSED="B64Z-LittleEndian" BITSIZE="64">eJxjYMAGPuyHsRihtISuS8hvRU4HdHkm7PL2MHlm7ObD5QGhKgpH</VERTEX>
<EDGE COMPRESSED="B64Z-LittleEndian" BITSIZE="64">eJxjYIAARgZUAOMz4eAz4+AzoPEBAzAAEwAA</EDGE>
<ELEMENT>
<Q COMPRESSED="B64Z-LittleEndian" BITSIZE="64">eJxjYEAFjFCaCUozQ2kAAHgABwAA</Q>
</ELEMENT>
<COMPOSITE>
<C ID="1"> E[3] </C>
<C ID="2"> E[1] </C>
<C ID="3"> E[2] </C>
<C ID="4"> E[0] </C>
<C ID="5"> Q[0] </C>
</COMPOSITE>
<DOMAIN>
<D ID="0"> C[5] </D>
</DOMAIN>
</GEOMETRY>
<Metadata>
<Provenance>
<GitBranch>refs/heads/fix/ImportFldSinglemodeExpansion</GitBranch>
<GitSHA1>45028fc647d421db87fb98b666286855b3fa9946</GitSHA1>
<Hostname>chanbuntu</Hostname>
<NektarVersion>5.3.0</NektarVersion>
<Timestamp>17-May-2023 16:29:20</Timestamp>
</Provenance>
<NekMeshCommandLine>-m peralign:surf1=1:surf2=2:dir=x Nx1-Ny1-Lx1.xml Nx1-Ny1-Lx1.xml </NekMeshCommandLine>
</Metadata>
</NEKTAR>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment