6.3 有沉积剥蚀

6.3.1 流程解析

警告

此节仅为了帮助用户理解应力应变计算过程,用户仍需要 Slurm 作业调度系统( Slurm 作业调度系统 )提交计算,具体方法见 实例

初始目录结构:

|-- ex_strain_stress
    |-- push_add_del.py

push_add_del.py实例

如果有沉积剥蚀过程,需要仔细选择沉积剥蚀的临界文件,详细的流程如下:

所有操作均在 ex_strain_stress 目录下操作

  1. zdem push_add_del.py

    计算完成,将生成 ./data 文件夹。目录结构如下:

    |-- ex_strain_stress
        |-- push_add_del.py
        |-- data
            |--  all_0000000000_ini.dat
            |--  ...
            |--  all_0000005000.dat
            |--  all_0000058000_ini.dat
            |--  all_0000108000.dat
    
  2. zdem2jpg --dir=./data

    生成jpg,生成计算过程图.注意:这里,只需指定 --dir ,不加其它任何参数.目录结构如下

    |-- ex_strain_stress
        |-- push_add_del.py
        |-- data
            |--  all_0000000000_ini.dat
            |--  all_0000000000_ini.jpg
            |--  ...
            |--  all_0000005000.dat
            |--  all_0000005000.jpg
            |--  all_0000058000_ini.dat
            |--  all_0000058000_ini.jpg
            |--  all_0000108000.dat
            |--  all_0000108000.jpg
    
  3. 新建datass文件夹,根据jpg挑选需要计算应力应变的.dat文件,复制到datass文件夹中。

    这里,挑选原则如下:

    • 刚沉积完,并给定颜色,准备挤压的初始模型,必须。all_0000006000_ini.dat
      ../../_images/all_0000006000_ini.jpg
    • 刚剥蚀完,准备挤压的模型,必须。all_0000036000_ini.dat
      ../../_images/all_0000036000_ini.jpg
    • 沉积稳定,准备挤压前的模型。all_0000058000_ini.dat
      ../../_images/all_0000058000_ini.jpg
    • 沉积过程不要,其它的可酌情选取。

      目录结构如下

    |-- ex_strain_stress
        |-- push_add_del.py
        |-- data
            |--  all_0000000000_ini.dat
            |--  all_0000000000_ini.jpg
            |--  ...
            |--  all_0000005000.dat
            |--  all_0000005000.jpg
            |--  all_0000058000_ini.dat
            |--  all_0000058000_ini.jpg
            |--  all_0000108000.dat
            |--  all_0000108000.jpg
        |-- datass
            |-- all_0000006000_ini.dat
            |-- all_0000026000.dat
            |-- all_0000036000_ini.dat
            |-- all_0000056000.dat
            |-- all_0000058000_ini.dat
            |-- all_0000078000.dat
            |-- all_0000108000.dat
    
  4. zdem --xmove -1000.0 --ymove -1000.0 --addball --delball -s ./datass

    计算应力和应变。基于步骤2,我们知道 --xmove --ymove 应该设置为 -1000.0 , 并且有沉积 --addball 和剥蚀 --delball 过程。

    备注

    zdem 命令详解见 zdem ,或者输入 zdem -h 查看帮助文档。

    计算完成,将生成 ./datass/ss/data/*.out ,供GMT绘图用。目录结构如下

    |-- ex_strain_stress
        |-- push_add_del.py
        |-- data
            |--  all_0000000000_ini.dat
            |--  all_0000000000_ini.jpg
            |--  ...
            |--  all_0000005000.dat
            |--  all_0000005000.jpg
            |--  all_0000058000_ini.dat
            |--  all_0000058000_ini.jpg
            |--  all_0000108000.dat
            |--  all_0000108000.jpg
        |-- datass
            |--ss
               |-- data
                   |-- *.out
            |-- all_0000006000_ini.dat
            |-- all_0000026000.dat
            |-- all_0000036000_ini.dat
            |-- all_0000056000.dat
            |-- all_0000058000_ini.dat
            |-- all_0000078000.dat
            |-- all_0000108000.dat
    
  5. zdemss --dir ./datass  --addball ON --delball ON --xmax 40.0 --ymax 10.0 --maxstress 250.0 使用GMT绘制应力应变。zdemss 将会读取 zdem 生成的应力应变数据 ./datass/ss/data,生成应力应变云图到 ./datass/ss/*jpg 。设置x轴最大值 40.0 km,设置y轴最大值 10.0 km,设置颜色条应力最大值250 MPa。

    备注

    zdemss 命令详解见 zdemss ,或者输入 zdemss -h 查看帮助文档。

    运行完成之后,目录结构:

    |-- ex_strain_stress
        |-- push_add_del.py
        |-- data
            |--  all_0000000000_ini.dat
            |--  ...
            |--  all_0000005000.dat
            |--  all_0000058000_ini.dat
            |--  all_0000108000.dat
        |-- datass
            |-- ss
                |-- data
                    |-- *.out
                |-- ps
                   |-- *.ps
                |-- tmp
                    |-- *.grd
                |-- *.jpg
            |-- all_0000006000_ini.dat
            |-- all_0000026000.dat
    
    • ./datass/ss/data/*.out zdem 输出的颗粒位置和(假)应力的原始数据

    • ./datass/ss/data2ps/*.out (真)应力应变数据,用于绘制应力应变图(ps),用户可以用于定量分析

    • ./datass/ss/ps/*.ps 输出的应力应变图(矢量图)

    • ./datass/ss/Tmp/*.grd 计算应力应变产生的中间数据

    • ./datass/ss/*.jpg 输出的应力应变图(位图)

6.3.2 实例

  1. sbatch jobs1.sh 提交,将完成 流程解析 1和2

  2. 此步最关键! 新建datass文件夹,将需要处理的dat复制到datass文件夹,完成 流程解析 3。完成此步后,目录结构:

    |-- ex_strain_stress
        |-- job1.sh
        |-- job2.sh
        |-- push_add_del.py
        |-- data
            |--  all_0000000000_ini.dat
            |--  all_0000001000.dat
            |--  ...
            |--  all_0000005000.dat
            |--  all_0000005000_ini.dat
            |--  all_0000006000.dat
            |--  all_0000006000_ini.dat
            |--  all_0000016000.dat
            |--  all_0000026000.dat
            |--  all_0000036000.dat
            |--  all_0000036000_ini.dat
            |--  all_0000046000.dat
            |--  all_0000056000.dat
            |--  all_0000056000_ini.dat
            |--  all_0000056100.dat
            |--  ...
            |--  all_0000057900.dat
            |--  all_0000058000.dat
            |--  all_0000058000_ini.dat
            |--  all_0000068000.dat
            |--  all_0000078000.dat
            |--  all_0000088000.dat
            |--  all_0000098000.dat
            |--  all_0000108000.dat
        |-- datass
            |-- all_0000006000_ini.dat
            |-- all_0000026000.dat
            |-- all_0000036000_ini.dat
            |-- all_0000056000.dat
            |-- all_0000058000_ini.dat
            |-- all_0000078000.dat
            |-- all_0000108000.dat
    
  3. sbatch jobs2.sh 提交,将完成 流程解析 4和5。等待计算完成,生成的应力应变图见 ./datass/ss/*jpg

../../_images/strainstressShear250.png
../../_images/all00001080001.jpg

图 6.2 处理结果示意图

job1.sh job2.sh push_add_del.py 文件内容:

job1.sh

#!/bin/bash
#SBATCH --job-name=core12
#SBATCH --partition=v6_384
#SBATCH -n 1
#SBATCH -c 12
#SBATCH -t 1440
#SBATCH --output=%j.out
#SBATCH --error=%j.err

source /public1/soft/modules/module.sh
source /public1/soft/other/module_zdem.sh
module load zdem2.0

source /public1/soft/modules/module.sh
source /public1/soft/other/module_GMT.sh
module load GMT_5.4.5

export PATH=/public1/home/sc80502/bin:$PATH

time srun -n 1 zdem push_add_del.py
time srun -n 1 zdem2jpg --dir=./data

job2.sh

#!/bin/bash
#SBATCH --job-name=core12
#SBATCH --partition=v6_384
#SBATCH -n 1
#SBATCH -c 12
#SBATCH -t 1440
#SBATCH --output=%j.out
#SBATCH --error=%j.err

source /public1/soft/modules/module.sh
source /public1/soft/other/module_zdem.sh
module load zdem2.0

source /public1/soft/modules/module.sh
source /public1/soft/other/module_GMT.sh
module load GMT_5.4.5

export PATH=/public1/home/sc80502/bin:$PATH

time srun -n 1 zdem --xmove -1000.0 --ymove -1000.0 -j 12 --addball --delball -s ./datass
time srun -n 1 zdemss --dir ./datass --xmax 40.0 --ymax 10.0 --maxstress 250.0 --addball ON --delball ON

push_add_del.py

######################################
# title: 一个实例学会VBOX 加入剥蚀 沉积 演示应力应变处理过程
# date: 2020-06-28
# authors: 李长圣
# E-mail: sheng0619@163.com
# www.geovbox.com
#######################################
#程序初始化
START
#颗粒设为球,计算颗粒体积用4/3*pi*r^3计算
set disk off
#设置研究范围 
BOX left 0.0 right 42000.0 bottom 0.0 height 12000.0 kn=0e10 ks=0e10 fric 0.00 
#设置挡板墙,这里模型采用hertz接触模型,挡板墙的kn ks无效,计算时取颗粒的参数
WALL ID 0, NODES (   1000.0 ,   1000.0 ) (  41000.0 ,   1000.0 ), kn=0e10 ks=0e10 fric 0.0 COLOR black
WALL ID 1, NODES (   1000.0 ,  10000.0 ) (   1000.0 ,   1000.0 ), kn=0e10 ks=0e10 fric 0.0 COLOR blue
WALL ID 2, NODES (  41000.0 ,   1000.0 ) (  41000.0 ,  10000.0 ), kn=0e10 ks=0e10 fric 0.0 COLOR red
#在矩形范围内生成颗粒
GEN NUM 100000.0 rad discrete 60.0 80.0,  x ( 1000.0, 41000.0), y ( 1000.0, 10000.0), COLOR black GROUP ball_rand
#设置颗粒的微观参数
PROP DENSITY 2.5e3, fric 0.0, shear 2.9e9, poiss 0.2, damp 0.4, hertz
#设置时间步及重力加速度
SET  DT 5e-2,  GRAVITY  0.0,  -10.0
#设置每1000步保存一次ps格式的计算结果
SET  ps 1000
#设置每1000步保存一次dat格式的计算结果
SET  print 1000
#沉积,计算5000步
CYC 5000
#删除4000米以上的颗粒
DEL RANGE y 4000.0 999000.0
#平衡,计算1000步
CYC 1000
#输出包含颗粒的[x y r]信息的初始模型 init_xyr.dat
EXP init_xyr.dat

#设置bond粘结,使颗粒具有粘聚力
PROP ebmod 2e8 gbmod 2e8  tstrength 2e7 sstrength 4e7 fric 0.3 
#给地层赋上颜色
PROP COLOR lg          range y 1000.0  1500.0
PROP COLOR green       range y 1500.0  2000.0
PROP COLOR yellow      range y 2000.0  2500.0
PROP COLOR red         range y 2500.0  3000.0
PROP COLOR black       range y 3000.0  3500.0
PROP COLOR mg          range y 3500.0  4000.0
PROP COLOR blue        range y 4000.0  4500.0
PROP COLOR gb          range y 4500.0  5000.0
PROP COLOR violet      range y 5000.0  5500.0

#设置挡板墙摩擦系数
WALL id 0 fric 0.3
WALL id 1 fric 0.3
WALL id 2 fric 0.3
#设置墙的挤压速度 x方向速度为2.0
WALL id 1 xv 2.0
#设置墙的挤压量x方向推进3000.0,每挤压2000.0保存一次计算结果
IMPLE wall id 1 xmove 3000.0 save 2000.0 print 1000.0 ps 1000.0

##################################### 剥蚀 #####################################
# 删除4000米以上的颗粒
DEL RANGE y 4000.0 999000.0
################################################################################

#设置墙的挤压量x方向推进3000.0,每挤压2000.0保存一次计算结果
IMPLE wall id 1 xmove 2000.0 save 2000.0 print 1000.0 ps 1000.0

##################################### 沉积 #####################################
#停止挤压,墙的x方向速度改为0.0
WALL id 1 xv 0.0
#沉积。在挤压前端12000~40000.0上方,沉积约 1 km 颗粒。y的范围需要设置为4000-6000。
#经验:颗粒充填满2km范围,沉积之后的地层厚度约为1km
GEN NUM 100000.0 rad discrete 60.0 80.0,  x ( 10000.0, 41000.0), y ( 4000.0, 6000.0), COLOR gb GROUP sed
#设置沉积颗粒 GROUP=sed 的微观参数
PROP DENSITY 2.5e3, fric 0.3, shear 2.9e9, poiss 0.2, damp 0.4, hertz range GROUP sed
#每 100 步输出一次计算结果
SET print 100 
#计算2000步,让颗粒沉积下来
CYC 2000
################################################################################

#设置墙的挤压速度 x方向速度为2.0
WALL id 1 xv 2.0
#设置墙的挤压量x方向推进3000.0,每挤压2000.0保存一次计算结果
IMPLE wall id 1 xmove 5000.0 save 5000.0 print 1000.0 ps 1000.0

#计算停止
STOP