18 check_required_keys({
"mass",
"I_xx",
"I_yy",
"I_zz"});
22 auto reciprocal_mass = 1.0 / d[
"mass"].get<
double>();
24 auto ixx_per_mass = d[
"I_xx"].get<
double>() * reciprocal_mass;
25 auto iyy_per_mass = d[
"I_yy"].get<
double>() * reciprocal_mass;
26 auto izz_per_mass = d[
"I_zz"].get<
double>() * reciprocal_mass;
28 auto tr_per_mass = 0.5 * (ixx_per_mass+iyy_per_mass+izz_per_mass);
30 d[
"Rg^2"] = tr_per_mass;
31 d[
"Rg^2(y+z)"] = ixx_per_mass;
32 d[
"Rg^2(z+x)"] = iyy_per_mass;
33 d[
"Rg^2(x+y)"] = izz_per_mass;
34 d[
"Rg^2(x)"] = tr_per_mass - ixx_per_mass;
35 d[
"Rg^2(y)"] = tr_per_mass - iyy_per_mass;
36 d[
"Rg^2(z)"] = tr_per_mass - izz_per_mass;
40 d[
"Rg"] = sqrt(tr_per_mass);
41 d[
"Rg(y+z)"] = sqrt(ixx_per_mass);
42 d[
"Rg(z+x)"] = sqrt(iyy_per_mass);
43 d[
"Rg(x+y)"] = sqrt(izz_per_mass);
44 d[
"Rg(x)"] = sqrt(tr_per_mass - ixx_per_mass);
45 d[
"Rg(y)"] = sqrt(tr_per_mass - iyy_per_mass);
46 d[
"Rg(z)"] = sqrt(tr_per_mass - izz_per_mass);
virtual void compute_impl(Json &data, JsonToVoidFunc check_required_keys, JsonToBoolFunc check_optional_keys) override
This method overrides Updater::compute_impl.
std::function< bool(const Json &)> JsonToBoolFunc
An alias for a function accepts a Json object and returns a bool.
ShPtr< AddGyrationRadius > with_sqrted(bool add_sqrted_=true)
Enable to compute gyration radius (by default, only square of gyration radius is computed).
nlohmann::json Json
Json is an alias for nlohmann::json.
AddGyrationRadius adds gyration radius to an Element object.
This file has a definition of AddGyrationRadius class, which is a subclass of Adder class...
std::function< void(const Json &)> JsonToVoidFunc
An alias for a function accepts a Json object.
std::shared_ptr< T > ShPtr
ShPtr is an alias for shared pointer.