forked from wozy13/DIAMOND
-
Notifications
You must be signed in to change notification settings - Fork 0
/
drawmode.m
113 lines (86 loc) · 2.6 KB
/
drawmode.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
function drawmode(phsdel)
%
% Name: drawmode
%
% Usage: drawmode(phsdel)
%
% Description:
% Draws mode shape
% Version SWD970805
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This matlab source code was originally %
% developed as part of "DIAMOND" at %
% Los Alamos National Laboratory. It may %
% be copied, modified, and distributed in %
% any form, provided: %
% a) This notice accompanies the files and %
% appears near the top of all source %
% code files. %
% b) No payment or commercial services are %
% received in exchange for the code. %
% %
% Original copyright is reserved by the %
% Regents of the University of California, %
% in addition to Scott W. Doebling, Phillip %
% J. Cornwell, Erik G. Straser, and Charles %
% R. Farrar. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
global MODES VIEWMODES HANDLES GEOM imode
%
% Clear the axes and draw the undef geom.
%
axes(HANDLES.hviewm(2))
cla
set(HANDLES.hviewm(2),'nextplot','add')
if VIEWMODES.iundef == 1,
temp1 = GEOM.barlnco;
temp2 = GEOM.barlnst;
temp3 = GEOM.nodelnco;
GEOM.barlnco = GEOM.undefgeomco;
GEOM.barlnst = ':';
GEOM.nodelnco = GEOM.undefgeomco;
updtgeom(HANDLES.hviewm(2),GEOM.Nodes);
GEOM.barlnco = temp1;
GEOM.barlnst = temp2;
GEOM.nodelnco = temp3;
end
% Select either complex or real mode shape
switch VIEWMODES.ipltcmplx
case 'Real'
Phi = MODES.modalvector{imode};
nscale = VIEWMODES.realscale{imode};
case 'Complex'
Phi = MODES.residue{imode};
nscale = VIEWMODES.complexscale{imode};
end
% display the appropriate scaling factor in viewmodes window
set(HANDLES.hviewm(6),'string',sprintf('%6.3e',nscale))
%
% Determine 'Nodes' for displaced geometry
%
Nodes_def = GEOM.Nodes;
%
% Loop over each entry in respDOF
%
for i = 1:size(MODES.respDOF,1),
%
% Pull out the location, dir. magnitude, and dir. sign
%
nloc = MODES.respDOF(i,1);
ndirmag = abs(MODES.respDOF(i,2));
ndirsign = sign(MODES.respDOF(i,2));
%
% Find the Node which has this location
%
rnode = find(GEOM.Nodes(:,1) == nloc);
%
% Make the appropriate change to this Node's Location
%
Nodes_def(rnode,ndirmag+1) = GEOM.Nodes(rnode,ndirmag+1) + abs(Phi(i))*nscale*ndirsign*cos(phsdel+angle(Phi(i))-angle(Phi(1)));
end
%
% Draw the deformed geometry
%
updtgeom(HANDLES.hviewm(2),Nodes_def)
return