How dose mesh affects calcualtion speed?

Hi, everyone. I’m recently solving my equations by Picard iteraion in two different meshes. Mesh 1 is generated by using and rotating (about 2°) the fenics built-in 2D rectangle mesh, while mesh 2 is transformedTransitioning from mesh.xml to mesh.xdmf, from dolfin-convert to meshio from msh file generated with gmsh by extruding a 1D line to a parallelogram, as the picture shows (mesh1 for the left and mesh2 for the right). The problem is that, while the two meshes has similar numbers of nodes and elements, and even approaching element shapes, the iteration speed for the built-in mesh1 is much more faster then mesh 2 (at least two times faster). Even when I have tried coarsed the mesh 2 and make its elemt numbers become only half of that for mesh 1,the iteration speed using mesh 2 is still obvious slower than using mesh 1. Then what could be the reason for the significant different calculation speed when using the two similar meshes?

Please produce a minimal example that can reproduce your computational timings.

Hi, I now can conclude that it’s the interpolation of Expression containing another Function leading to the difference. See the following example:

from dolfin import *
import time

#generate mesh1 and mesh2
mesh1=RectangleMesh(
    Point(0,-1),Point(400,0),
    40,100)
mesh1.rotate(1.43,2,Point(0,0))
print('mesh1 cells:'+str(mesh1.num_cells()))

mesh2=Mesh()
with XDMFFile('mesh.xdmf') as infile:
    infile.read(mesh2) 
print('mesh2 cells:'+str(mesh2.num_cells()))

#define FunctionSpace and Functions
V1=FunctionSpace(mesh1,'CG',1)
V2=FunctionSpace(mesh2,'CG',1)
f1=Function(V1)
f2=Function(V2)
h1=interpolate(Expression('-1',degree=0),V1)
h2=interpolate(Expression('-1',degree=0),V2)

#define the expression
ex1=Expression('h',degree=1,h=h1)
ex2=Expression('h',degree=1,h=h2)
#ex1=Expression('-1',degree=1)
#ex2=Expression('-1',degree=1)

#assign
t0=time.process_time()
f1.assign(interpolate(ex1,V1))
t1=time.process_time()
f2.assign(interpolate(ex2,V2))
t2=time.process_time()
print('assign time for fenics built-in mesh:'+str(t1-t0))
print('assign time for gmsh:'+str(t2-t1))

and the results:

mesh1 cells:8000
mesh2 cells:8000
assign time for fenics built-in mesh:0.016637910000000034
assign time for gmsh:0.11017641499999997

The time difference occurs when I define the Expression with h=h1 or h=h2. But as I directly define the Expression with a number, or define h1 and h2 as Expresseions, this difference disappears:

mesh1 cells:8000
mesh2 cells:8000
assign time for fenics built-in mesh:0.001077723000000086
assign time for gmsh:0.0010484170000000237

What can I do to speed up the code to normal levels with the remaining of the interpolation of an Expression containing another Function?

Could you attach your Gmsh script (or preferably the corresponding msh file)?

Hi, I don’t know how to attach a file here, can I send an e-mail to you?

If it is the msh file, simply copy paste its content in a post here encapsulated by ```

The original msh text is too long to upload. So I have changed the scale of the gmsh:

$MeshFormat
4.1 0 8
$EndMeshFormat
$Entities
4 4 1 0
1 0 0 0 0 
2 49.98442826423031 1.24777045084967 0 0 
3 0 -1 0 0 
4 49.98442826423031 0.2477704508496696 0 0 
1 -1.000000011686097e-07 -9.999999994736442e-08 -1e-07 49.98442836423032 1.24777055084967 1e-07 0 2 1 -2 
2 -1e-07 -1.0000001 -1e-07 1e-07 9.999999994736442e-08 1e-07 0 2 1 -3 
3 49.98442816423031 0.2477703508496696 -1e-07 49.98442836423031 1.24777055084967 1e-07 0 2 2 -4 
4 -1.000000011686097e-07 -1.0000001 -1e-07 49.98442836423032 0.2477705508496698 1e-07 0 2 3 -4 
1 -1.000000011686097e-07 -1.0000001 -1e-07 49.98442836423032 1.24777055084967 1e-07 0 4 2 4 -3 -1 
$EndEntities
$Nodes
9 306 1 306
0 1 0 1
1
0 0 0
0 2 0 1
2
49.98442826423031 1.24777045084967 0
0 3 0 1
3
0 -1 0
0 4 0 1
4
49.98442826423031 0.2477704508496696 0
1 1 0 4
5
6
7
8
9.996885652846064 0.249554090169934 0
19.99377130569213 0.4991081803398679 0
29.99065695853819 0.7486622705098019 0
39.98754261138426 0.9982163606797358 0
1 2 0 49
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
0 -0.02 0
0 -0.04 0
0 -0.06 0
0 -0.08 0
0 -0.1 0
0 -0.12 0
0 -0.14 0
0 -0.16 0
0 -0.18 0
0 -0.2 0
0 -0.22 0
0 -0.24 0
0 -0.26 0
0 -0.28 0
0 -0.3 0
0 -0.32 0
0 -0.34 0
0 -0.36 0
0 -0.38 0
0 -0.4 0
0 -0.42 0
0 -0.44 0
0 -0.46 0
0 -0.48 0
0 -0.5 0
0 -0.52 0
0 -0.54 0
0 -0.5600000000000001 0
0 -0.58 0
0 -0.6 0
0 -0.62 0
0 -0.64 0
0 -0.66 0
0 -0.68 0
0 -0.7 0
0 -0.72 0
0 -0.74 0
0 -0.76 0
0 -0.78 0
0 -0.8 0
0 -0.82 0
0 -0.84 0
0 -0.86 0
0 -0.88 0
0 -0.9 0
0 -0.92 0
0 -0.9399999999999999 0
0 -0.96 0
0 -0.98 0
1 3 0 49
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
49.98442826423031 1.22777045084967 0
49.98442826423031 1.20777045084967 0
49.98442826423031 1.18777045084967 0
49.98442826423031 1.16777045084967 0
49.98442826423031 1.14777045084967 0
49.98442826423031 1.12777045084967 0
49.98442826423031 1.10777045084967 0
49.98442826423031 1.08777045084967 0
49.98442826423031 1.06777045084967 0
49.98442826423031 1.04777045084967 0
49.98442826423031 1.02777045084967 0
49.98442826423031 1.00777045084967 0
49.98442826423031 0.9877704508496696 0
49.98442826423031 0.9677704508496696 0
49.98442826423031 0.9477704508496696 0
49.98442826423031 0.9277704508496696 0
49.98442826423031 0.9077704508496696 0
49.98442826423031 0.8877704508496697 0
49.98442826423031 0.8677704508496696 0
49.98442826423031 0.8477704508496696 0
49.98442826423031 0.8277704508496697 0
49.98442826423031 0.8077704508496697 0
49.98442826423031 0.7877704508496697 0
49.98442826423031 0.7677704508496697 0
49.98442826423031 0.7477704508496696 0
49.98442826423031 0.7277704508496696 0
49.98442826423031 0.7077704508496696 0
49.98442826423031 0.6877704508496696 0
49.98442826423031 0.6677704508496697 0
49.98442826423031 0.6477704508496697 0
49.98442826423031 0.6277704508496696 0
49.98442826423031 0.6077704508496696 0
49.98442826423031 0.5877704508496696 0
49.98442826423031 0.5677704508496696 0
49.98442826423031 0.5477704508496697 0
49.98442826423031 0.5277704508496697 0
49.98442826423031 0.5077704508496697 0
49.98442826423031 0.4877704508496696 0
49.98442826423031 0.4677704508496696 0
49.98442826423031 0.4477704508496696 0
49.98442826423031 0.4277704508496697 0
49.98442826423031 0.4077704508496697 0
49.98442826423031 0.3877704508496697 0
49.98442826423031 0.3677704508496696 0
49.98442826423031 0.3477704508496696 0
49.98442826423031 0.3277704508496696 0
49.98442826423031 0.3077704508496697 0
49.98442826423031 0.2877704508496697 0
49.98442826423031 0.2677704508496697 0
1 4 0 4
107
108
109
110
9.996885652846064 -0.750445909830066 0
19.99377130569213 -0.5008918196601321 0
29.99065695853819 -0.2513377294901981 0
39.98754261138426 -0.001783639320264152 0
2 1 0 196
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
9.996885652846064 0.229554090169934 0
9.996885652846064 0.209554090169934 0
9.996885652846064 0.189554090169934 0
9.996885652846064 0.1695540901699339 0
9.996885652846064 0.149554090169934 0
9.996885652846064 0.129554090169934 0
9.996885652846064 0.1095540901699339 0
9.996885652846064 0.08955409016993396 0
9.996885652846064 0.06955409016993397 0
9.996885652846064 0.04955409016993395 0
9.996885652846064 0.02955409016993396 0
9.996885652846064 0.009554090169933971 0
9.996885652846064 -0.01044590983006605 0
9.996885652846064 -0.03044590983006606 0
9.996885652846064 -0.05044590983006603 0
9.996885652846064 -0.07044590983006604 0
9.996885652846064 -0.09044590983006606 0
9.996885652846064 -0.110445909830066 0
9.996885652846064 -0.130445909830066 0
9.996885652846064 -0.1504459098300661 0
9.996885652846064 -0.170445909830066 0
9.996885652846064 -0.190445909830066 0
9.996885652846064 -0.2104459098300661 0
9.996885652846064 -0.230445909830066 0
9.996885652846064 -0.250445909830066 0
9.996885652846064 -0.2704459098300661 0
9.996885652846064 -0.2904459098300661 0
9.996885652846064 -0.3104459098300661 0
9.996885652846064 -0.330445909830066 0
9.996885652846064 -0.350445909830066 0
9.996885652846064 -0.370445909830066 0
9.996885652846064 -0.3904459098300661 0
9.996885652846064 -0.4104459098300661 0
9.996885652846064 -0.4304459098300661 0
9.996885652846064 -0.450445909830066 0
9.996885652846064 -0.470445909830066 0
9.996885652846064 -0.490445909830066 0
9.996885652846064 -0.510445909830066 0
9.996885652846064 -0.530445909830066 0
9.996885652846064 -0.550445909830066 0
9.996885652846064 -0.570445909830066 0
9.996885652846064 -0.5904459098300661 0
9.996885652846064 -0.6104459098300661 0
9.996885652846064 -0.6304459098300661 0
9.996885652846064 -0.6504459098300661 0
9.996885652846064 -0.6704459098300661 0
9.996885652846064 -0.6904459098300659 0
9.996885652846064 -0.7104459098300659 0
9.996885652846064 -0.730445909830066 0
19.99377130569213 0.4791081803398679 0
19.99377130569213 0.4591081803398679 0
19.99377130569213 0.4391081803398679 0
19.99377130569213 0.4191081803398679 0
19.99377130569213 0.3991081803398679 0
19.99377130569213 0.3791081803398679 0
19.99377130569213 0.3591081803398679 0
19.99377130569213 0.3391081803398679 0
19.99377130569213 0.3191081803398679 0
19.99377130569213 0.2991081803398679 0
19.99377130569213 0.279108180339868 0
19.99377130569213 0.2591081803398679 0
19.99377130569213 0.2391081803398679 0
19.99377130569213 0.2191081803398679 0
19.99377130569213 0.1991081803398679 0
19.99377130569213 0.1791081803398679 0
19.99377130569213 0.1591081803398679 0
19.99377130569213 0.1391081803398679 0
19.99377130569213 0.1191081803398679 0
19.99377130569213 0.0991081803398679 0
19.99377130569213 0.07910818033986794 0
19.99377130569213 0.05910818033986792 0
19.99377130569213 0.0391081803398679 0
19.99377130569213 0.01910818033986794 0
19.99377130569213 -0.000891819660132076 0
19.99377130569213 -0.02089181966013209 0
19.99377130569213 -0.04089181966013211 0
19.99377130569213 -0.06089181966013213 0
19.99377130569213 -0.08089181966013204 0
19.99377130569213 -0.1008918196601321 0
19.99377130569213 -0.1208918196601321 0
19.99377130569213 -0.1408918196601321 0
19.99377130569213 -0.1608918196601321 0
19.99377130569213 -0.1808918196601321 0
19.99377130569213 -0.200891819660132 0
19.99377130569213 -0.220891819660132 0
19.99377130569213 -0.2408918196601321 0
19.99377130569213 -0.2608918196601321 0
19.99377130569213 -0.2808918196601321 0
19.99377130569213 -0.3008918196601321 0
19.99377130569213 -0.320891819660132 0
19.99377130569213 -0.340891819660132 0
19.99377130569213 -0.3608918196601321 0
19.99377130569213 -0.3808918196601321 0
19.99377130569213 -0.4008918196601321 0
19.99377130569213 -0.4208918196601321 0
19.99377130569213 -0.440891819660132 0
19.99377130569213 -0.460891819660132 0
19.99377130569213 -0.4808918196601321 0
29.99065695853819 0.7286622705098019 0
29.99065695853819 0.7086622705098019 0
29.99065695853819 0.688662270509802 0
29.99065695853819 0.668662270509802 0
29.99065695853819 0.648662270509802 0
29.99065695853819 0.6286622705098019 0
29.99065695853819 0.6086622705098019 0
29.99065695853819 0.5886622705098019 0
29.99065695853819 0.5686622705098019 0
29.99065695853819 0.5486622705098019 0
29.99065695853819 0.528662270509802 0
29.99065695853819 0.508662270509802 0
29.99065695853819 0.4886622705098019 0
29.99065695853819 0.4686622705098019 0
29.99065695853819 0.448662270509802 0
29.99065695853819 0.4286622705098019 0
29.99065695853819 0.4086622705098019 0
29.99065695853819 0.388662270509802 0
29.99065695853819 0.3686622705098019 0
29.99065695853819 0.3486622705098019 0
29.99065695853819 0.328662270509802 0
29.99065695853819 0.3086622705098019 0
29.99065695853819 0.2886622705098019 0
29.99065695853819 0.268662270509802 0
29.99065695853819 0.2486622705098019 0
29.99065695853819 0.2286622705098019 0
29.99065695853819 0.2086622705098019 0
29.99065695853819 0.1886622705098019 0
29.99065695853819 0.168662270509802 0
29.99065695853819 0.148662270509802 0
29.99065695853819 0.1286622705098019 0
29.99065695853819 0.1086622705098019 0
29.99065695853819 0.08866227050980191 0
29.99065695853819 0.06866227050980189 0
29.99065695853819 0.04866227050980199 0
29.99065695853819 0.02866227050980197 0
29.99065695853819 0.00866227050980195 0
29.99065695853819 -0.01133772949019807 0
29.99065695853819 -0.03133772949019809 0
29.99065695853819 -0.0513377294901981 0
29.99065695853819 -0.07133772949019801 0
29.99065695853819 -0.09133772949019803 0
29.99065695853819 -0.111337729490198 0
29.99065695853819 -0.1313377294901981 0
29.99065695853819 -0.1513377294901981 0
29.99065695853819 -0.1713377294901981 0
29.99065695853819 -0.191337729490198 0
29.99065695853819 -0.211337729490198 0
29.99065695853819 -0.231337729490198 0
39.98754261138426 0.9782163606797358 0
39.98754261138426 0.9582163606797358 0
39.98754261138426 0.9382163606797358 0
39.98754261138426 0.9182163606797359 0
39.98754261138426 0.8982163606797359 0
39.98754261138426 0.8782163606797359 0
39.98754261138426 0.8582163606797358 0
39.98754261138426 0.8382163606797358 0
39.98754261138426 0.8182163606797359 0
39.98754261138426 0.7982163606797359 0
39.98754261138426 0.7782163606797359 0
39.98754261138426 0.7582163606797359 0
39.98754261138426 0.7382163606797358 0
39.98754261138426 0.7182163606797358 0
39.98754261138426 0.6982163606797358 0
39.98754261138426 0.6782163606797358 0
39.98754261138426 0.6582163606797358 0
39.98754261138426 0.6382163606797359 0
39.98754261138426 0.6182163606797358 0
39.98754261138426 0.5982163606797358 0
39.98754261138426 0.5782163606797359 0
39.98754261138426 0.5582163606797359 0
39.98754261138426 0.5382163606797359 0
39.98754261138426 0.5182163606797359 0
39.98754261138426 0.4982163606797358 0
39.98754261138426 0.4782163606797358 0
39.98754261138426 0.4582163606797358 0
39.98754261138426 0.4382163606797358 0
39.98754261138426 0.4182163606797359 0
39.98754261138426 0.3982163606797359 0
39.98754261138426 0.3782163606797359 0
39.98754261138426 0.3582163606797358 0
39.98754261138426 0.3382163606797358 0
39.98754261138426 0.3182163606797358 0
39.98754261138426 0.2982163606797359 0
39.98754261138426 0.2782163606797359 0
39.98754261138426 0.2582163606797359 0
39.98754261138426 0.2382163606797358 0
39.98754261138426 0.2182163606797358 0
39.98754261138426 0.1982163606797358 0
39.98754261138426 0.1782163606797359 0
39.98754261138426 0.1582163606797359 0
39.98754261138426 0.1382163606797359 0
39.98754261138426 0.1182163606797358 0
39.98754261138426 0.09821636067973583 0
39.98754261138426 0.07821636067973581 0
39.98754261138426 0.0582163606797359 0
39.98754261138426 0.03821636067973588 0
39.98754261138426 0.01821636067973587 0
$EndNodes
$Elements
9 614 1 614
0 1 15 1
1 1 
0 2 15 1
2 2 
0 3 15 1
3 3 
0 4 15 1
4 4 
1 1 1 5
5 1 5 
6 5 6 
7 6 7 
8 7 8 
9 8 2 
1 2 1 50
10 1 9 
11 9 10 
12 10 11 
13 11 12 
14 12 13 
15 13 14 
16 14 15 
17 15 16 
18 16 17 
19 17 18 
20 18 19 
21 19 20 
22 20 21 
23 21 22 
24 22 23 
25 23 24 
26 24 25 
27 25 26 
28 26 27 
29 27 28 
30 28 29 
31 29 30 
32 30 31 
33 31 32 
34 32 33 
35 33 34 
36 34 35 
37 35 36 
38 36 37 
39 37 38 
40 38 39 
41 39 40 
42 40 41 
43 41 42 
44 42 43 
45 43 44 
46 44 45 
47 45 46 
48 46 47 
49 47 48 
50 48 49 
51 49 50 
52 50 51 
53 51 52 
54 52 53 
55 53 54 
56 54 55 
57 55 56 
58 56 57 
59 57 3 
1 3 1 50
60 2 58 
61 58 59 
62 59 60 
63 60 61 
64 61 62 
65 62 63 
66 63 64 
67 64 65 
68 65 66 
69 66 67 
70 67 68 
71 68 69 
72 69 70 
73 70 71 
74 71 72 
75 72 73 
76 73 74 
77 74 75 
78 75 76 
79 76 77 
80 77 78 
81 78 79 
82 79 80 
83 80 81 
84 81 82 
85 82 83 
86 83 84 
87 84 85 
88 85 86 
89 86 87 
90 87 88 
91 88 89 
92 89 90 
93 90 91 
94 91 92 
95 92 93 
96 93 94 
97 94 95 
98 95 96 
99 96 97 
100 97 98 
101 98 99 
102 99 100 
103 100 101 
104 101 102 
105 102 103 
106 103 104 
107 104 105 
108 105 106 
109 106 4 
1 4 1 5
110 3 107 
111 107 108 
112 108 109 
113 109 110 
114 110 4 
2 1 2 500
115 1 111 5 
116 1 9 111 
117 9 112 111 
118 9 10 112 
119 10 113 112 
120 10 11 113 
121 11 114 113 
122 11 12 114 
123 12 115 114 
124 12 13 115 
125 13 116 115 
126 13 14 116 
127 14 117 116 
128 14 15 117 
129 15 118 117 
130 15 16 118 
131 16 119 118 
132 16 17 119 
133 17 120 119 
134 17 18 120 
135 18 121 120 
136 18 19 121 
137 19 122 121 
138 19 20 122 
139 20 123 122 
140 20 21 123 
141 21 124 123 
142 21 22 124 
143 22 125 124 
144 22 23 125 
145 23 126 125 
146 23 24 126 
147 24 127 126 
148 24 25 127 
149 25 128 127 
150 25 26 128 
151 26 129 128 
152 26 27 129 
153 27 130 129 
154 27 28 130 
155 28 131 130 
156 28 29 131 
157 29 132 131 
158 29 30 132 
159 30 133 132 
160 30 31 133 
161 31 134 133 
162 31 32 134 
163 32 135 134 
164 32 33 135 
165 33 136 135 
166 33 34 136 
167 34 137 136 
168 34 35 137 
169 35 138 137 
170 35 36 138 
171 36 139 138 
172 36 37 139 
173 37 140 139 
174 37 38 140 
175 38 141 140 
176 38 39 141 
177 39 142 141 
178 39 40 142 
179 40 143 142 
180 40 41 143 
181 41 144 143 
182 41 42 144 
183 42 145 144 
184 42 43 145 
185 43 146 145 
186 43 44 146 
187 44 147 146 
188 44 45 147 
189 45 148 147 
190 45 46 148 
191 46 149 148 
192 46 47 149 
193 47 150 149 
194 47 48 150 
195 48 151 150 
196 48 49 151 
197 49 152 151 
198 49 50 152 
199 50 153 152 
200 50 51 153 
201 51 154 153 
202 51 52 154 
203 52 155 154 
204 52 53 155 
205 53 156 155 
206 53 54 156 
207 54 157 156 
208 54 55 157 
209 55 158 157 
210 55 56 158 
211 56 159 158 
212 56 57 159 
213 57 107 159 
214 57 3 107 
215 5 160 6 
216 5 111 160 
217 111 161 160 
218 111 112 161 
219 112 162 161 
220 112 113 162 
221 113 163 162 
222 113 114 163 
223 114 164 163 
224 114 115 164 
225 115 165 164 
226 115 116 165 
227 116 166 165 
228 116 117 166 
229 117 167 166 
230 117 118 167 
231 118 168 167 
232 118 119 168 
233 119 169 168 
234 119 120 169 
235 120 170 169 
236 120 121 170 
237 121 171 170 
238 121 122 171 
239 122 172 171 
240 122 123 172 
241 123 173 172 
242 123 124 173 
243 124 174 173 
244 124 125 174 
245 125 175 174 
246 125 126 175 
247 126 176 175 
248 126 127 176 
249 127 177 176 
250 127 128 177 
251 128 178 177 
252 128 129 178 
253 129 179 178 
254 129 130 179 
255 130 180 179 
256 130 131 180 
257 131 181 180 
258 131 132 181 
259 132 182 181 
260 132 133 182 
261 133 183 182 
262 133 134 183 
263 134 184 183 
264 134 135 184 
265 135 185 184 
266 135 136 185 
267 136 186 185 
268 136 137 186 
269 137 187 186 
270 137 138 187 
271 138 188 187 
272 138 139 188 
273 139 189 188 
274 139 140 189 
275 140 190 189 
276 140 141 190 
277 141 191 190 
278 141 142 191 
279 142 192 191 
280 142 143 192 
281 143 193 192 
282 143 144 193 
283 144 194 193 
284 144 145 194 
285 145 195 194 
286 145 146 195 
287 146 196 195 
288 146 147 196 
289 147 197 196 
290 147 148 197 
291 148 198 197 
292 148 149 198 
293 149 199 198 
294 149 150 199 
295 150 200 199 
296 150 151 200 
297 151 201 200 
298 151 152 201 
299 152 202 201 
300 152 153 202 
301 153 203 202 
302 153 154 203 
303 154 204 203 
304 154 155 204 
305 155 205 204 
306 155 156 205 
307 156 206 205 
308 156 157 206 
309 157 207 206 
310 157 158 207 
311 158 208 207 
312 158 159 208 
313 159 108 208 
314 159 107 108 
315 6 209 7 
316 6 160 209 
317 160 210 209 
318 160 161 210 
319 161 211 210 
320 161 162 211 
321 162 212 211 
322 162 163 212 
323 163 213 212 
324 163 164 213 
325 164 214 213 
326 164 165 214 
327 165 215 214 
328 165 166 215 
329 166 216 215 
330 166 167 216 
331 167 217 216 
332 167 168 217 
333 168 218 217 
334 168 169 218 
335 169 219 218 
336 169 170 219 
337 170 220 219 
338 170 171 220 
339 171 221 220 
340 171 172 221 
341 172 222 221 
342 172 173 222 
343 173 223 222 
344 173 174 223 
345 174 224 223 
346 174 175 224 
347 175 225 224 
348 175 176 225 
349 176 226 225 
350 176 177 226 
351 177 227 226 
352 177 178 227 
353 178 228 227 
354 178 179 228 
355 179 229 228 
356 179 180 229 
357 180 230 229 
358 180 181 230 
359 181 231 230 
360 181 182 231 
361 182 232 231 
362 182 183 232 
363 183 233 232 
364 183 184 233 
365 184 234 233 
366 184 185 234 
367 185 235 234 
368 185 186 235 
369 186 236 235 
370 186 187 236 
371 187 237 236 
372 187 188 237 
373 188 238 237 
374 188 189 238 
375 189 239 238 
376 189 190 239 
377 190 240 239 
378 190 191 240 
379 191 241 240 
380 191 192 241 
381 192 242 241 
382 192 193 242 
383 193 243 242 
384 193 194 243 
385 194 244 243 
386 194 195 244 
387 195 245 244 
388 195 196 245 
389 196 246 245 
390 196 197 246 
391 197 247 246 
392 197 198 247 
393 198 248 247 
394 198 199 248 
395 199 249 248 
396 199 200 249 
397 200 250 249 
398 200 201 250 
399 201 251 250 
400 201 202 251 
401 202 252 251 
402 202 203 252 
403 203 253 252 
404 203 204 253 
405 204 254 253 
406 204 205 254 
407 205 255 254 
408 205 206 255 
409 206 256 255 
410 206 207 256 
411 207 257 256 
412 207 208 257 
413 208 109 257 
414 208 108 109 
415 7 258 8 
416 7 209 258 
417 209 259 258 
418 209 210 259 
419 210 260 259 
420 210 211 260 
421 211 261 260 
422 211 212 261 
423 212 262 261 
424 212 213 262 
425 213 263 262 
426 213 214 263 
427 214 264 263 
428 214 215 264 
429 215 265 264 
430 215 216 265 
431 216 266 265 
432 216 217 266 
433 217 267 266 
434 217 218 267 
435 218 268 267 
436 218 219 268 
437 219 269 268 
438 219 220 269 
439 220 270 269 
440 220 221 270 
441 221 271 270 
442 221 222 271 
443 222 272 271 
444 222 223 272 
445 223 273 272 
446 223 224 273 
447 224 274 273 
448 224 225 274 
449 225 275 274 
450 225 226 275 
451 226 276 275 
452 226 227 276 
453 227 277 276 
454 227 228 277 
455 228 278 277 
456 228 229 278 
457 229 279 278 
458 229 230 279 
459 230 280 279 
460 230 231 280 
461 231 281 280 
462 231 232 281 
463 232 282 281 
464 232 233 282 
465 233 283 282 
466 233 234 283 
467 234 284 283 
468 234 235 284 
469 235 285 284 
470 235 236 285 
471 236 286 285 
472 236 237 286 
473 237 287 286 
474 237 238 287 
475 238 288 287 
476 238 239 288 
477 239 289 288 
478 239 240 289 
479 240 290 289 
480 240 241 290 
481 241 291 290 
482 241 242 291 
483 242 292 291 
484 242 243 292 
485 243 293 292 
486 243 244 293 
487 244 294 293 
488 244 245 294 
489 245 295 294 
490 245 246 295 
491 246 296 295 
492 246 247 296 
493 247 297 296 
494 247 248 297 
495 248 298 297 
496 248 249 298 
497 249 299 298 
498 249 250 299 
499 250 300 299 
500 250 251 300 
501 251 301 300 
502 251 252 301 
503 252 302 301 
504 252 253 302 
505 253 303 302 
506 253 254 303 
507 254 304 303 
508 254 255 304 
509 255 305 304 
510 255 256 305 
511 256 306 305 
512 256 257 306 
513 257 110 306 
514 257 109 110 
515 8 58 2 
516 8 258 58 
517 258 59 58 
518 258 259 59 
519 259 60 59 
520 259 260 60 
521 260 61 60 
522 260 261 61 
523 261 62 61 
524 261 262 62 
525 262 63 62 
526 262 263 63 
527 263 64 63 
528 263 264 64 
529 264 65 64 
530 264 265 65 
531 265 66 65 
532 265 266 66 
533 266 67 66 
534 266 267 67 
535 267 68 67 
536 267 268 68 
537 268 69 68 
538 268 269 69 
539 269 70 69 
540 269 270 70 
541 270 71 70 
542 270 271 71 
543 271 72 71 
544 271 272 72 
545 272 73 72 
546 272 273 73 
547 273 74 73 
548 273 274 74 
549 274 75 74 
550 274 275 75 
551 275 76 75 
552 275 276 76 
553 276 77 76 
554 276 277 77 
555 277 78 77 
556 277 278 78 
557 278 79 78 
558 278 279 79 
559 279 80 79 
560 279 280 80 
561 280 81 80 
562 280 281 81 
563 281 82 81 
564 281 282 82 
565 282 83 82 
566 282 283 83 
567 283 84 83 
568 283 284 84 
569 284 85 84 
570 284 285 85 
571 285 86 85 
572 285 286 86 
573 286 87 86 
574 286 287 87 
575 287 88 87 
576 287 288 88 
577 288 89 88 
578 288 289 89 
579 289 90 89 
580 289 290 90 
581 290 91 90 
582 290 291 91 
583 291 92 91 
584 291 292 92 
585 292 93 92 
586 292 293 93 
587 293 94 93 
588 293 294 94 
589 294 95 94 
590 294 295 95 
591 295 96 95 
592 295 296 96 
593 296 97 96 
594 296 297 97 
595 297 98 97 
596 297 298 98 
597 298 99 98 
598 298 299 99 
599 299 100 99 
600 299 300 100 
601 300 101 100 
602 300 301 101 
603 301 102 101 
604 301 302 102 
605 302 103 102 
606 302 303 103 
607 303 104 103 
608 303 304 104 
609 304 105 104 
610 304 305 105 
611 305 106 105 
612 305 306 106 
613 306 4 106 
614 306 110 4 
$EndElements

and the corresponding built-in mesh becomes:

mesh1=RectangleMesh(
    Point(0,-1),Point(50,0),
    5,50)
mesh1.rotate(1.43,2,Point(0,0))

It would be best if you could try to make the problem as simple as possible. Using your msh file, I’ve made simple timings for the gmsh mesh and the built in mesh, and you observe that they have quite a variability:

mesh_name = "rect_mesh"

# import meshio
# import numpy
# def create_mesh(mesh, cell_type, prune_z=False):
#     cells = mesh.get_cells_type(cell_type)
#     out_mesh = meshio.Mesh(points=mesh.points, cells={cell_type: cells})
#     if prune_z:
#         out_mesh.prune_z_0()
#     return out_mesh

# msh = meshio.read(mesh_name + ".msh")
# meshio_mesh = create_mesh(msh, "triangle", prune_z=True)
# meshio.write(mesh_name + ".xdmf", meshio_mesh)

from dolfin import *

#generate mesh1 and mesh2
mesh1=RectangleMesh(Point(0,-1),Point(50,0), 5,50)
mesh1.rotate(1.43,2,Point(0,0))
print('mesh1 cells:'+str(mesh1.num_cells()))

mesh2=Mesh()
with XDMFFile(mesh_name + ".xdmf") as infile:
    infile.read(mesh2) 
print('mesh2 cells:'+str(mesh2.num_cells()))

#define FunctionSpace and Functions
V1 = FunctionSpace(mesh1,'CG',1)
V2 = FunctionSpace(mesh2,'CG',1)

expr = Expression("-1", degree=1)


# Timing for simple expression
for i in range(10):
    with Timer("Gmsh mesh") as t:
        h1 = interpolate(expr, V2)
    with Timer("Built-in mesh") as t:
        h2 = interpolate(expr,V1)

    built_in_timing = timing("Built-in mesh", TimingClear.clear)[1]
    external_timing = timing("Gmsh mesh", TimingClear.clear)[1]
    print("Built-in {0:.2e}, Gmsh {1:.2e}, Built-in/Gmsh {2:.2f}".format(built_in_timing, external_timing, built_in_timing/external_timing))
    print("----")
Built-in 1.12e-04, Gmsh 3.36e-04, Built-in/Gmsh 0.33
----
Built-in 1.35e-04, Gmsh 1.81e-04, Built-in/Gmsh 0.75
----
Built-in 9.60e-05, Gmsh 1.44e-04, Built-in/Gmsh 0.67
----
Built-in 1.10e-04, Gmsh 1.35e-04, Built-in/Gmsh 0.82
----
Built-in 1.23e-04, Gmsh 1.15e-04, Built-in/Gmsh 1.07
----
Built-in 1.23e-04, Gmsh 1.56e-04, Built-in/Gmsh 0.79
----
Built-in 1.21e-04, Gmsh 2.05e-04, Built-in/Gmsh 0.59
----
Built-in 1.10e-04, Gmsh 1.72e-04, Built-in/Gmsh 0.64
----
Built-in 9.33e-05, Gmsh 1.50e-04, Built-in/Gmsh 0.62
----
Built-in 9.51e-05, Gmsh 1.43e-04, Built-in/Gmsh 0.66
----

With your current problems, and relatively small meshes, it might be that data locality is affecting the timings.

I would suggest trying to use my code above with a bigger mesh (as 8000 cells is quite a small mesh), and see how the timings are affected.

1 Like