Простой Layer
Концепция
Класс Layer наследник класса Matrix, который является коллекцией Block с 3D регулярной сеточной структурой
Класс Layer убирает Block из Matrix которые имеют ненулевую кооридинату по X и Y осям и производит трансформации к оставшимся блокам Block соединяя их стороны.
Matrix
Отфильтрованная Matrix
Layer
Мы можем поменять тип поверхностей по X и Y осям на криволинейный. Количество узлов по окружности определяется последним номером 0.5;;8 в первом радиальном layer:
1metadata:
2 run:
3 factory: geo
4 strategy:
5 class: strategy.NoBoolean
6data:
7 class: block.Layer
8 layer: [ [ 0.5;;8, 1.5;;2 ],
9 [ 1;;2, 2;;2, 3;;2 ] ]
10 "layer_curves": [ [ line, circle_arc ],
11 [ line, line, line ] ]
12 items_do_structure_map: 1
13 items_do_quadrate_map: 1
Криволинейный Layer
Также можно изменить количество узлов по радиальному/высотному слою, изменив последнее число подполей первого/второго layer
1metadata:
2 run:
3 factory: geo
4 strategy:
5 class: strategy.NoBoolean
6data:
7 class: block.Layer
8 layer: [ [ 0.5;;8, 1.5;;4 ],
9 [ 1;;4, 2;;8, 3;;16 ] ]
10 "layer_curves": [ [ line, circle_arc ],
11 [ line, line, line ] ]
12 items_do_structure_map: 1
13 items_do_quadrate_map: 1
Layer с разным количеством узлов по радиальным/высотным слоям
Количество слоев
Можно добавить радиальные слои, добавив дополнительные элементы в первое подполе layer:
1metadata:
2run:
3 factory: geo
4 strategy:
5 class: strategy.NoBoolean
6data:
7class: block.Layer
8layer: [ [ 0.5;;8, 1.5;;2, 2.5;;2, 4;;2, 5;;2 ],
9 [ 1;;2, 2;;2, 3;;2 ] ]
10"layer_curves": [ [ line, circle_arc, line, circle_arc, line ],
11 [ line, line, line ] ]
12items_do_structure_map: 1
13items_do_quadrate_map: 1
Несколько Слоев
Можно добавить уровни высоты, добавив дополнительные элементы во второе подполе layer:
1metadata:
2run:
3 factory: geo
4 strategy:
5 class: strategy.NoBoolean
6data:
7class: block.Layer
8layer: [ [ 0.5;;8, 1.5;;2, 2.5;;2, 4;;2, 5;;2 ],
9 [ 1;;2, 2;;2, 3;;2, 6;;2, 10;;2 ] ]
10"layer_curves": [ [ line, circle_arc, line, circle_arc, line ],
11 [ line, line, line, line, line ] ]
12items_do_structure_map: 1
13items_do_quadrate_map: 1
Layer с несколькими высотами
Зоны
Для указания зон необходимо добавить поля items_zones и items_zones_map. Где items_zones - это список пар имен объемов и шести поверхностей, например. [ Volume, [ NX, X, NY, Y, NZ, Z ] ]:
Volume- имя объема[ NX, X, NY, Y, NZ, Z ]- имена поверхностей:NX- поверхность, направленная в направлении, противоположном оси XX- поверхность, направленная в направлении оси XNY- поверхность, направленная в направлении, противоположном оси YY- поверхность, направленная в направлении оси YNZ- поверхность, направленная в направлении, противоположном оси Z.Z- поверхность, направленная в направлении оси Z
items_zones_map (и все поля, которые заканчиваются на _map) представляет собой массив адресации между элементами (блоками в слое) и соответствующим индексом в некотором списке со свойствами (например, items_zones) и имеет вид кол-во-высотных на кол-во-радиальных слоев.
Если вы хотите присвоить имена зон с индексом 1 из items_zones ([ B, [ NX_B, X_B, NY_B, Y_B, NZ_B, Z_B ] ]) до 3-го слоя высоты и 5-го радиального слой можно установить 1 в items_zones_map в [3, 5] месте.
В этом примере мы задаем:
0индексitems_zonesк среднему (3-му) слою высоты по всем радиальным слоям, кроме последнего (5-го);1индексitems_zonesво 2-й и 4-й слой высоты по всем радиальным слоям, а также последний (5-й) радиальный слой в среднем (3-м) слое высоты;2индексitems_zonesк нижнему (1-му) и верхнему (5-му) слою высоты по всем радиальным слоям.
1metadata:
2 run:
3 factory: geo
4 strategy:
5 class: strategy.NoBoolean
6data:
7 class: block.Layer
8 layer: [ [ 0.5;;8, 1.5;;2, 2.5;;2, 4;;2, 5;;2 ],
9 [ 1;;2, 2;;2, 3;;2, 6;;2, 10;;2 ] ]
10 "layer_curves": [ [ line, circle_arc, line, circle_arc, line ],
11 [ line, line, line, line, line ] ]
12 items_do_structure_map: 1
13 items_do_quadrate_map: 1
14 items_zone: [
15 [ Red, [ NX, X, NY, Y, NZ, Z ] ],
16 [ Green, [ NX, X, NY, Y, NZ, Z ] ],
17 [ Blue, [ NX, X, NY, Y, NZ, Z ] ]
18 ]
19 items_zone_map: [
20 [ 2, 2, 2, 2, 2],
21 [ 1, 1, 1, 1, 1],
22 [ 0, 0, 0, 0, 1],
23 [ 1, 1, 1, 1, 1],
24 [ 2, 2, 2, 2, 2]
25 ]
Разрез по осям X и Y слоя с зонами: красная - 0, зеленая - 1, синяя - 2
Разрез по осям X, Y и Z слоя с зонами: красная - 0, зеленая - 1, синяя - 2