| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- #import "/.template/lib/index.typ": corp-table, formula, vref, vrefs, eqref, numbered-list
- #let img-width = 14cm
- = Определение физико-механических свойств массива
- Для выполнения численного моделирования и оценки устойчивости бортов карьеров в программном комплексе Prorock необходимо принять физико-механические свойства породного массива.
- Назначение параметров выполнялось на основе:
- - данных блочной геомеханической модели,
- - эмпирических зависимостей Хука--Брауна @hoekHoekBrownFailureCriterionGSI2019,
- - особенностей реализации метода в Prorock (#vref(<features>, "р")).
- В качестве исходных данных для расчёта физико-механических свойств использованы параметры блочной модели участка Кварцитовый:
- - $"UCS"$ -- предел прочности при одноосном сжатии;
- - $m_i$ -- материальная константа интактной породы в критерии Хука--Брауна @hoekHoekBrownFailureCriterion2002;
- - $"GSI"$ -- геологический индекс прочности @hoekStrengthRockMasses1994;
- - $"Density"$ -- плотность;
- - $D$ -- коэффициент нарушенности массива.
- Для каждого литотипа определялись средневзвешенные значения UCS и GSI с учётом пространственного распределения параметров в пределах разрезов.
- Импорт физико-механических свойств из блочной модели не исключает необходимости предварительного задания параметров материалов по умолчанию в ПО Prorock: блочная модель не всегда обеспечивает полное покрытие расчётной области, и часть конечных элементов может оказаться вне области интерполяции, на слабо обеспеченных данными участках либо в зонах, где сопоставление параметров выполнено некорректно или не выполнено вовсе. В таких условиях свойства по умолчанию выполняют роль базовых параметров, необходимых для полного заполнения модели, корректной инициализации расчёта и предотвращения ошибок, связанных с наличием элементов без назначенных характеристик.
- == Коэффициент нарушенности массива
- Коэффициент нарушенности массива (Disturbance factor, $D$) задан distance-функцией в блочной модели с помощью ПО Leapfrog. Результат расчёта distance-функции показан на #vref(<d_zone_example>, "п").
- #figure(
- image("/assets/images/d_zone_example.png", width: img-width),
- caption:[Пример работы distance-функции в блочной модели]
- )<d_zone_example>
- == Учёт порового давления
- Для задания порового давления в численных моделях использованы результаты гидрогеологических расчётов в ПО Rocscience Slide2. По результатам осреднения значений по всем моделям принят коэффициент гидростатического воздействия $H_u = 0","755$.
- == Расчёт физико-механических свойств
- Резервные параметры массива (свойства материалов по умолчанию) и свойства литотипов рассчитаны по эмпирическим зависимостям Хука--Брауна @hoekHoekBrownFailureCriterionGSI2019, широко применяемым для описания прочности трещиноватых массивов. Величина $sigma_3$ принята по исходным паспортам RocData для скальных пород.
- По формулам, приведённым в #vref(<calculation>, "п"), из параметров блочной модели UCS, $"GSI"$ и $m_i$ через постоянные массива ($m_b$, $s$, $a$) получены:
- - модуль упругости ($E$),
- - сцепление ($C$),
- - угол внутреннего трения ($phi$),
- - предел прочности при растяжении ($"UTS"$).
- Плотность $rho$ принята по данным блочной модели.
- В рамках метода конечно-дискретных элементов существенную роль играет задание параметров контактов и трещинных элементов, определяющих поведение массива при разрушении.
- Свойства тектонических разломов приняты из блочной модели.
- Для трещинных элементов приняты параметры, полученные по результатам испытаний на сдвиг по естественной трещине и по распилу @geomechKvarcitovyi2026:
- - угол внутреннего трения по трещине ($phi$),
- - сцепление по трещине ($C$),
- - предел прочности при растяжении ($"UTS"$).
- Параметр штрафа $p$ и остальные расчётные параметры приняты по умолчанию согласно руководству @prorockDocumentation2x.
- Результаты расчёта физико-механических параметров сведены в #vref(<tab:fms_properties>, "в"), которая включает значения свойств всех материалов и параметры трещинных элементов, используемых в расчётах.
- // Данные таблицы: материалы по строкам CSV, параметры выводятся по столбцам
- #let fms-properties = csv("/assets/tables/properties.csv").slice(1)
- #let fms-format(v) = if v == "" { [--] } else if v == "1E^6" { $1 dot 10^6$ } else { v.replace(".", ",") }
- #block(breakable: false)[
- #figure(
- corp-table(
- columns: (1fr, 1.2fr, 1.2fr, 1.2fr, 1.2fr, 1.2fr),
- align: right + horizon,
- table-align: "center",
- text-size: 10pt,
- body-inset: (x: 5pt, y: 4pt),
- repeat_header: true,
- continuation: true,
- [Параметр], ..fms-properties.map(row => row.first()),
- [$rho$, кг/м³], ..fms-properties.map(row => fms-format(row.at(1))),
- [$E$, ГПа], ..fms-properties.map(row => fms-format(row.at(2))),
- [$nu$], ..fms-properties.map(row => fms-format(row.at(3))),
- [VD], ..fms-properties.map(row => fms-format(row.at(4))),
- [$C$, МПа], ..fms-properties.map(row => fms-format(row.at(5))),
- [$phi$, град.], ..fms-properties.map(row => fms-format(row.at(6))),
- [UTS, МПа], ..fms-properties.map(row => fms-format(row.at(7))),
- [$phi_r$, град.], ..fms-properties.map(row => fms-format(row.at(8))),
- table.cell(inset: (x: 5pt, y: 8pt), breakable: false)[#text(size: 12pt)[$frac(S_p, h)$]], ..fms-properties.map(row => fms-format(row.at(9))),
- table.cell(inset: (x: 5pt, y: 8pt), breakable: false)[#text(size: 12pt)[$frac(S_r, S_p)$]], ..fms-properties.map(row => fms-format(row.at(10))),
- table.cell(inset: (x: 5pt, y: 8pt), breakable: false)[#text(size: 12pt)[$frac(O_p, h)$]], ..fms-properties.map(row => fms-format(row.at(11))),
- table.cell(inset: (x: 5pt, y: 8pt), breakable: false)[#text(size: 12pt)[$frac(O_r, O_p)$]], ..fms-properties.map(row => fms-format(row.at(12))),
- [$p$, ГПа], ..fms-properties.map(row => fms-format(row.at(13))),
- ),
- caption: [Физико-механические свойства материалов расчётных моделей],
- ) <tab:fms_properties>
- ]
- Примечание: для зоны влияния тектонических разломов свойства импортированы из блочной модели и учитываются в расчёте.
- Расшифровка и описание параметров свойств приведены в документации Prorock 2.x @prorockDocumentation2x.
- == Параметры системной трещиноватости
- Трещиноватость породного массива обусловливает анизотропию физико-механических свойств, поэтому в моделях дополнительно задано направление систем трещин.
- Пересечение домена с разрезом принято по каркасам, построенным в ПО Leapfrog: на разрезе определялись попадающие в его плоскость домены, после чего сопоставлялись азимут разреза и азимут соответствующей системы трещин. Системы, азимут которых отличался от азимута разреза более чем на 40°, при задании анизотропии не учитывались.
- Кажущийся угол падения системы трещин в плоскости разреза определён проецированием @jointsProjectionOnSection:
- #formula[$"DIP"_"разрез" = -arctan(cos("AZ"_"разрез" - "AZ"_"системы") dot tan("DIP"_"системы"))$]
- где $"DIP"_"разрез"$ -- спроецированный угол падения системы трещин на разрезе, °, $"AZ"_"разрез"$ -- азимут профильной линии, °, $"AZ"_"системы"$ -- азимут падения системы трещин, °, $"DIP"_"системы"$ -- истинный угол падения системы трещин, °.
- Принятые значения азимутов, истинных и спроецированных углов падения систем трещин по профильным линиям приведены в #vref(<tab:anisotropy_angles>, "п").
- // Данные таблицы: по одной строке на домен системы трещин, попавший в плоскость разреза
- #let anisotropy-angles = csv("/assets/tables/anisotropy_angles.csv", delimiter: ";").slice(1)
- // Пустая ячейка в столбце профильной линии -- продолжение предыдущей строки,
- // в столбцах домена прочерк означает отсутствие данных.
- #let anisotropy-format(v, i) = if v == "" { if i == 0 { [] } else { [--] } } else if v == "-" { [--] } else { v.replace("-", "−") }
- // Ячейки тела таблицы: если у профильной линии несколько систем трещин,
- // столбец «№/Азимут» объединяется по высоте на все её строки-домены.
- // Строка другой линии со всеми «=» в столбцах домена относится к тем же
- // доменам, что и первая строка предыдущего блока: если она идёт сразу
- // за ней, её ячейки доменов накрываются объединением по высоте,
- // иначе (между ними строка-домен той же линии) значения повторяются
- // явно. Кажущийся угол падения зависит от азимута линии, поэтому
- // собственный у каждой строки и не объединяется. Объединённые
- // по высоте ячейки выравниваются по центру по вертикали.
- #block(breakable: false)[
- #let anisotropy-cells(rows) = {
- let cells = ()
- let i = 0
- while i < rows.len() {
- let span = 1
- while i + span < rows.len() and rows.at(i + span).at(0) == "" { span += 1 }
- let head = rows.at(i)
- // Блок следующей линии с «=» в столбцах домена делит их с первой строкой этого блока
- let share-next = (
- i + span < rows.len()
- and rows.at(i + span).at(0) != "" and rows.at(i + span).at(1) == "="
- )
- // Объединение по высоте возможно, только когда строка «=» идёт сразу за первой
- let merge-next = share-next and span == 1
- let line = anisotropy-format(head.at(0), 0)
- if span == 1 {
- cells.push(line)
- } else {
- cells.push(table.cell(rowspan: span, align: right + horizon, line))
- }
- // Столбцы домена -- с 1-го по 4-й: азимут падения, № домена, № системы, угол падения
- for j in range(span) {
- let row = rows.at(i + j)
- let rowspan = if j == 0 and merge-next { 2 } else { 1 }
- for k in range(1, 5) {
- if rowspan > 1 {
- cells.push(table.cell(rowspan: rowspan, align: right + horizon, anisotropy-format(row.at(k), k)))
- } else {
- cells.push(anisotropy-format(row.at(k), k))
- }
- }
- cells.push(anisotropy-format(row.at(5), 5))
- }
- i += span
- // Блок линии с общими доменами («=»): домены берутся из первой строки
- // предыдущего блока, выводятся столбец профильной линии и собственный
- // кажущийся угол каждой строки.
- if share-next {
- let eq-span = 1
- while i + eq-span < rows.len() and rows.at(i + eq-span).at(0) == "" { eq-span += 1 }
- let eq-line = anisotropy-format(rows.at(i).at(0), 0)
- if eq-span == 1 {
- cells.push(eq-line)
- } else {
- cells.push(table.cell(rowspan: eq-span, align: right + horizon, eq-line))
- }
- if not merge-next {
- for k in range(1, 5) { cells.push(anisotropy-format(head.at(k), k)) }
- }
- cells.push(anisotropy-format(rows.at(i).at(5), 5))
- for j in range(1, eq-span) {
- let row = rows.at(i + j)
- for k in range(1, 5) { cells.push(anisotropy-format(row.at(k), k)) }
- cells.push(anisotropy-format(row.at(5), 5))
- }
- i += eq-span
- }
- }
- cells
- }
- // Шапка таблицы: горизонтальные заголовки переносятся только по словам
- // (перенос по слогам отключён), ширины столбцов подобраны под самый
- // длинный заголовок «Спроецированный угол падения системы, °».
- #figure(
- corp-table(
- columns: (1.3fr, 1fr, 1.05fr, 1fr,1.05fr, 1.35fr),
- align: right + top,
- table-align: "center",
- text-size: 10pt,
- body-inset: (x: 5pt, y: 4pt),
- header-hyphenate: false,
- [№/Азимут профильной линии, °], [Азимут падения системы трещин, °], [№ структурного домена], [№ системы трещин], [Истинный угол падения системы, °], [Спроецированный угол падения системы, °],
- ..anisotropy-cells(anisotropy-angles),
- ),
- caption: [Азимуты и углы падения систем трещин, принятые для учёта системной трещиноватости],
- ) <tab:anisotropy_angles>
- ]
- Примечание: профильная линия №6 не пересекается с системами трещин с разницей азимутов падения менее 40$degree$, поэтому влияние направления трещин на устойчивость борта на данном разрезе не учитывается.
|