46 namespace SubductingPlateModels
69 Segment::Segment(
const double default_length_,
78 value_length(default_length_),
79 default_length(default_length_),
80 value_thickness(default_thickness_),
81 default_thickness(default_thickness_),
82 default_top_truncation(default_top_truncation_),
83 value_angle(default_angle_),
84 default_angle(default_angle_),
85 temperature_plugin_system(temperature_plugin_system_.clone()),
86 composition_plugin_system(composition_plugin_system_.clone()),
87 grains_plugin_system(grains_plugin_system_.clone()),
88 velocity_plugin_system(velocity_plugin_system_.clone())
119 const std::string &name,
120 const std::string &documentation)
const 128 Pointer((base +
"/type").c_str()).Set(declarations,
"object");
129 Pointer((base +
"/additionalProperties").c_str()).Set(declarations,
false);
130 Pointer((base +
"/description").c_str()).Set(declarations,documentation.c_str());
131 std::vector<std::string> restricted_values = {
"length",
"thickness",
"angle"};
132 for (
unsigned int i = 0; i < restricted_values.size(); ++i)
134 if (!restricted_values[i].empty())
136 if (i == 0 && Pointer((base +
"/required").c_str()).Get(declarations) ==
nullptr)
139 Pointer((base +
"/required/0").c_str()).Create(declarations);
140 Pointer((base +
"/required/0").c_str()).Set(declarations, restricted_values[i].c_str());
145 Pointer((base +
"/required/-").c_str()).Set(declarations, restricted_values[i].c_str());
153 Pointer((base +
"/length/type").c_str()).Set(declarations,
"number");
155 Pointer((base +
"/thickness/type").c_str()).Set(declarations,
"array");
156 Pointer((base +
"/thickness/minItems").c_str()).Set(declarations,1);
157 Pointer((base +
"/thickness/maxItems").c_str()).Set(declarations,2);
158 Pointer((base +
"/thickness/items/type").c_str()).Set(declarations,
"number");
160 Pointer((base +
"/top truncation/type").c_str()).Set(declarations,
"array");
161 Pointer((base +
"/top truncation/minItems").c_str()).Set(declarations,1);
162 Pointer((base +
"/top truncation/maxItems").c_str()).Set(declarations,2);
163 Pointer((base +
"/top truncation/items/type").c_str()).Set(declarations,
"number");
165 Pointer((base +
"/angle/type").c_str()).Set(declarations,
"array");
166 Pointer((base +
"/angle/minItems").c_str()).Set(declarations,1);
167 Pointer((base +
"/angle/maxItems").c_str()).Set(declarations,2);
168 Pointer((base +
"/angle/items/type").c_str()).Set(declarations,
"number");
WorldBuilder::Point< 2 > value_angle
WorldBuilder::Point< 2 > value_thickness
virtual std::unique_ptr< Interface > clone() const
void write_schema(Parameters &prm, const std::string &name, const std::string &documentation) const override final
void enter_subsection(const std::string &name)
std::unique_ptr< Types::Interface > temperature_plugin_system
std::unique_ptr< Types::Interface > velocity_plugin_system
std::string get_full_json_path(size_t max_size=std::numeric_limits< size_t >::max()) const
WorldBuilder::Point< 2 > default_thickness
WorldBuilder::Point< 2 > default_top_truncation
WorldBuilder::Point< 2 > default_angle
std::unique_ptr< Types::Interface > grains_plugin_system
std::unique_ptr< Types::Interface > composition_plugin_system
Segment(const double default_length, const WorldBuilder::Point< 2 > &default_thickness, const WorldBuilder::Point< 2 > &default_top_truncation, const WorldBuilder::Point< 2 > &default_angle, const Types::Interface &temperature_plugin_system, const Types::Interface &composition_plugin_system, const Types::Interface &grains_plugin_system_, const Types::Interface &gvelocity_plugin_system_)
rapidjson::Document declarations