22 #ifndef _aspect_geometry_model_interface_h
23 #define _aspect_geometry_model_interface_h
47 namespace GeometryModel
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>>
380 const std::string &description,
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 std::set< types::boundary_id > get_used_boundary_indicators() const =0
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
virtual void adjust_positions_for_periodicity(Point< dim > &position, const ArrayView< Point< dim >> &connected_positions={}, const ArrayView< Tensor< 1, dim >> &connected_velocities={}) const
virtual Point< dim > representative_point(const double depth) const =0
virtual std::set< std::pair< std::pair< types::boundary_id, types::boundary_id >, unsigned int > > get_periodic_boundary_pairs() const
virtual bool has_curved_elements() const
virtual void create_coarse_mesh(parallel::distributed::Triangulation< dim > &coarse_grid) const =0
virtual double maximal_depth() const =0
std::string translate_id_to_symbol_name(const types::boundary_id boundary_id) const
virtual double length_scale() const =0
std::vector< types::boundary_id > translate_symbolic_boundary_names_to_ids(const std::vector< std::string > &names) const
virtual double depth(const Point< dim > &position) 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 double height_above_reference_surface(const Point< dim > &position) const =0
virtual bool point_is_in_domain(const Point< dim > &p) const =0
virtual Point< dim > natural_to_cartesian_coordinates(const std::array< double, dim > &position) const
virtual void make_periodicity_constraints(const DoFHandler< dim > &dof_handler, AffineConstraints< double > &constraints) const
types::boundary_id translate_symbolic_boundary_name_to_id(const std::string &name) const
void declare_parameters(ParameterHandler &prm)
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::unique_ptr< Interface< dim > > create_geometry_model(ParameterHandler &prm)
void write_plugin_graph(std::ostream &output_stream)