Skip to content

Commit e657541

Browse files
committed
Let the test test everything in on go after the change.
1 parent 90e8c3e commit e657541

File tree

3 files changed

+113
-8
lines changed

3 files changed

+113
-8
lines changed

tests/visco_plastic_derivatives.cc

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,24 @@
55
#include <aspect/material_model/visco_plastic.h>
66
#include <aspect/simulator_access.h>
77
#include <aspect/newton.h>
8+
#include <aspect/parameters.h>
89

910
#include <deal.II/grid/tria.h>
1011
#include <deal.II/base/exceptions.h>
1112
#include <deal.II/base/std_cxx11/shared_ptr.h>
13+
#include <deal.II/base/std_cxx11/bind.h>
1214

1315
#include <iostream>
1416

1517
template <int dim>
1618
void f(const aspect::SimulatorAccess<dim> &simulator_access,
1719
aspect::Assemblers::Manager<dim> &,
18-
unsigned int parameter)
20+
std::string averaging_parameter)
1921
{
2022
// Prepare NewtonHandler for test
2123
const_cast<aspect::NewtonHandler<dim> &> (simulator_access.get_newton_handler()).set_newton_derivative_scaling_factor(1.0);
2224

23-
std::cout << std::endl << "Testing ViscoPlastic derivatives against analytical derivatives" << std::endl;
25+
std::cout << std::endl << "Testing ViscoPlastic derivatives against analytical derivatives for averaging parameter " << averaging_parameter << std::endl;
2426

2527
using namespace aspect::MaterialModel;
2628
MaterialModelInputs<dim> in_base(5,3);
@@ -134,6 +136,26 @@ void f(const aspect::SimulatorAccess<dim> &simulator_access,
134136
MaterialModelOutputs<dim> out_dviscositydstrainrate_oneone(5,3);
135137
MaterialModelOutputs<dim> out_dviscositydtemperature(5,3);
136138

139+
aspect::ParameterHandler prm;
140+
141+
const aspect::MaterialModel::ViscoPlastic<dim> const_material_model = dynamic_cast<const aspect::MaterialModel::ViscoPlastic<dim> &>(simulator_access.get_material_model());
142+
aspect::MaterialModel::ViscoPlastic<dim> material_model = const_cast<aspect::MaterialModel::ViscoPlastic<dim> &>(const_material_model);
143+
144+
material_model.declare_parameters(prm);
145+
146+
prm.enter_subsection("Material model");
147+
{
148+
prm.enter_subsection ("Visco Plastic");
149+
{
150+
prm.set ("Viscosity averaging scheme", averaging_parameter);
151+
prm.set ("Angles of internal friction", "30");
152+
}
153+
prm.leave_subsection();
154+
}
155+
prm.leave_subsection();
156+
157+
const_cast<aspect::MaterialModel::Interface<dim> &>(simulator_access.get_material_model()).parse_parameters(prm);
158+
137159
out_base.additional_outputs.push_back(std_cxx11::make_shared<MaterialModelDerivatives<dim> > (5));
138160

139161
simulator_access.get_material_model().evaluate(in_base, out_base);
@@ -241,25 +263,37 @@ void f(const aspect::SimulatorAccess<dim> &simulator_access,
241263
}
242264

243265
template <>
244-
void f(const aspect::SimulatorAccess<3> &simulator_access,
245-
aspect::Assemblers::Manager<3> &)
266+
void f(const aspect::SimulatorAccess<3> &,
267+
aspect::Assemblers::Manager<3> &,
268+
std::string )
246269
{
247270
AssertThrow(false,dealii::ExcInternalError());
248271
}
249272

250273
template <int dim>
251274
void signal_connector (aspect::SimulatorSignals<dim> &signals)
252275
{
276+
using namespace dealii;
253277
std::cout << "* Connecting signals" << std::endl;
254278
signals.set_assemblers.connect (std_cxx11::bind(&f<dim>,
255279
std_cxx11::_1,
256280
std_cxx11::_2,
257-
1));
281+
"harmonic"));
282+
283+
signals.set_assemblers.connect (std_cxx11::bind(&f<dim>,
284+
std_cxx11::_1,
285+
std_cxx11::_2,
286+
"geometric"));
287+
288+
signals.set_assemblers.connect (std_cxx11::bind(&f<dim>,
289+
std_cxx11::_1,
290+
std_cxx11::_2,
291+
"arithmetic"));
258292

259293
signals.set_assemblers.connect (std_cxx11::bind(&f<dim>,
260294
std_cxx11::_1,
261295
std_cxx11::_2,
262-
2));
296+
"maximum composition"));
263297
}
264298

265299
ASPECT_REGISTER_SIGNALS_CONNECTOR(signal_connector<2>,

tests/visco_plastic_derivatives.prm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ set Dimension = 2
77
set End time = 0
88
set Use years in output instead of seconds = true
99
set Nonlinear solver scheme = Newton Stokes
10-
set Max nonlinear iterations = 1
10+
set Max nonlinear iterations = 0
1111
set Number of cheap Stokes solver steps = 0
1212

1313
# Model geometry (100x100 km, 10 km spacing)

tests/visco_plastic_derivatives/screen-output

Lines changed: 72 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,80 @@
1+
-----------------------------------------------------------------------------
2+
-----------------------------------------------------------------------------
13

24
Loading shared library <./libvisco_plastic_derivatives.so>
35

46
* Connecting signals
57

6-
Testing ViscoPlastic derivatives against analytical derivatives
8+
Testing ViscoPlastic derivatives against analytical derivatives for averaging parameter harmonic
9+
pressure at point 0: Finite difference = 0. Analytical derivative = 0
10+
pressure at point 1: Finite difference = 2.12594e+08. Analytical derivative = 2.12594e+08
11+
pressure at point 2: Finite difference = 2.68615e+08. Analytical derivative = 2.68615e+08
12+
pressure at point 3: Finite difference = 0. Analytical derivative = 0
13+
pressure at point 4: Finite difference = 1.8585e+16. Analytical derivative = 1.8585e+16
14+
zerozero at point 0: Finite difference = 0. Analytical derivative = 0
15+
zerozero at point 1: Finite difference = 6.58655e+26. Analytical derivative = 6.58655e+26
16+
zerozero at point 2: Finite difference = 1.23761e+27. Analytical derivative = 1.23761e+27
17+
zerozero at point 3: Finite difference = 0. Analytical derivative = 0
18+
zerozero at point 4: Finite difference = 4.13904e+35. Analytical derivative = 4.13904e+35
19+
onezero at point 0: Finite difference = 0. Analytical derivative = 0
20+
onezero at point 1: Finite difference = 3.5961e+28. Analytical derivative = 3.5961e+28
21+
onezero at point 2: Finite difference = -2.2502e+28. Analytical derivative = -2.2502e+28
22+
onezero at point 3: Finite difference = 0. Analytical derivative = 0
23+
onezero at point 4: Finite difference = -4.13904e+35. Analytical derivative = -4.13904e+35
24+
oneone at point 0: Finite difference = 0. Analytical derivative = 0
25+
oneone at point 1: Finite difference = -6.58657e+26. Analytical derivative = -6.58657e+26
26+
oneone at point 2: Finite difference = -1.23761e+27. Analytical derivative = -1.23761e+27
27+
oneone at point 3: Finite difference = 0. Analytical derivative = 0
28+
oneone at point 4: Finite difference = -4.13904e+35. Analytical derivative = -4.13904e+35
29+
OK
30+
31+
Testing ViscoPlastic derivatives against analytical derivatives for averaging parameter geometric
32+
pressure at point 0: Finite difference = 0. Analytical derivative = 0
33+
pressure at point 1: Finite difference = 2.12594e+08. Analytical derivative = 2.12594e+08
34+
pressure at point 2: Finite difference = 2.68615e+08. Analytical derivative = 2.68615e+08
35+
pressure at point 3: Finite difference = 0. Analytical derivative = 0
36+
pressure at point 4: Finite difference = 1.8585e+16. Analytical derivative = 1.8585e+16
37+
zerozero at point 0: Finite difference = 0. Analytical derivative = 0
38+
zerozero at point 1: Finite difference = 6.58587e+26. Analytical derivative = 6.58655e+26
39+
zerozero at point 2: Finite difference = 1.23759e+27. Analytical derivative = 1.23761e+27
40+
zerozero at point 3: Finite difference = 0. Analytical derivative = 0
41+
zerozero at point 4: Finite difference = 4.13904e+35. Analytical derivative = 4.13904e+35
42+
onezero at point 0: Finite difference = 0. Analytical derivative = 0
43+
onezero at point 1: Finite difference = 3.5961e+28. Analytical derivative = 3.5961e+28
44+
onezero at point 2: Finite difference = -2.2502e+28. Analytical derivative = -2.2502e+28
45+
onezero at point 3: Finite difference = 0. Analytical derivative = 0
46+
onezero at point 4: Finite difference = -4.13904e+35. Analytical derivative = -4.13904e+35
47+
oneone at point 0: Finite difference = 0. Analytical derivative = 0
48+
oneone at point 1: Finite difference = -6.58596e+26. Analytical derivative = -6.58657e+26
49+
oneone at point 2: Finite difference = -1.23785e+27. Analytical derivative = -1.23761e+27
50+
oneone at point 3: Finite difference = 0. Analytical derivative = 0
51+
oneone at point 4: Finite difference = -4.13904e+35. Analytical derivative = -4.13904e+35
52+
OK
53+
54+
Testing ViscoPlastic derivatives against analytical derivatives for averaging parameter arithmetic
55+
pressure at point 0: Finite difference = 0. Analytical derivative = 0
56+
pressure at point 1: Finite difference = 2.12594e+08. Analytical derivative = 2.12594e+08
57+
pressure at point 2: Finite difference = 2.68615e+08. Analytical derivative = 2.68615e+08
58+
pressure at point 3: Finite difference = 0. Analytical derivative = 0
59+
pressure at point 4: Finite difference = 1.8585e+16. Analytical derivative = 1.8585e+16
60+
zerozero at point 0: Finite difference = 0. Analytical derivative = 0
61+
zerozero at point 1: Finite difference = 6.58655e+26. Analytical derivative = 6.58655e+26
62+
zerozero at point 2: Finite difference = 1.23761e+27. Analytical derivative = 1.23761e+27
63+
zerozero at point 3: Finite difference = 0. Analytical derivative = 0
64+
zerozero at point 4: Finite difference = 4.13904e+35. Analytical derivative = 4.13904e+35
65+
onezero at point 0: Finite difference = 0. Analytical derivative = 0
66+
onezero at point 1: Finite difference = 3.5961e+28. Analytical derivative = 3.5961e+28
67+
onezero at point 2: Finite difference = -2.2502e+28. Analytical derivative = -2.2502e+28
68+
onezero at point 3: Finite difference = 0. Analytical derivative = 0
69+
onezero at point 4: Finite difference = -4.13904e+35. Analytical derivative = -4.13904e+35
70+
oneone at point 0: Finite difference = 0. Analytical derivative = 0
71+
oneone at point 1: Finite difference = -6.58657e+26. Analytical derivative = -6.58657e+26
72+
oneone at point 2: Finite difference = -1.23761e+27. Analytical derivative = -1.23761e+27
73+
oneone at point 3: Finite difference = 0. Analytical derivative = 0
74+
oneone at point 4: Finite difference = -4.13904e+35. Analytical derivative = -4.13904e+35
75+
OK
76+
77+
Testing ViscoPlastic derivatives against analytical derivatives for averaging parameter maximum composition
778
pressure at point 0: Finite difference = 0. Analytical derivative = 0
879
pressure at point 1: Finite difference = 2.12594e+08. Analytical derivative = 2.12594e+08
980
pressure at point 2: Finite difference = 2.68615e+08. Analytical derivative = 2.68615e+08

0 commit comments

Comments
 (0)