Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
dumux-repositories
dumux
Commits
09218942
Commit
09218942
authored
Sep 29, 2021
by
Katharina Heck
Browse files
[cleanup] delete unnecessary input
cleanup
parent
c993aecc
Changes
4
Hide whitespace changes
Inline
Side-by-side
test/freeflow/navierstokes/angeli/CMakeLists.txt
View file @
09218942
...
...
@@ -20,6 +20,6 @@ dumux_add_test(NAME test_ff_navierstokes_angeli_averaged
--command
"
${
CMAKE_CURRENT_BINARY_DIR
}
/test_ff_navierstokes_angeli params.input
-TimeLoop.TEnd 1e-6 -TimeLoop.DtInitial 1e-6
-Problem.Name test_ff_navierstokes_angeli_averaged
-Problem.
UseQuad
true"
)
-Problem.
InterpolateExactVelocity
true"
)
dune_symlink_to_source_files
(
FILES
"params.input"
)
test/freeflow/navierstokes/angeli/main.cc
View file @
09218942
...
...
@@ -32,58 +32,25 @@
#include <dune/common/parallel/mpihelper.hh>
#include <dune/common/timer.hh>
#include <dune/grid/io/file/dgfparser/dgfexception.hh>
#include <dune/grid/io/file/vtk.hh>
#include <dumux/multidomain/fvassembler.hh>
#include <dumux/multidomain/traits.hh>
#include <dumux/multidomain/newtonsolver.hh>
#include <dumux/freeflow/navierstokes/velocityoutput.hh>
#include <dumux/io/vtkoutputmodule.hh>
#include <dumux/io/grid/gridmanager_yasp.hh>
#include <dumux/assembly/diffmethod.hh>
#include <dumux/common/dumuxmessage.hh>
#include <dumux/common/parameters.hh>
#include <dumux/common/properties.hh>
#include <dumux/io/vtkoutputmodule.hh>
#include <dumux/io/grid/gridmanager_yasp.hh>
#include <dumux/linear/seqsolverbackend.hh>
#include <dumux/nonlinear/newtonsolver.hh>
#include <dumux/multidomain/fvassembler.hh>
#include <dumux/multidomain/traits.hh>
#include <dumux/multidomain/newtonsolver.hh>
#include <dumux/freeflow/navierstokes/velocityoutput.hh>
#include <test/freeflow/navierstokes/analyticalsolutionvectors.hh>
#include <test/freeflow/navierstokes/errors.hh>
#include "properties.hh"
template
<
class
MomentumProblem
,
class
MassProblem
,
class
SolutionVector
>
void
printL2Error
(
const
MomentumProblem
&
momentumProblem
,
const
MassProblem
&
massProblem
,
const
SolutionVector
&
x
)
{
const
auto
velocityL2error
=
calculateL2Error
(
momentumProblem
,
x
[
Dune
::
index_constant
<
0
>
()]);
const
auto
pressureL2error
=
calculateL2Error
(
massProblem
,
x
[
Dune
::
index_constant
<
1
>
()]);
static
constexpr
auto
pressureIdx
=
MassProblem
::
Indices
::
pressureIdx
;
static
constexpr
auto
velocityXIdx
=
MomentumProblem
::
Indices
::
velocityXIdx
;
static
constexpr
auto
velocityYIdx
=
MomentumProblem
::
Indices
::
velocityYIdx
;
const
auto
numCellCenterDofs
=
massProblem
.
gridGeometry
().
numDofs
();
const
auto
numFaceDofs
=
momentumProblem
.
gridGeometry
().
numDofs
();
std
::
cout
<<
std
::
setprecision
(
8
)
<<
"** L2 error (abs/rel) for "
<<
std
::
setw
(
6
)
<<
numCellCenterDofs
<<
" cc dofs and "
<<
numFaceDofs
<<
" face dofs (total: "
<<
numCellCenterDofs
+
numFaceDofs
<<
"): "
<<
std
::
scientific
<<
"L2(p) = "
<<
pressureL2error
.
absolute
[
pressureIdx
]
<<
" / "
<<
pressureL2error
.
relative
[
pressureIdx
]
<<
" , L2(vx) = "
<<
velocityL2error
.
absolute
[
velocityXIdx
]
<<
" / "
<<
velocityL2error
.
relative
[
velocityXIdx
]
<<
" , L2(vy) = "
<<
velocityL2error
.
absolute
[
velocityYIdx
]
<<
" / "
<<
velocityL2error
.
relative
[
velocityYIdx
]
<<
std
::
endl
;
// write the norm into a log file
std
::
ofstream
logFile
;
logFile
.
open
(
momentumProblem
.
name
()
+
".log"
,
std
::
ios
::
app
);
logFile
<<
"[ConvergenceTest] L2(p) = "
<<
pressureL2error
.
absolute
[
pressureIdx
]
<<
" L2(vx) = "
<<
velocityL2error
.
absolute
[
velocityXIdx
]
<<
" L2(vy) = "
<<
velocityL2error
.
absolute
[
velocityYIdx
]
<<
std
::
endl
;
logFile
.
close
();
}
int
main
(
int
argc
,
char
**
argv
)
{
using
namespace
Dumux
;
...
...
@@ -146,12 +113,10 @@ int main(int argc, char** argv)
timeLoop
->
setMaxTimeStepSize
(
maxDt
);
// the solution vector
constexpr
auto
momentumIdx
=
Dune
::
index_constant
<
0
>
()
;
constexpr
auto
massIdx
=
Dune
::
index_constant
<
1
>
()
;
constexpr
auto
momentumIdx
=
CouplingManager
::
freeFlowMomentumIndex
;
constexpr
auto
massIdx
=
CouplingManager
::
freeFlowMassIndex
;
using
SolutionVector
=
typename
Traits
::
SolutionVector
;
SolutionVector
x
;
x
[
momentumIdx
].
resize
(
momentumGridGeometry
->
numDofs
());
x
[
massIdx
].
resize
(
massGridGeometry
->
numDofs
());
momentumProblem
->
applyInitialSolution
(
x
[
momentumIdx
]);
massProblem
->
applyInitialSolution
(
x
[
massIdx
]);
auto
xOld
=
x
;
...
...
@@ -186,15 +151,6 @@ int main(int argc, char** argv)
std
::
make_tuple
(
momentumGridVariables
,
massGridVariables
),
couplingManager
,
timeLoop
,
xOld
);
assembler
->
assembleResidual
(
x
);
std
::
cout
<<
"Initial momentum defect "
<<
std
::
endl
;
for
(
const
auto
s
:
assembler
->
residual
()[
momentumIdx
])
std
::
cout
<<
s
<<
std
::
endl
;
std
::
cout
<<
"Initial mass defect "
<<
std
::
endl
;
for
(
const
auto
s
:
assembler
->
residual
()[
massIdx
])
std
::
cout
<<
s
<<
std
::
endl
;
// the linear solver
using
LinearSolver
=
Dumux
::
UMFPackBackend
;
auto
linearSolver
=
std
::
make_shared
<
LinearSolver
>
();
...
...
test/freeflow/navierstokes/angeli/problem.hh
View file @
09218942
...
...
@@ -80,7 +80,7 @@ public:
{
kinematicViscosity_
=
getParam
<
Scalar
>
(
"Component.LiquidKinematicViscosity"
,
1.0
);
useNeumann_
=
getParam
<
bool
>
(
"Problem.UseNeumann"
,
false
);
useQuad
_
=
getParam
<
bool
>
(
"Problem.
UseQuad
"
,
false
);
interpolateExactVelocity
_
=
getParam
<
bool
>
(
"Problem.
InterpolateExactVelocity
"
,
false
);
}
/*!
...
...
@@ -144,17 +144,8 @@ public:
// If only Dirichlet BCs are set for the momentum balance, fix the pressure at some cells such that the solution is fully defined.
if
(
!
useNeumann_
)
{
auto
fvGeometry
=
localView
(
this
->
gridGeometry
());
fvGeometry
.
bindElement
(
element
);
const
auto
isAtBoundary
=
[
&
](
const
FVElementGeometry
&
fvGeometry
)
{
if
(
fvGeometry
.
hasBoundaryScvf
())
return
true
;
return
false
;
};
if
(
isAtBoundary
(
fvGeometry
))
const
auto
fvGeometry
=
localView
(
this
->
gridGeometry
()).
bindElement
(
element
);
if
(
fvGeometry
.
hasBoundaryScvf
())
values
.
set
(
Indices
::
pressureIdx
);
}
...
...
@@ -182,7 +173,7 @@ public:
*/
PrimaryVariables
dirichlet
(
const
Element
&
element
,
const
SubControlVolumeFace
&
scvf
)
const
{
if
(
ParentType
::
isMomentumProblem
()
&&
useQuad
_
)
if
(
ParentType
::
isMomentumProblem
()
&&
interpolateExactVelocity
_
)
return
velocityDirichlet_
(
scvf
);
else
return
analyticalSolution
(
scvf
.
center
(),
time_
);
...
...
@@ -222,7 +213,7 @@ public:
const
Scalar
t
=
time_
;
momentumFlux
[
0
][
0
]
=
M_PI
*
M_PI
*
(
-
4.0
*
mu
*
exp
(
10.0
*
M_PI
*
M_PI
*
mu
*
t
)
*
sin
(
M_PI
*
x
)
*
sin
(
2
*
M_PI
*
y
)
+
(
4.0
*
sin
(
2
*
M_PI
*
y
)
*
sin
(
2
*
M_PI
*
y
)
*
cos
(
M_PI
*
x
)
*
cos
(
M_PI
*
x
)
-
1.0
*
cos
(
2
*
M_PI
*
x
)
-
0.25
*
cos
(
4
*
M_PI
*
y
))
*
exp
(
5.0
*
M_PI
*
M_PI
*
mu
*
t
))
*
exp
(
-
15.0
*
M_PI
*
M_PI
*
mu
*
t
);
momentumFlux
[
0
][
1
]
=
M_PI
*
M_PI
*
(
3.0
*
mu
*
exp
(
10.0
*
M_PI
*
M_PI
*
mu
*
t
)
-
2.0
*
exp
(
5.0
*
M_PI
*
M_PI
*
mu
*
t
)
*
sin
(
M_PI
*
x
)
*
sin
(
2
*
M_PI
*
y
))
*
exp
(
-
15.0
*
M_PI
*
M_PI
*
mu
*
t
)
*
cos
(
M_PI
*
x
)
*
cos
(
2
*
M_PI
*
y
);
momentumFlux
[
1
][
0
]
=
M_PI
*
M_PI
*
(
3.0
*
mu
*
exp
(
10.0
*
M_PI
*
M_PI
*
mu
*
t
)
-
2.0
*
exp
(
5.0
*
M_PI
*
M_PI
*
mu
*
t
)
*
sin
(
M_PI
*
x
)
*
sin
(
2
*
M_PI
*
y
))
*
exp
(
-
15.0
*
M_PI
*
M_PI
*
mu
*
t
)
*
cos
(
M_PI
*
x
)
*
cos
(
2
*
M_PI
*
y
)
;
momentumFlux
[
1
][
0
]
=
momentumFlux
[
0
][
1
]
;
momentumFlux
[
1
][
1
]
=
M_PI
*
M_PI
*
(
4.0
*
mu
*
exp
(
10.0
*
M_PI
*
M_PI
*
mu
*
t
)
*
sin
(
M_PI
*
x
)
*
sin
(
2
*
M_PI
*
y
)
+
(
sin
(
M_PI
*
x
)
*
sin
(
M_PI
*
x
)
*
cos
(
2
*
M_PI
*
y
)
*
cos
(
2
*
M_PI
*
y
)
-
1.0
*
cos
(
2
*
M_PI
*
x
)
-
0.25
*
cos
(
4
*
M_PI
*
y
))
*
exp
(
5.0
*
M_PI
*
M_PI
*
mu
*
t
))
*
exp
(
-
15.0
*
M_PI
*
M_PI
*
mu
*
t
);
const
auto
normal
=
scvf
.
unitOuterNormal
();
...
...
@@ -280,7 +271,7 @@ public:
// because the discrete mass balance equation is not fulfilled when just taking
// point-wise values of the analytical solution.
if
(
!
useQuad
_
)
if
(
!
interpolateExactVelocity
_
)
return
analyticalSolution
(
scv
.
dofPosition
(),
0.0
);
// Get the element intersection/facet corresponding corresponding to the dual grid scv
...
...
@@ -288,13 +279,11 @@ public:
// on that facet.
const
auto
&
element
=
this
->
gridGeometry
().
element
(
scv
.
elementIndex
());
int
idx
=
0
;
for
(
const
auto
&
intersection
:
intersections
(
this
->
gridGeometry
().
gridView
(),
element
))
{
if
(
i
dx
==
scv
.
indexInElement
())
if
(
i
ntersection
.
indexInInside
()
==
scv
.
indexInElement
())
return
velocityDirichlet_
(
intersection
);
++
idx
;
}
DUNE_THROW
(
Dune
::
InvalidStateException
,
"No intersection found"
);
}
...
...
@@ -339,7 +328,7 @@ private:
Scalar
kinematicViscosity_
;
Scalar
time_
=
0.0
;
bool
useNeumann_
;
bool
useQuad
_
;
bool
interpolateExactVelocity
_
;
};
}
// end namespace Dumux
...
...
test/freeflow/navierstokes/angeli/properties.hh
View file @
09218942
...
...
@@ -26,7 +26,6 @@
#define DUMUX_ANGELI_TEST_PROPERTIES_HH
#include <dune/grid/yaspgrid.hh>
#include <dune/geometry/quadraturerules.hh>
#include <dumux/freeflow/navierstokes/momentum/model.hh>
#include <dumux/freeflow/navierstokes/mass/1p/model.hh>
...
...
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