Skip to content

Commit 1ec7c01

Browse files
committed
Prescribed Solution Post-processor
1 parent 606854e commit 1ec7c01

9 files changed

Lines changed: 589 additions & 0 deletions

File tree

benchmarks/annulus/plugin/annulus.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -663,6 +663,7 @@ namespace aspect
663663
}
664664
};
665665

666+
// todo_post
666667
/**
667668
* A postprocessor that visualizes the analytical solution.
668669
*/
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
/*
2+
Copyright (C) 2015 - 2021 by the authors of the ASPECT code.
3+
4+
This file is part of ASPECT.
5+
6+
ASPECT is free software; you can redistribute it and/or modify
7+
it under the terms of the GNU General Public License as published by
8+
the Free Software Foundation; either version 2, or (at your option)
9+
any later version.
10+
11+
ASPECT is distributed in the hope that it will be useful,
12+
but WITHOUT ANY WARRANTY; without even the implied warranty of
13+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14+
GNU General Public License for more details.
15+
16+
You should have received a copy of the GNU General Public License
17+
along with ASPECT; see the file LICENSE. If not see
18+
<http://www.gnu.org/licenses/>.
19+
*/
20+
21+
22+
#ifndef _aspect_postprocess_visualization_prescribed_solution_h
23+
#define _aspect_postprocess_visualization_prescribed_solution_h
24+
25+
#include <aspect/postprocess/visualization.h>
26+
#include <aspect/simulator_access.h>
27+
28+
#include <deal.II/numerics/data_out.h>
29+
30+
31+
namespace aspect
32+
{
33+
namespace Postprocess
34+
{
35+
namespace VisualizationPostprocessors
36+
{
37+
// todo:move the class to here later
38+
/**
39+
* A class derived from DataPostprocessor that outputs prescribed solution
40+
* values and indicators
41+
*/
42+
template <int dim>
43+
class PrescribedSolutionPostprocessor
44+
: public DataPostprocessor<dim>,
45+
public SimulatorAccess<dim>,
46+
public Interface<dim>
47+
{
48+
public:
49+
PrescribedSolutionPostprocessor ();
50+
51+
std::vector<std::string>
52+
get_names () const override;
53+
54+
std::vector<DataComponentInterpretation::DataComponentInterpretation>
55+
get_data_component_interpretation () const override;
56+
57+
UpdateFlags
58+
get_needed_update_flags () const override;
59+
60+
void
61+
evaluate_vector_field(const DataPostprocessorInputs::Vector<dim> &input_data,
62+
std::vector<Vector<double>> &computed_quantities) const override;
63+
64+
/**
65+
* Declare the parameters this class takes through input files.
66+
*/
67+
static
68+
void
69+
declare_parameters (ParameterHandler &prm);
70+
71+
/**
72+
* Read the parameters this class declares from the parameter file.
73+
*/
74+
void
75+
parse_parameters (ParameterHandler &prm) override;
76+
77+
private:
78+
std::vector<std::string> model_names;
79+
};
80+
}
81+
}
82+
}
83+
84+
#endif

include/aspect/prescribed_solution/interface.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ namespace aspect
7171
*
7272
* @ingroup PrescribedSolution
7373
*/
74+
// todo_post
7475
template <int dim>
7576
class Manager : public Plugins::ManagerBase<Interface<dim>>, public SimulatorAccess<dim>
7677
{

include/aspect/simulator_access.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,11 @@ namespace aspect
152152
template <int dim> class Manager;
153153
}
154154

155+
namespace PrescribedSolution
156+
{
157+
template <int dim> class Manager;
158+
}
159+
155160
/**
156161
* SimulatorAccess is a base class for different plugins like postprocessors.
157162
* It provides access to the various variables of the main class that
@@ -1020,6 +1025,13 @@ namespace aspect
10201025
const StokesMatrixFreeHandler<dim> &
10211026
get_stokes_matrix_free () const;
10221027

1028+
/**
1029+
* Return a reference to the PrescribedSolution::Manager that manages the
1030+
* Prescribed solution plugins.
1031+
*/
1032+
const PrescribedSolution::Manager<dim> &
1033+
get_prescribed_solution () const;
1034+
10231035
/**
10241036
* Compute the angular momentum and other rotation properties
10251037
* of the velocities in the given solution vector.

0 commit comments

Comments
 (0)