1. Введение
Одним из наиболее распространенных применений численного анализа с помощью Python являются параметрические исследования, такие как [ HYRCAN использует Python для параметрического анализа устойчивости откосов ]. В ПО Itasca исследование параметризации может осуществляться более гибко за счет передачи функции FISH.Преимущество этого в том, что код Python можно максимально отделить от команды Itasca, что удобно для модификации и расширения функции кода. Пример из руководства «Прочность на одноосное сжатие образца соединенного материала » обсуждается ниже. В этом примере используется модель вездесущего соединения для расчета прочности на одноосное сжатие образца с соединениями в зависимости от материала горной породы и свойств соединений, как показано на рисунке ниже. Все процедуры моделирования процессов здесь опущены, основное внимание уделяется параметрическим исследованиям.
2 Параметрическое исследование
В коде Python используйте диапазон для изменения бета угла соединения и передайте бета в код расчета UCS ucs_test, таким образом получая 19 наборов данных.
betas = range(0,91,5)
for beta in betas:
it.command(f"""
model new
[global beta = {beta}]
program call 'ucs_test'
""")
Основные используемые функции Python:
(1) gp.force_unbal_y
(2) it.gridpoint.list
(3) gp.in_group
ucs = []
for beta in betas:
filesav = f"./ucs_{beta}.sav"
if os.path.exists(filesav):
it.command(f"model restore '{filesav}'")
sigmavs = [-gp.force_unbal_y() for gp in it.gridpoint.list() if gp.in_group("bottom")]
ucs.append(sum(sigmavs)/3.06*1e-3)
3 Рисунок
Используйте matplotlib для рисования результатов расчета, полученных в результате параметрического исследования [ интеграция FLAC3D и Python (2) --- обмен данными с Numpy ].
import matplotlib.pyplot as plt
Для контроля формы кривой были протестированы следующие четыре типа, которые можно использовать:
plt.plot(betas,ucs,"r*--")
plt.plot(betas,ucs,"bD-.")
plt.plot(betas,ucs,"go--")
plt.plot(betas,ucs,"b*-")
plt.xlabel("Weak-plane angle [°]")
plt.ylabel("Axial strength [kPa]")
plt.xlim(0,90)
plt.ylim(3,10)
plt.grid()
plt.title("UCS test using ubiquitous-joint model")
plt.show()