75 {
76
77 std::unique_ptr<ElementModel> deformation_model;
78 std::string
model = j.json.at(
"model");
79 if (model == "nodefo") {
80 deformation_model = std::make_unique<ElementModelRigid>();
81 } else if (model == "scalesag") {
82 double lenX, lenY;
84 const auto& jc = j.json.at("model_constant_pars");
85 jc.at("len_x").get_to(lenX);
86 jc.at("len_y").get_to(lenY);
87 jc.at("defo0_x").get_to(defo0[0]);
88 jc.at("defo0_y").get_to(defo0[1]);
89 jc.at("defo0_z").get_to(defo0[2]);
90 deformation_model = std::make_unique<ElementModelScaleSag>(lenX, lenY, defo0);
91 } else {
92 throw std::runtime_error("Unknown model: "+model);
93 }
94
95
96 std::unique_ptr<Element>
el = std::make_unique<Element>(std::move(deformation_model));
97 el->setAsapId(j.json.at(
"id_asap"));
98
99
100 std::map<std::string, double> correctionPars, nominalPars;
101 j.json.at("pars_correction").get_to(correctionPars);
102 j.json.at("pars_nominal").get_to(nominalPars);
103 el->setParametersFromMap(ParameterClass::CORRECTION, correctionPars);
104 el->setParametersFromMap(ParameterClass::NOMINAL, nominalPars);
105
107}
Eigen::Matrix< double, 3, 1 > Vector3D