Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
amdis
amdis-core
Commits
d87f08fa
Commit
d87f08fa
authored
Oct 23, 2018
by
Praetorius, Simon
Browse files
Rename get-methods
parent
2795c8e4
Changes
60
Hide whitespace changes
Inline
Side-by-side
examples/convection_diffusion.cc
View file @
d87f08fa
...
@@ -35,7 +35,7 @@ int main(int argc, char** argv)
...
@@ -35,7 +35,7 @@ int main(int argc, char** argv)
prob
.
addDirichletBC
(
predicate
,
0
,
0
,
dbcValues
);
prob
.
addDirichletBC
(
predicate
,
0
,
0
,
dbcValues
);
AdaptInfo
adaptInfo
(
"adapt"
);
AdaptInfo
adaptInfo
(
"adapt"
);
prob
.
buildAfterAdapt
(
adaptInfo
,
Flag
(
0
)
);
prob
.
assemble
(
adaptInfo
);
prob
.
solve
(
adaptInfo
);
prob
.
solve
(
adaptInfo
);
prob
.
writeFiles
(
adaptInfo
,
true
);
prob
.
writeFiles
(
adaptInfo
,
true
);
...
...
examples/ellipt.cc
View file @
d87f08fa
...
@@ -38,14 +38,14 @@ int main(int argc, char** argv)
...
@@ -38,14 +38,14 @@ int main(int argc, char** argv)
prob
.
initialize
(
INIT_ALL
);
prob
.
initialize
(
INIT_ALL
);
auto
opL
=
makeOperator
(
tag
::
gradtest_gradtrial
{},
1.0
);
auto
opL
=
makeOperator
(
tag
::
gradtest_gradtrial
{},
1.0
);
prob
.
addMatrixOperator
(
opL
,
_
0
,
_
0
);
prob
.
addMatrixOperator
(
opL
,
0
,
0
);
auto
opForce
=
makeOperator
(
tag
::
test
{},
f
,
6
);
auto
opForce
=
makeOperator
(
tag
::
test
{},
f
,
6
);
prob
.
addVectorOperator
(
opForce
,
_
0
);
prob
.
addVectorOperator
(
opForce
,
0
);
// set boundary condition
// set boundary condition
auto
boundary
=
[](
auto
const
&
x
){
return
x
[
0
]
<
1.e-8
||
x
[
1
]
<
1.e-8
||
x
[
0
]
>
1.0
-
1.e-8
||
x
[
1
]
>
1.0
-
1.e-8
;
};
auto
boundary
=
[](
auto
const
&
x
){
return
x
[
0
]
<
1.e-8
||
x
[
1
]
<
1.e-8
||
x
[
0
]
>
1.0
-
1.e-8
||
x
[
1
]
>
1.0
-
1.e-8
;
};
prob
.
addDirichletBC
(
boundary
,
_
0
,
_
0
,
g
);
prob
.
addDirichletBC
(
boundary
,
0
,
0
,
g
);
AdaptInfo
adaptInfo
(
"adapt"
);
AdaptInfo
adaptInfo
(
"adapt"
);
...
@@ -62,17 +62,17 @@ int main(int argc, char** argv)
...
@@ -62,17 +62,17 @@ int main(int argc, char** argv)
widths
.
push_back
(
h
);
widths
.
push_back
(
h
);
prob
.
globalBasis
().
update
(
gridView
);
prob
.
globalBasis
().
update
(
gridView
);
prob
.
buildAfterAdapt
(
adaptInfo
,
Flag
(
0
)
);
prob
.
assemble
(
adaptInfo
);
prob
.
solve
(
adaptInfo
);
prob
.
solve
(
adaptInfo
);
double
errorL2
=
integrate
(
sqr
(
g
-
prob
.
getS
olution
(
_
0
)),
gridView
,
6
);
double
errorL2
=
integrate
(
sqr
(
g
-
prob
.
s
olution
(
0
)),
gridView
,
6
);
errL2
.
push_back
(
std
::
sqrt
(
errorL2
));
errL2
.
push_back
(
std
::
sqrt
(
errorL2
));
double
errorH1
=
errorL2
+
integrate
(
unary_dot
(
grad_g
-
gradientAtQP
(
prob
.
getS
olution
(
_
0
))),
gridView
,
6
);
double
errorH1
=
errorL2
+
integrate
(
unary_dot
(
grad_g
-
gradientAtQP
(
prob
.
s
olution
(
0
))),
gridView
,
6
);
errH1
.
push_back
(
std
::
sqrt
(
errorH1
));
errH1
.
push_back
(
std
::
sqrt
(
errorH1
));
#if WRITE_FILES
#if WRITE_FILES
Dune
::
VTKWriter
<
typename
ElliptProblem
::
GridView
>
vtkWriter
(
gridView
);
Dune
::
VTKWriter
<
typename
ElliptProblem
::
GridView
>
vtkWriter
(
gridView
);
vtkWriter
.
addVertexData
(
prob
.
getS
olution
(
_
0
),
Dune
::
VTK
::
FieldInfo
(
"u"
,
Dune
::
VTK
::
FieldInfo
::
Type
::
scalar
,
1
));
vtkWriter
.
addVertexData
(
prob
.
s
olution
(
0
),
Dune
::
VTK
::
FieldInfo
(
"u"
,
Dune
::
VTK
::
FieldInfo
::
Type
::
scalar
,
1
));
vtkWriter
.
write
(
"u_"
+
std
::
to_string
(
i
));
vtkWriter
.
write
(
"u_"
+
std
::
to_string
(
i
));
#endif
#endif
}
}
...
...
examples/heat.cc
View file @
d87f08fa
...
@@ -31,16 +31,16 @@ int main(int argc, char** argv)
...
@@ -31,16 +31,16 @@ int main(int argc, char** argv)
AdaptInfo
adaptInfo
(
"adapt"
);
AdaptInfo
adaptInfo
(
"adapt"
);
auto
*
invTau
=
probInstat
.
getI
nvTau
();
auto
invTau
=
std
::
ref
(
probInstat
.
i
nvTau
()
)
;
auto
opTimeLhs
=
makeOperator
(
tag
::
test_trial
{},
std
::
ref
(
*
invTau
)
)
;
auto
opTimeLhs
=
makeOperator
(
tag
::
test_trial
{},
invTau
);
prob
.
addMatrixOperator
(
opTimeLhs
,
0
,
0
);
prob
.
addMatrixOperator
(
opTimeLhs
,
0
,
0
);
auto
opL
=
makeOperator
(
tag
::
gradtest_gradtrial
{},
1.0
);
auto
opL
=
makeOperator
(
tag
::
gradtest_gradtrial
{},
1.0
);
prob
.
addMatrixOperator
(
opL
,
0
,
0
);
prob
.
addMatrixOperator
(
opL
,
0
,
0
);
auto
opTimeRhs
=
makeOperator
(
tag
::
test
{},
auto
opTimeRhs
=
makeOperator
(
tag
::
test
{},
invokeAtQP
([
invTau
](
double
u
)
{
return
u
*
(
*
invTau
);
},
prob
.
getS
olution
(
0
)),
2
);
invokeAtQP
([
invTau
](
double
u
)
{
return
u
*
invTau
.
get
(
);
},
prob
.
s
olution
(
0
)),
2
);
prob
.
addVectorOperator
(
opTimeRhs
,
0
);
prob
.
addVectorOperator
(
opTimeRhs
,
0
);
auto
opForce
=
makeOperator
(
tag
::
test
{},
[](
auto
const
&
x
)
{
return
-
1.0
;
},
0
);
auto
opForce
=
makeOperator
(
tag
::
test
{},
[](
auto
const
&
x
)
{
return
-
1.0
;
},
0
);
...
...
examples/navier_stokes.cc
View file @
d87f08fa
...
@@ -48,12 +48,16 @@ int main(int argc, char** argv)
...
@@ -48,12 +48,16 @@ int main(int argc, char** argv)
auto
_v
=
Dune
::
Indices
::
_0
;
auto
_v
=
Dune
::
Indices
::
_0
;
auto
_p
=
Dune
::
Indices
::
_1
;
auto
_p
=
Dune
::
Indices
::
_1
;
auto
invTau
=
std
::
ref
(
probInstat
.
invTau
());
// <1/tau * u, v>
// <1/tau * u, v>
auto
opTime
=
makeOperator
(
tag
::
testvec_trialvec
{},
density
);
auto
opTime
=
makeOperator
(
tag
::
testvec_trialvec
{},
density
*
invTau
);
prob
.
addMatrixOperator
(
opTime
,
_v
,
_v
);
prob
.
addMatrixOperator
(
opTime
,
_v
,
_v
);
// <1/tau * u^old, v>
// <1/tau * u^old, v>
auto
opTimeOld
=
makeOperator
(
tag
::
testvec
{},
density
*
prob
.
getSolution
(
_v
));
auto
opTimeOld
=
makeOperator
(
tag
::
testvec
{},
density
*
invTau
*
prob
.
solution
(
_v
));
prob
.
addVectorOperator
(
opTimeOld
,
_v
);
prob
.
addVectorOperator
(
opTimeOld
,
_v
);
...
@@ -62,17 +66,20 @@ int main(int argc, char** argv)
...
@@ -62,17 +66,20 @@ int main(int argc, char** argv)
prob
.
addMatrixOperator
(
opStokes
,
treepath
(),
treepath
());
prob
.
addMatrixOperator
(
opStokes
,
treepath
(),
treepath
());
// <(u * nabla)u_i^old, v_i>
// <(u * nabla)u_i^old, v_i>
auto
opNonlin1
=
makeOperator
(
tag
::
testvec_trialvec
{},
density
*
trans
(
gradientAtQP
(
prob
.
getSolution
(
_v
))));
auto
opNonlin1
=
makeOperator
(
tag
::
testvec_trialvec
{},
density
*
trans
(
gradientAtQP
(
prob
.
solution
(
_v
))));
prob
.
addMatrixOperator
(
opNonlin1
,
_v
,
_v
);
prob
.
addMatrixOperator
(
opNonlin1
,
_v
,
_v
);
for
(
std
::
size_t
i
=
0
;
i
<
AMDIS_DOW
;
++
i
)
{
for
(
std
::
size_t
i
=
0
;
i
<
AMDIS_DOW
;
++
i
)
{
// <(u^old * nabla)u_i, v_i>
// <(u^old * nabla)u_i, v_i>
auto
opNonlin2
=
makeOperator
(
tag
::
test_gradtrial
{},
density
*
prob
.
getSolution
(
_v
));
auto
opNonlin2
=
makeOperator
(
tag
::
test_gradtrial
{},
density
*
prob
.
solution
(
_v
));
prob
.
addMatrixOperator
(
opNonlin2
,
treepath
(
_v
,
i
),
treepath
(
_v
,
i
));
prob
.
addMatrixOperator
(
opNonlin2
,
treepath
(
_v
,
i
),
treepath
(
_v
,
i
));
}
}
// <(u^old * grad(u_i^old)), v_i>
// <(u^old * grad(u_i^old)), v_i>
auto
opNonlin3
=
makeOperator
(
tag
::
testvec
{},
trans
(
gradientAtQP
(
prob
.
getSolution
(
_v
)))
*
prob
.
getSolution
(
_v
));
auto
opNonlin3
=
makeOperator
(
tag
::
testvec
{},
trans
(
gradientAtQP
(
prob
.
solution
(
_v
)))
*
prob
.
solution
(
_v
));
prob
.
addVectorOperator
(
opNonlin3
,
_v
);
prob
.
addVectorOperator
(
opNonlin3
,
_v
);
// define boundary regions
// define boundary regions
...
@@ -98,8 +105,8 @@ int main(int argc, char** argv)
...
@@ -98,8 +105,8 @@ int main(int argc, char** argv)
prob
.
addDirichletBC
([](
auto
const
&
x
)
{
return
x
[
0
]
<
1.e-8
&&
x
[
1
]
<
1.e-8
;
},
_p
,
_p
,
0.0
);
prob
.
addDirichletBC
([](
auto
const
&
x
)
{
return
x
[
0
]
<
1.e-8
&&
x
[
1
]
<
1.e-8
;
},
_p
,
_p
,
0.0
);
// set initial conditions
// set initial conditions
prob
.
getS
olution
(
_v
).
interpolate
(
parabolic_y
);
prob
.
s
olution
(
_v
).
interpolate
(
parabolic_y
);
prob
.
getS
olution
(
_p
).
interpolate
(
0.0
);
prob
.
s
olution
(
_p
).
interpolate
(
0.0
);
AdaptInstationary
adapt
(
"adapt"
,
prob
,
adaptInfo
,
probInstat
,
adaptInfo
);
AdaptInstationary
adapt
(
"adapt"
,
prob
,
adaptInfo
,
probInstat
,
adaptInfo
);
adapt
.
adapt
();
adapt
.
adapt
();
...
...
examples/stokes0.cc
View file @
d87f08fa
...
@@ -25,73 +25,73 @@ using StokesProblem = ProblemStat<StokesParam>;
...
@@ -25,73 +25,73 @@ using StokesProblem = ProblemStat<StokesParam>;
int
main
(
int
argc
,
char
**
argv
)
int
main
(
int
argc
,
char
**
argv
)
{
{
AMDiS
::
init
(
argc
,
argv
);
AMDiS
::
init
(
argc
,
argv
);
StokesProblem
prob
(
"stokes"
);
StokesProblem
prob
(
"stokes"
);
prob
.
initialize
(
INIT_ALL
);
prob
.
initialize
(
INIT_ALL
);
double
viscosity
=
1.0
;
double
viscosity
=
1.0
;
Parameters
::
get
(
"stokes->viscosity"
,
viscosity
);
Parameters
::
get
(
"stokes->viscosity"
,
viscosity
);
// tree-paths for components
// tree-paths for components
auto
_v
=
Dune
::
Indices
::
_0
;
auto
_v
=
Dune
::
Indices
::
_0
;
auto
_p
=
Dune
::
Indices
::
_1
;
auto
_p
=
Dune
::
Indices
::
_1
;
// <viscosity*grad(u_i), grad(v_i)>
// <viscosity*grad(u_i), grad(v_i)>
for
(
std
::
size_t
i
=
0
;
i
<
DOW
;
++
i
)
{
for
(
std
::
size_t
i
=
0
;
i
<
DOW
;
++
i
)
{
auto
opL
=
makeOperator
(
tag
::
gradtest_gradtrial
{},
viscosity
);
auto
opL
=
makeOperator
(
tag
::
gradtest_gradtrial
{},
viscosity
);
prob
.
addMatrixOperator
(
opL
,
treepath
(
_v
,
i
),
treepath
(
_v
,
i
));
prob
.
addMatrixOperator
(
opL
,
treepath
(
_v
,
i
),
treepath
(
_v
,
i
));
// <d_i(v_i), p>
// <d_i(v_i), p>
auto
opP
=
makeOperator
(
tag
::
partialtest_trial
{
i
},
1.0
);
auto
opP
=
makeOperator
(
tag
::
partialtest_trial
{
i
},
1.0
);
prob
.
addMatrixOperator
(
opP
,
treepath
(
_v
,
i
),
_p
);
prob
.
addMatrixOperator
(
opP
,
treepath
(
_v
,
i
),
_p
);
// <q, d_i(u_i)>
// <q, d_i(u_i)>
auto
opDiv
=
makeOperator
(
tag
::
test_partialtrial
{
i
},
1.0
);
auto
opDiv
=
makeOperator
(
tag
::
test_partialtrial
{
i
},
1.0
);
prob
.
addMatrixOperator
(
opDiv
,
_p
,
treepath
(
_v
,
i
));
prob
.
addMatrixOperator
(
opDiv
,
_p
,
treepath
(
_v
,
i
));
}
}
auto
opZero
=
makeOperator
(
tag
::
test_trial
{},
0.0
);
auto
opZero
=
makeOperator
(
tag
::
test_trial
{},
0.0
);
prob
.
addMatrixOperator
(
opZero
,
_p
,
_p
);
prob
.
addMatrixOperator
(
opZero
,
_p
,
_p
);
// define boundary regions
// define boundary regions
auto
left
=
[](
auto
const
&
x
)
{
return
x
[
0
]
<
1.e-8
;
};
auto
left
=
[](
auto
const
&
x
)
{
return
x
[
0
]
<
1.e-8
;
};
auto
not_left
=
[](
auto
const
&
x
)
{
return
x
[
0
]
>
1.0
-
1.e-8
||
x
[
1
]
<
1.e-8
||
x
[
1
]
>
1.0
-
1.e-8
;
};
auto
not_left
=
[](
auto
const
&
x
)
{
return
x
[
0
]
>
1.0
-
1.e-8
||
x
[
1
]
<
1.e-8
||
x
[
1
]
>
1.0
-
1.e-8
;
};
// define boundary values
// define boundary values
auto
parabolic_y
=
[](
auto
const
&
x
)
->
Dune
::
FieldVector
<
double
,
DOW
>
auto
parabolic_y
=
[](
auto
const
&
x
)
->
Dune
::
FieldVector
<
double
,
DOW
>
{
{
return
{
0.0
,
x
[
1
]
*
(
1.0
-
x
[
1
])};
return
{
0.0
,
x
[
1
]
*
(
1.0
-
x
[
1
])};
};
};
auto
zero
=
[](
auto
const
&
x
)
->
Dune
::
FieldVector
<
double
,
DOW
>
auto
zero
=
[](
auto
const
&
x
)
->
Dune
::
FieldVector
<
double
,
DOW
>
{
{
return
{
0.0
,
0.0
};
return
{
0.0
,
0.0
};
};
};
// set boundary conditions for velocity
// set boundary conditions for velocity
prob
.
addDirichletBC
(
left
,
_v
,
_v
,
parabolic_y
);
prob
.
addDirichletBC
(
left
,
_v
,
_v
,
parabolic_y
);
prob
.
addDirichletBC
(
not_left
,
_v
,
_v
,
zero
);
prob
.
addDirichletBC
(
not_left
,
_v
,
_v
,
zero
);
prob
.
addDirichletBC
([](
auto
const
&
x
)
{
return
x
[
0
]
<
1.e-8
&&
x
[
1
]
<
1.e-8
;
},
_p
,
_p
,
0.0
);
prob
.
addDirichletBC
([](
auto
const
&
x
)
{
return
x
[
0
]
<
1.e-8
&&
x
[
1
]
<
1.e-8
;
},
_p
,
_p
,
0.0
);
AdaptInfo
adaptInfo
(
"adapt"
);
AdaptInfo
adaptInfo
(
"adapt"
);
// assemble and solve system
// assemble and solve system
prob
.
buildAfterAdapt
(
adaptInfo
,
Flag
(
0
)
);
prob
.
assemble
(
adaptInfo
);
#ifdef DEBUG_MTL
#ifdef DEBUG_MTL
// write matrix to file
// write matrix to file
mtl
::
io
::
matrix_market_ostream
out
(
"matrix_stokes0.mtx"
);
mtl
::
io
::
matrix_market_ostream
out
(
"matrix_stokes0.mtx"
);
out
<<
prob
.
getS
ystemMatrix
().
matrix
();
out
<<
prob
.
s
ystemMatrix
().
matrix
();
std
::
cout
<<
prob
.
getS
ystemMatrix
().
matrix
()
<<
'\n'
;
std
::
cout
<<
prob
.
s
ystemMatrix
().
matrix
()
<<
'\n'
;
#endif
#endif
prob
.
solve
(
adaptInfo
);
prob
.
solve
(
adaptInfo
);
// output solution
// output solution
prob
.
writeFiles
(
adaptInfo
);
prob
.
writeFiles
(
adaptInfo
);
AMDiS
::
finalize
();
AMDiS
::
finalize
();
return
0
;
return
0
;
}
}
examples/stokes1.cc
View file @
d87f08fa
...
@@ -25,74 +25,74 @@ using StokesProblem = ProblemStat<StokesParam>;
...
@@ -25,74 +25,74 @@ using StokesProblem = ProblemStat<StokesParam>;
int
main
(
int
argc
,
char
**
argv
)
int
main
(
int
argc
,
char
**
argv
)
{
{
AMDiS
::
init
(
argc
,
argv
);
AMDiS
::
init
(
argc
,
argv
);
StokesProblem
prob
(
"stokes"
);
StokesProblem
prob
(
"stokes"
);
prob
.
initialize
(
INIT_ALL
);
prob
.
initialize
(
INIT_ALL
);
double
viscosity
=
1.0
;
double
viscosity
=
1.0
;
Parameters
::
get
(
"stokes->viscosity"
,
viscosity
);
Parameters
::
get
(
"stokes->viscosity"
,
viscosity
);
// tree-paths for components
// tree-paths for components
auto
_v
=
Dune
::
Indices
::
_0
;
auto
_v
=
Dune
::
Indices
::
_0
;
auto
_p
=
Dune
::
Indices
::
_1
;
auto
_p
=
Dune
::
Indices
::
_1
;
// <viscosity*grad(u_i), grad(v_i)>
// <viscosity*grad(u_i), grad(v_i)>
for
(
std
::
size_t
i
=
0
;
i
<
DOW
;
++
i
)
{
for
(
std
::
size_t
i
=
0
;
i
<
DOW
;
++
i
)
{
auto
opL
=
makeOperator
(
tag
::
gradtest_gradtrial
{},
viscosity
);
auto
opL
=
makeOperator
(
tag
::
gradtest_gradtrial
{},
viscosity
);
prob
.
addMatrixOperator
(
opL
,
treepath
(
_v
,
i
),
treepath
(
_v
,
i
));
prob
.
addMatrixOperator
(
opL
,
treepath
(
_v
,
i
),
treepath
(
_v
,
i
));
}
}
// <d_i(v_i), p>
// <d_i(v_i), p>
auto
opP
=
makeOperator
(
tag
::
divtestvec_trial
{},
1.0
);
auto
opP
=
makeOperator
(
tag
::
divtestvec_trial
{},
1.0
);
prob
.
addMatrixOperator
(
opP
,
_v
,
_p
);
prob
.
addMatrixOperator
(
opP
,
_v
,
_p
);
// <q, d_i(u_i)>
// <q, d_i(u_i)>
auto
opDiv
=
makeOperator
(
tag
::
test_divtrialvec
{},
1.0
);
auto
opDiv
=
makeOperator
(
tag
::
test_divtrialvec
{},
1.0
);
prob
.
addMatrixOperator
(
opDiv
,
_p
,
_v
);
prob
.
addMatrixOperator
(
opDiv
,
_p
,
_v
);
auto
opZero
=
makeOperator
(
tag
::
test_trial
{},
0.0
);
auto
opZero
=
makeOperator
(
tag
::
test_trial
{},
0.0
);
prob
.
addMatrixOperator
(
opZero
,
_p
,
_p
);
prob
.
addMatrixOperator
(
opZero
,
_p
,
_p
);
// define boundary regions
// define boundary regions
auto
left
=
[](
auto
const
&
x
)
{
return
x
[
0
]
<
1.e-8
;
};
auto
left
=
[](
auto
const
&
x
)
{
return
x
[
0
]
<
1.e-8
;
};
auto
not_left
=
[](
auto
const
&
x
)
{
return
x
[
0
]
>
1.0
-
1.e-8
||
x
[
1
]
<
1.e-8
||
x
[
1
]
>
1.0
-
1.e-8
;
};
auto
not_left
=
[](
auto
const
&
x
)
{
return
x
[
0
]
>
1.0
-
1.e-8
||
x
[
1
]
<
1.e-8
||
x
[
1
]
>
1.0
-
1.e-8
;
};
// define boundary values
// define boundary values
auto
parabolic_y
=
[](
auto
const
&
x
)
->
Dune
::
FieldVector
<
double
,
DOW
>
auto
parabolic_y
=
[](
auto
const
&
x
)
->
Dune
::
FieldVector
<
double
,
DOW
>
{
{
return
{
0.0
,
x
[
1
]
*
(
1.0
-
x
[
1
])};
return
{
0.0
,
x
[
1
]
*
(
1.0
-
x
[
1
])};
};
};
auto
zero
=
[](
auto
const
&
x
)
->
Dune
::
FieldVector
<
double
,
DOW
>
auto
zero
=
[](
auto
const
&
x
)
->
Dune
::
FieldVector
<
double
,
DOW
>
{
{
return
{
0.0
,
0.0
};
return
{
0.0
,
0.0
};
};
};
// set boundary conditions for velocity
// set boundary conditions for velocity
prob
.
addDirichletBC
(
left
,
_v
,
_v
,
parabolic_y
);
prob
.
addDirichletBC
(
left
,
_v
,
_v
,
parabolic_y
);
prob
.
addDirichletBC
(
not_left
,
_v
,
_v
,
zero
);
prob
.
addDirichletBC
(
not_left
,
_v
,
_v
,
zero
);
prob
.
addDirichletBC
([](
auto
const
&
x
)
{
return
x
[
0
]
<
1.e-8
&&
x
[
1
]
<
1.e-8
;
},
_p
,
_p
,
0.0
);
prob
.
addDirichletBC
([](
auto
const
&
x
)
{
return
x
[
0
]
<
1.e-8
&&
x
[
1
]
<
1.e-8
;
},
_p
,
_p
,
0.0
);
AdaptInfo
adaptInfo
(
"adapt"
);
AdaptInfo
adaptInfo
(
"adapt"
);
// assemble and solve system
// assemble and solve system
prob
.
buildAfterAdapt
(
adaptInfo
,
Flag
(
0
)
);
prob
.
assemble
(
adaptInfo
);
#ifdef DEBUG_MTL
#ifdef DEBUG_MTL
// write matrix to file
// write matrix to file
mtl
::
io
::
matrix_market_ostream
out
(
"matrix_stokes1.mtx"
);
mtl
::
io
::
matrix_market_ostream
out
(
"matrix_stokes1.mtx"
);
out
<<
prob
.
getS
ystemMatrix
().
matrix
();
out
<<
prob
.
s
ystemMatrix
().
matrix
();
std
::
cout
<<
prob
.
getS
ystemMatrix
().
matrix
()
<<
'\n'
;
std
::
cout
<<
prob
.
s
ystemMatrix
().
matrix
()
<<
'\n'
;
#endif
#endif
prob
.
solve
(
adaptInfo
);
prob
.
solve
(
adaptInfo
);
// output solution
// output solution
prob
.
writeFiles
(
adaptInfo
);
prob
.
writeFiles
(
adaptInfo
);
AMDiS
::
finalize
();
AMDiS
::
finalize
();
return
0
;
return
0
;
}
}
examples/stokes3.cc
View file @
d87f08fa
...
@@ -62,8 +62,7 @@ int main(int argc, char** argv)
...
@@ -62,8 +62,7 @@ int main(int argc, char** argv)
AdaptInfo
adaptInfo
(
"adapt"
);
AdaptInfo
adaptInfo
(
"adapt"
);
// assemble and solve system
// assemble and solve system
prob
.
buildAfterAdapt
(
adaptInfo
,
Flag
(
0
));
prob
.
assemble
(
adaptInfo
);
prob
.
solve
(
adaptInfo
);
prob
.
solve
(
adaptInfo
);
// output solution
// output solution
...
...
examples/vecellipt.cc
View file @
d87f08fa
...
@@ -46,9 +46,9 @@ int main(int argc, char** argv)
...
@@ -46,9 +46,9 @@ int main(int argc, char** argv)
// write matrix to file
// write matrix to file
if
(
Parameters
::
get
<
int
>
(
"elliptMesh->global refinements"
).
value_or
(
0
)
<
4
)
{
if
(
Parameters
::
get
<
int
>
(
"elliptMesh->global refinements"
).
value_or
(
0
)
<
4
)
{
mtl
::
io
::
matrix_market_ostream
out
(
"matrix.mtx"
);
mtl
::
io
::
matrix_market_ostream
out
(
"matrix.mtx"
);
out
<<
prob
.
getS
ystemMatrix
().
matrix
();
out
<<
prob
.
s
ystemMatrix
().
matrix
();
std
::
cout
<<
prob
.
getS
ystemMatrix
().
matrix
()
<<
'\n'
;
std
::
cout
<<
prob
.
s
ystemMatrix
().
matrix
()
<<
'\n'
;
}
}
#endif
#endif
...
...
src/amdis/AdaptBase.hpp
View file @
d87f08fa
...
@@ -37,13 +37,13 @@ namespace AMDiS
...
@@ -37,13 +37,13 @@ namespace AMDiS
virtual
int
adapt
()
=
0
;
virtual
int
adapt
()
=
0
;
/// Returns \ref name
/// Returns \ref name
std
::
string
const
&
getN
ame
()
const
std
::
string
const
&
n
ame
()
const
{
{
return
name_
;
return
name_
;
}
}
/// Returns \ref problemIteration
/// Returns \ref problemIteration
ProblemIterationInterface
*
getP
roblemIteration
()
const
ProblemIterationInterface
*
p
roblemIteration
()
const
{
{
return
problemIteration_
;
return
problemIteration_
;
}
}
...
@@ -55,13 +55,13 @@ namespace AMDiS
...
@@ -55,13 +55,13 @@ namespace AMDiS
}
}
/// Returns \ref adaptInfo
/// Returns \ref adaptInfo
AdaptInfo
&
getA
daptInfo
()
const
AdaptInfo
&
a
daptInfo
()
const
{
{
return
adaptInfo_
;
return
adaptInfo_
;
}
}
/// Returns \ref problemTime
/// Returns \ref problemTime
ProblemTimeInterface
*
getP
roblemTime
()
const
ProblemTimeInterface
*
p
roblemTime
()
const
{
{
return
problemTime_
;
return
problemTime_
;
}
}
...
@@ -73,7 +73,7 @@ namespace AMDiS
...
@@ -73,7 +73,7 @@ namespace AMDiS
}
}
/// Returns \ref initialAdaptInfo
/// Returns \ref initialAdaptInfo
AdaptInfo
&
getI
nitialAdaptInfo
()
const
AdaptInfo
&
i
nitialAdaptInfo
()
const
{
{
return
*
initialAdaptInfo_
;
return
*
initialAdaptInfo_
;
}
}
...
...
src/amdis/AdaptInfo.cpp
View file @
d87f08fa
...
@@ -29,28 +29,28 @@ namespace AMDiS
...
@@ -29,28 +29,28 @@ namespace AMDiS
:
name_
(
name
)
:
name_
(
name
)
{
{
// init();
// init();
Parameters
::
get
(
name
+
"->start time"
,
startTime
);
Parameters
::
get
(
name
+
"->start time"
,
startTime
_
);
time
=
startTime
;
time
_
=
startTime
_
;
Parameters
::
get
(
name
+
"->timestep"
,
timestep
);
Parameters
::
get
(
name
+
"->timestep"
,
timestep
_
);
Parameters
::
get
(
name
+
"->end time"
,
endTime
);
Parameters
::
get
(
name
+
"->end time"
,
endTime
_
);
Parameters
::
get
(
name
+
"->max iteration"
,
maxSpaceIteration
);
Parameters
::
get
(
name
+
"->max iteration"
,
maxSpaceIteration
_
);
Parameters
::
get
(
name
+
"->max timestep iteration"
,
maxTimestepIteration
);
Parameters
::
get
(
name
+
"->max timestep iteration"
,
maxTimestepIteration
_
);
Parameters
::
get
(
name
+
"->max time iteration"
,
maxTimeIteration
);
Parameters
::
get
(
name
+
"->max time iteration"
,
maxTimeIteration
_
);
Parameters
::
get
(
name
+
"->min timestep"
,
minTimestep
);
Parameters
::
get
(
name
+
"->min timestep"
,
minTimestep
_
);
Parameters
::
get
(
name
+
"->max timestep"
,
maxTimestep
);
Parameters
::
get
(
name
+
"->max timestep"
,
maxTimestep
_
);
Parameters
::
get
(
name
+
"->number of timesteps"
,
nTimesteps
);
Parameters
::
get
(
name
+
"->number of timesteps"
,
nTimesteps
_
);
Parameters
::
get
(
name
+
"->time tolerance"
,
globalTimeTolerance
);
Parameters
::
get
(
name
+
"->time tolerance"
,
globalTimeTolerance
_
);
}
}
void
AdaptInfo
::
printTimeErrorLowInfo
()
const
void
AdaptInfo
::
printTimeErrorLowInfo
()
const
{
{
for
(
auto
const
&
scalContent
:
scalContents
)
for
(
auto
const
&
scalContent
:
scalContents
_
)
{
{
auto
i
=
scalContent
.
first
;
auto
i
=
scalContent
.
first
;
std
::
cout
<<
" Time error estimate ["
<<
i
<<
"] = "
std
::
cout
<<
" Time error estimate ["
<<
i
<<
"] = "
<<
getT
imeEstCombined
(
i
)
<<
"
\n
"
<<
t
imeEstCombined
(
i
)
<<
"
\n
"
<<
" Time error estimate sum ["
<<
i
<<
"] = "
<<
" Time error estimate sum ["
<<
i
<<
"] = "
<<
scalContent
.
second
.
est_t_sum
<<
"
\n
"
<<
scalContent
.
second
.
est_t_sum
<<
"
\n
"
<<
" Time error estimate max ["
<<
i
<<
"] = "
<<
" Time error estimate max ["
<<
i
<<
"] = "
...
@@ -64,17 +64,17 @@ namespace AMDiS
...
@@ -64,17 +64,17 @@ namespace AMDiS