20 #ifndef WORLD_BUILDER_FEATURES_SUBDUCTING_PLATE_MODELS_VELOCITY_INTERFACE_H 21 #define WORLD_BUILDER_FEATURES_SUBDUCTING_PLATE_MODELS_VELOCITY_INTERFACE_H 35 template <
unsigned int dim>
class Point;
43 using namespace FeatureUtilities;
45 namespace SubductingPlateModels
70 const std::string &parent_name,
71 const std::vector<std::string> &required_entries);
84 std::array<double,3> get_velocity(
const Point<3> &position,
87 std::array<double,3> velocity,
88 const double feature_min_depth,
89 const double feature_max_depth,
96 static void registerType(
const std::string &name,
105 static std::unique_ptr<Interface> create(
const std::string &name,
WorldBuilder::World *world);
129 static std::map<std::string, ObjectFactory *> factories;
133 static std::map<std::string, void ( *)(Parameters &,const std::string &)> &
get_declare_map()
135 static std::map<std::string, void ( *)(Parameters &,const std::string &)> declares;
148 virtual std::unique_ptr<Interface> create(
World *world) = 0;
156 #define WB_REGISTER_FEATURE_SUBDUCTING_PLATE_VELOCITY_MODEL(classname,name) \ 157 class classname##Factory : public ObjectFactory { \ 159 classname##Factory() \ 161 Interface::registerType(#name, classname::declare_entries, this); \ 163 std::unique_ptr<Interface> create(World *world) override final { \ 164 return std::unique_ptr<Interface>(new classname(world)); \ 167 static classname##Factory global_##classname##Factory;
WorldBuilder::World * world
static std::map< std::string, void(*)(Parameters &, const std::string &)> & get_declare_map()
std::string get_name() const
static std::map< std::string, ObjectFactory * > & get_factory_map()