Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Nektar
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
87
Issues
87
List
Boards
Labels
Service Desk
Milestones
Iterations
Merge Requests
44
Merge Requests
44
Requirements
Requirements
List
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Test Cases
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issue
Repository
Value Stream
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nektar
Nektar
Commits
18ebba85
Commit
18ebba85
authored
Nov 13, 2019
by
Zhenguo Yan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
TMP
parent
34e8eb90
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
1046 additions
and
1318 deletions
+1046
-1318
library/SolverUtils/Diffusion/DiffusionLDG.cpp
library/SolverUtils/Diffusion/DiffusionLDG.cpp
+325
-548
library/SolverUtils/Diffusion/DiffusionLDG.h
library/SolverUtils/Diffusion/DiffusionLDG.h
+30
-57
solvers/CompressibleFlowSolver/Diffusion/DiffusionLDGNS.cpp
solvers/CompressibleFlowSolver/Diffusion/DiffusionLDGNS.cpp
+575
-645
solvers/CompressibleFlowSolver/Diffusion/DiffusionLDGNS.h
solvers/CompressibleFlowSolver/Diffusion/DiffusionLDGNS.h
+33
-53
solvers/CompressibleFlowSolver/EquationSystems/NavierStokesCFE.cpp
...ompressibleFlowSolver/EquationSystems/NavierStokesCFE.cpp
+83
-15
No files found.
library/SolverUtils/Diffusion/DiffusionLDG.cpp
View file @
18ebba85
This diff is collapsed.
Click to expand it.
library/SolverUtils/Diffusion/DiffusionLDG.h
View file @
18ebba85
...
@@ -35,6 +35,8 @@
...
@@ -35,6 +35,8 @@
#ifndef NEKTAR_SOLVERUTILS_DIFFUSIONWEAKDG
#ifndef NEKTAR_SOLVERUTILS_DIFFUSIONWEAKDG
#define NEKTAR_SOLVERUTILS_DIFFUSIONWEAKDG
#define NEKTAR_SOLVERUTILS_DIFFUSIONWEAKDG
#include <boost/core/ignore_unused.hpp>
#include <SolverUtils/Diffusion/Diffusion.h>
#include <SolverUtils/Diffusion/Diffusion.h>
namespace
Nektar
namespace
Nektar
...
@@ -46,95 +48,66 @@ namespace Nektar
...
@@ -46,95 +48,66 @@ namespace Nektar
public:
public:
static
DiffusionSharedPtr
create
(
std
::
string
diffType
)
static
DiffusionSharedPtr
create
(
std
::
string
diffType
)
{
{
boost
::
ignore_unused
(
diffType
);
return
DiffusionSharedPtr
(
new
DiffusionLDG
());
return
DiffusionSharedPtr
(
new
DiffusionLDG
());
}
}
static
std
::
string
type
;
static
std
::
string
type
;
protected:
protected:
DiffusionLDG
();
DiffusionLDG
();
std
::
string
m_shockCaptureType
;
std
::
string
m_shockCaptureType
;
/// Coefficient of penalty term
NekDouble
m_C11
;
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
m_traceNormals
;
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
m_traceNormals
;
LibUtilities
::
SessionReaderSharedPtr
m_session
;
LibUtilities
::
SessionReaderSharedPtr
m_session
;
virtual
void
v_InitObject
(
virtual
void
v_InitObject
(
LibUtilities
::
SessionReaderSharedPtr
pSession
,
LibUtilities
::
SessionReaderSharedPtr
pSession
,
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
pFields
);
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
pFields
);
virtual
void
v_Diffuse
(
virtual
void
v_Diffuse
(
const
int
nConvective
,
const
std
::
size_t
nConvective
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
inarray
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
inarray
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
outarray
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
outarray
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pFwd
=
NullNekDoubleArrayofArray
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pFwd
=
NullNekDoubleArrayofArray
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pBwd
=
NullNekDoubleArrayofArray
);
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pBwd
=
NullNekDoubleArrayofArray
);
virtual
void
v_Diffuse_coeff
(
void
NumFluxforScalar
(
const
int
nConvective
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
inarray
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
outarray
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pFwd
=
NullNekDoubleArrayofArray
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pBwd
=
NullNekDoubleArrayofArray
);
void
v_DiffuseCalculateDerivative
(
const
int
nConvectiveFields
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
inarray
,
Array
<
OneD
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
>
&
inarrayderivative
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pFwd
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pBwd
);
void
v_DiffuseVolumeFlux
(
const
int
nConvectiveFields
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>>
&
inarray
,
Array
<
OneD
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
>
&
inarrayderivative
,
Array
<
OneD
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
>
&
VolumeFlux
,
Array
<
OneD
,
int
>
&
nonZeroIndex
)
;
void
v_DiffuseTraceFlux
(
const
int
nConvectiveFields
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>>
&
inarray
,
Array
<
OneD
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
>
&
inarrayderivative
,
Array
<
OneD
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
>
&
VolumeFlux
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
TraceFlux
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>>
&
pFwd
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>>
&
pBwd
,
Array
<
OneD
,
int
>
&
nonZeroIndex
);
virtual
void
v_NumFluxforScalar
(
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
ufield
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
ufield
,
Array
<
OneD
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
>&
uflux
,
Array
<
OneD
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
>&
uflux
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pFwd
=
NullNekDoubleArrayofArray
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pFwd
=
NullNekDoubleArrayofArray
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pBwd
=
NullNekDoubleArrayofArray
);
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pBwd
=
NullNekDoubleArrayofArray
);
v
irtual
void
v_WeakPenaltyforScalar
(
v
oid
ApplyScalarBCs
(
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
int
var
,
const
std
::
size_t
var
,
const
Array
<
OneD
,
const
NekDouble
>
&
ufield
,
const
Array
<
OneD
,
const
NekDouble
>
&
ufield
,
const
Array
<
OneD
,
const
NekDouble
>
&
uplus
,
const
Array
<
OneD
,
const
NekDouble
>
&
Fwd
,
const
Array
<
OneD
,
const
NekDouble
>
&
Bwd
,
Array
<
OneD
,
NekDouble
>
&
penaltyflux
);
Array
<
OneD
,
NekDouble
>
&
penaltyflux
);
v
irtual
void
v_
NumFluxforVector
(
v
oid
NumFluxforVector
(
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
ufield
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
ufield
,
Array
<
OneD
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
>&
qfield
,
Array
<
OneD
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
>&
qfield
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
qflux
);
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
qflux
);
v
irtual
void
v_WeakPenaltyforVector
(
v
oid
ApplyVectorBCs
(
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
int
var
,
const
std
::
size_t
var
,
const
int
dir
,
const
std
::
size_t
dir
,
const
Array
<
OneD
,
const
NekDouble
>
&
qfield
,
const
Array
<
OneD
,
const
NekDouble
>
&
qfield
,
const
Array
<
OneD
,
const
NekDouble
>
&
q
temp
,
const
Array
<
OneD
,
const
NekDouble
>
&
q
Fwd
,
Array
<
OneD
,
NekDouble
>
&
penaltyflux
,
const
Array
<
OneD
,
const
NekDouble
>
&
qBwd
,
NekDouble
C11
);
Array
<
OneD
,
NekDouble
>
&
penaltyflux
);
};
};
}
}
}
}
#endif
#endif
solvers/CompressibleFlowSolver/Diffusion/DiffusionLDGNS.cpp
View file @
18ebba85
This diff is collapsed.
Click to expand it.
solvers/CompressibleFlowSolver/Diffusion/DiffusionLDGNS.h
View file @
18ebba85
...
@@ -35,8 +35,13 @@
...
@@ -35,8 +35,13 @@
#ifndef NEKTAR_SOLVERS_COMPRESSIBLEFLOWSOLVER_DIFFUSIONLDGNS
#ifndef NEKTAR_SOLVERS_COMPRESSIBLEFLOWSOLVER_DIFFUSIONLDGNS
#define NEKTAR_SOLVERS_COMPRESSIBLEFLOWSOLVER_DIFFUSIONLDGNS
#define NEKTAR_SOLVERS_COMPRESSIBLEFLOWSOLVER_DIFFUSIONLDGNS
#include <boost/core/ignore_unused.hpp>
#include <SolverUtils/Diffusion/Diffusion.h>
#include <SolverUtils/Diffusion/Diffusion.h>
#include <CompressibleFlowSolver/Misc/EquationOfState.h>
#include <CompressibleFlowSolver/Misc/EquationOfState.h>
#include <LocalRegions/Expansion3D.h>
#include <LocalRegions/Expansion2D.h>
using
namespace
Nektar
::
SolverUtils
;
using
namespace
Nektar
::
SolverUtils
;
...
@@ -47,6 +52,7 @@ namespace Nektar
...
@@ -47,6 +52,7 @@ namespace Nektar
public:
public:
static
DiffusionSharedPtr
create
(
std
::
string
diffType
)
static
DiffusionSharedPtr
create
(
std
::
string
diffType
)
{
{
boost
::
ignore_unused
(
diffType
);
return
DiffusionSharedPtr
(
new
DiffusionLDGNS
());
return
DiffusionSharedPtr
(
new
DiffusionLDGNS
());
}
}
...
@@ -55,6 +61,12 @@ namespace Nektar
...
@@ -55,6 +61,12 @@ namespace Nektar
protected:
protected:
DiffusionLDGNS
();
DiffusionLDGNS
();
/// Penalty coefficient for LDGNS
NekDouble
m_C11
;
/// h scaling for penalty term
Array
<
OneD
,
NekDouble
>
m_traceOneOverH
;
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
m_traceVel
;
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
m_traceVel
;
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
m_traceNormals
;
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
m_traceNormals
;
LibUtilities
::
SessionReaderSharedPtr
m_session
;
LibUtilities
::
SessionReaderSharedPtr
m_session
;
...
@@ -66,82 +78,50 @@ namespace Nektar
...
@@ -66,82 +78,50 @@ namespace Nektar
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
m_homoDerivs
;
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
m_homoDerivs
;
in
t
m_spaceDim
;
std
::
size_
t
m_spaceDim
;
in
t
m_diffDim
;
std
::
size_
t
m_diffDim
;
virtual
void
v_InitObject
(
virtual
void
v_InitObject
(
LibUtilities
::
SessionReaderSharedPtr
pSession
,
LibUtilities
::
SessionReaderSharedPtr
pSession
,
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
pFields
);
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
pFields
);
virtual
void
v_Diffuse
(
virtual
void
v_Diffuse
(
const
int
nConvective
,
const
std
::
size_t
nConvective
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
inarray
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
outarray
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pFwd
=
NullNekDoubleArrayofArray
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pBwd
=
NullNekDoubleArrayofArray
);
virtual
void
v_DiffuseCalculateDerivative
(
const
int
nConvective
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
inarray
,
Array
<
OneD
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
>
&
inarrayderivative
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pFwd
=
NullNekDoubleArrayofArray
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pBwd
=
NullNekDoubleArrayofArray
);
virtual
void
v_DiffuseVolumeFlux
(
const
int
nConvectiveFields
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>>
&
inarray
,
Array
<
OneD
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
>
&
inarrayderivative
,
Array
<
OneD
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
>
&
VolumeFlux
,
Array
<
OneD
,
int
>
&
nonZeroIndex
)
;
virtual
void
v_DiffuseTraceFlux
(
const
int
nConvectiveFields
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>>
&
inarray
,
Array
<
OneD
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
>
&
inarrayderivative
,
Array
<
OneD
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
>
&
VolumeFlux
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
TraceFlux
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>>
&
pFwd
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>>
&
pBwd
,
Array
<
OneD
,
int
>
&
nonZeroIndex
);
virtual
void
v_Diffuse_coeff
(
const
int
nConvectiveFields
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
inarray
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
inarray
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
outarray
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
outarray
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pFwd
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pFwd
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pBwd
);
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pBwd
);
v
irtual
void
v_
NumericalFluxO1
(
v
oid
NumericalFluxO1
(
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
inarray
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
inarray
,
Array
<
OneD
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
>
Array
<
OneD
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
>
&
numericalFluxO1
,
&
numericalFluxO1
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pFwd
=
NullNekDoubleArrayofArray
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pFwd
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pBwd
=
NullNekDoubleArrayofArray
);
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pBwd
);
v
irtual
void
v_WeakPenalty
O1
(
v
oid
ApplyBCs
O1
(
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
inarray
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
inarray
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
uplus
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pFwd
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
penaltyfluxO1
);
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pBwd
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
flux01
);
v
irtual
void
v_
NumericalFluxO2
(
v
oid
NumericalFluxO2
(
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
ufield
,
Array
<
OneD
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
>&
qfield
,
Array
<
OneD
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
>&
qfield
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
qflux
);
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
qflux
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pFwd
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
pBwd
);
v
irtual
void
v_WeakPenalty
O2
(
v
oid
ApplyBCs
O2
(
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
&
fields
,
const
int
var
,
const
std
::
size_t
var
,
const
int
dir
,
const
std
::
size_t
dir
,
const
Array
<
OneD
,
const
NekDouble
>
&
qfield
,
const
Array
<
OneD
,
const
NekDouble
>
&
qfield
,
const
Array
<
OneD
,
const
NekDouble
>
&
qtemp
,
const
Array
<
OneD
,
const
NekDouble
>
&
qFwd
,
const
Array
<
OneD
,
const
NekDouble
>
&
qBwd
,
Array
<
OneD
,
NekDouble
>
&
penaltyflux
);
Array
<
OneD
,
NekDouble
>
&
penaltyflux
);
virtual
void
v_SetHomoDerivs
(
virtual
void
v_SetHomoDerivs
(
...
...
solvers/CompressibleFlowSolver/EquationSystems/NavierStokesCFE.cpp
View file @
18ebba85
...
@@ -79,8 +79,10 @@ namespace Nektar
...
@@ -79,8 +79,10 @@ namespace Nektar
.
CreateInstance
(
eosType
,
m_session
);
.
CreateInstance
(
eosType
,
m_session
);
// Viscosity
// Viscosity
int
nPts
=
m_fields
[
0
]
->
GetNpoints
();
m_session
->
LoadSolverInfo
(
"ViscosityType"
,
m_ViscosityType
,
"Constant"
);
m_session
->
LoadSolverInfo
(
"ViscosityType"
,
m_ViscosityType
,
"Constant"
);
m_session
->
LoadParameter
(
"mu"
,
m_mu
,
1.78e-05
);
m_session
->
LoadParameter
(
"mu"
,
m_muRef
,
1.78e-05
);
m_mu
=
Array
<
OneD
,
NekDouble
>
(
nPts
,
m_muRef
);
// Thermal conductivity or Prandtl
// Thermal conductivity or Prandtl
if
(
m_session
->
DefinesParameter
(
"thermalConductivity"
))
if
(
m_session
->
DefinesParameter
(
"thermalConductivity"
))
...
@@ -89,16 +91,18 @@ namespace Nektar
...
@@ -89,16 +91,18 @@ namespace Nektar
"Cannot define both Pr and thermalConductivity."
);
"Cannot define both Pr and thermalConductivity."
);
m_session
->
LoadParameter
(
"thermalConductivity"
,
m_session
->
LoadParameter
(
"thermalConductivity"
,
m_thermalConductivity
);
m_thermalConductivity
Ref
);
m_Prandtl
=
m_Cp
*
m_mu
/
m_thermalConductivity
;
m_Prandtl
=
m_Cp
*
m_mu
Ref
/
m_thermalConductivityRef
;
}
}
else
else
{
{
m_session
->
LoadParameter
(
"Pr"
,
m_Prandtl
,
0.72
);
m_session
->
LoadParameter
(
"Pr"
,
m_Prandtl
,
0.72
);
m_thermalConductivity
=
m_Cp
*
m_mu
/
m_Prandtl
;
m_thermalConductivity
Ref
=
m_Cp
*
m_muRef
/
m_Prandtl
;
}
}
m_thermalConductivity
=
Array
<
OneD
,
NekDouble
>
(
nPts
,
m_thermalConductivityRef
);
string
diffName
,
advName
;
string
diffName
;
m_session
->
LoadSolverInfo
(
"DiffusionType"
,
diffName
,
"LDGNS"
);
m_session
->
LoadSolverInfo
(
"DiffusionType"
,
diffName
,
"LDGNS"
);
m_diffusion
=
SolverUtils
::
GetDiffusionFactory
()
m_diffusion
=
SolverUtils
::
GetDiffusionFactory
()
...
@@ -215,6 +219,7 @@ namespace Nektar
...
@@ -215,6 +219,7 @@ namespace Nektar
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
inFwd
(
nvariables
-
1
);
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
inFwd
(
nvariables
-
1
);
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
inBwd
(
nvariables
-
1
);
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
inBwd
(
nvariables
-
1
);
for
(
i
=
0
;
i
<
nvariables
-
1
;
++
i
)
for
(
i
=
0
;
i
<
nvariables
-
1
;
++
i
)
{
{
inarrayDiff
[
i
]
=
Array
<
OneD
,
NekDouble
>
(
npoints
);
inarrayDiff
[
i
]
=
Array
<
OneD
,
NekDouble
>
(
npoints
);
...
@@ -233,7 +238,7 @@ namespace Nektar
...
@@ -233,7 +238,7 @@ namespace Nektar
m_varConv
->
GetVelocityVector
(
inarray
,
inarrayDiff
);
m_varConv
->
GetVelocityVector
(
inarray
,
inarrayDiff
);
// Repeat calculation for trace space
// Repeat calculation for trace space
if
(
pFwd
==
NullNekDoubleArrayofArray
||
if
(
pFwd
==
NullNekDoubleArrayofArray
||
pBwd
==
NullNekDoubleArrayofArray
)
pBwd
==
NullNekDoubleArrayofArray
)
{
{
inFwd
=
NullNekDoubleArrayofArray
;
inFwd
=
NullNekDoubleArrayofArray
;
...
@@ -262,12 +267,6 @@ namespace Nektar
...
@@ -262,12 +267,6 @@ namespace Nektar
outarray
[
i
],
1
,
outarray
[
i
],
1
,
outarray
[
i
],
1
);
outarray
[
i
],
1
);
}
}
if
(
m_shockCaptureType
!=
"Off"
)
{
// Get min h/p
m_artificialDiffusion
->
SetElmtHP
(
GetElmtMinHP
());
m_artificialDiffusion
->
DoArtificialDiffusion
(
inarray
,
outarray
);
}
}
}
}
}
...
@@ -314,6 +313,7 @@ namespace Nektar
...
@@ -314,6 +313,7 @@ namespace Nektar
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
inFwd
(
nvariables
-
1
);
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
inFwd
(
nvariables
-
1
);
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
inBwd
(
nvariables
-
1
);
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
inBwd
(
nvariables
-
1
);
for
(
i
=
0
;
i
<
nvariables
-
1
;
++
i
)
for
(
i
=
0
;
i
<
nvariables
-
1
;
++
i
)
{
{
inarrayDiff
[
i
]
=
Array
<
OneD
,
NekDouble
>
(
npoints
);
inarrayDiff
[
i
]
=
Array
<
OneD
,
NekDouble
>
(
npoints
);
...
@@ -332,7 +332,7 @@ namespace Nektar
...
@@ -332,7 +332,7 @@ namespace Nektar
m_varConv
->
GetVelocityVector
(
inarray
,
inarrayDiff
);
m_varConv
->
GetVelocityVector
(
inarray
,
inarrayDiff
);
// Repeat calculation for trace space
// Repeat calculation for trace space
if
(
pFwd
==
NullNekDoubleArrayofArray
||
if
(
pFwd
==
NullNekDoubleArrayofArray
||
pBwd
==
NullNekDoubleArrayofArray
)
pBwd
==
NullNekDoubleArrayofArray
)
{
{
inFwd
=
NullNekDoubleArrayofArray
;
inFwd
=
NullNekDoubleArrayofArray
;
...
@@ -351,12 +351,12 @@ namespace Nektar
...
@@ -351,12 +351,12 @@ namespace Nektar
}
}
// Diffusion term in physical rhs form
// Diffusion term in physical rhs form
m_diffusion
->
Diffuse
_coeff
(
nvariables
,
m_fields
,
inarrayDiff
,
outarrayDiff
,
m_diffusion
->
Diffuse
(
nvariables
,
m_fields
,
inarrayDiff
,
outarrayDiff
,
inFwd
,
inBwd
);
inFwd
,
inBwd
);
for
(
i
=
0
;
i
<
nvariables
;
++
i
)
for
(
i
=
0
;
i
<
nvariables
;
++
i
)
{
{
Vmath
::
Vadd
(
n
coeff
s
,
Vmath
::
Vadd
(
n
point
s
,
outarrayDiff
[
i
],
1
,
outarrayDiff
[
i
],
1
,
outarray
[
i
],
1
,
outarray
[
i
],
1
,
outarray
[
i
],
1
);
outarray
[
i
],
1
);
...
@@ -1137,4 +1137,72 @@ namespace Nektar
...
@@ -1137,4 +1137,72 @@ namespace Nektar
}
}
/**
* @brief Return the penalty vector for the LDGNS diffusion problem.
*/
void
NavierStokesCFE
::
v_GetFluxPenalty
(
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
uFwd
,
const
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
uBwd
,
Array
<
OneD
,
Array
<
OneD
,
NekDouble
>
>
&
penaltyCoeff
)
{
unsigned
int
nTracePts
=
uFwd
[
0
].
num_elements
();
// Compute average temperature
unsigned
int
nVariables
=
uFwd
.
num_elements
();
Array
<
OneD
,
NekDouble
>
tAve
{
nTracePts
,
0.0
};
Vmath
::
Svtsvtp
(
nTracePts
,
0.5
,
uFwd
[
nVariables
-
1
],
1
,
0.5
,
uBwd
[
nVariables
-
1
],
1
,
tAve
,
1
);
// Get average viscosity and thermal conductivity
Array
<
OneD
,
NekDouble
>
muAve
{
nTracePts
,
0.0
};
Array
<
OneD
,
NekDouble
>
tcAve
{
nTracePts
,
0.0
};
GetViscosityAndThermalCondFromTemp
(
tAve
,
muAve
,
tcAve
);
// Compute penalty term
for
(
int
i
=
0
;
i
<
nVariables
;
++
i
)
{
// Get jump of u variables
Vmath
::
Vsub
(
nTracePts
,
uFwd
[
i
],
1
,
uBwd
[
i
],
1
,
penaltyCoeff
[
i
],
1
);
// Multiply by variable coefficient = {coeff} ( u^+ - u^- )
if
(
i
<
nVariables
-
1
)
{
Vmath
::
Vmul
(
nTracePts
,
muAve
,
1
,
penaltyCoeff
[
i
],
1
,
penaltyCoeff
[
i
],
1
);
}
else
{
Vmath
::
Vmul
(
nTracePts
,
tcAve
,
1
,
penaltyCoeff
[
i
],
1
,
penaltyCoeff
[
i
],
1
);
}
}
}
/**
* @brief Update viscosity
* todo: add artificial viscosity here
*/
void
NavierStokesCFE
::
GetViscosityAndThermalCondFromTemp
(
const
Array
<
OneD
,
NekDouble
>
&
temperature
,
Array
<
OneD
,
NekDouble
>
&
mu
,
Array
<
OneD
,
NekDouble
>
&
thermalCond
)
{
int
nPts
=
temperature
.
num_elements
();
// Variable viscosity through the Sutherland's law
if
(
m_ViscosityType
==
"Variable"
)
{
m_varConv
->
GetDynamicViscosity
(
temperature
,
mu
);
}
else
{
Vmath
::
Fill
(
nPts
,
m_muRef
,
mu
,
1
);
}
NekDouble
tRa
=
m_Cp
/
m_Prandtl
;
Vmath
::
Smul
(
nPts
,
tRa
,
mu
,
1
,
thermalCond
,
1
);
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment