Flac3D-断层带-获取目标层(竖向)的zone-id并写入文件

import itasca as it
it.command("python-reset-state false")

'''
需要给定的数值
'''
#y方向有多少个zone,即y方向有多上个单元格
ydir_zone_num = 80
#断层带的划分层数
dcd_levels = 5
#目标层(竖向)层数
dcd_target_levels = 5


it.command("""
model restore 'model_test.f3sav'
""")
#储存目标组的所有zone信息,即断层带的所有zone
all_zone_infos_list = []
#获取模型的全部的zone
zone_list = it.zone.list()

'''
筛选zone,获得想要的zone,获取组名为dcd的所有zone
'''
for z in zone_list:
    group_name = z.groups("Any")
    if group_name["Construction"] == "dcd":
        zone_id = z.id()
        position_x = round(z.pos_x(),1)
        position_y = round(z.pos_y(),1)
        position_z = round(z.pos_z(),1)
        
        all_zone_infos_list.append([zone_id,position_x,position_y,position_z])

#对获得的zone进行排序,顺序为第1行数据为最底层的zone,最下面的一行是断层带的最上层的zone
def paixu(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0,n-i-1):
            if arr[j][3] > arr[j+1][3]:
                arr[j],arr[j+1] = arr[j+1],arr[j]
                
    for p in range(n):
        for q in range(0,n-p-1):
            if arr[q][2] > arr[q+1][2] and arr[q][3] == arr[q+1][3]:
                arr[q],arr[q+1] = arr[q+1],arr[q]
                
    for u in range(n):
        for m in range(0,n-u-1):
            if arr[m][1] > arr[m+1][1] and arr[m][2] == arr[m+1][2] and arr[m][3] == arr[m+1][3]:
                arr[m],arr[m+1] = arr[m+1],arr[m]
                
    return arr
    
new_arr = paixu(all_zone_infos_list)
#获取断层带的模型层数
num = len(new_arr) / (ydir_zone_num * dcd_levels )
print(num)

#需要的那一层zone,用target_dcd_zone_list储存
target_dcd_zone_list= []


#获得断层目标层的zone
#间隔
n = ydir_zone_num * dcd_levels
#获取每一层的zone
for i in range(0,num):
	#每一层的开始与结束
    s = i * n
    e = s + n
    #每一层断层带的zone
    list_of_z = new_arr[s:e]
    #获取目标层(竖向)的zone
    e1 = dcd_target_levels * ydir_zone_num 
    s1 = e1 - ydir_zone_num 
    list_z_of_r = list_of_z[s1:e1]
    target_dcd_zone_list.append(list_z_of_r)
print(target_dcd_zone_list)

target_zone_ids = []

for j in target_dcd_zone_list:
    level_zone_id = []
    for n in j:
        level_zone_id.append(n[0])
    target_zone_ids.append(level_zone_id)
with open("dcdAllIds.txt", "w") as f:
    f.write(str(target_zone_ids))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值