65 plot_options.multiplier= model.PlotFactor;
67 plot_options.figure= 11;
72 plot_options.colorbar=
" Normalkraft ";
73 plot_options.axis=
" auto ";
85 plot_options.centerline= 3;
87 plot_options.endmarker= 3;
89 plot_options.crosssection= 0;
91 plot_options.ref_config= 1;
96 knoten_index = model.data.knot_index;
98 hlp = zeros(7*model.data.num_knots,1);
99 hlp(model.free) = u(1:length(model.free));
100 hlp(model.dir_u) = model.u_dir;
104 if nargin == 3 || isempty(h) || ~ishandle(h)
105 h = figure(plot_options.figure);
107 axis(plot_options.axis)
118 set(h,
" Color ",
" White ")
120 set(gcf,
" Renderer ",
" zbuffer ");
123 if (strcmp(plot_options.colorbar,) == 0)
125 xlabel(
handle, plot_options.colorbar,
" FontSize ", 12)
132 title_string = sprintf(
" Balkenwerk zur Zeit t = %2.2f (Verschiebungen um Faktor %2.0f vergr��ert) ", t, plot_options.multiplier);
133 title(title_string,
" FontSize ", 15,
" FontWeight ",
" bold ");
136 if (plot_options.ref_config)
140 if isa(e,
" models.beam.StraightBeam ")
141 plot3( p(e.PointsIdx(:),1), p(e.PointsIdx(:),2), p(e.PointsIdx(:),3),
" k: ",
" LineWidth ", 1 );
142 elseif isa(e,
" models.beam.CurvedBeam ")
144 s = 0 : e.angle/(e.split+1) : e.angle;
150 COR = e.T * [x; y; z];
151 plot3( p(e.pc, 1) + COR(1,:), p(e.pc, 2) + COR(2,:), p(e.pc, 3) + COR(3,:),
" k: " );
224 N = zeros(length(el));
228 if ~isa(e,
" models.beam.Truss ")
231 N(i) = .5*sum(u(7*knoten_index(e.PointsIdx(:))));
250 dc = [0:3/num_col:1]^
t;
251 col = [0*dc dc 1-dc; dc 0*dc+1 0*dc; 0*dc+1 1-dc 0*dc];
253 caxis([N_min N_max]);
256 if ( (N_max - N_min) > 1e-5 )
257 col_index = fix( (N - N_min) / (N_max - N_min) * (size(col,1)-1)) + 1;
259 col_index = 0*N + fix(size(col,1)/2);
262 col_index(col_index > num_col) = 128;
263 col_index(col_index < 1) = 1;
272 if isa(e,
" models.beam.StraightBeam ")
275 indices = 7*knoten_index(e.PointsIdx(:));
282 u1_lok = [e.T
" * u([indices(1)-6:indices(1)-4]); e.T " * u([indices(1)-3:indices(1)-1])];
283 u2_lok = [e.T
" * u([indices(2)-6:indices(2)-4]); e.T " * u([indices(2)-3:indices(2)-1])];
286 N_prime_1 = e.beam_shape_functions_derivative(0);
287 N_prime_2 = e.beam_shape_functions_derivative(e.Length);
289 u1_prime_lok = N_prime_1 * [u1_lok; u2_lok];
290 u2_prime_lok = N_prime_2 * [u1_lok; u2_lok];
292 if ( strcmpi(plot_options.colorbar,
" Temperatur ") )
294 val1 = u(7*knoten_index(e.p(1)));
295 val2 = u(7*knoten_index(e.p(2)));
296 elseif ( strcmpi(plot_options.colorbar,
" Normalkraft ") )
298 val1 = e.c(13) * e.Length * u1_prime_lok(1);
299 val2 = e.c(13) * e.Length * u2_prime_lok(1);
300 elseif ( strcmpi(plot_options.colorbar,
" Querkraft y ") )
302 val1 = e.c(3) / e.Length * (u1_prime_lok(2) - u1_lok(6));
303 val2 = e.c(3) / e.Length * (u2_prime_lok(2) - u2_lok(6));
304 elseif ( strcmpi(plot_options.colorbar,
" Querkraft z ") )
306 val1 = e.c(3) / e.Length * (u1_prime_lok(3) - u1_lok(5));
307 val2 = e.c(3) / e.Length * (u2_prime_lok(3) - u2_lok(5));
308 elseif ( strcmpi(plot_options.colorbar,
" Gesamtquerkraft ") )
310 val1 = e.c(3) / e.Length * sqrt((u1_prime_lok(2) - u1_lok(6))^2 + (u1_prime_lok(3) - u1_lok(5))^2);
311 val2 = e.c(3) / e.Length * sqrt((u2_prime_lok(2) - u2_lok(6))^2 + (u2_prime_lok(3) - u2_lok(5))^2);
312 elseif ( strcmpi(plot_options.colorbar,
" Torsionsmoment ") )
314 val1 = e.c(14) * e.Length * abs(u1_prime_lok(4));
315 val2 = e.c(14) * e.Length * abs(u2_prime_lok(4));
316 elseif ( strcmpi(plot_options.colorbar,
" Biegemoment y ") )
318 val1 = e.c(1) * u1_prime_lok(5);
319 val2 = e.c(1) * u2_prime_lok(5);
320 elseif ( strcmpi(plot_options.colorbar,
" Biegemoment z ") )
322 val1 = e.c(1) * u1_prime_lok(6);
323 val2 = e.c(1) * u2_prime_lok(6);
324 elseif ( strcmpi(plot_options.colorbar,
" Gesamtbiegemoment ") )
326 val1 = e.c(1) * sqrt(u1_prime_lok(5)^2 + u1_prime_lok(6)^2);
327 val2 = e.c(1) * sqrt(u2_prime_lok(5)^2 + u2_prime_lok(6)^2);
348 cols = fix( ([val1 val2] - N_min) / (N_max - N_min) * (size(col,1)-1)) + 1;
349 cols(cols > num_col) = num_col;
352 e.plot(p, plot_options.multiplier*u1_lok, plot_options.multiplier*u2_lok, cols(1), cols(2), plot_options)
354 elseif isa(e,
" models.beam.CurvedBeam ")
357 indices = 7*knoten_index(e.PointsIdx(:));
360 u_elem = [u(indices-6) u(indices-5) u(indices-4) u(indices-3) u(indices-2) u(indices-1)];
371 u1_lok = e.T_block1
" * u_elem(1,1:3) ";
372 t1_lok = e.T_block1
" * u_elem(1,4:6) ";
373 u2_lok = e.T_block2
" * u_elem(2,1:3) ";
374 t2_lok = e.T_block2
" * u_elem(2,4:6) ";
375 u1 = [u1_lok; t1_lok];
376 u2 = [u2_lok; t2_lok];
379 Q_temp = e.B3*[u1; u2];
381 M_temp = e.B4*[u1; u2];
383 if ( strcmpi(plot_options.colorbar,
" Temperatur ") )
385 val1 = u(7*knoten_index(e.PointsIdx(1)));
386 val2 = u(7*knoten_index(e.PointsIdx(2)));
388 elseif ( strcmpi(plot_options.colorbar,
" Normalkraft ") )
390 val1 = e.c(3) * Q_temp(1);
392 elseif ( strcmpi(plot_options.colorbar,
" Querkraft y ") )
394 val1 = e.c(4) * Q_temp(2);
396 elseif ( strcmpi(plot_options.colorbar,
" Querkraft z ") )
398 val1 = e.c(4) * Q_temp(3);
400 elseif ( strcmpi(plot_options.colorbar,
" Gesamtquerkraft ") )
402 val1 = e.c(4) * sqrt(Q_temp(2)^2 + Q_temp(3)^2);
404 elseif ( strcmpi(plot_options.colorbar,
" Torsionsmoment ") )
406 val1 = e.c(2) * abs(M_temp(1));
408 elseif ( strcmpi(plot_options.colorbar,
" Biegemoment y ") )
410 val1 = e.c(1) * M_temp(2);
412 elseif ( strcmpi(plot_options.colorbar,
" Biegemoment z ") )
414 val1 = e.c(1) * M_temp(3);
416 elseif ( strcmpi(plot_options.colorbar,
" Gesamtbiegemoment ") )
418 val1 = e.c(1) * sqrt(M_temp(2)^2 + M_temp(3)^2);
439 cols = fix( ([val1 val2] - N_min) / (N_max - N_min) * (size(col,1)-1)) + 1;
440 cols(cols > num_col) = num_col;
442 u1 = plot_options.multiplier * u1;
443 u2 = plot_options.multiplier * u2;
445 e.plot(p, u1, u2, cols(1), cols(2), plot_options);
468 indices = 7*knoten_index(e.PointsIdx(:));
471 u_elem = [u(indices-6) u(indices-5) u(indices-4)];
474 plot3( p(e.PointsIdx(:), 1) + plot_options.multiplier *u_elem(:,1), p(e.PointsIdx(:), 2) + plot_options.multiplier *u_elem(:,2), p(e.PointsIdx(:), 3) + plot_options.multiplier *u_elem(:,3),
" k ",
" LineWidth ", 3 );
478 e.plot(p, u_elem, plot_options);
498 frame = getframe(gcf);
function plotSingle(double t,colvec u,handle h)
plot_single: Plots a single beam configuration for given time and field data.
Matlab's base handle class (documentation generation substitute)