38 static constexpr unsigned max_iteration = 20u;
40 const unsigned host_tag;
41 const double multiplier;
46 std::vector<uvec> idx;
48 shared_ptr<Element> host_element;
51 Embedded(
const unsigned T,
const unsigned ET,
const unsigned NT,
const double P)
56 int initialize(
const shared_ptr<DomainBase>& D)
override {
57 host_element = D->get<
Element>(host_tag);
59 vec normalised_coor(DIM, fill::zeros);
61 if(!host_element->is_active() || host_element->compute_shape_function(normalised_coor, 0).empty())
return SUANPAN_FAIL;
63 const auto host_size = host_element->get_node_number();
67 idx.emplace_back(linspace<uvec>(DIM, DIM * host_size, host_size));
68 for(
auto I = 1u; I < DIM; ++I) idx.emplace_back(idx.back() + 1);
71 const mat element_coor = temp_coor.tail_rows(host_size);
72 const vec node_coor = temp_coor.row(0).t();
75 while(++counter <= max_iteration) {
76 const vec incre = solve((host_element->compute_shape_function(normalised_coor, 1) * element_coor).t(), node_coor - ((
shape = host_element->compute_shape_function(normalised_coor, 0)) * element_coor).t());
79 weight.tail(host_size) = -
shape.t();
81 const vec shape_a = multiplier *
shape.t();
82 const mat shape_b = -shape_a *
shape;
85 for(
auto I = 0u; I < DIM; ++I) {
95 normalised_coor += incre;
A Element class.
Definition Element.h:118
unsigned get_node_number() const override
Definition Element.cpp:351
unsigned get_total_number() const override
Definition Element.cpp:353
vec get_trial_displacement() const override
Definition Element.cpp:416
friend void ConstantStiffness(DataElement *)
Definition Element.cpp:38
mat get_coordinate() const override
Definition Element.cpp:359
A Embedded class.
Definition Embedded.h:37
int clear_status() override
Definition Embedded.h:113
int initialize(const shared_ptr< DomainBase > &D) override
Definition Embedded.h:56
int update_status() override
Definition Embedded.h:101
int reset_status() override
Definition Embedded.h:115
Embedded(const unsigned T, const unsigned ET, const unsigned NT, const double P)
Definition Embedded.h:51
int commit_status() override
Definition Embedded.h:114
Definition SparseMatMAGMA.hpp:43
enable_if2< is_arma_type< T1 >::value, typenameT1::pod_type >::result inf_norm(const T1 &X)
Definition suanPan.h:373
mat initial_stiffness
Definition Element.h:73
vec trial_resistance
Definition Element.h:88
constexpr auto SUANPAN_SUCCESS
Definition suanPan.h:166
constexpr auto SUANPAN_FAIL
Definition suanPan.h:167