0%

空腔网格自动生成

背景

背景其实很简单,需求就是需要一个给定长宽高可以自动生成空腔结构化网格的程序。

实现

在最初是有想过全都自己编程来生成这个结构化网格,虽然是多块网格,但几何相对比较简单,在保持拓扑不变的情形下还是有可能在短时间内完成这项工作的。可是网格生成是一方面,最后还要采用结构化网格的求解器,这里采用的是cfl3d开源代码,意味着要准备cfl3d.inp。此外,网格拓扑边线上的点也需要自己编写函数去实现。虽说,如果全都自己编最后封装在一起,程序比较独立,使用起来比较灵活,但这部分工作感觉不是工作的中心。所以,在最后决定采用ICEM录宏的方程实现几何和网格的自动生成,然后利用Matlab对宏文件进行相关参数的修改。在生成导出网格时,还可以对cfl3d.inp文件中马赫数、雷诺数等参数进行调整,但目前就进行到这为止,不想要给自己增加额外的工作量了。

ICEM录宏

ICEM录宏:

1
File->Replay Scripts->Recording scripts

其实录宏也比较简单,就是记录步骤,关键就是尽可能使得自己的每一步操作都可以参数化,录完之后是不断的调试,这个过程就很难受但也无法避免,谁让你用这软件了呢。需要注意的是,我原本想着用低版本的ICEM录宏,最后高版本应该也能用,然后事实是高低版本都不兼容。所以,少年难受吧,哈哈~此外,录完宏后运行宏调试时,在导出Plot3D格式网格过程中,发现设置边界条件时如果对物面边界进行积力,ICEM CFD 14.0会出现报错信息,但网格还是正常的,所以建议是cfl3d.inp提前配置好。下面是就是宏文件的内容(在14.0版本上可用),文件运行依赖cfl3d.paramsansys.fbc,ansys.atr,分别是inp信息的输入、边界条件和边界信息,其中cfl3d.params是预先提供的,其他是可以ICEM写出来的,因为软件有很多Bug,这里也预先准备好,省得麻烦。简单粗暴点~

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
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
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
ic_chdir E:/AutoMesh/code
ic_undo_group_begin
ic_geo_new_family GEOM
ic_boco_set_part_color GEOM
ic_empty_tetin
ic_point {} GEOM pnt.00 0,0,0
ic_undo_group_end
ic_undo_group_begin
ic_point {} GEOM pnt.01 10,0,0
ic_undo_group_end
ic_undo_group_begin
ic_point {} GEOM pnt.02 10,10,0
ic_undo_group_end
ic_undo_group_begin
ic_point {} GEOM pnt.03 0,10,0
ic_undo_group_end
ic_undo_group_begin
ic_point {} GEOM pnt.04 0,10,-10
ic_undo_group_end
ic_undo_group_begin
ic_point {} GEOM pnt.05 10,10,-10
ic_undo_group_end
ic_undo_group_begin
ic_point {} GEOM pnt.06 10,0,-10
ic_undo_group_end
ic_undo_group_begin
ic_point {} GEOM pnt.07 0,0,-10
ic_undo_group_end
ic_undo_group_begin
ic_point {} GEOM pnt.08 100,100,0
ic_undo_group_end
ic_undo_group_begin
ic_point {} GEOM pnt.09 100,-100,0
ic_undo_group_end
ic_undo_group_begin
ic_point {} GEOM pnt.10 -100,-100,0
ic_undo_group_end
ic_undo_group_begin
ic_point {} GEOM pnt.11 -100,100,0
ic_undo_group_end
ic_undo_group_begin
ic_point {} GEOM pnt.12 -100,100,100
ic_undo_group_end
ic_undo_group_begin
ic_point {} GEOM pnt.13 100,100,100
ic_undo_group_end
ic_undo_group_begin
ic_point {} GEOM pnt.14 100,-100,100
ic_undo_group_end
ic_undo_group_begin
ic_point {} GEOM pnt.15 -100,-100,100
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.00 0
ic_curve point GEOM crv.00 {pnt.12 pnt.13}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.01 0
ic_curve point GEOM crv.01 {pnt.13 pnt.14}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.02 0
ic_curve point GEOM crv.02 {pnt.14 pnt.15}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.03 0
ic_curve point GEOM crv.03 {pnt.15 pnt.12}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.04 0
ic_curve point GEOM crv.04 {pnt.13 pnt.08}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.05 0
ic_curve point GEOM crv.05 {pnt.14 pnt.09}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.06 0
ic_curve point GEOM crv.06 {pnt.15 pnt.10}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.07 0
ic_curve point GEOM crv.07 {pnt.12 pnt.11}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.08 0
ic_curve point GEOM crv.08 {pnt.11 pnt.10}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.09 0
ic_curve point GEOM crv.09 {pnt.11 pnt.08}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.10 0
ic_curve point GEOM crv.10 {pnt.08 pnt.09}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.11 0
ic_curve point GEOM crv.11 {pnt.09 pnt.10}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.12 0
ic_curve point GEOM crv.12 {pnt.02 pnt.01}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.13 0
ic_curve point GEOM crv.13 {pnt.02 pnt.05}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.14 0
ic_curve point GEOM crv.14 {pnt.01 pnt.06}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.15 0
ic_curve point GEOM crv.15 {pnt.05 pnt.06}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.16 0
ic_curve point GEOM crv.16 {pnt.03 pnt.00}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.17 0
ic_curve point GEOM crv.17 {pnt.00 pnt.07}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.18 0
ic_curve point GEOM crv.18 {pnt.07 pnt.04}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.19 0
ic_curve point GEOM crv.19 {pnt.04 pnt.03}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.20 0
ic_curve point GEOM crv.20 {pnt.04 pnt.05}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.21 0
ic_curve point GEOM crv.21 {pnt.06 pnt.07}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.22 0
ic_curve point GEOM crv.22 {pnt.01 pnt.00}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_delete_geometry curve names crv.23 0
ic_curve point GEOM crv.23 {pnt.02 pnt.03}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_surface 2-4crvs GEOM srf.00 {0.01 {crv.23 crv.13 crv.20 crv.19}}
ic_set_dormant_pickable point 0 {}
ic_set_dormant_pickable curve 0 {}
ic_undo_group_end
ic_undo_group_begin
ic_surface 2-4crvs GEOM srf.01 {0.01 {crv.13 crv.12 crv.15 crv.14}}
ic_set_dormant_pickable point 0 {}
ic_set_dormant_pickable curve 0 {}
ic_undo_group_end
ic_undo_group_begin
ic_surface 2-4crvs GEOM srf.02 {0.01 {crv.22 crv.21 crv.14 crv.17}}
ic_set_dormant_pickable point 0 {}
ic_set_dormant_pickable curve 0 {}
ic_undo_group_end
ic_undo_group_begin
ic_surface 2-4crvs GEOM srf.03 {0.01 {crv.18 crv.19 crv.16 crv.17}}
ic_set_dormant_pickable point 0 {}
ic_set_dormant_pickable curve 0 {}
ic_undo_group_end
ic_undo_group_begin
ic_surface 2-4crvs GEOM srf.04 {0.01 {crv.02 crv.11 crv.05 crv.06}}
ic_set_dormant_pickable point 0 {}
ic_set_dormant_pickable curve 0 {}
ic_undo_group_end
ic_undo_group_begin
ic_surface 2-4crvs GEOM srf.05 {0.01 {crv.01 crv.10 crv.04 crv.05}}
ic_set_dormant_pickable point 0 {}
ic_set_dormant_pickable curve 0 {}
ic_undo_group_end
ic_undo_group_begin
ic_surface 2-4crvs GEOM srf.06 {0.01 {crv.00 crv.09 crv.04 crv.07}}
ic_set_dormant_pickable point 0 {}
ic_set_dormant_pickable curve 0 {}
ic_undo_group_end
ic_undo_group_begin
ic_surface 2-4crvs GEOM srf.07 {0.01 {crv.03 crv.08 crv.07 crv.06}}
ic_set_dormant_pickable point 0 {}
ic_set_dormant_pickable curve 0 {}
ic_undo_group_end
ic_undo_group_begin
ic_surface 2-4crvs GEOM srf.08 {0.01 {crv.03 crv.02 crv.01 crv.00}}
ic_set_dormant_pickable point 0 {}
ic_set_dormant_pickable curve 0 {}
ic_undo_group_end
ic_undo_group_begin
ic_surface 2-4crvs GEOM srf.09 {0.01 {crv.09 crv.08 crv.11 crv.10}}
ic_set_dormant_pickable point 0 {}
ic_set_dormant_pickable curve 0 {}
ic_undo_group_begin
ic_surface 2-4crvs GEOM srf.10 {0.01 {crv.21 crv.15 crv.20 crv.18}}
ic_set_dormant_pickable point 0 {}
ic_set_dormant_pickable curve 0 {}
ic_undo_group_end
ic_undo_group_end
ic_undo_group_begin
ic_geo_set_part surface {srf.06 srf.07 srf.08 srf.04 srf.05} FAR 0
ic_undo_group_end
ic_undo_group_begin
ic_geo_set_part surface srf.09 FAR_WALL 0
ic_undo_group_end
ic_undo_group_begin
ic_geo_set_part surface {srf.03 srf.02 srf.01 srf.00} BACK 0
ic_geo_set_part curve {crv.22 crv.21 crv.20 crv.19 crv.18 crv.17 crv.16 crv.15 crv.14 crv.13 crv.12 crv.23} BACK 0
ic_geo_set_part point {GEOM.59 GEOM.58 GEOM.57 GEOM.56 GEOM.55 GEOM.54 GEOM.47 GEOM.46 GEOM.45 GEOM.44 GEOM.43 GEOM.42 GEOM.34 GEOM.33 GEOM.32 GEOM.31 GEOM.30 GEOM.29 GEOM.28 GEOM.27 GEOM.18 GEOM.17 GEOM.16 GEOM.15} CAVITY 0
ic_undo_group_end
ic_undo_group_begin
ic_geo_set_part curve {crv.11 crv.10 crv.09 crv.08 crv.07 crv.06 crv.05 crv.04 crv.03 crv.02 crv.01 crv.00} FAR 0
ic_geo_set_part point {GEOM.114 GEOM.113 GEOM.112 GEOM.111 GEOM.110 GEOM.109 GEOM.108 GEOM.107 GEOM.106 GEOM.105 GEOM.104 GEOM.103 GEOM.102 GEOM.93 GEOM.92 GEOM.91 GEOM.90 GEOM.89 GEOM.88 GEOM.79 GEOM.78 GEOM.77 GEOM.76 GEOM.75 GEOM.74 GEOM.73 GEOM.72 GEOM.63 GEOM.62 GEOM.61 GEOM.60 GEOM.115} FAR 0
ic_undo_group_end
ic_undo_group_begin
ic_geo_set_part surface srf.03 FRONT 0
ic_undo_group_end
ic_undo_group_begin
ic_geo_set_part surface srf.02 SIDE1 0
ic_undo_group_end
ic_undo_group_begin
ic_geo_set_part surface srf.00 SIDE2 0
ic_undo_group_end
ic_undo_group_begin
ic_geo_set_part surface srf.10 BOTTOM 0
ic_undo_group_end
ic_undo_group_begin
ic_geo_new_family LIVE
ic_boco_set_part_color LIVE
ic_hex_initialize_blocking {} LIVE 0 101
ic_hex_switch_blocking root
ic_hex_unblank_blocks
ic_hex_multi_grid_level 0
ic_hex_projection_limit 0
ic_hex_default_bunching_law default 2
ic_hex_floating_grid off
ic_hex_transfinite_degree 1
ic_hex_unstruct_face_type several_tris
ic_hex_set_n_tetra_smoothing_steps 20
ic_hex_set_mesh_params GEOM FAR FAR_WALL BACK CAVITY FRONT SIDE1 SIDE2 BOTTOM LIVE -version 110
ic_hex_error_messages off_minor
ic_hex_switch_blocking root
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_point projcurv FAR pnt.20 {GEOM.29 crv.11}
ic_point projcurv FAR pnt.21 {GEOM.26 crv.11}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_point projcurv FAR pnt.22 {GEOM.18 crv.10}
ic_point projcurv FAR pnt.23 {GEOM.26 crv.10}
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_hex_split_grid 21 37 pnt.20 m LIVE GEOM FAR FAR_WALL BACK CAVITY FRONT SIDE1 SIDE2 BOTTOM
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_hex_split_grid 69 37 pnt.21 m BOTTOM GEOM FAR FAR_WALL BACK CAVITY FRONT SIDE1 SIDE2 LIVE
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_hex_split_grid 37 41 pnt.23 m BOTTOM GEOM FAR FAR_WALL BACK CAVITY FRONT SIDE1 SIDE2 LIVE
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_hex_split_grid 106 41 pnt.22 m BOTTOM GEOM FAR FAR_WALL BACK CAVITY FRONT SIDE1 SIDE2 LIVE
ic_undo_group_end
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_begin
ic_hex_split_grid 37 38 GEOM.33 m BOTTOM GEOM FAR FAR_WALL BACK CAVITY FRONT SIDE1 SIDE2 LIVE
ic_undo_group_end
ic_undo_group_begin
ic_hex_split_grid 154 38 0.1 m BOTTOM GEOM FAR FAR_WALL BACK CAVITY FRONT SIDE1 SIDE2 LIVE
ic_undo_group_end
ic_undo_group_begin
ic_hex_split_grid 190 38 0.2 m BOTTOM GEOM FAR FAR_WALL BACK CAVITY FRONT SIDE1 SIDE2 LIVE
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 158 164 0 1 crv.16
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 104 158 0 1 crv.17
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 128 164 0 1 crv.19
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 104 128 0 1 crv.18
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 158 159 0 1 crv.22
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 105 159 0 1 crv.14
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 104 105 0 1 crv.21
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 105 129 0 1 crv.15
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 129 165 0 1 crv.13
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 159 165 0 1 crv.12
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 164 165 0 1 crv.23
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 128 129 0 1 crv.20
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_mesh 85 37 n 2 h1rel 1.11111111111e-008 h2rel 111111111.111 r1 1.2 r2 2 lmax 1e+010 default copy_to_parallel unlocked
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_mesh 85 37 n 80 h1rel 1.11111111111e-008 h2rel 111111111.111 r1 1.2 r2 2 lmax 1e+010 default copy_to_parallel unlocked
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_mesh 85 37 n 91 h1rel 1.11111111111e-008 h2rel 111111111.111 r1 1.2 r2 2 lmax 1e+010 default copy_to_parallel unlocked
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_mesh 85 37 n 81 h1rel 1.11111111111e-008 h2rel 111111111.111 r1 1.2 r2 2 lmax 1e+010 default copy_to_parallel unlocked
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_mesh 85 37 n 81 h1rel 1.11111111111e-008 h2rel 111111111.111 r1 1.2 r2 2 lmax 1e+010 default copy_to_parallel unlocked
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_mesh 21 69 n 81 h1rel 100000000.0 h2rel 1e-008 r1 2 r2 1.2 lmax 1e+010 default copy_to_parallel unlocked
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_mesh 21 69 n 81 h1rel 100000000.0 h2rel 1e-008 r1 2 r2 1.2 lmax 1e+010 default copy_to_parallel unlocked
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_mesh 69 85 n 81 h1rel 1e-007 h2rel 1e-007 r1 1.2 r2 1.2 lmax 1e+010 default copy_to_parallel unlocked
ic_undo_group_end
ic_undo_group_begin
ic_geo_new_family SOLID
ic_boco_set_part_color SOLID
ic_hex_mark_blocks unmark
ic_hex_mark_blocks superblock 28
ic_hex_mark_blocks superblock 27
ic_hex_mark_blocks superblock 13
ic_hex_mark_blocks superblock 31
ic_hex_mark_blocks superblock 29
ic_hex_mark_blocks superblock 32
ic_hex_mark_blocks superblock 33
ic_hex_mark_blocks superblock 34
ic_hex_change_element_id SOLID
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_mesh 105 159 n 41 h1rel 1e-007 h2rel 1e-007 r1 1.2 r2 1.2 lmax 0 default copy_to_parallel unlocked
ic_undo_group_end
ic_hex_list_family_projection
ic_undo_group_begin
ic_hex_set_mesh 104 158 n 81 h1rel 1e-007 h2rel 1e-007 r1 1.2 r2 1.2 lmax 0 default copy_to_parallel unlocked
ic_undo_group_begin
ic_hex_set_mesh 159 165 n 81 h1rel 0.0 h2rel 0.0 r1 2 r2 2 lmax 0 default copy_to_parallel unlocked
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_mesh 159 165 n 81 h1rel 1e-007 h2rel 1e-007 r1 1.2 r2 1.2 lmax 0 default copy_to_parallel unlocked
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_mesh 188 194 n 81 h1rel 0.0 h2rel 1e-008 r1 2 r2 1.2 lmax 0 default copy_to_parallel unlocked
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_end
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_mesh 164 170 n 81 h1rel 0.0 h2rel 0.0 r1 2 r2 2 lmax 0 default copy_to_parallel unlocked
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_mesh 164 170 n 81 h1rel 1.11111111111e-008 h2rel 0.0 r1 1.2 r2 2 lmax 0 default copy_to_parallel unlocked
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_mesh 153 189 n 101 h1rel 0.0 h2rel 0.0 r1 2 r2 2 lmax 0 default copy_to_parallel unlocked
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_mesh 153 189 n 101 h1rel 3.003003003e-008 h2rel 0.0 r1 1.2 r2 2 lmax 0 default copy_to_parallel unlocked
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_mesh 190 226 n 9 h1rel linked 154 190 h2rel 299850074.963 r1 1.2 r2 2 lmax 1e+010 default copy_to_parallel unlocked
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_mesh 190 226 n 9 h1rel linked 190 154 h2rel 299850074.963 r1 1.2 r2 2 lmax 1e+010 default copy_to_parallel unlocked
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_mesh 223 22 n 9 h1rel linked 187 223 h2rel 299850074.963 r1 2 r2 2 lmax 1e+010 default copy_to_parallel locked
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_mesh 223 22 n 9 h1rel linked 223 187 h2rel 299850074.963 r1 1.2 r2 2 lmax 1e+010 default copy_to_parallel unlocked
ic_undo_group_begin
ic_undo_group_end
ic_undo_group_end
ic_undo_group_begin
ic_hex_move_node 22 GEOM.46
ic_undo_group_end
ic_undo_group_begin
ic_hex_move_node 26 GEOM.47
ic_undo_group_end
ic_undo_group_begin
ic_hex_move_node 42 GEOM.48
ic_undo_group_end
ic_undo_group_begin
ic_hex_move_node 38 GEOM.34
ic_undo_group_end
ic_undo_group_begin
ic_hex_move_node 172 GEOM.51
ic_undo_group_end
ic_undo_group_begin
ic_hex_move_node 154 GEOM.33
ic_undo_group_end
ic_undo_group_begin
ic_hex_move_node 153 pnt.21
ic_undo_group_end
ic_undo_group_begin
ic_hex_move_node 152 pnt.20
ic_undo_group_end
ic_undo_group_begin
ic_hex_move_node 151 GEOM.45
ic_undo_group_end
ic_undo_group_begin
ic_hex_move_node 169 GEOM.54
ic_undo_group_end
ic_undo_group_begin
ic_hex_move_node 165 GEOM.18
ic_undo_group_end
ic_undo_group_begin
ic_hex_move_node 129 GEOM.57
ic_undo_group_end
ic_undo_group_begin
ic_hex_move_node 164 GEOM.28
ic_undo_group_end
ic_undo_group_begin
ic_hex_move_node 158 GEOM.29
ic_undo_group_end
ic_undo_group_begin
ic_hex_move_node 104 GEOM.55
ic_undo_group_end
ic_undo_group_begin
ic_hex_move_node 105 GEOM.58
ic_undo_group_end
ic_undo_group_begin
ic_hex_move_node 128 GEOM.56
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 133 26 0 1 crv.03
ic_hex_set_edge_projection 109 133 0 1 crv.03
ic_hex_set_edge_projection 22 109 0 1 crv.03
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 26 74 0 1 crv.00
ic_hex_set_edge_projection 74 90 0 1 crv.00
ic_hex_set_edge_projection 90 42 0 1 crv.00
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 136 42 0 1 crv.01
ic_hex_set_edge_projection 112 136 0 1 crv.01
ic_hex_set_edge_projection 38 112 0 1 crv.01
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 89 38 0 1 crv.02
ic_hex_set_edge_projection 73 89 0 1 crv.02
ic_hex_set_edge_projection 22 73 0 1 crv.02
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 154 160 0 1 crv.10
ic_hex_set_edge_projection 160 166 0 1 crv.10
ic_hex_set_edge_projection 166 172 0 1 crv.10
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 171 172 0 1 crv.09
ic_hex_set_edge_projection 170 171 0 1 crv.09
ic_hex_set_edge_projection 169 170 0 1 crv.09
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 163 169 0 1 crv.08
ic_hex_set_edge_projection 157 163 0 1 crv.08
ic_hex_set_edge_projection 151 157 0 1 crv.08
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 151 152 0 1 crv.11
ic_hex_set_edge_projection 152 153 0 1 crv.11
ic_hex_set_edge_projection 153 154 0 1 crv.11
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 223 22 0 1 crv.06
ic_hex_set_edge_projection 187 223 0 1 crv.06
ic_hex_set_edge_projection 151 187 0 1 crv.06
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 241 26 0 1 crv.07
ic_hex_set_edge_projection 205 241 0 1 crv.07
ic_hex_set_edge_projection 169 205 0 1 crv.07
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 244 42 0 1 crv.04
ic_hex_set_edge_projection 208 244 0 1 crv.04
ic_hex_set_edge_projection 172 208 0 1 crv.04
ic_undo_group_end
ic_undo_group_begin
ic_hex_set_edge_projection 226 38 0 1 crv.05
ic_hex_set_edge_projection 190 226 0 1 crv.05
ic_hex_set_edge_projection 154 190 0 1 crv.05
ic_undo_group_end
ic_hex_list_family_projection
ic_hex_multi_block FAR_WALL LIVE FAR SIDE1 SIDE2 GEOM CAVITY BACK FRONT BOTTOM proj 2 -family_topo family_topo.fto -topo_mulcad_out topo_mulcad_out.top -subface_proj subface_proj
ic_load_struct ./domain ./topo_mulcad_out.top ./family_topo.fto ./subface_proj
ic_str_topo_make_surfs domain 0
ic_str_topo_make_surfs subface 0
ic_hex_list_family_projection
ic_hex_create_mesh GEOM FAR FAR_WALL BACK CAVITY FRONT SIDE1 SIDE2 BOTTOM LIVE SOLID proj 2 dim_to_mesh 3 nproc 8
ic_boco_solver
ic_boco_clear_icons
ic_csystem_display all 0
ic_csystem_set_current global
ic_boco_nastran_csystem reset
ic_undo_group_begin
ic_boco_solver CFL3D
ic_solver_mesh_info CFL3D
ic_boco_solver
ic_write_file domain_list {./domain.1\n./domain.2\n./domain.3\n./domain.4\n./domain.5\n./domain.6\n./domain.7\n./domain.8\n./domain.9\n./domain.10\n./domain.11\n./domain.12\n./domain.13\n./domain.14\n./domain.15\n./domain.16\n./domain.17\n./domain.18\n./domain.19\n./domain.20\n./domain.21\n./domain.22\n./domain.23\n./domain.24\n./domain.25\n./domain.26\n./domain.27\n./domain.28\n}
ic_exec {C:/Program Files/ANSYS Inc/v140/icemcfd/win64_amd/icemcfd/output-interfaces/cfl3d} -t ./topo_mulcad_out.top -b ./nastran.fbc -f ./family_topo.fto -dbl -cfl ./cfl3d.params -dom_list domain_list ./cfl3d
exit

MATLAB编辑宏文件

输入长、宽、高,修改宏文件中的几何信息,其实还可以改网格点数、间距和网格点分布,还是cfl3d求解的配置文件,但不想弄了,有点任性,哈哈~

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
clc;
clear;
len=20;
width=10;
deepth=5;

%% ICFM宏文件处理几何,更新网格
fid1=fopen('example.rpl','r');

fid2=fopen('grid.rpl','w+');
path='E:/AutoMesh/code';

n=1;
tmpref=0;
while ~feof(fid1)
tline=fgets(fid1);
if n==1
fprintf(fid2,'%s\n',strcat("ic_chdir ",path));
elseif n==9
fprintf(fid2,'%s',"ic_point {} GEOM pnt.01 ");
fprintf(fid2,'%d,%d,%d\n',len,tmpref,tmpref);
elseif n==12
fprintf(fid2,'%s',"ic_point {} GEOM pnt.02 ");
fprintf(fid2,'%d,%d,%d\n',len,width,tmpref);
elseif n==15
fprintf(fid2,'%s',"ic_point {} GEOM pnt.03 ");
fprintf(fid2,'%d,%d,%d\n',tmpref,width,tmpref);
elseif n==18
fprintf(fid2,'%s',"ic_point {} GEOM pnt.04 ");
fprintf(fid2,'%d,%d,%d\n',tmpref,width,-deepth);
elseif n==21
fprintf(fid2,'%s',"ic_point {} GEOM pnt.05 ");
fprintf(fid2,'%d,%d,%d\n',len,width,-deepth);
elseif n==24
fprintf(fid2,'%s',"ic_point {} GEOM pnt.06 ");
fprintf(fid2,'%d,%d,%d\n',len,tmpref,-deepth);
elseif n==27
fprintf(fid2,'%s',"ic_point {} GEOM pnt.07 ");
fprintf(fid2,'%d,%d,%d\n',tmpref,tmpref,-deepth);
else
fprintf(fid2,'%s',tline);
end
n=n+1;
end
status=fclose('all');

%% 执行宏文件
system('"C:\Program Files\ANSYS Inc\v140\icemcfd\win64_amd\bin\icemcfd" grid.rpl');

空腔网格示意图

接下来还有图形化交互界面的开发,以后再说吧~