22 #ifndef _aspect_geometry_model_interface_h 23 #define _aspect_geometry_model_interface_h 26 #include <deal.II/base/parameter_handler.h> 27 #include <deal.II/distributed/tria.h> 47 namespace GeometryModel
59 class Interface :
public Plugins::InterfaceBase
66 void create_coarse_mesh (parallel::distributed::Triangulation<dim> &coarse_grid)
const = 0;
82 double length_scale ()
const = 0;
122 double depth(
const Point<dim> &position)
const = 0;
134 double height_above_reference_surface(
const Point<dim> &position)
const = 0;
141 Utilities::NaturalCoordinate<dim>
142 cartesian_to_other_coordinates(
const Point<dim> &position,
159 std::array<double,dim> cartesian_to_natural_coordinates(
const Point<dim> &position)
const;
167 Point<dim> natural_to_cartesian_coordinates(
const std::array<double,dim> &position)
const;
187 Point<dim> representative_point(
const double depth)
const = 0;
198 double maximal_depth()
const = 0;
207 std::set<types::boundary_id>
208 get_used_boundary_indicators ()
const = 0;
246 std::map<std::string,types::boundary_id>
247 get_symbolic_boundary_names_map ()
const;
264 translate_symbolic_boundary_name_to_id (
const std::string &name)
const;
280 std::vector<types::boundary_id>
281 translate_symbolic_boundary_names_to_ids (
const std::vector<std::string> &names)
const;
293 translate_id_to_symbol_name (
const types::boundary_id boundary_id)
const;
302 std::set<std::pair<std::pair<types::boundary_id, types::boundary_id>,
unsigned int>>
303 get_periodic_boundary_pairs ()
const;
328 adjust_positions_for_periodicity (Point<dim> &position,
329 const ArrayView<Point<dim>> &connected_positions = {},
330 const ArrayView<Tensor<1,dim>> &connected_velocities = {})
const;
340 has_curved_elements()
const;
348 point_is_in_domain(
const Point<dim> &p)
const = 0;
358 make_periodicity_constraints(
const DoFHandler<dim> &dof_handler,
359 AffineConstraints<double> &constraints)
const;
382 const std::string &description,
383 void (*declare_parameters_function) (ParameterHandler &),
384 std::unique_ptr<Interface<dim>> (*factory_function) ());
397 std::unique_ptr<Interface<dim>>
431 #define ASPECT_REGISTER_GEOMETRY_MODEL(classname,name,description) \ 432 template class classname<2>; \ 433 template class classname<3>; \ 434 namespace ASPECT_REGISTER_GEOMETRY_MODEL_ ## classname \ 436 aspect::internal::Plugins::RegisterHelper<aspect::GeometryModel::Interface<2>,classname<2>> \ 437 dummy_ ## classname ## _2d (&aspect::GeometryModel::register_geometry_model<2>, \ 438 name, description); \ 439 aspect::internal::Plugins::RegisterHelper<aspect::GeometryModel::Interface<3>,classname<3>> \ 440 dummy_ ## classname ## _3d (&aspect::GeometryModel::register_geometry_model<3>, \ 441 name, description); \
std::unique_ptr< Interface< dim > > create_geometry_model(ParameterHandler &prm)
void declare_parameters(ParameterHandler &prm)
void write_plugin_graph(std::ostream &output_stream)
void register_geometry_model(const std::string &name, const std::string &description, void(*declare_parameters_function)(ParameterHandler &), std::unique_ptr< Interface< dim >>(*factory_function)())