Простой Layer

Концепция

Класс Layer наследник класса Matrix, который является коллекцией Block с 3D регулярной сеточной структурой

Класс Layer убирает Block из Matrix которые имеют ненулевую кооридинату по X и Y осям и производит трансформации к оставшимся блокам Block соединяя их стороны.

_images/tutorial_simple_layer_1.png

Matrix

_images/tutorial_simple_layer_2.png

Отфильтрованная Matrix

_images/tutorial_simple_layer_3.png

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
_images/tutorial_simple_layer_4.png

Криволинейный 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
_images/tutorial_simple_layer_5.png

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
_images/tutorial_simple_layer_6.png

Несколько Слоев

Можно добавить уровни высоты, добавив дополнительные элементы во второе подполе 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
_images/tutorial_simple_layer_7.png

Layer с несколькими высотами

Зоны

Для указания зон необходимо добавить поля items_zones и items_zones_map. Где items_zones - это список пар имен объемов и шести поверхностей, например. [ Volume, [ NX, X, NY, Y, NZ, Z ] ]:

  1. Volume - имя объема

  2. [ NX, X, NY, Y, NZ, Z ] - имена поверхностей:

    • NX - поверхность, направленная в направлении, противоположном оси X

    • X - поверхность, направленная в направлении оси X

    • NY - поверхность, направленная в направлении, противоположном оси Y

    • Y - поверхность, направленная в направлении оси Y

    • NZ - поверхность, направленная в направлении, противоположном оси 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] месте.

В этом примере мы задаем:

  1. 0 индекс items_zones к среднему (3-му) слою высоты по всем радиальным слоям, кроме последнего (5-го);

  2. 1 индекс items_zones во 2-й и 4-й слой высоты по всем радиальным слоям, а также последний (5-й) радиальный слой в среднем (3-м) слое высоты;

  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  ]
_images/tutorial_simple_layer_8.png

Разрез по осям X и Y слоя с зонами: красная - 0, зеленая - 1, синяя - 2

_images/tutorial_simple_layer_9.png

Разрез по осям X, Y и Z слоя с зонами: красная - 0, зеленая - 1, синяя - 2