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