profile_stress_calc.typ 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #import "/.template/lib/index.typ": corp-table, formula, vref, vrefs, eqref, numbered-list
  2. Абсолютные значения природного поля напряжений в осях разрезов и отношения $sigma_x slash sigma_y$ рассчитаны программой на языке Python с использованием библиотеки SymPy, её полный исходный код приведён ниже. Применяемые формулы и система уравнений описаны в пояснении в начале программы. Исходные данные -- азимуты разрезов по профильным линиям -- приведены в #vref(<profile_stresses>, "п"), глубина карьера каждого разреза -- в таблице результатов запуска, приведённой ниже.
  3. #block[
  4. #show raw: set text(8.5pt)
  5. #raw(read("/assets/code/profile_stress_ratio.py"), lang: "python")
  6. ]
  7. Результаты запуска приведены в табличной форме.
  8. #let reference-stresses = csv("/assets/tables/profile_stresses.csv", delimiter: ";")
  9. #let section-stresses = csv("/assets/tables/section_stresses.csv", delimiter: ";")
  10. #let sensitivity = csv("/assets/tables/stress_sensitivity.csv", delimiter: ";")
  11. #pagebreak()
  12. #block(breakable: false)[
  13. #figure(
  14. kind: table,
  15. caption: [Контрольный расчёт напряжений в осях профильных линий на глубине 400 м],
  16. table(
  17. columns: (1.2fr, 1fr, .8fr, 1fr, 1fr),
  18. align: right + horizon,
  19. fill: (_, y) => if y == 0 { rgb("#ffd35f") } else { rgb("#ffff") },
  20. [№ профильной линии],
  21. [Азимут разреза, °],
  22. [$Delta$, °],
  23. [$sigma_s$, МПа],
  24. [$sigma_x slash sigma_y$],
  25. ..reference-stresses.slice(1).flatten(),
  26. )
  27. )<profile_stress_check>
  28. ]
  29. #block(breakable: false)[
  30. #figure(
  31. kind: table,
  32. caption: [Расчёт напряжений на глубине карьера по разрезам],
  33. table(
  34. columns: (.7fr, .7fr, .85fr, .95fr, .95fr, .8fr, .8fr, 1.1fr),
  35. align: right + horizon,
  36. fill: (_, y) => if y == 0 { rgb("#ffd35f") } else { rgb("#ffff") },
  37. [Год контура],
  38. [№ профильной линии],
  39. [Азимут разреза, °],
  40. [Глубина карьера, м],
  41. [$P_p$, МПа],
  42. [$Delta$, °],
  43. [$sigma_s$, МПа],
  44. [$sigma_x slash sigma_y$],
  45. ..section-stresses.slice(1).flatten(),
  46. )
  47. )<section_stresses_table>
  48. ]
  49. #block(breakable: false)[
  50. #figure(
  51. kind: table,
  52. caption: [Анализ чувствительности отношения $sigma_x/sigma_y$],
  53. table(
  54. columns: (1fr, 1fr, 1fr),
  55. align: right + horizon,
  56. fill: (_, y) => if y == 0 { rgb("#ffd35f") } else { rgb("#ffff") },
  57. [$H$, м],
  58. [$P_p$, МПа],
  59. [$sigma_x slash sigma_y$],
  60. ..sensitivity.slice(1).flatten(),
  61. )
  62. )<sensitivity_table>
  63. ]