22 #ifndef _aspect_gravity_model_interface_h 23 #define _aspect_gravity_model_interface_h 26 #include <deal.II/base/point.h> 27 #include <deal.II/base/parameter_handler.h> 37 namespace GravityModel
54 virtual ~Interface() =
default;
66 virtual Tensor<1,dim> gravity_vector (
const Point<dim> &position)
const = 0;
77 virtual void update();
97 parse_parameters (ParameterHandler &prm);
121 const std::string &description,
122 void (*declare_parameters_function) (ParameterHandler &),
123 std::unique_ptr<Interface<dim>> (*factory_function) ());
136 std::unique_ptr<Interface<dim>>
171 #define ASPECT_REGISTER_GRAVITY_MODEL(classname,name,description) \ 172 template class classname<2>; \ 173 template class classname<3>; \ 174 namespace ASPECT_REGISTER_GRAVITY_MODEL_ ## classname \ 176 aspect::internal::Plugins::RegisterHelper<aspect::GravityModel::Interface<2>,classname<2>> \ 177 dummy_ ## classname ## _2d (&aspect::GravityModel::register_gravity_model<2>, \ 178 name, description); \ 179 aspect::internal::Plugins::RegisterHelper<aspect::GravityModel::Interface<3>,classname<3>> \ 180 dummy_ ## classname ## _3d (&aspect::GravityModel::register_gravity_model<3>, \ 181 name, description); \ void register_gravity_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_gravity_model(ParameterHandler &prm)
void declare_parameters(ParameterHandler &prm)
void write_plugin_graph(std::ostream &output_stream)