20 function models.beam.DynLinTimoshenkoModel.preprocess_data() {
28 if (size(this.KR_raw, 1))
29 used_knots_KR = unique(this.KR_raw(:,2:3));
31 if (size(this.RO_raw, 1))
32 used_knots_RO = unique(this.RO_raw(:,2:3));
34 if (size(this.FH_raw, 1))
35 used_knots_FH = unique(this.FH_raw(:,2:3));
37 used_knots =
union(used_knots_RO, used_knots_KR);
38 used_knots =
union(used_knots, used_knots_FH);
42 knot_index = zeros(1,size(this.Points,1));
43 for index = 1:length(used_knots)
44 knot = used_knots(index);
45 knot_index(knot) = index;
48 num_knots = length(used_knots);
49 num_elem_RO = size(this.RO_raw, 1);
50 num_elem_KR = size(this.KR_raw, 1);
51 num_elem_FH = size(this.FH_raw, 1);
53 this.data=
struct(" num_knots ", num_knots, " knot_index ", knot_index,...
54 " num_elem_RO ", num_elem_RO, " num_elem_KR ", num_elem_KR, " num_elem_FH ", num_elem_FH);
56 if (size(this.Supports, 1) > 0)
57 this.data.dirichlet= this.Supports(:, 1);
58 this.data.dir_data= this.Supports(:, 2:15);
60 this.data.dirichlet= [];
61 this.data.dir_data= [];
64 if (size(this.Loads,1) > 0)
65 this.data.neumann= this.Loads(:,1);
66 this.data.neu_data= this.Loads(:, 2:8);
68 this.data.neumann= [];
69 this.data.neu_data= [];
76 this.f_neum= sparse(7 * num_knots, 1);
77 for i = 1:length(this.data.neumann)
78 if (this.data.knot_index(this.data.neumann(i)) == 0)
81 index_start = 7*this.data.knot_index(this.data.neumann(i))-6;
82 this.f_neum(index_start : index_start+6) = this.f_neum(index_start : index_start+6) + this.data.neu_data(i, :)^
t;
86 nodes = 1:7*num_knots;
88 nodes_T = 7 * (1:num_knots);
90 nodes_u = setdiff(nodes, nodes_T);
94 u = zeros(7 * num_knots, 1);
98 for i = 1:length(this.data.dirichlet)
100 dir_knoten_lok = (1:7) .* this.data.dir_data(i,8:14);
101 dir_knoten_lok = setdiff(dir_knoten_lok, 0);
104 if (this.data.knot_index(this.data.dirichlet(i)) == 0)
109 dir_knoten = 7*this.data.knot_index(this.data.dirichlet(i))-6 : 7*this.data.knot_index(this.data.dirichlet(i));
110 dir_knoten = dir_knoten .* this.data.dir_data(i,8:14);
111 dir_knoten = setdiff(dir_knoten, 0);
114 u(dir_knoten) = this.data.dir_data(i, dir_knoten_lok)^t;
115 free = setdiff(free, dir_knoten);
120 free_u = setdiff(free, nodes_T);
123 free_T = setdiff(free, free_u);
130 this.dir_u= setdiff(nodes_u, free_u);
132 this.dir_T= setdiff(nodes_T, free_T);
135 this.u_dir= u(this.dir_u);
139 this.Elements=
cell(1,num_elem_RO+num_elem_KR+num_elem_FH);
143 for i = 1:num_elem_RO
145 sb = models.beam.StraightBeam(this, this.Materials(this.RO_raw(i,1)), this.RO_raw(i,2:3));
146 gesamtlaenge = gesamtlaenge + sb.Length;
147 this.Elements[cnt] = sb;
152 for i = 1:num_elem_KR
153 cb = models.beam.CurvedBeam(this, this.Materials(this.KR_raw(i,1)), this.KR_raw(i,2:4));
154 gesamtlaenge = gesamtlaenge + cb.Length;
155 this.Elements[cnt] = cb;
160 for i = 1:num_elem_FH
161 this.Elements[cnt] = models.beam.Truss(this, this.Materials(this.FH_raw(i,1)), this.FH_raw(i,2:3));
169 for i = 1:num_elem_RO+num_elem_KR
170 this.Elements[i].split = round(M * this.Elements[i].Length / gesamtlaenge);
173 fprintf(" Gesamtlänge: %f\n ",gesamtlaenge);
A MatLab cell array or matrix.