Skip to content

Instantly share code, notes, and snippets.

@damyarou
Last active December 14, 2016 00:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save damyarou/07a4446b380719373507469537f68eb4 to your computer and use it in GitHub Desktop.
Save damyarou/07a4446b380719373507469537f68eb4 to your computer and use it in GitHub Desktop.
Grid girder analysis by FEM

py_fem_grid.py inp_grid.txt py_grid_model.py a_gmt_model.txt py_grid_result.py a_gmt_result.txt

cat << EOT > inp_1.txt
11  10  1  1  1
1.0  0.3  1.0  1.0  1.0
 1  2  1  0.0
 2  3  1  0.0
 3  4  1  0.0
 4  5  1  0.0
 5  6  1  0.0
 6  7  1  0.0
 7  8  1  0.0
 8  9  1  0.0
 9 10  1  0.0
10 11  1  0.0
0  0.0
0  0.1
0  0.2
0  0.3
0  0.4
0  0.5
0  0.6
0  0.7
0  0.8
0  0.9
0  1.0
1 1 1 1 0.0 0.0 0.0
11 0 0 -1.0
EOT

cat << EOT > inp_2.txt
11  10  1  1  0
1.0  0.3  1.0  1.0  1.0
 1  2  1  -1.0
 2  3  1  -1.0
 3  4  1  -1.0
 4  5  1  -1.0
 5  6  1  -1.0
 6  7  1  -1.0
 7  8  1  -1.0
 8  9  1  -1.0
 9 10  1  -1.0
10 11  1  -1.0
0  0.0
0  0.1
0  0.2
0  0.3
0  0.4
0  0.5
0  0.6
0  0.7
0  0.8
0  0.9
0  1.0
1 1 1 1 0.0 0.0 0.0
EOT

python py_fem_grid.py inp_1.txt out_1.txt
python py_fem_grid.py inp_2.txt out_2.txt

###################################
# Grid Girder Analysis
###################################
import numpy as np
import sys
import time
def PRINP_FRM(fnameW,npoin,nele,nsec,npfix,nlod,ae,x,fp,mpfix,rdis,node,qw):
fout=open(fnameW,'w')
# print out of input data
print('{0:>5s} {1:>5s} {2:>5s} {3:>5s} {4:>5s}'.format('npoin','nele','nsec','npfix','nlod'),file=fout)
print('{0:5d} {1:5d} {2:5d} {3:5d} {4:5d}'.format(npoin,nele,nsec,npfix,nlod),file=fout)
print('{0:>5s} {1:>15s} {2:>15s} {3:>15s} {4:>15s} {5:>15s}'
.format('sec','E','po','A','I','J'),file=fout)
for i in range(0,nsec):
print('{0:5d} {1:15.7e} {2:15.7e} {3:15.7e} {4:15.7e} {5:15.7e}'
.format(i+1,ae[0,i],ae[1,i],ae[2,i],ae[3,i],ae[4,i]),file=fout)
print('{0:>5s} {1:>15s} {2:>15s} {3:>15s} {4:>15s} {5:>15s} {6:>5s} {7:>5s} {8:>5s}'
.format('node','x','y','fx','fy','fz','kox','koy','koz'),file=fout)
for i in range(0,npoin):
lp=i+1
print('{0:5d} {1:15.7e} {2:15.7e} {3:15.7e} {4:15.7e} {5:15.7e} {6:5d} {7:5d} {8:5d}'
.format(lp,x[0,i],x[1,i],fp[3*lp-3],fp[3*lp-2],fp[3*lp-1],mpfix[0,i],mpfix[1,i],mpfix[2,i]),file=fout)
print('{0:>5s} {1:>5s} {2:>5s} {3:>5s} {4:>15s} {5:>15s} {6:>15s}'
.format('node','kox','koy','koz','rdis_x','rdis_y','rdis_z'),file=fout)
for i in range(0,npoin):
if 0<mpfix[0,i]+mpfix[1,i]+mpfix[2,i]:
lp=i+1
print('{0:5d} {1:5d} {2:5d} {3:5d} {4:15.7e} {5:15.7e} {6:15.7e}'
.format(lp,mpfix[0,i],mpfix[1,i],mpfix[2,i],rdis[0,i],rdis[1,i],rdis[2,i]),file=fout)
print('{0:>5s} {1:>5s} {2:>5s} {3:>5s} {4:>15s}'.format('elem','i','j','sec','qw'),file=fout)
for ne in range(0,nele):
print('{0:5d} {1:5d} {2:5d} {3:5d} {4:15.7e}'.format(ne+1,node[0,ne],node[1,ne],node[2,ne],qw[ne]),file=fout)
fout.close()
def PROUT_FRM(fnameW,npoin,nele,disg,fsec):
fout=open(fnameW,'a')
# displacement
print('{0:>5s} {1:>15s} {2:>15s} {3:>15s}'.format('node','dis-x','dis-y','dis-z'),file=fout)
for i in range(0,npoin):
lp=i+1
print('{0:5d} {1:15.7e} {2:15.7e} {3:15.7e}'.format(lp,disg[3*lp-3],disg[3*lp-2],disg[3*lp-1]),file=fout)
# section force
print('{0:>5s} {1:>15s} {2:>15s} {3:>15s} {4:>15s} {5:>15s} {6:>15s}'
.format('elem','T_i','M_i','Q_i','T_j','M_j','Q_j'),file=fout)
for ne in range(0,nele):
print('{0:5d} {1:15.7e} {2:15.7e} {3:15.7e} {4:15.7e} {5:15.7e} {6:15.7e}'
.format(ne+1,fsec[0,ne],fsec[1,ne],fsec[2,ne],fsec[3,ne],fsec[4,ne],fsec[5,ne]),file=fout)
fout.close()
def SM_GRD(ne,node,x,ae):
ek=np.zeros([6,6],dtype=np.float64) # local stiffness matrix
tt=np.zeros([6,6],dtype=np.float64) # transformation matrix
i=node[0,ne]-1
j=node[1,ne]-1
x1=x[0,i]
y1=x[1,i]
x2=x[0,j]
y2=x[1,j]
xx=x2-x1
yy=y2-y1
el=np.sqrt(xx**2+yy**2)
m=node[2,ne]-1
ee=ae[0,m]
po=ae[1,m]
aa=ae[2,m]
ai=ae[3,m]
aj=ae[4,m]
GJ=0.5*ee/(1.0+po)*aj
EA=ee*aa
EI=ee*ai
ek[0,0]= GJ/el; ek[0,1]= 0.0; ek[0,2]= 0.0; ek[0,3]=-GJ/el; ek[0,4]= 0.0; ek[0,5]= 0.0
ek[1,0]= 0.0; ek[1,1]= 4*EI/el ; ek[1,2]= -6*EI/el**2; ek[1,3]= 0.0; ek[1,4]= 2*EI/el ; ek[1,5]= 6*EI/el**2
ek[2,0]= 0.0; ek[2,1]=-6*EI/el**2; ek[2,2]= 12*EI/el**3; ek[2,3]= 0.0; ek[2,4]=-6*EI/el**2; ek[2,5]=-12*EI/el**3
ek[3,0]=-GJ/el; ek[3,1]= 0.0; ek[3,2]= 0.0; ek[3,3]= GJ/el; ek[3,4]= 0.0; ek[3,5]= 0.0
ek[4,0]= 0.0; ek[4,1]= 2*EI/el ; ek[4,2]= -6*EI/el**2; ek[4,3]= 0.0; ek[4,4]= 4*EI/el ; ek[4,5]= 6*EI/el**2
ek[5,0]= 0.0; ek[5,1]= 6*EI/el**2; ek[5,2]=-12*EI/el**3; ek[5,3]= 0.0; ek[5,4]= 6*EI/el**2; ek[5,5]= 12*EI/el**3
s=yy/el
c=xx/el
tt[0,0]= c; tt[0,1]= s; tt[0,2]=0.0; tt[0,3]=0.0; tt[0,4]=0.0; tt[0,5]=0.0
tt[1,0]= -s; tt[1,1]= c; tt[1,2]=0.0; tt[1,3]=0.0; tt[1,4]=0.0; tt[1,5]=0.0
tt[2,0]=0.0; tt[2,1]=0.0; tt[2,2]=1.0; tt[2,3]=0.0; tt[2,4]=0.0; tt[2,5]=0.0
tt[3,0]=0.0; tt[3,1]=0.0; tt[3,2]=0.0; tt[3,3]= c; tt[3,4]= s; tt[3,5]=0.0
tt[4,0]=0.0; tt[4,1]=0.0; tt[4,2]=0.0; tt[4,3]= -s; tt[4,4]= c; tt[4,5]=0.0
tt[5,0]=0.0; tt[5,1]=0.0; tt[5,2]=0.0; tt[5,3]=0.0; tt[5,4]=0.0; tt[5,5]=1.0
return ek,tt
def QWVEC_GRD(ne,node,x,qq):
# Distributed vertical load vector
qfe_g=np.zeros(6,dtype=np.float64)
i=node[0,ne]-1
j=node[1,ne]-1
el=np.sqrt((x[0,j]-x[0,i])**2+(x[1,j]-x[1,i])**2)
qfe_g[0]=0.0
qfe_g[1]=0.0
qfe_g[2]=0.5*qq*el
qfe_g[3]=0.0
qfe_g[4]=0.0
qfe_g[5]=0.5*qq*el
return qfe_g
# Main routine
start=time.time()
args = sys.argv
fnameR=args[1] # input data file
fnameW=args[2] # output data file
f=open(fnameR,'r')
text=f.readline()
text=text.strip()
text=text.split()
npoin=int(text[0]) # Number of nodes
nele =int(text[1]) # Number of elements
nsec =int(text[2]) # Number of sections
npfix=int(text[3]) # Number of restricted nodes
nlod =int(text[4]) # Number of loaded nodes
nod=2 # Number of nodes per element
nfree=3 # Degree of freedom per node
n=nfree*npoin
x =np.zeros([2,npoin],dtype=np.float64) # Coordinates of nodes
ae =np.zeros([5,nsec],dtype=np.float64) # Section characteristics
node =np.zeros([nod+1,nele],dtype=np.int) # Node-element relationship
qw =np.zeros(nele,dtype=np.float64) # Uniformly distributed load per unit length
fp =np.zeros(nfree*npoin,dtype=np.float64) # External force vector
mpfix =np.zeros([nfree,npoin],dtype=np.int) # Ristrict conditions
rdis =np.zeros([nfree,npoin],dtype=np.float64) # Ristricted displacement
ir =np.zeros(nod*nfree,dtype=np.int) # Work vector for matrix assembly
gk =np.zeros([n,n],dtype=np.float64) # Global stiffness matrix
fsec =np.zeros([nod*nfree,nele],dtype=np.float64) # Section force vector
work =np.zeros(nod*nfree,dtype=np.float64) # work vector for section force calculation
# section characteristics
for i in range(0,nsec):
text=f.readline()
text=text.strip()
text=text.split()
ae[0,i]=float(text[0]) # E : Elastic modulus
ae[1,i]=float(text[1]) # po : Poisson's ratio
ae[2,i]=float(text[2]) # AA : Section area
ae[3,i]=float(text[3]) # AI : Moment of inertia
ae[4,i]=float(text[4]) # AJ : Tortional constant
# element-node
for i in range(0,nele):
text=f.readline()
text=text.strip()
text=text.split()
node[0,i]=int(text[0]) #node_1
node[1,i]=int(text[1]) #node_2
node[2,i]=int(text[2]) #section characteristic number
qw[i]=float(text[3]) #uniformly distributed vertical load
# node coordinates
for i in range(0,npoin):
text=f.readline()
text=text.strip()
text=text.split()
x[0,i]=float(text[0]) # x-coordinate
x[1,i]=float(text[1]) # y-coordinate
# boundary conditions (0:free, 1:restricted)
for i in range(0,npfix):
text=f.readline()
text=text.strip()
text=text.split()
lp=int(text[0]) #fixed node
mpfix[0,lp-1]=int(text[1]) #index of restriction for tortional rotation
mpfix[1,lp-1]=int(text[2]) #index of restriction for bending rotation
mpfix[2,lp-1]=int(text[3]) #index of restriction for vertical displacement
rdis[0,lp-1]=float(text[4]) #given tortional rotation
rdis[1,lp-1]=float(text[5]) #given bending rotation
rdis[2,lp-1]=float(text[6]) #given vertical displacement
# load
if 0<nlod:
for i in range(0,nlod):
text=f.readline()
text=text.strip()
text=text.split()
lp=int(text[0]) #loaded node
fp[3*lp-3]=float(text[1]) #tortional moment load
fp[3*lp-2]=float(text[2]) #bending moment load
fp[3*lp-1]=float(text[3]) #vertical load
f.close()
PRINP_FRM(fnameW,npoin,nele,nsec,npfix,nlod,ae,x,fp,mpfix,rdis,node,qw)
# assembly of stiffness matrix & load vectors
for ne in range(0,nele):
ek,tt=SM_GRD(ne,node,x,ae) # Stiffness matrix in local coordinate
ck =np.dot(np.dot(tt.T,ek),tt) # Stiffness matrix in global coordinate
qfe_g=QWVEC_GRD(ne,node,x,qw[ne]) # Distributed vertical load vector
i=node[0,ne]-1
j=node[1,ne]-1
ir[5]=3*j+2; ir[4]=ir[5]-1; ir[3]=ir[4]-1
ir[2]=3*i+2; ir[1]=ir[2]-1; ir[0]=ir[1]-1
for i in range(0,nod*nfree):
it=ir[i]
fp[it]=fp[it]+qfe_g[i]
for j in range(0,nod*nfree):
jt=ir[j]
gk[it,jt]=gk[it,jt]+ck[i,j]
# treatment of boundary conditions
for i in range(0,npoin):
for j in range(0,nfree):
if mpfix[j,i]==1:
iz=i*nfree+j
fp[iz]=0.0
for k in range(0,n):
fp[k]=fp[k]-rdis[j,i]*gk[k,iz]
gk[k,iz]=0.0
gk[iz,iz]=1.0
# solution of simultaneous linear equations
disg = np.linalg.solve(gk, fp)
# recovery of restricted displacements
for i in range(0,npoin):
for j in range(0,nfree):
if mpfix[j,i]==1:
iz=i*nfree+j
for k in range(0,n):
disg[iz]=rdis[j,i]
# calculation of section force
for ne in range(0,nele):
ek,tt=SM_GRD(ne,node,x,ae)
i=node[0,ne]-1
j=node[1,ne]-1
work[0]=disg[3*i]; work[1]=disg[3*i+1]; work[2]=disg[3*i+2]
work[3]=disg[3*j]; work[4]=disg[3*j+1]; work[5]=disg[3*j+2]
fsec[:,ne]=np.dot(ek,np.dot(tt,work))
PROUT_FRM(fnameW,npoin,nele,disg,fsec)
dtime=time.time()-start
print('n={0} time={1:.3f}'.format(n,dtime)+' sec')
fout=open(fnameW,'a')
print('n={0} time={1:.3f}'.format(n,dtime)+' sec',file=fout)
fout.close()
392 759 4 16 392
2550000 0.200 0.600 0.018 0.000
2550000 0.200 2.500 1.302 0.623
2550000 0.200 2.500 1.302 0.623
1 0.200 0.001 0.001 0.000
1 2 2 -6.000 1
2 3 2 -6.000 2
3 4 2 -6.000 3
4 5 2 -6.000 4
5 6 2 -6.000 5
6 7 2 -6.000 6
7 8 2 -6.000 7
8 9 2 -6.000 8
9 10 2 -6.000 9
10 11 2 -6.000 10
11 12 2 -6.000 11
12 13 2 -6.000 12
13 14 2 -6.000 13
14 15 2 -6.000 14
15 16 2 -6.000 15
16 17 2 -6.000 16
17 18 2 -6.000 17
18 19 2 -6.000 18
19 20 2 -6.000 19
20 21 2 -6.000 20
21 22 2 -6.000 21
23 24 1 -0.720 22
24 25 1 -0.720 23
25 26 1 -0.720 24
26 27 1 -0.720 25
27 28 1 -0.720 26
28 29 1 -0.720 27
29 30 1 -0.720 28
30 31 1 -0.720 29
31 32 1 -0.720 30
32 33 1 -0.720 31
33 34 1 -0.720 32
34 35 1 -0.720 33
35 36 4 0.000 34
36 37 4 0.000 35
37 38 4 0.000 36
38 39 1 -0.720 37
39 40 1 -0.720 38
40 41 1 -0.720 39
41 42 1 -0.720 40
42 43 1 -0.720 41
43 44 1 -0.720 42
45 46 1 -0.720 43
46 47 1 -0.720 44
47 48 1 -0.720 45
48 49 1 -0.720 46
49 50 1 -0.720 47
50 51 1 -0.720 48
51 52 1 -0.720 49
52 53 1 -0.720 50
53 54 1 -0.720 51
54 55 1 -0.720 52
55 56 1 -0.720 53
56 57 1 -0.720 54
57 58 4 0.000 55
58 59 4 0.000 56
59 60 4 0.000 57
60 61 1 -0.720 58
61 62 1 -0.720 59
62 63 1 -0.720 60
63 64 1 -0.720 61
64 65 1 -0.720 62
65 66 1 -0.720 63
67 68 1 -0.720 64
68 69 1 -0.720 65
69 70 1 -0.720 66
70 71 1 -0.720 67
71 72 1 -0.720 68
72 73 1 -0.720 69
73 74 1 -0.720 70
74 75 1 -0.720 71
75 76 1 -0.720 72
76 77 1 -0.720 73
77 78 1 -0.720 74
78 79 1 -0.720 75
79 80 4 0.000 76
80 81 4 0.000 77
81 82 4 0.000 78
82 83 1 -0.720 79
83 84 1 -0.720 80
84 85 1 -0.720 81
85 86 1 -0.720 82
86 87 1 -0.720 83
87 88 1 -0.720 84
89 90 1 -0.720 85
90 91 1 -0.720 86
91 92 1 -0.720 87
92 93 1 -0.720 88
93 94 1 -0.720 89
94 95 1 -0.720 90
95 96 1 -0.720 91
96 97 1 -0.720 92
97 98 1 -0.720 93
98 99 1 -0.720 94
99 100 1 -0.720 95
100 101 1 -0.720 96
101 102 4 0.000 97
102 103 4 0.000 98
103 104 4 0.000 99
104 105 1 -0.720 100
105 106 1 -0.720 101
106 107 1 -0.720 102
107 108 1 -0.720 103
108 109 1 -0.720 104
109 110 1 -0.720 105
111 112 1 -0.720 106
112 113 1 -0.720 107
113 114 1 -0.720 108
114 115 1 -0.720 109
115 116 1 -0.720 110
116 117 1 -0.720 111
117 118 1 -0.720 112
118 119 1 -0.720 113
119 120 1 -0.720 114
120 121 1 -0.720 115
121 122 1 -0.720 116
122 123 1 -0.720 117
123 124 4 0.000 118
124 125 4 0.000 119
125 126 4 0.000 120
126 127 1 -0.720 121
127 128 1 -0.720 122
128 129 1 -0.720 123
129 130 1 -0.720 124
130 131 1 -0.720 125
131 132 1 -0.720 126
133 134 1 -0.720 127
134 135 1 -0.720 128
135 136 1 -0.720 129
136 137 1 -0.720 130
137 138 1 -0.720 131
138 139 1 -0.720 132
139 140 1 -0.720 133
140 141 1 -0.720 134
141 142 1 -0.720 135
142 143 1 -0.720 136
143 144 1 -0.720 137
144 145 1 -0.720 138
145 146 4 0.000 139
146 147 4 0.000 140
147 148 4 0.000 141
148 149 1 -0.720 142
149 150 1 -0.720 143
150 151 1 -0.720 144
151 152 1 -0.720 145
152 153 1 -0.720 146
153 154 1 -0.720 147
155 156 3 -6.000 148
156 157 3 -6.000 149
157 158 3 -6.000 150
158 159 3 -6.000 151
159 160 3 -6.000 152
160 161 3 -6.000 153
161 162 3 -6.000 154
162 163 3 -6.000 155
163 164 3 -6.000 156
164 165 3 -6.000 157
165 166 3 -6.000 158
166 167 3 -6.000 159
167 168 3 -6.000 160
168 169 3 -6.000 161
169 170 3 -6.000 162
170 171 3 -6.000 163
171 172 3 -6.000 164
172 173 3 -6.000 165
173 174 3 -6.000 166
174 175 3 -6.000 167
175 176 3 -6.000 168
177 178 1 -0.720 169
178 179 1 -0.720 170
179 180 1 -0.720 171
180 181 1 -0.720 172
181 182 1 -0.720 173
182 183 1 -0.720 174
183 184 1 -0.720 175
184 185 1 -0.720 176
185 186 1 -0.720 177
186 187 1 -0.720 178
187 188 1 -0.720 179
188 189 1 -0.720 180
189 190 1 -0.720 181
190 191 1 -0.720 182
191 192 1 -0.720 183
192 193 1 -0.720 184
193 194 1 -0.720 185
194 195 1 -0.720 186
195 196 1 -0.720 187
196 197 1 -0.720 188
197 198 1 -0.720 189
199 200 1 -0.720 190
200 201 1 -0.720 191
201 202 1 -0.720 192
202 203 1 -0.720 193
203 204 1 -0.720 194
204 205 1 -0.720 195
205 206 1 -0.720 196
206 207 1 -0.720 197
207 208 1 -0.720 198
208 209 1 -0.720 199
209 210 1 -0.720 200
210 211 1 -0.720 201
211 212 1 -0.720 202
212 213 1 -0.720 203
213 214 1 -0.720 204
214 215 1 -0.720 205
215 216 1 -0.720 206
216 217 1 -0.720 207
217 218 1 -0.720 208
218 219 1 -0.720 209
219 220 1 -0.720 210
221 222 1 -0.720 211
222 223 1 -0.720 212
223 224 1 -0.720 213
224 225 1 -0.720 214
225 226 1 -0.720 215
226 227 1 -0.720 216
227 228 1 -0.720 217
228 229 1 -0.720 218
229 230 1 -0.720 219
230 231 1 -0.720 220
231 232 1 -0.720 221
232 233 1 -0.720 222
233 234 1 -0.720 223
234 235 1 -0.720 224
235 236 1 -0.720 225
236 237 1 -0.720 226
237 238 1 -0.720 227
238 239 1 -0.720 228
239 240 1 -0.720 229
240 241 1 -0.720 230
241 242 1 -0.720 231
243 244 1 -0.720 232
244 245 1 -0.720 233
245 246 1 -0.720 234
246 247 1 -0.720 235
247 248 1 -0.720 236
248 249 1 -0.720 237
249 250 1 -0.720 238
250 251 1 -0.720 239
251 252 1 -0.720 240
252 253 1 -0.720 241
253 254 1 -0.720 242
254 255 1 -0.720 243
255 256 1 -0.720 244
256 257 1 -0.720 245
257 258 1 -0.720 246
258 259 1 -0.720 247
259 260 1 -0.720 248
260 261 1 -0.720 249
261 262 1 -0.720 250
262 263 1 -0.720 251
264 265 1 -0.720 252
265 266 1 -0.720 253
266 267 1 -0.720 254
267 268 1 -0.720 255
268 269 1 -0.720 256
269 270 1 -0.720 257
270 271 1 -0.720 258
271 272 1 -0.720 259
272 273 1 -0.720 260
273 274 1 -0.720 261
274 275 1 -0.720 262
275 276 1 -0.720 263
276 277 1 -0.720 264
277 278 1 -0.720 265
278 279 1 -0.720 266
279 280 1 -0.720 267
280 281 1 -0.720 268
281 282 1 -0.720 269
282 283 1 -0.720 270
284 285 1 -0.720 271
285 286 1 -0.720 272
286 287 1 -0.720 273
287 288 1 -0.720 274
288 289 1 -0.720 275
289 290 1 -0.720 276
290 291 1 -0.720 277
291 292 1 -0.720 278
292 293 1 -0.720 279
293 294 1 -0.720 280
294 295 1 -0.720 281
295 296 1 -0.720 282
296 297 1 -0.720 283
297 298 1 -0.720 284
298 299 1 -0.720 285
299 300 1 -0.720 286
300 301 1 -0.720 287
301 302 1 -0.720 288
303 304 3 -6.000 289
304 305 3 -6.000 290
305 306 3 -6.000 291
306 307 3 -6.000 292
307 308 3 -6.000 293
308 309 3 -6.000 294
309 310 3 -6.000 295
310 311 3 -6.000 296
311 312 3 -6.000 297
312 313 3 -6.000 298
313 314 3 -6.000 299
314 315 3 -6.000 300
315 316 3 -6.000 301
316 317 3 -6.000 302
317 318 3 -6.000 303
318 319 3 -6.000 304
319 320 3 -6.000 305
321 322 1 -0.720 306
322 323 1 -0.720 307
323 324 1 -0.720 308
324 325 1 -0.720 309
325 326 1 -0.720 310
326 327 1 -0.720 311
327 328 1 -0.720 312
328 329 1 -0.720 313
329 330 1 -0.720 314
330 331 1 -0.720 315
331 332 1 -0.720 316
332 333 1 -0.720 317
333 334 1 -0.720 318
334 335 1 -0.720 319
335 336 1 -0.720 320
337 338 1 -0.720 321
338 339 1 -0.720 322
339 340 1 -0.720 323
340 341 1 -0.720 324
341 342 1 -0.720 325
342 343 1 -0.720 326
343 344 1 -0.720 327
344 345 1 -0.720 328
345 346 1 -0.720 329
346 347 1 -0.720 330
347 348 1 -0.720 331
348 349 1 -0.720 332
349 350 1 -0.720 333
351 352 1 -0.720 334
352 353 1 -0.720 335
353 354 1 -0.720 336
354 355 1 -0.720 337
355 356 1 -0.720 338
356 357 1 -0.720 339
357 358 1 -0.720 340
358 359 1 -0.720 341
359 360 1 -0.720 342
360 361 1 -0.720 343
361 362 1 -0.720 344
363 364 1 -0.720 345
364 365 1 -0.720 346
365 366 1 -0.720 347
366 367 1 -0.720 348
367 368 1 -0.720 349
368 369 1 -0.720 350
369 370 1 -0.720 351
370 371 1 -0.720 352
371 372 1 -0.720 353
373 374 1 -0.720 354
374 375 1 -0.720 355
375 376 1 -0.720 356
376 377 1 -0.720 357
377 378 1 -0.720 358
378 379 1 -0.720 359
379 380 1 -0.720 360
381 382 1 -0.720 361
382 383 1 -0.720 362
383 384 1 -0.720 363
384 385 1 -0.720 364
385 386 1 -0.720 365
387 388 1 -0.720 366
388 389 1 -0.720 367
389 390 1 -0.720 368
1 23 2 -6.000 369
23 45 2 -6.000 370
45 67 2 -6.000 371
67 89 2 -6.000 372
89 111 2 -6.000 373
111 133 2 -6.000 374
133 155 2 -6.000 375
155 177 2 -6.000 376
177 199 2 -6.000 377
199 221 2 -6.000 378
221 243 2 -6.000 379
243 264 2 -6.000 380
264 284 2 -6.000 381
284 303 2 -6.000 382
2 24 1 -0.720 383
24 46 1 -0.720 384
46 68 1 -0.720 385
68 90 1 -0.720 386
90 112 1 -0.720 387
112 134 1 -0.720 388
134 156 1 -0.720 389
156 178 1 -0.720 390
178 200 1 -0.720 391
200 222 1 -0.720 392
222 244 1 -0.720 393
244 265 1 -0.720 394
265 285 1 -0.720 395
285 304 1 -0.720 396
304 321 1 -0.720 397
3 25 1 -0.720 398
25 47 1 -0.720 399
47 69 1 -0.720 400
69 91 1 -0.720 401
91 113 1 -0.720 402
113 135 1 -0.720 403
135 157 1 -0.720 404
157 179 1 -0.720 405
179 201 1 -0.720 406
201 223 1 -0.720 407
223 245 1 -0.720 408
245 266 1 -0.720 409
266 286 1 -0.720 410
286 305 1 -0.720 411
305 322 1 -0.720 412
322 337 1 -0.720 413
4 26 1 -0.720 414
26 48 1 -0.720 415
48 70 1 -0.720 416
70 92 1 -0.720 417
92 114 1 -0.720 418
114 136 1 -0.720 419
136 158 1 -0.720 420
158 180 1 -0.720 421
180 202 1 -0.720 422
202 224 1 -0.720 423
224 246 1 -0.720 424
246 267 1 -0.720 425
267 287 1 -0.720 426
287 306 1 -0.720 427
306 323 1 -0.720 428
323 338 1 -0.720 429
338 351 1 -0.720 430
5 27 1 -0.720 431
27 49 1 -0.720 432
49 71 1 -0.720 433
71 93 1 -0.720 434
93 115 1 -0.720 435
115 137 1 -0.720 436
137 159 1 -0.720 437
159 181 1 -0.720 438
181 203 1 -0.720 439
203 225 1 -0.720 440
225 247 1 -0.720 441
247 268 1 -0.720 442
268 288 1 -0.720 443
288 307 1 -0.720 444
307 324 1 -0.720 445
324 339 1 -0.720 446
339 352 1 -0.720 447
352 363 1 -0.720 448
6 28 1 -0.720 449
28 50 1 -0.720 450
50 72 1 -0.720 451
72 94 1 -0.720 452
94 116 1 -0.720 453
116 138 1 -0.720 454
138 160 1 -0.720 455
160 182 1 -0.720 456
182 204 1 -0.720 457
204 226 1 -0.720 458
226 248 1 -0.720 459
248 269 1 -0.720 460
269 289 1 -0.720 461
289 308 1 -0.720 462
308 325 1 -0.720 463
325 340 1 -0.720 464
340 353 1 -0.720 465
353 364 1 -0.720 466
364 373 1 -0.720 467
7 29 3 -6.000 468
29 51 3 -6.000 469
51 73 3 -6.000 470
73 95 3 -6.000 471
95 117 3 -6.000 472
117 139 3 -6.000 473
139 161 3 -6.000 474
161 183 3 -6.000 475
183 205 3 -6.000 476
205 227 3 -6.000 477
227 249 3 -6.000 478
249 270 3 -6.000 479
270 290 3 -6.000 480
290 309 3 -6.000 481
309 326 3 -6.000 482
326 341 3 -6.000 483
341 354 3 -6.000 484
354 365 3 -6.000 485
365 374 3 -6.000 486
374 381 3 -6.000 487
8 30 1 -0.720 488
30 52 1 -0.720 489
52 74 1 -0.720 490
74 96 1 -0.720 491
96 118 1 -0.720 492
118 140 1 -0.720 493
140 162 1 -0.720 494
162 184 1 -0.720 495
184 206 1 -0.720 496
206 228 1 -0.720 497
228 250 1 -0.720 498
250 271 1 -0.720 499
271 291 1 -0.720 500
291 310 1 -0.720 501
310 327 1 -0.720 502
327 342 1 -0.720 503
342 355 1 -0.720 504
355 366 1 -0.720 505
366 375 1 -0.720 506
375 382 1 -0.720 507
382 387 1 -0.720 508
9 31 1 -0.720 509
31 53 1 -0.720 510
53 75 1 -0.720 511
75 97 1 -0.720 512
97 119 1 -0.720 513
119 141 1 -0.720 514
141 163 1 -0.720 515
163 185 1 -0.720 516
185 207 1 -0.720 517
207 229 1 -0.720 518
229 251 1 -0.720 519
251 272 1 -0.720 520
272 292 1 -0.720 521
292 311 1 -0.720 522
311 328 1 -0.720 523
328 343 1 -0.720 524
343 356 1 -0.720 525
356 367 1 -0.720 526
367 376 1 -0.720 527
376 383 1 -0.720 528
383 388 1 -0.720 529
388 391 1 -0.720 530
10 32 1 -0.720 531
32 54 1 -0.720 532
54 76 1 -0.720 533
76 98 1 -0.720 534
98 120 1 -0.720 535
120 142 1 -0.720 536
142 164 1 -0.720 537
164 186 1 -0.720 538
186 208 1 -0.720 539
208 230 1 -0.720 540
230 252 1 -0.720 541
252 273 1 -0.720 542
273 293 1 -0.720 543
293 312 1 -0.720 544
312 329 1 -0.720 545
329 344 1 -0.720 546
344 357 1 -0.720 547
357 368 1 -0.720 548
368 377 1 -0.720 549
377 384 1 -0.720 550
384 389 1 -0.720 551
389 392 1 -0.720 552
11 33 1 -0.720 553
33 55 1 -0.720 554
55 77 1 -0.720 555
77 99 1 -0.720 556
99 121 1 -0.720 557
121 143 1 -0.720 558
143 165 1 -0.720 559
165 187 1 -0.720 560
187 209 1 -0.720 561
209 231 1 -0.720 562
231 253 1 -0.720 563
253 274 1 -0.720 564
274 294 1 -0.720 565
294 313 1 -0.720 566
313 330 1 -0.720 567
330 345 1 -0.720 568
345 358 1 -0.720 569
358 369 1 -0.720 570
369 378 1 -0.720 571
378 385 1 -0.720 572
385 390 1 -0.720 573
12 34 1 -0.720 574
34 56 1 -0.720 575
56 78 1 -0.720 576
78 100 1 -0.720 577
100 122 1 -0.720 578
122 144 1 -0.720 579
144 166 1 -0.720 580
166 188 1 -0.720 581
188 210 1 -0.720 582
210 232 1 -0.720 583
232 254 1 -0.720 584
254 275 1 -0.720 585
275 295 1 -0.720 586
295 314 1 -0.720 587
314 331 1 -0.720 588
331 346 1 -0.720 589
346 359 1 -0.720 590
359 370 1 -0.720 591
370 379 1 -0.720 592
379 386 1 -0.720 593
13 35 3 -6.000 594
35 57 3 -6.000 595
57 79 3 -6.000 596
79 101 3 -6.000 597
101 123 3 -6.000 598
123 145 3 -6.000 599
145 167 3 -6.000 600
167 189 3 -6.000 601
189 211 3 -6.000 602
211 233 3 -6.000 603
233 255 3 -6.000 604
255 276 3 -6.000 605
276 296 3 -6.000 606
296 315 3 -6.000 607
315 332 3 -6.000 608
332 347 3 -6.000 609
347 360 3 -6.000 610
360 371 3 -6.000 611
371 380 3 -6.000 612
14 36 4 0.000 613
36 58 4 0.000 614
58 80 4 0.000 615
80 102 4 0.000 616
102 124 4 0.000 617
124 146 4 0.000 618
146 168 4 0.000 619
168 190 1 -0.720 620
190 212 1 -0.720 621
212 234 1 -0.720 622
234 256 1 -0.720 623
256 277 1 -0.720 624
277 297 1 -0.720 625
297 316 1 -0.720 626
316 333 1 -0.720 627
333 348 1 -0.720 628
348 361 1 -0.720 629
361 372 1 -0.720 630
15 37 4 0.000 631
37 59 4 0.000 632
59 81 4 0.000 633
81 103 4 0.000 634
103 125 4 0.000 635
125 147 4 0.000 636
147 169 4 0.000 637
169 191 1 -0.720 638
191 213 1 -0.720 639
213 235 1 -0.720 640
235 257 1 -0.720 641
257 278 1 -0.720 642
278 298 1 -0.720 643
298 317 1 -0.720 644
317 334 1 -0.720 645
334 349 1 -0.720 646
349 362 1 -0.720 647
16 38 2 -6.000 648
38 60 2 -6.000 649
60 82 2 -6.000 650
82 104 2 -6.000 651
104 126 2 -6.000 652
126 148 2 -6.000 653
148 170 2 -6.000 654
170 192 1 -0.720 655
192 214 1 -0.720 656
214 236 1 -0.720 657
236 258 1 -0.720 658
258 279 1 -0.720 659
279 299 1 -0.720 660
299 318 1 -0.720 661
318 335 1 -0.720 662
335 350 1 -0.720 663
17 39 1 -0.720 664
39 61 1 -0.720 665
61 83 1 -0.720 666
83 105 1 -0.720 667
105 127 1 -0.720 668
127 149 1 -0.720 669
149 171 1 -0.720 670
171 193 1 -0.720 671
193 215 1 -0.720 672
215 237 1 -0.720 673
237 259 1 -0.720 674
259 280 1 -0.720 675
280 300 1 -0.720 676
300 319 1 -0.720 677
319 336 1 -0.720 678
18 40 1 -0.720 679
40 62 1 -0.720 680
62 84 1 -0.720 681
84 106 1 -0.720 682
106 128 1 -0.720 683
128 150 1 -0.720 684
150 172 1 -0.720 685
172 194 1 -0.720 686
194 216 1 -0.720 687
216 238 1 -0.720 688
238 260 1 -0.720 689
260 281 1 -0.720 690
281 301 1 -0.720 691
301 320 1 -0.720 692
19 41 1 -0.720 693
41 63 1 -0.720 694
63 85 1 -0.720 695
85 107 1 -0.720 696
107 129 1 -0.720 697
129 151 1 -0.720 698
151 173 1 -0.720 699
173 195 1 -0.720 700
195 217 1 -0.720 701
217 239 1 -0.720 702
239 261 1 -0.720 703
261 282 1 -0.720 704
282 302 1 -0.720 705
20 42 1 -0.720 706
42 64 1 -0.720 707
64 86 1 -0.720 708
86 108 1 -0.720 709
108 130 1 -0.720 710
130 152 1 -0.720 711
152 174 1 -0.720 712
174 196 1 -0.720 713
196 218 1 -0.720 714
218 240 1 -0.720 715
240 262 1 -0.720 716
262 283 1 -0.720 717
21 43 1 -0.720 718
43 65 1 -0.720 719
65 87 1 -0.720 720
87 109 1 -0.720 721
109 131 1 -0.720 722
131 153 1 -0.720 723
153 175 1 -0.720 724
175 197 1 -0.720 725
197 219 1 -0.720 726
219 241 1 -0.720 727
241 263 1 -0.720 728
22 44 2 -6.000 729
44 66 2 -6.000 730
66 88 2 -6.000 731
88 110 2 -6.000 732
110 132 2 -6.000 733
132 154 2 -6.000 734
154 176 2 -6.000 735
176 198 2 -6.000 736
198 220 2 -6.000 737
220 242 2 -6.000 738
242 263 2 -6.000 739
263 283 2 -6.000 740
283 302 2 -6.000 741
302 320 2 -6.000 742
320 336 2 -6.000 743
336 350 2 -6.000 744
350 362 2 -6.000 745
362 372 2 -6.000 746
372 380 2 -6.000 747
380 386 2 -6.000 748
386 390 2 -6.000 749
390 392 2 -6.000 750
392 391 2 -6.000 751
391 387 2 -6.000 752
387 381 2 -6.000 753
381 373 2 -6.000 754
373 363 2 -6.000 755
363 351 2 -6.000 756
351 337 2 -6.000 757
337 321 2 -6.000 758
321 303 2 -6.000 759
0.000 -9.000 1
0.000 -8.000 2
0.000 -7.000 3
0.000 -6.000 4
0.000 -5.000 5
0.000 -4.000 6
0.000 -3.000 7
0.000 -2.000 8
0.000 -1.000 9
0.000 0.000 10
0.000 1.000 11
0.000 2.000 12
0.000 3.000 13
0.000 4.000 14
0.000 5.000 15
0.000 6.000 16
0.000 7.000 17
0.000 8.000 18
0.000 9.000 19
0.000 10.000 20
0.000 11.000 21
0.000 12.000 22
1.000 -9.000 23
1.000 -8.000 24
1.000 -7.000 25
1.000 -6.000 26
1.000 -5.000 27
1.000 -4.000 28
1.000 -3.000 29
1.000 -2.000 30
1.000 -1.000 31
1.000 0.000 32
1.000 1.000 33
1.000 2.000 34
1.000 3.000 35
1.000 4.000 36
1.000 5.000 37
1.000 6.000 38
1.000 7.000 39
1.000 8.000 40
1.000 9.000 41
1.000 10.000 42
1.000 11.000 43
1.000 12.000 44
2.000 -9.000 45
2.000 -8.000 46
2.000 -7.000 47
2.000 -6.000 48
2.000 -5.000 49
2.000 -4.000 50
2.000 -3.000 51
2.000 -2.000 52
2.000 -1.000 53
2.000 0.000 54
2.000 1.000 55
2.000 2.000 56
2.000 3.000 57
2.000 4.000 58
2.000 5.000 59
2.000 6.000 60
2.000 7.000 61
2.000 8.000 62
2.000 9.000 63
2.000 10.000 64
2.000 11.000 65
2.000 12.000 66
3.000 -9.000 67
3.000 -8.000 68
3.000 -7.000 69
3.000 -6.000 70
3.000 -5.000 71
3.000 -4.000 72
3.000 -3.000 73
3.000 -2.000 74
3.000 -1.000 75
3.000 0.000 76
3.000 1.000 77
3.000 2.000 78
3.000 3.000 79
3.000 4.000 80
3.000 5.000 81
3.000 6.000 82
3.000 7.000 83
3.000 8.000 84
3.000 9.000 85
3.000 10.000 86
3.000 11.000 87
3.000 12.000 88
4.000 -9.000 89
4.000 -8.000 90
4.000 -7.000 91
4.000 -6.000 92
4.000 -5.000 93
4.000 -4.000 94
4.000 -3.000 95
4.000 -2.000 96
4.000 -1.000 97
4.000 0.000 98
4.000 1.000 99
4.000 2.000 100
4.000 3.000 101
4.000 4.000 102
4.000 5.000 103
4.000 6.000 104
4.000 7.000 105
4.000 8.000 106
4.000 9.000 107
4.000 10.000 108
4.000 11.000 109
4.000 12.000 110
5.000 -9.000 111
5.000 -8.000 112
5.000 -7.000 113
5.000 -6.000 114
5.000 -5.000 115
5.000 -4.000 116
5.000 -3.000 117
5.000 -2.000 118
5.000 -1.000 119
5.000 0.000 120
5.000 1.000 121
5.000 2.000 122
5.000 3.000 123
5.000 4.000 124
5.000 5.000 125
5.000 6.000 126
5.000 7.000 127
5.000 8.000 128
5.000 9.000 129
5.000 10.000 130
5.000 11.000 131
5.000 12.000 132
6.000 -9.000 133
6.000 -8.000 134
6.000 -7.000 135
6.000 -6.000 136
6.000 -5.000 137
6.000 -4.000 138
6.000 -3.000 139
6.000 -2.000 140
6.000 -1.000 141
6.000 0.000 142
6.000 1.000 143
6.000 2.000 144
6.000 3.000 145
6.000 4.000 146
6.000 5.000 147
6.000 6.000 148
6.000 7.000 149
6.000 8.000 150
6.000 9.000 151
6.000 10.000 152
6.000 11.000 153
6.000 12.000 154
7.000 -9.000 155
7.000 -8.000 156
7.000 -7.000 157
7.000 -6.000 158
7.000 -5.000 159
7.000 -4.000 160
7.000 -3.000 161
7.000 -2.000 162
7.000 -1.000 163
7.000 0.000 164
7.000 1.000 165
7.000 2.000 166
7.000 3.000 167
7.000 4.000 168
7.000 5.000 169
7.000 6.000 170
7.000 7.000 171
7.000 8.000 172
7.000 9.000 173
7.000 10.000 174
7.000 11.000 175
7.000 12.000 176
8.000 -9.000 177
8.000 -8.000 178
8.000 -7.000 179
8.000 -6.000 180
8.000 -5.000 181
8.000 -4.000 182
8.000 -3.000 183
8.000 -2.000 184
8.000 -1.000 185
8.000 0.000 186
8.000 1.000 187
8.000 2.000 188
8.000 3.000 189
8.000 4.000 190
8.000 5.000 191
8.000 6.000 192
8.000 7.000 193
8.000 8.000 194
8.000 9.000 195
8.000 10.000 196
8.000 11.000 197
8.000 12.000 198
9.000 -9.000 199
9.000 -8.000 200
9.000 -7.000 201
9.000 -6.000 202
9.000 -5.000 203
9.000 -4.000 204
9.000 -3.000 205
9.000 -2.000 206
9.000 -1.000 207
9.000 0.000 208
9.000 1.000 209
9.000 2.000 210
9.000 3.000 211
9.000 4.000 212
9.000 5.000 213
9.000 6.000 214
9.000 7.000 215
9.000 8.000 216
9.000 9.000 217
9.000 10.000 218
9.000 11.000 219
9.000 12.000 220
10.000 -9.000 221
10.000 -8.000 222
10.000 -7.000 223
10.000 -6.000 224
10.000 -5.000 225
10.000 -4.000 226
10.000 -3.000 227
10.000 -2.000 228
10.000 -1.000 229
10.000 0.000 230
10.000 1.000 231
10.000 2.000 232
10.000 3.000 233
10.000 4.000 234
10.000 5.000 235
10.000 6.000 236
10.000 7.000 237
10.000 8.000 238
10.000 9.000 239
10.000 10.000 240
10.000 11.000 241
10.000 12.000 242
11.000 -9.000 243
11.000 -8.000 244
11.000 -7.000 245
11.000 -6.000 246
11.000 -5.000 247
11.000 -4.000 248
11.000 -3.000 249
11.000 -2.000 250
11.000 -1.000 251
11.000 0.000 252
11.000 1.000 253
11.000 2.000 254
11.000 3.000 255
11.000 4.000 256
11.000 5.000 257
11.000 6.000 258
11.000 7.000 259
11.000 8.000 260
11.000 9.000 261
11.000 10.000 262
11.000 11.000 263
12.000 -9.000 264
12.000 -8.000 265
12.000 -7.000 266
12.000 -6.000 267
12.000 -5.000 268
12.000 -4.000 269
12.000 -3.000 270
12.000 -2.000 271
12.000 -1.000 272
12.000 0.000 273
12.000 1.000 274
12.000 2.000 275
12.000 3.000 276
12.000 4.000 277
12.000 5.000 278
12.000 6.000 279
12.000 7.000 280
12.000 8.000 281
12.000 9.000 282
12.000 10.000 283
13.000 -9.000 284
13.000 -8.000 285
13.000 -7.000 286
13.000 -6.000 287
13.000 -5.000 288
13.000 -4.000 289
13.000 -3.000 290
13.000 -2.000 291
13.000 -1.000 292
13.000 0.000 293
13.000 1.000 294
13.000 2.000 295
13.000 3.000 296
13.000 4.000 297
13.000 5.000 298
13.000 6.000 299
13.000 7.000 300
13.000 8.000 301
13.000 9.000 302
14.000 -9.000 303
14.000 -8.000 304
14.000 -7.000 305
14.000 -6.000 306
14.000 -5.000 307
14.000 -4.000 308
14.000 -3.000 309
14.000 -2.000 310
14.000 -1.000 311
14.000 0.000 312
14.000 1.000 313
14.000 2.000 314
14.000 3.000 315
14.000 4.000 316
14.000 5.000 317
14.000 6.000 318
14.000 7.000 319
14.000 8.000 320
15.000 -8.000 321
15.000 -7.000 322
15.000 -6.000 323
15.000 -5.000 324
15.000 -4.000 325
15.000 -3.000 326
15.000 -2.000 327
15.000 -1.000 328
15.000 0.000 329
15.000 1.000 330
15.000 2.000 331
15.000 3.000 332
15.000 4.000 333
15.000 5.000 334
15.000 6.000 335
15.000 7.000 336
16.000 -7.000 337
16.000 -6.000 338
16.000 -5.000 339
16.000 -4.000 340
16.000 -3.000 341
16.000 -2.000 342
16.000 -1.000 343
16.000 0.000 344
16.000 1.000 345
16.000 2.000 346
16.000 3.000 347
16.000 4.000 348
16.000 5.000 349
16.000 6.000 350
17.000 -6.000 351
17.000 -5.000 352
17.000 -4.000 353
17.000 -3.000 354
17.000 -2.000 355
17.000 -1.000 356
17.000 0.000 357
17.000 1.000 358
17.000 2.000 359
17.000 3.000 360
17.000 4.000 361
17.000 5.000 362
18.000 -5.000 363
18.000 -4.000 364
18.000 -3.000 365
18.000 -2.000 366
18.000 -1.000 367
18.000 0.000 368
18.000 1.000 369
18.000 2.000 370
18.000 3.000 371
18.000 4.000 372
19.000 -4.000 373
19.000 -3.000 374
19.000 -2.000 375
19.000 -1.000 376
19.000 0.000 377
19.000 1.000 378
19.000 2.000 379
19.000 3.000 380
20.000 -3.000 381
20.000 -2.000 382
20.000 -1.000 383
20.000 0.000 384
20.000 1.000 385
20.000 2.000 386
21.000 -2.000 387
21.000 -1.000 388
21.000 0.000 389
21.000 1.000 390
22.000 -1.000 391
22.000 0.000 392
1 0 0 1 0 0 0
7 0 0 1 0 0 0
13 0 0 1 0 0 0
22 0 0 1 0 0 0
155 0 0 1 0 0 0
161 0 0 1 0 0 0
167 0 0 1 0 0 0
176 0 0 1 0 0 0
242 0 0 1 0 0 0
303 0 0 1 0 0 0
309 0 0 1 0 0 0
315 0 0 1 0 0 0
320 0 0 1 0 0 0
380 0 0 1 0 0 0
381 0 0 1 0 0 0
391 0 0 1 0 0 0
1 0.000 0.000 -22.500
2 0.000 0.000 -22.500
3 0.000 0.000 -22.500
4 0.000 0.000 -22.500
5 0.000 0.000 -19.286
6 0.000 0.000 -19.286
7 0.000 0.000 -19.286
8 0.000 0.000 -16.071
9 0.000 0.000 -16.071
10 0.000 0.000 -16.071
11 0.000 0.000 -12.857
12 0.000 0.000 -12.857
13 0.000 0.000 -12.857
14 0.000 0.000 -9.643
15 0.000 0.000 -9.643
16 0.000 0.000 -9.643
17 0.000 0.000 -6.429
18 0.000 0.000 -6.429
19 0.000 0.000 -6.429
20 0.000 0.000 -6.429
21 0.000 0.000 -6.429
22 0.000 0.000 -6.429
23 0.000 0.000 -22.500
24 0.000 0.000 -22.500
25 0.000 0.000 -22.500
26 0.000 0.000 -22.500
27 0.000 0.000 -19.286
28 0.000 0.000 -19.286
29 0.000 0.000 -19.286
30 0.000 0.000 -16.071
31 0.000 0.000 -16.071
32 0.000 0.000 -16.071
33 0.000 0.000 -12.857
34 0.000 0.000 -12.857
35 0.000 0.000 -21.446
36 0.000 0.000 0.000
37 0.000 0.000 0.000
38 0.000 0.000 -21.446
39 0.000 0.000 -6.429
40 0.000 0.000 -6.429
41 0.000 0.000 -6.429
42 0.000 0.000 -6.429
43 0.000 0.000 -6.429
44 0.000 0.000 -6.429
45 0.000 0.000 -22.500
46 0.000 0.000 -22.500
47 0.000 0.000 -22.500
48 0.000 0.000 -22.500
49 0.000 0.000 -19.286
50 0.000 0.000 -19.286
51 0.000 0.000 -19.286
52 0.000 0.000 -16.071
53 0.000 0.000 -16.071
54 0.000 0.000 -16.071
55 0.000 0.000 -12.857
56 0.000 0.000 -12.857
57 0.000 0.000 -21.446
58 0.000 0.000 0.000
59 0.000 0.000 0.000
60 0.000 0.000 -21.446
61 0.000 0.000 -6.429
62 0.000 0.000 -6.429
63 0.000 0.000 -6.429
64 0.000 0.000 -6.429
65 0.000 0.000 -6.429
66 0.000 0.000 -6.429
67 0.000 0.000 -22.500
68 0.000 0.000 -22.500
69 0.000 0.000 -22.500
70 0.000 0.000 -22.500
71 0.000 0.000 -19.286
72 0.000 0.000 -19.286
73 0.000 0.000 -19.286
74 0.000 0.000 -16.071
75 0.000 0.000 -16.071
76 0.000 0.000 -16.071
77 0.000 0.000 -12.857
78 0.000 0.000 -12.857
79 0.000 0.000 -21.446
80 0.000 0.000 0.000
81 0.000 0.000 0.000
82 0.000 0.000 -21.446
83 0.000 0.000 -6.429
84 0.000 0.000 -6.429
85 0.000 0.000 -6.429
86 0.000 0.000 -6.429
87 0.000 0.000 -6.429
88 0.000 0.000 -6.429
89 0.000 0.000 -22.500
90 0.000 0.000 -22.500
91 0.000 0.000 -22.500
92 0.000 0.000 -22.500
93 0.000 0.000 -19.286
94 0.000 0.000 -19.286
95 0.000 0.000 -19.286
96 0.000 0.000 -16.071
97 0.000 0.000 -16.071
98 0.000 0.000 -16.071
99 0.000 0.000 -12.857
100 0.000 0.000 -12.857
101 0.000 0.000 -21.446
102 0.000 0.000 0.000
103 0.000 0.000 0.000
104 0.000 0.000 -21.446
105 0.000 0.000 -6.429
106 0.000 0.000 -6.429
107 0.000 0.000 -6.429
108 0.000 0.000 -6.429
109 0.000 0.000 -6.429
110 0.000 0.000 -6.429
111 0.000 0.000 -22.500
112 0.000 0.000 -22.500
113 0.000 0.000 -22.500
114 0.000 0.000 -22.500
115 0.000 0.000 -19.286
116 0.000 0.000 -19.286
117 0.000 0.000 -19.286
118 0.000 0.000 -16.071
119 0.000 0.000 -16.071
120 0.000 0.000 -16.071
121 0.000 0.000 -12.857
122 0.000 0.000 -12.857
123 0.000 0.000 -21.446
124 0.000 0.000 0.000
125 0.000 0.000 0.000
126 0.000 0.000 -21.446
127 0.000 0.000 -6.429
128 0.000 0.000 -6.429
129 0.000 0.000 -6.429
130 0.000 0.000 -6.429
131 0.000 0.000 -6.429
132 0.000 0.000 -6.429
133 0.000 0.000 -22.500
134 0.000 0.000 -22.500
135 0.000 0.000 -22.500
136 0.000 0.000 -22.500
137 0.000 0.000 -19.286
138 0.000 0.000 -19.286
139 0.000 0.000 -19.286
140 0.000 0.000 -16.071
141 0.000 0.000 -16.071
142 0.000 0.000 -16.071
143 0.000 0.000 -12.857
144 0.000 0.000 -12.857
145 0.000 0.000 -21.446
146 0.000 0.000 0.000
147 0.000 0.000 0.000
148 0.000 0.000 -21.446
149 0.000 0.000 -6.429
150 0.000 0.000 -6.429
151 0.000 0.000 -6.429
152 0.000 0.000 -6.429
153 0.000 0.000 -6.429
154 0.000 0.000 -6.429
155 0.000 0.000 -22.500
156 0.000 0.000 -22.500
157 0.000 0.000 -22.500
158 0.000 0.000 -22.500
159 0.000 0.000 -19.286
160 0.000 0.000 -19.286
161 0.000 0.000 -19.286
162 0.000 0.000 -16.071
163 0.000 0.000 -16.071
164 0.000 0.000 -16.071
165 0.000 0.000 -12.857
166 0.000 0.000 -12.857
167 0.000 0.000 -12.857
168 0.000 0.000 -9.643
169 0.000 0.000 -9.643
170 0.000 0.000 -9.643
171 0.000 0.000 -6.429
172 0.000 0.000 -6.429
173 0.000 0.000 -6.429
174 0.000 0.000 -6.429
175 0.000 0.000 -6.429
176 0.000 0.000 -6.429
177 0.000 0.000 -22.500
178 0.000 0.000 -22.500
179 0.000 0.000 -22.500
180 0.000 0.000 -22.500
181 0.000 0.000 -19.286
182 0.000 0.000 -19.286
183 0.000 0.000 -19.286
184 0.000 0.000 -16.071
185 0.000 0.000 -16.071
186 0.000 0.000 -16.071
187 0.000 0.000 -12.857
188 0.000 0.000 -12.857
189 0.000 0.000 -12.857
190 0.000 0.000 -9.643
191 0.000 0.000 -9.643
192 0.000 0.000 -9.643
193 0.000 0.000 -6.429
194 0.000 0.000 -6.429
195 0.000 0.000 -6.429
196 0.000 0.000 -6.429
197 0.000 0.000 -6.429
198 0.000 0.000 -6.429
199 0.000 0.000 -22.500
200 0.000 0.000 -22.500
201 0.000 0.000 -22.500
202 0.000 0.000 -22.500
203 0.000 0.000 -19.286
204 0.000 0.000 -19.286
205 0.000 0.000 -19.286
206 0.000 0.000 -16.071
207 0.000 0.000 -16.071
208 0.000 0.000 -16.071
209 0.000 0.000 -12.857
210 0.000 0.000 -12.857
211 0.000 0.000 -12.857
212 0.000 0.000 -9.643
213 0.000 0.000 -9.643
214 0.000 0.000 -9.643
215 0.000 0.000 -9.643
216 0.000 0.000 -6.429
217 0.000 0.000 -6.429
218 0.000 0.000 -6.429
219 0.000 0.000 -6.429
220 0.000 0.000 -6.429
221 0.000 0.000 -22.500
222 0.000 0.000 -22.500
223 0.000 0.000 -22.500
224 0.000 0.000 -22.500
225 0.000 0.000 -19.286
226 0.000 0.000 -19.286
227 0.000 0.000 -19.286
228 0.000 0.000 -16.071
229 0.000 0.000 -16.071
230 0.000 0.000 -16.071
231 0.000 0.000 -12.857
232 0.000 0.000 -12.857
233 0.000 0.000 -12.857
234 0.000 0.000 -12.857
235 0.000 0.000 -9.643
236 0.000 0.000 -9.643
237 0.000 0.000 -9.643
238 0.000 0.000 -9.643
239 0.000 0.000 -6.429
240 0.000 0.000 -6.429
241 0.000 0.000 -6.429
242 0.000 0.000 -6.429
243 0.000 0.000 -22.500
244 0.000 0.000 -22.500
245 0.000 0.000 -22.500
246 0.000 0.000 -22.500
247 0.000 0.000 -19.286
248 0.000 0.000 -19.286
249 0.000 0.000 -19.286
250 0.000 0.000 -16.071
251 0.000 0.000 -16.071
252 0.000 0.000 -16.071
253 0.000 0.000 -16.071
254 0.000 0.000 -12.857
255 0.000 0.000 -12.857
256 0.000 0.000 -12.857
257 0.000 0.000 -12.857
258 0.000 0.000 -9.643
259 0.000 0.000 -9.643
260 0.000 0.000 -9.643
261 0.000 0.000 -9.643
262 0.000 0.000 -6.429
263 0.000 0.000 -6.429
264 0.000 0.000 -22.500
265 0.000 0.000 -22.500
266 0.000 0.000 -22.500
267 0.000 0.000 -22.500
268 0.000 0.000 -19.286
269 0.000 0.000 -19.286
270 0.000 0.000 -19.286
271 0.000 0.000 -19.286
272 0.000 0.000 -16.071
273 0.000 0.000 -16.071
274 0.000 0.000 -16.071
275 0.000 0.000 -16.071
276 0.000 0.000 -12.857
277 0.000 0.000 -12.857
278 0.000 0.000 -12.857
279 0.000 0.000 -12.857
280 0.000 0.000 -9.643
281 0.000 0.000 -9.643
282 0.000 0.000 -9.643
283 0.000 0.000 -9.643
284 0.000 0.000 -22.500
285 0.000 0.000 -22.500
286 0.000 0.000 -22.500
287 0.000 0.000 -22.500
288 0.000 0.000 -22.500
289 0.000 0.000 -19.286
290 0.000 0.000 -19.286
291 0.000 0.000 -19.286
292 0.000 0.000 -19.286
293 0.000 0.000 -16.071
294 0.000 0.000 -16.071
295 0.000 0.000 -16.071
296 0.000 0.000 -16.071
297 0.000 0.000 -12.857
298 0.000 0.000 -12.857
299 0.000 0.000 -12.857
300 0.000 0.000 -12.857
301 0.000 0.000 -9.643
302 0.000 0.000 -9.643
303 0.000 0.000 -22.500
304 0.000 0.000 -22.500
305 0.000 0.000 -22.500
306 0.000 0.000 -22.500
307 0.000 0.000 -22.500
308 0.000 0.000 -22.500
309 0.000 0.000 -19.286
310 0.000 0.000 -19.286
311 0.000 0.000 -19.286
312 0.000 0.000 -19.286
313 0.000 0.000 -16.071
314 0.000 0.000 -16.071
315 0.000 0.000 -16.071
316 0.000 0.000 -16.071
317 0.000 0.000 -12.857
318 0.000 0.000 -12.857
319 0.000 0.000 -12.857
320 0.000 0.000 -12.857
321 0.000 0.000 -22.500
322 0.000 0.000 -22.500
323 0.000 0.000 -22.500
324 0.000 0.000 -22.500
325 0.000 0.000 -22.500
326 0.000 0.000 -22.500
327 0.000 0.000 -19.286
328 0.000 0.000 -19.286
329 0.000 0.000 -19.286
330 0.000 0.000 -19.286
331 0.000 0.000 -16.071
332 0.000 0.000 -16.071
333 0.000 0.000 -16.071
334 0.000 0.000 -16.071
335 0.000 0.000 -12.857
336 0.000 0.000 -12.857
337 0.000 0.000 -22.500
338 0.000 0.000 -22.500
339 0.000 0.000 -22.500
340 0.000 0.000 -22.500
341 0.000 0.000 -22.500
342 0.000 0.000 -22.500
343 0.000 0.000 -19.286
344 0.000 0.000 -19.286
345 0.000 0.000 -19.286
346 0.000 0.000 -19.286
347 0.000 0.000 -16.071
348 0.000 0.000 -16.071
349 0.000 0.000 -16.071
350 0.000 0.000 -16.071
351 0.000 0.000 -22.500
352 0.000 0.000 -22.500
353 0.000 0.000 -22.500
354 0.000 0.000 -22.500
355 0.000 0.000 -22.500
356 0.000 0.000 -22.500
357 0.000 0.000 -19.286
358 0.000 0.000 -19.286
359 0.000 0.000 -19.286
360 0.000 0.000 -19.286
361 0.000 0.000 -16.071
362 0.000 0.000 -16.071
363 0.000 0.000 -22.500
364 0.000 0.000 -22.500
365 0.000 0.000 -22.500
366 0.000 0.000 -22.500
367 0.000 0.000 -22.500
368 0.000 0.000 -22.500
369 0.000 0.000 -19.286
370 0.000 0.000 -19.286
371 0.000 0.000 -19.286
372 0.000 0.000 -19.286
373 0.000 0.000 -22.500
374 0.000 0.000 -22.500
375 0.000 0.000 -22.500
376 0.000 0.000 -22.500
377 0.000 0.000 -22.500
378 0.000 0.000 -22.500
379 0.000 0.000 -19.286
380 0.000 0.000 -19.286
381 0.000 0.000 -22.500
382 0.000 0.000 -22.500
383 0.000 0.000 -22.500
384 0.000 0.000 -22.500
385 0.000 0.000 -22.500
386 0.000 0.000 -22.500
387 0.000 0.000 -22.500
388 0.000 0.000 -22.500
389 0.000 0.000 -22.500
390 0.000 0.000 -22.500
391 0.000 0.000 -22.500
392 0.000 0.000 -22.500
# make model data for GRID GIRDER
import numpy as np
import sys
#Main routine
#param=sys.argv
#fnameR=param[1]
#fnameW=param[2]
fnameR='inp_grid.txt'
#Data reading
f=open(fnameR,'r')
text=f.readline()
text=text.strip()
text=text.split()
npoin=int(text[0]) # Number of nodes
nele =int(text[1]) # Number of elements
nsec =int(text[2]) # Number of sections
npfix=int(text[3]) # Number of restricted nodes
nlod =int(text[4]) # Number of loaded nodes
nod=2 # Number of nodes per element
nfree=3 # Degree of freedom per node
n=nfree*npoin
x =np.zeros([2,npoin],dtype=np.float64) # Coordinates of nodes
ae =np.zeros([5,nsec],dtype=np.float64) # Section characteristics
node =np.zeros([nod+1,nele],dtype=np.int) # Node-element relationship
qw =np.zeros(nele,dtype=np.float64) # Uniformly distributed load per unit length
fp =np.zeros(nfree*npoin,dtype=np.float64) # External force vector
mpfix =np.zeros([nfree,npoin],dtype=np.int) # Ristrict conditions
rdis =np.zeros([nfree,npoin],dtype=np.float64) # Ristricted displacement
ir =np.zeros(nod*nfree,dtype=np.int) # Work vector for matrix assembly
gk =np.zeros([n,n],dtype=np.float64) # Global stiffness matrix
fsec =np.zeros([nod*nfree,nele],dtype=np.float64) # Section force vector
work =np.zeros(nod*nfree,dtype=np.float64) # work vector for section force calculation
# section characteristics
for i in range(0,nsec):
text=f.readline()
text=text.strip()
text=text.split()
ae[0,i]=float(text[0]) # E : Elastic modulus
ae[1,i]=float(text[1]) # po : Poisson's ratio
ae[2,i]=float(text[2]) # AA : Section area
ae[3,i]=float(text[3]) # AI : Moment of inertia
ae[4,i]=float(text[4]) # AJ : Tortional constant
# element-node
for i in range(0,nele):
text=f.readline()
text=text.strip()
text=text.split()
node[0,i]=int(text[0]) #node_1
node[1,i]=int(text[1]) #node_2
node[2,i]=int(text[2]) #section characteristic number
qw[i]=float(text[3]) #uniformly distributed vertical load
# node coordinates
for i in range(0,npoin):
text=f.readline()
text=text.strip()
text=text.split()
x[0,i]=float(text[0]) # x-coordinate
x[1,i]=float(text[1]) # y-coordinate
# boundary conditions (0:free, 1:restricted)
for i in range(0,npfix):
text=f.readline()
text=text.strip()
text=text.split()
lp=int(text[0]) #fixed node
mpfix[0,lp-1]=int(text[1]) #index of restriction for tortional rotation
mpfix[1,lp-1]=int(text[2]) #index of restriction for bending rotation
mpfix[2,lp-1]=int(text[3]) #index of restriction for vertical displacement
rdis[0,lp-1]=float(text[4]) #given tortional rotation
rdis[1,lp-1]=float(text[5]) #given bending rotation
rdis[2,lp-1]=float(text[6]) #given vertical displacement
# load
if 0<nlod:
for i in range(0,nlod):
text=f.readline()
text=text.strip()
text=text.split()
lp=int(text[0]) #loaded node
fp[3*lp-3]=float(text[1]) #tortional moment load
fp[3*lp-2]=float(text[2]) #bending moment load
fp[3*lp-1]=float(text[3]) #vertical load
f.close()
fnameW1='_slab.txt'
fnameW2='_beam.txt'
f1=open(fnameW1,'w')
f2=open(fnameW2,'w')
for ne in range(0,nele):
k1=node[0,ne]-1
k2=node[1,ne]-1
x1=x[0,k1];y1=x[1,k1]
x2=x[0,k2];y2=x[1,k2]
if node[2,ne]==1:
print('>',file=f1)
print('{0:10.3f} {1:10.3f}'.format(x1,y1),file=f1)
print('{0:10.3f} {1:10.3f}'.format(x2,y2),file=f1)
if node[2,ne]==2 or node[2,ne]==3:
print('>',file=f2)
print('{0:10.3f} {1:10.3f}'.format(x1,y1),file=f2)
print('{0:10.3f} {1:10.3f}'.format(x2,y2),file=f2)
f1.close()
f2.close()
fnameW='_fixed.txt'
f=open(fnameW,'w')
for i in range(0,npoin):
if mpfix[2,i]==1:
xx=x[0,i];yy=x[1,i]
print('{0:10.3f} {1:10.3f}'.format(xx,yy),file=f)
f.close()
fnameW='_load.txt'
f=open(fnameW,'w')
for i in range(0,npoin):
if 0.0<np.abs(fp[3*i+2]):
fz=fp[3*i+2]
xx=x[0,i];yy=x[1,i]
if 5<abs(fz) and abs(fz)< 9:print('{0:10.3f} {1:10.3f} {2:10.3}'.format(xx,yy, 6.0),file=f)
if 9<abs(fz) and abs(fz)<12:print('{0:10.3f} {1:10.3f} {2:10.3}'.format(xx,yy, 9.0),file=f)
if 12<abs(fz) and abs(fz)<16:print('{0:10.3f} {1:10.3f} {2:10.3}'.format(xx,yy,12.0),file=f)
if 16<abs(fz) and abs(fz)<19:print('{0:10.3f} {1:10.3f} {2:10.3}'.format(xx,yy,16.0),file=f)
if 19<abs(fz) and abs(fz)<21:print('{0:10.3f} {1:10.3f} {2:10.3}'.format(xx,yy,19.0),file=f)
if 21<abs(fz) and abs(fz)<22:print('{0:10.3f} {1:10.3f} {2:10.3}'.format(xx,yy,21.0),file=f)
if 22<abs(fz) :print('{0:10.3f} {1:10.3f} {2:10.3}'.format(xx,yy,22.0),file=f)
f.close()
python3 py_grid_model.py
gmt set FONT_ANNOT_PRIMARY 12
gmt set MAP_ANNOT_OFFSET_PRIMARY 0.3c
gmt set FONT_LABEL 12p
gmt set MAP_LABEL_OFFSET 0.5c
gmt set MAP_TICK_LENGTH_PRIMARY -0.2c
xga=a5f1
yga=a5f1
xlabel="Distance x (m)"
ylabel="Distance y (m)"
col=#eeeeee
col_t=#cccccc
col_c=#eeeeee
#Make cpt
#z1 R1 G1 B1 z2 R2 G2 B2
cat << EOT > _cpt.cpt
0 0 0 255 9 0 0 255
9 255 0 255 12 255 0 255
12 0 255 255 16 0 255 255
16 0 255 0 19 0 255 0
19 255 255 0 21 255 255 0
21 0 0 0 22 0 0 0
22 255 0 0 23 255 0 0
EOT
range=-2/24/-11/15
scale=15/15
xga=a5f1
yga=a5f1
xlabel='Distance x (m)'
ylabel='Distance y (m)'
fig=fig_grid_model.eps
gmt psbasemap -R$range -JX$scale -Bx$xga+l"$xlabel" -By$yga+l"$ylabel" -BWS -P -K > $fig
gmt psxy _slab.txt -R -J -W0.5,#ff0000 -K -O >> $fig
gmt psxy _beam.txt -R -J -W2.0,#0000ff -K -O >> $fig
gmt psxy _fixed.txt -R -J -SC0.3 -G#000000 -K -O >> $fig
gmt pstext -R -J -F+f+a+j -N -K -O << EOT >> $fig
-0.5 -9.5 12p 0 MC 1
-0.5 -3.5 12p 0 MC 2
-0.5 3.5 12p 0 MC 3
-0.5 12.5 12p 0 MC 4
6.5 -9.5 12p 0 MC 5
6.5 -3.5 12p 0 MC 6
6.5 3.5 12p 0 MC 7
6.5 12.5 12p 0 MC 8
10.5 12.5 12p 0 MC 9
14.0 -9.6 12p 0 MC 10
13.5 -3.6 12p 0 MC 11
13.5 3.6 12p 0 MC 12
14.0 8.6 12p 0 MC 13
19.0 3.6 12p 0 MC 14
20.0 -3.6 12p 0 MC 15
22.0 -1.6 12p 0 MC 16
3.5 5.5 12p 0 MC Additional Beam
EOT
gmt psxy -R -J -W0.5,#ff0000 -K -O << EOT >> $fig
15.5 14.5
17.5 14.5
EOT
gmt psxy -R -J -W2.0,#0000ff -K -O << EOT>> $fig
15.5 13.5
17.5 13.5
EOT
gmt psxy -R -J -SC0.3 -G#000000 -K -O << EOT>> $fig
16.5 12.5
EOT
gmt pstext -R -J -F+f+a+j -N -O << EOT >> $fig
18 14.5 12p 0 LM Beam for Slab
18 13.5 12p 0 LM Main Beam
18 12.5 12p 0 LM Fixed Vertical Disp.
EOT
fig=fig_grid_load.eps
gmt psbasemap -R$range -JX$scale -Bx$xga+l"$xlabel" -By$yga+l"$ylabel" -BWS -P -K > $fig
gmt psxy _slab.txt -R -J -W0.5,#000000 -K -O >> $fig
gmt psxy _beam.txt -R -J -W2.0,#000000 -K -O >> $fig
gmt psxy _load.txt -R -JX -SC0.3 -C_cpt.cpt -K -O >> $fig
gmt psxy _load.txt -R -JX -SC0.3 -W0.5 -K -O >> $fig
gmt psxy -R -JX -SC0.3 -C_cpt.cpt -K -O << EOT >> $fig
17 14.5 6
17 13.5 9
17 12.5 12
17 11.5 16
17 10.5 19
17 9.5 22
17 8.5 21
EOT
gmt pstext -R -J -F+f+a+j -N -O << EOT >> $fig
18 14.5 12p 0 LM w= 64.20 kN/m@+2@+
18 13.5 12p 0 LM w= 96.43 kN/m@+2@+
18 12.5 12p 0 LM w= 128.57 kN/m@+2@+
18 11.5 12p 0 LM w= 160.71 kN/m@+2@+
18 10.5 12p 0 LM w= 192.86 kN/m@+2@+
18 9.5 12p 0 LM w= 225.00 kN/m@+2@+
18 8.5 12p 0 LM w= 214.46 kN/m@+2@+
EOT
# make input data for GRID GIRDER
import numpy as np
import sys
#Main routine
param=sys.argv
fnameR=param[1]
#fnameW=param[2]
nod=2
# Data reading
fin=open(fnameR,'r')
text=fin.readline()
text=fin.readline()
text=text.strip()
text=text.split()
npoin=int(text[0])
nele =int(text[1])
nsec =int(text[2])
npfix=int(text[3])
nlod =int(text[4])
x =np.zeros(npoin,dtype=np.float64) # Coordinates of nodes
y =np.zeros(npoin,dtype=np.float64) # Coordinates of nodes
node=np.zeros([3,nele],dtype=np.int) # Node-element relationship
disx=np.zeros(npoin,dtype=np.float64) # Coordinates of nodes
disy=np.zeros(npoin,dtype=np.float64) # Coordinates of nodes
disz=np.zeros(npoin,dtype=np.float64) # Coordinates of nodes
T1 =np.zeros(nele,dtype=np.float64) # Section force vector
M1 =np.zeros(nele,dtype=np.float64) # Section force vector
Q1 =np.zeros(nele,dtype=np.float64) # Section force vector
T2 =np.zeros(nele,dtype=np.float64) # Section force vector
M2 =np.zeros(nele,dtype=np.float64) # Section force vector
Q2 =np.zeros(nele,dtype=np.float64) # Section force vector
text=fin.readline()
for i in range(0,nsec):
text=fin.readline()
text=fin.readline()
for i in range(0,npoin):
text=fin.readline()
text=text.strip()
text=text.split()
x[i]=float(text[1])
y[i]=float(text[2])
text=fin.readline()
for i in range(0,npfix):
text=fin.readline()
text=fin.readline()
for ne in range(0,nele):
text=fin.readline()
text=text.strip()
text=text.split()
node[0][ne]=int(text[1])
node[1][ne]=int(text[2])
node[2][ne]=int(text[3])
text=fin.readline()
for i in range(0,npoin):
text=fin.readline()
text=text.strip()
text=text.split()
disx[i]=float(text[1])
disy[i]=float(text[2])
disz[i]=float(text[3])
text=fin.readline()
for ne in range(0,nele):
text=fin.readline()
text=text.strip()
text=text.split()
T1[ne]=float(text[1])
M1[ne]=float(text[2])
Q1[ne]=float(text[3])
T2[ne]=float(text[4])
M2[ne]=float(text[5])
Q2[ne]=float(text[6])
fin.close()
# Slab element
ip1=[]
ip2=[]
ip3=[]
ip4=[]
ip5=[]
ip6=[]
ip7=[]
ip8=[]
ip9=[]
for ne in range(0,nele):
k1=node[0][ne]-1 #Node number in Python
k2=node[1][ne]-1 #Node number in Python
x1=x[k1];y1=y[k1]
x2=x[k2];y2=y[k2]
xx=0.5*(x1+x2)
yy=0.5*(y1+y2)
if node[2][ne]==1:
if 0<xx and xx<7:
if -9<yy and yy<-3: ip1=ip1+[i]
if -3<yy and yy< 3: ip2=ip2+[i]
if 6<yy and yy<12: ip3=ip3+[i]
if 7<xx and xx<14:
if -9<yy and yy<-3: ip4=ip4+[i]
if -3<yy and yy< 3: ip5=ip5+[i]
if 3<yy and yy<12: ip6=ip6+[i]
if 14<xx and xx<25:
if -9<yy and yy<-3: ip7=ip7+[i]
if -3<yy and yy< 3: ip8=ip8+[i]
if 3<yy and yy<12: ip9=ip9+[i]
#Beam element (actual element number)
ib1=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]
ib2=[148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168]
ib3=[289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305]
ib4=[369,370,371,372,373,374,375,376,377,378,379,380,381,382,759,758,757,756,755,754,753,752]
ib5=[468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487]
ib6=[594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612]
ib7=[729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751]
ib8=[648,649,650,651,652,653,654]
#Beam moment
for iii in range(0,8):
if iii==0:_ib=ib1
if iii==1:_ib=ib2
if iii==2:_ib=ib3
if iii==3:_ib=ib4
if iii==4:_ib=ib5
if iii==5:_ib=ib6
if iii==6:_ib=ib7
if iii==7:_ib=ib8
_T=[];_M=[];_Q=[]
for i in _ib:
# print('{0:5d},{1:10.3f},{2:10.3f},{3:10.3f},{4:10.3f}'.format(i,M1[i-1],M2[i-1],Q1[i-1],Q2[i-1]))
_T=_T+[abs(T1[i-1])]
_T=_T+[abs(T2[i-1])]
_M=_M+[abs(M1[i-1])]
_M=_M+[abs(M2[i-1])]
_Q=_Q+[abs(Q1[i-1])]
_Q=_Q+[abs(Q2[i-1])]
print('{0:10.3f},{1:10.3f},{2:10.3f}'.format(max(_M)*10,max(_Q)*10,max(_T)*10))
del _ib,_T,_M,_Q
#Slab moment
for iii in range(0,9):
if iii==0:_ip=ip1
if iii==1:_ip=ip2
if iii==2:_ip=ip3
if iii==3:_ip=ip4
if iii==4:_ip=ip5
if iii==5:_ip=ip6
if iii==6:_ip=ip7
if iii==7:_ip=ip8
if iii==8:_ip=ip9
_M=[];_Q=[]
for i in _ip:
_M=_M+[abs(M1[i])]
_M=_M+[abs(M2[i])]
_Q=_Q+[abs(Q1[i])]
_Q=_Q+[abs(Q2[i])]
print('{0:10.3f},{1:10.3f}'.format(max(_M)*10,max(_Q)*10))
del _M,_Q,_ip
#Mash
fnameW='_beam.txt'
f=open(fnameW,'w')
for iii in range(0,8):
if iii==0:_ib=ib1
if iii==1:_ib=ib2
if iii==2:_ib=ib3
if iii==3:_ib=ib4
if iii==4:_ib=ib5
if iii==5:_ib=ib6
if iii==6:_ib=ib7
if iii==7:_ib=ib8
for i in _ib:
k1=node[0][i-1]-1
k2=node[1][i-1]-1
x1=x[k1];y1=y[k1]
x2=x[k2];y2=y[k2]
print('>',file=f)
print('{0:10.3f} {1:10.3f} {2:10.3f}'.format(x1,y1,0),file=f)
print('{0:10.3f} {1:10.3f} {2:10.3f}'.format(x2,y2,0),file=f)
del _ib
f.close()
#Moment
unit=5
mmax=max(abs(max(M1)),abs(min(M1)),abs(max(M2)),abs(min(M2)))
coef=unit/mmax
fnameW='_mom.txt'
f=open(fnameW,'w')
for iii in range(0,8):
if iii==0:_ib=ib1
if iii==1:_ib=ib2
if iii==2:_ib=ib3
if iii==3:_ib=ib4
if iii==4:_ib=ib5
if iii==5:_ib=ib6
if iii==6:_ib=ib7
if iii==7:_ib=ib8
for i in _ib:
k1=node[0][i-1]-1
k2=node[1][i-1]-1
x1=x[k1];y1=y[k1];z1=-M1[i-1]*coef
x2=x[k2];y2=y[k2];z2= M2[i-1]*coef
print('>',file=f)
print('{0:10.3f} {1:10.3f} {2:10.3f}'.format(x1,y1,0),file=f)
print('{0:10.3f} {1:10.3f} {2:10.3f}'.format(x1,y1,z1),file=f)
print('{0:10.3f} {1:10.3f} {2:10.3f}'.format(x2,y2,z2),file=f)
print('{0:10.3f} {1:10.3f} {2:10.3f}'.format(x2,y2,0),file=f)
del _ib
f.close()
qmax=max(abs(max(Q1)),abs(min(Q1)),abs(max(Q2)),abs(min(Q2)))
coef=unit/qmax
fnameW='_she.txt'
f=open(fnameW,'w')
for iii in range(0,8):
if iii==0:_ib=ib1
if iii==1:_ib=ib2
if iii==2:_ib=ib3
if iii==3:_ib=ib4
if iii==4:_ib=ib5
if iii==5:_ib=ib6
if iii==6:_ib=ib7
if iii==7:_ib=ib8
for i in _ib:
k1=node[0][i-1]-1
k2=node[1][i-1]-1
x1=x[k1];y1=y[k1];z1= Q1[i-1]*coef
x2=x[k2];y2=y[k2];z2=-Q2[i-1]*coef
print('>',file=f)
print('{0:10.3f} {1:10.3f} {2:10.3f}'.format(x1,y1,0),file=f)
print('{0:10.3f} {1:10.3f} {2:10.3f}'.format(x1,y1,z1),file=f)
print('{0:10.3f} {1:10.3f} {2:10.3f}'.format(x2,y2,z2),file=f)
print('{0:10.3f} {1:10.3f} {2:10.3f}'.format(x2,y2,0),file=f)
del _ib
f.close()
tmax=max(abs(max(T1)),abs(min(T1)),abs(max(T2)),abs(min(T2)))
coef=unit/tmax
fnameW='_tor.txt'
f=open(fnameW,'w')
for iii in range(0,8):
if iii==0:_ib=ib1
if iii==1:_ib=ib2
if iii==2:_ib=ib3
if iii==3:_ib=ib4
if iii==4:_ib=ib5
if iii==5:_ib=ib6
if iii==6:_ib=ib7
if iii==7:_ib=ib8
for i in _ib:
k1=node[0][i-1]-1
k2=node[1][i-1]-1
x1=x[k1];y1=y[k1];z1= T1[i-1]*coef
x2=x[k2];y2=y[k2];z2=-T2[i-1]*coef
print('>',file=f)
print('{0:10.3f} {1:10.3f} {2:10.3f}'.format(x1,y1,0),file=f)
print('{0:10.3f} {1:10.3f} {2:10.3f}'.format(x1,y1,z1),file=f)
print('{0:10.3f} {1:10.3f} {2:10.3f}'.format(x2,y2,z2),file=f)
print('{0:10.3f} {1:10.3f} {2:10.3f}'.format(x2,y2,0),file=f)
del _ib
f.close()
gmt set FONT_ANNOT_PRIMARY 12
gmt set MAP_ANNOT_OFFSET_PRIMARY 0.3c
gmt set FONT_LABEL 12p
gmt set MAP_LABEL_OFFSET 0.5c
gmt set MAP_TICK_LENGTH_PRIMARY -0.2c
xga=a5f1
yga=a5f1
xlabel="Distance x (m)"
ylabel="Distance y (m)"
col=#eeeeee
col_t=#cccccc
col_c=#eeeeee
range=-1/24/-10/15/-5/5
scale=12/12
fig=_gmt_mom.eps
gmt psxyz _mom.txt -R$range -JX$scale -JZ3 -Bxa2+l"x-direction (m)" -Bya2+l"y-direction (m)" -BSE -G#cccccc -p150/30 -P -K > $fig
gmt psxyz _mom.txt -R -JX -JZ -W0.5 -p -O -K >> $fig
gmt psxyz _beam.txt -R -JX -JZ -W1.0 -p -O -K >> $fig
echo '1.3 0.6 14p 0 RM Moment Diagram' | gmt pstext -R0/1/0/1 -JX -F+f+a+j -N -O >> $fig
fig=_gmt_she.eps
gmt psxyz _she.txt -R$range -JX$scale -JZ3 -Bxa2+l"x-direction (m)" -Bya2+l"y-direction (m)" -BSE -G#cccccc -p150/30 -P -K > $fig
gmt psxyz _she.txt -R -JX -JZ -W0.5 -p -O -K >> $fig
gmt psxyz _beam.txt -R -JX -JZ -W1.0 -p -O -K >> $fig
echo '1.3 0.6 14p 0 RM Shear Force Diagram' | gmt pstext -R0/1/0/1 -JX -F+f+a+j -N -O >> $fig
fig=_gmt_tor.eps
gmt psxyz _tor.txt -R$range -JX$scale -JZ3 -Bxa2+l"x-direction (m)" -Bya2+l"y-direction (m)" -BSE -G#cccccc -p150/30 -P -K > $fig
gmt psxyz _tor.txt -R -JX -JZ -W0.5 -p -O -K >> $fig
gmt psxyz _beam.txt -R -JX -JZ -W1.0 -p -O -K >> $fig
echo '1.3 0.6 14p 0 RM Torque Diagram' | gmt pstext -R0/1/0/1 -JX -F+f+a+j -N -O >> $fig
bash z.txt
mv _gmt_mom.png fig_gmt_mom.png
mv _gmt_she.png fig_gmt_she.png
mv _gmt_tor.png fig_gmt_tor.png
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment