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
57 class Interface :
public Plugins::InterfaceBase
64 void create_coarse_mesh (parallel::distributed::Triangulation<dim> &coarse_grid)
const = 0;
120 double depth(
const Point<dim> &position)
const = 0;
139 Utilities::NaturalCoordinate<dim>
205 std::set<types::boundary_id>
244 std::map<std::string,types::boundary_id>
278 std::vector<types::boundary_id>
300 std::set<std::pair<std::pair<types::boundary_id, types::boundary_id>,
unsigned int>>
327 const ArrayView<Point<dim>> &connected_positions = {},
328 const ArrayView<Tensor<1,dim>> &connected_velocities = {})
const;
357 AffineConstraints<double> &constraints)
const;
380 const std::string &description,
381 void (*declare_parameters_function) (ParameterHandler &),
382 std::unique_ptr<Interface<dim>> (*factory_function) ());
395 std::unique_ptr<Interface<dim>>
429 #define ASPECT_REGISTER_GEOMETRY_MODEL(classname,name,description) \ 430 template class classname<2>; \ 431 template class classname<3>; \ 432 namespace ASPECT_REGISTER_GEOMETRY_MODEL_ ## classname \ 434 aspect::internal::Plugins::RegisterHelper<aspect::GeometryModel::Interface<2>,classname<2>> \ 435 dummy_ ## classname ## _2d (&aspect::GeometryModel::register_geometry_model<2>, \ 436 name, description); \ 437 aspect::internal::Plugins::RegisterHelper<aspect::GeometryModel::Interface<3>,classname<3>> \ 438 dummy_ ## classname ## _3d (&aspect::GeometryModel::register_geometry_model<3>, \ 439 name, description); \
virtual void make_periodicity_constraints(const DoFHandler< dim > &dof_handler, AffineConstraints< double > &constraints) const
std::string translate_id_to_symbol_name(const types::boundary_id boundary_id) const
virtual Point< dim > natural_to_cartesian_coordinates(const std::array< double, dim > &position) const
virtual std::set< std::pair< std::pair< types::boundary_id, types::boundary_id >, unsigned int > > get_periodic_boundary_pairs() const
std::unique_ptr< Interface< dim > > create_geometry_model(ParameterHandler &prm)
virtual bool point_is_in_domain(const Point< dim > &p) const =0
virtual std::set< types::boundary_id > get_used_boundary_indicators() const =0
virtual double maximal_depth() const =0
virtual void create_coarse_mesh(parallel::distributed::Triangulation< dim > &coarse_grid) const =0
virtual double height_above_reference_surface(const Point< dim > &position) const =0
virtual double length_scale() const =0
virtual aspect::Utilities::Coordinates::CoordinateSystem natural_coordinate_system() const =0
Utilities::NaturalCoordinate< dim > cartesian_to_other_coordinates(const Point< dim > &position, const Utilities::Coordinates::CoordinateSystem &coordinate_system) const
virtual std::map< std::string, types::boundary_id > get_symbolic_boundary_names_map() const
virtual std::array< double, dim > cartesian_to_natural_coordinates(const Point< dim > &position) const
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)())
std::vector< types::boundary_id > translate_symbolic_boundary_names_to_ids(const std::vector< std::string > &names) const
types::boundary_id translate_symbolic_boundary_name_to_id(const std::string &name) const
virtual void adjust_positions_for_periodicity(Point< dim > &position, const ArrayView< Point< dim >> &connected_positions={}, const ArrayView< Tensor< 1, dim >> &connected_velocities={}) const
virtual double depth(const Point< dim > &position) const =0
virtual Point< dim > representative_point(const double depth) const =0
static void declare_parameters(ParameterHandler &prm)
virtual bool has_curved_elements() const