PolyFEM
Loading...
Searching...
No Matches
GenericFiber.cpp
Go to the documentation of this file.
1#include "GenericFiber.hpp"
2
6
7namespace polyfem::assembler
8{
9 template <typename FiberModel>
13
14 template <typename FiberModel>
15 void GenericFiber<FiberModel>::add_multimaterial(const int index, const json &params, const Units &units, const std::string &root_path)
16 {
17 if (params.contains("fiber_direction"))
18 fiber_direction_.add_multimaterial(index, params["fiber_direction"], units.length(), root_path);
19 }
20
21 template <typename FiberModel>
23 {
25
26 fiber_direction_.resize(size);
27 }
28
29 template <typename FiberModel>
30 std::map<std::string, Assembler::ParamFunc> GenericFiber<FiberModel>::parameters() const
31 {
32 std::map<std::string, Assembler::ParamFunc> res;
33
34 const auto &fiber_direction = this->fiber_direction_;
35
36 res["fiber_direction_x"] = [&fiber_direction](const RowVectorNd &, const RowVectorNd &p, double t, int e) {
37 Eigen::Vector3d tmp = fiber_direction(p, p, t, e);
38 return tmp[0];
39 };
40
41 res["fiber_direction_y"] = [&fiber_direction](const RowVectorNd &, const RowVectorNd &p, double t, int e) {
42 Eigen::Vector3d tmp = fiber_direction(p, p, t, e);
43 return tmp[1];
44 };
45
46 if (this->size() == 3)
47 {
48 res["fiber_direction_z"] = [&fiber_direction](const RowVectorNd &, const RowVectorNd &p, double t, int e) {
49 Eigen::Vector3d tmp = fiber_direction(p, p, t, e);
50 return tmp[2];
51 };
52 }
53
54 return res;
55 }
56
57 template class GenericFiber<HGOFiber>;
58 template class GenericFiber<ActiveFiber>;
59 template class GenericFiber<HGODispersion>;
60} // namespace polyfem::assembler
const std::string & length() const
Definition Units.hpp:19
virtual void set_size(const int size)
Definition Assembler.hpp:66
virtual void set_size(const int size) override
virtual void add_multimaterial(const int index, const json &params, const Units &units, const std::string &root_path) override
std::map< std::string, Assembler::ParamFunc > parameters() const override
Used for test only.
nlohmann::json json
Definition Common.hpp:9
Eigen::Matrix< double, 1, Eigen::Dynamic, Eigen::RowMajor, 1, 3 > RowVectorNd
Definition Types.hpp:13