PFC落石模拟

news2024/11/28 10:45:45

Landslide/Rockfall simulation


山体滑坡/落石模拟

https://www.youtube.com/watch?v=WSa3909qYmI

        模拟的目的在于通过导入团块的对象文件产生团块的二进制输出

具体措施:

(i) 使用导入的几何体形成团块模板
(ii) 使用Taghavi(2011)定义的BubblePack算法来生成卵石分布
(iii) 使用Surfcalculate关键字从表面描述中计算惯性属性,假设密度均匀。
(iv) 理解为比率和距离提供的数值所产生的差异。

clump template + create keyword

bubblepack关键字
通过Taghavi(2011)的Bubble Pack算法,指定创建团块模板卵石。

        距离fdistance:根据Taghavi(2011)的定义,与光滑度的角度测量相对应的距离fdistance为0 < fdistance < 180。fdistance越大,卵石分布越平滑。

        比率fratio :块状模板中保留的最小和最大卵石的比率,0 < fratio < 1。

surfcalculate关键字

表面计算,假设密度均匀,从面的描述中计算出惯性属性。

clump template + export s <keyword ...>
将块状模板s导出到文件。默认的文件名是{"clump.p2clp"(2D);"clump.p3clp"(3D)}。如果没有指定nothrow,那么如果一个文件存在,就会被覆盖,否则就会出现错误。这是一个二进制文件,可以用import关键字重新加载。

        skip-errors:表示如果存在指定的名为s的前一个文件,那么它将被覆盖。

model domain condition periodic

应用周期性边界条件。当球或团块的中心点落在模型域外时,它们会被传回模型的另一侧。

model domain condition destroy

销毁,删除落在模型域之外的球、团块和壁面,这些球、团块和壁面的单个外延(即紧紧包括物体的轴对齐的边界框)。

clump distribute 

①porosity关键字
最终的孔隙率被设置为fporos。默认情况下,fporos={二维为0.16;三维为0.359},对应于{二维为盘子;三维为球体}的紧密单分散包装的孔隙率。

②bin ibin
指定bin ibin的分布属性。可以指定任何数量的分布的半径范围、体积分数和分布类型。所有分布的体积分数之和必须为1。

        volume-fraction fvfrac:这个分布中的团块的体积分数。所有分布的体积分数之和必须是1。

clump distribute porosity 0.15 diameter number-bins 6 box -30 30 -30 30 -30 30 ...
        bin 1 size 16    15  volume-fraction 0.03  group 'clump1' template 'clump1' ...
        bin 2 size 15    14  volume-fraction 0.12  group 'clump2' template 'clump2' ...
        bin 3 size 14    13  volume-fraction 0.30  group 'clump3' template 'clump3' ...
        bin 4 size 13    12  volume-fraction 0.4   group 'clump4' template 'clump4' ...
        bin 5 size 12    11  volume-fraction 0.12  group 'clump5' template 'clump5' ...
        bin 6 size 11    10  volume-fraction 0.03  group 'clump6' template 'clump6'
; Start with a new file and provide title to the project
; Set a random number so that after multiple runs of the same model, produced results are similar.
model new
model random 10001
model title 'Debris_Flow' 
 
;Aim 1: Produce binary outputs of clumps by importing the object files of clumps

;Action 1: Import object files from the directory
    geometry import 'geo1.stl'
    geometry import 'geo2.stl'
    geometry import 'geo3.stl'
    geometry import 'geo4.stl'
    geometry import 'geo5.stl'
    geometry import 'geo6.stl'


clump template create name 'trial1' geometry 'geo1' surfcalculate bubblepack ratio 0.3 distance 100
clump template create name 'trial2' geometry 'geo1' surfcalculate bubblepack ratio 0.3 distance 50
clump template create name 'trial3' geometry 'geo1' surfcalculate bubblepack ratio 0.3 distance 150

clump template create name 'trial4' geometry 'geo1' surfcalculate bubblepack ratio 0.2 distance 100
clump template create name 'trial5' geometry 'geo1' surfcalculate bubblepack ratio 0.2 distance 50
clump template create name 'trial6' geometry 'geo1' surfcalculate bubblepack ratio 0.2 distance 150

model save 'state1'
;Action 3: Find a suitable set and create clump templates
clump template create name 'clump1' geometry 'geo1' surfcalculate bubblepack ratio 0.2 distance 100
clump template create name 'clump2' geometry 'geo2' surfcalculate bubblepack ratio 0.2 distance 100
clump template create name 'clump3' geometry 'geo3' surfcalculate bubblepack ratio 0.2 distance 100
clump template create name 'clump4' geometry 'geo4' surfcalculate bubblepack ratio 0.2 distance 100
clump template create name 'clump5' geometry 'geo5' surfcalculate bubblepack ratio 0.2 distance 100
clump template create name 'clump6' geometry 'geo6' surfcalculate bubblepack ratio 0.2 distance 100


;Action 4: Export each clump template to a binary file and issue nothrow/skip-errors keyword to overwrite pre-esxiting files.
    clump template export 'clump1' nothrow 
    clump template export 'clump2' nothrow 
    clump template export 'clump3' nothrow 
    clump template export 'clump4' nothrow 
    clump template export 'clump5' nothrow 
    clump template export 'clump6' nothrow 
model save 'state2'
;Aim 1 Achieved

model new
model random 10001
;Aim 2: Use brick logic to from a brick from clumps that makes the reproduction and computation fast.

;Action 1:Import the clump templates from the binary files
    clump template import 'clump1' 
    clump template import 'clump2' 
    clump template import 'clump3' 
    clump template import 'clump4' 
    clump template import 'clump5' 
    clump template import 'clump6' 

;put them in a periodic cubic box and allow them to stablize
model domain extent -40 40 condition periodic

;Decide a contact model for future contact detection
contact cmat default model 'linear' ...
                         method deformability   emod 2e9 kratio 2.0 ...
                         property fric '0.1' dp_nratio 0.2

;The error was reported because the volume was typed as avolume
;Provide density and initial damping to Produce a mass of the clumps and provide the fractional content cumulative to 1
clump distribute porosity 0.15 diameter number-bins 6 box -30 30 -30 30 -30 30 ...
        bin 1 size 16    15  volume-fraction 0.03  group 'clump1' template 'clump1' ...
        bin 2 size 15    14  volume-fraction 0.12  group 'clump2' template 'clump2' ...
        bin 3 size 14    13  volume-fraction 0.30  group 'clump3' template 'clump3' ...
        bin 4 size 13    12  volume-fraction 0.4   group 'clump4' template 'clump4' ...
        bin 5 size 12    11  volume-fraction 0.12  group 'clump5' template 'clump5' ...
        bin 6 size 11    10  volume-fraction 0.03  group 'clump6' template 'clump6'
clump attribute density 3000.0 damp 0.9


;To form a grain size distribution curve create a measure region inside the box
;tabulate the particles according to their size in their respective bins with minimum and maximum extent
; Dump the table to form a table chart
measure create id 1 radius 29 ...
                        bins 100 12 20
measure dump id 1 table 'numerical' 

; Create a model history to analuze the disturbance in the model specimen.
model history id 1 mechanical ratio-average

;use timescaling to achieve equillibrium quickly after it set timestep to auto mode
model mechanical timestep scale
model cycle 250 calm 100
model solve ratio-average 1e-3
model cycle 250 calm 50
model solve ratio-average 1e-4
model cycle 250 calm 25
model solve ratio-average 1e-5
model mechanical timestep auto

; Create and export a brick from the stablized clump heap. It can be utilized at later stage in replication 
brick make id 1
brick export id 1 filename 'brick1' nothrow
model save 'state3'


model new
model random 10001
model domain extent -1100 1100 -1100 1100 -300 900 condition destroy destroy destroy 

contact cmat default model 'linear' ...
                    method deformability emod 2e10 kratio 1.0   ...
                    property fric '0.5' dp_nratio 0.2

;Import the slope/mountain as a wall
    geometry import 'slope.stl'
    wall import from-geometry 'slope' skip-errors id 100
    model gravity 9.81

;Import the brick and assemble it, the origin is the bottom-most point from where the brick is replicated in axial directions.
brick import id 1 filename 'brick1' 
brick assemble id 1 origin (-800,700,575) size (2,2,2)
brick assemble id 1 origin (25,625,250) size (2,2,2)


;Group the clumps which are not required
clump group 'del1' slot '2' range plane origin (-671.673,780.009,620.539) normal (0.220853,-0.560137,0.798418) below
clump group 'del2' slot '2' range plane origin (-745.333,735.558,620.036) normal (0.419921,-0.366438,0.830295) below
clump group 'del3' slot '2' range plane origin (-671.673,780.009,680) normal (0,0,1) above

;Remove some of the clumps
clump delete range group 'del1' slot '2'
clump delete range group 'del2' slot '2'
clump delete range group 'del3' slot '2'
clump group 'debris' slot '2' range position-x -1100 1100

;Form boxe to contain and stablize the initial debris
wall generate box (-850,-600) (650,900) (550,750) one-wall 
wall generate box (5,215) (600,850) (150,500)  one-wall

;To avoid model interference and better results negate the body based local damping
clump attribute damp 0.0
model clean all 

;Settle the clumps in the box
model history id 1 mechanical ratio-average
model mechanical timestep scale
model cycle 500 calm 100
model solve ratio-average 1e-3
model cycle 750 calm 50
model solve ratio-average 1e-4
model cycle 1000 calm 25
model solve ratio-average 1e-5
model mechanical timestep auto
model save 'state4'
;Change the frictional properties of the slope
wall delete walls range set id 101 102
wall property 'fric' 0.2
    
wall property 'fric' 0.4 range position-y -1000 280
wall property 'fric' 0.4 range position-x -230 2000
    
wall property 'fric' 0.6 range position-y -1000 -150
wall property 'fric' 0.6 range position-x  260 2000

wall property 'fric' 0.4 range id 2595
wall property 'fric' 0.4 range id 2678
wall property 'fric' 0.4 range id 2772
wall property 'fric' 0.4 range id 1552
wall property 'fric' 0.4 range id 1494
wall property 'fric' 0.4 range id 1442
wall property 'fric' 0.4 range id 1392
wall property 'fric' 0.4 range id 1355
wall property 'fric' 0.4 range id 1314
wall property 'fric' 0.4 range id 1289
wall property 'fric' 0.4 range id 1270
wall property 'fric' 0.4 range id 1252
wall property 'fric' 0.4 range id 4886
wall property 'fric' 0.4 range id 4888

;Add the particle traces
clump trace id 1 (-610.013,738.36,585.659)
clump trace id 2 (-698.949,845.282,679.247)
clump trace id 3 (-602.018,871.206,669.083)

clump trace id 4 (156.198,629.542,381.03)
clump trace id 5 (160.236,743.022,409.412)
clump trace id 6 (43.7976,687.653,398.846)

model save 'initiation'

; Use result logic to save miniature saved state which can be used later to generate image of plots.
model result interval mechanical 0.2 warn off
clump result active on add-attribute group add-attribute velocity add-attribute energy-kinetic
wall result active on add-attribute group
trace result active on
model cycle 1
model save 'initiation' 

model cycle 1
model solve
model save 'deposition'

program return

fish define Make_Movie(dur,inc,name)
  i = 1
  curv = inc
  dur = dur
  namefile = name
  loop while (curv <= dur)
    i = i + 1
    local fname = string.build('%1_%2.png',namefile,i)
        command
          model result import @i skip-fish
          plot 'gro2' export bitmap size 1920 1080 filename @fname
        endcommand
    curv = curv + inc
  endloop
end
@Make_Movie(284.6,0.2,'velocity')

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/572890.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法|4.归并排序及应用

算法|4.归并排序及应用 1.归并排序算法 题意&#xff1a;归并排序的递归和非递归实现 解题思路&#xff1a; ​ 递归实现&#xff1a; 预处理&#xff1a;数组为空或者长度小于2的直接返回调用子过程子过程终止条件LR分解成[L,mid]&#xff0c;[mid1,R] &#xff0c;子数组…

九章云极DataCanvas公司诚邀您共享AI基础软件前沿技术盛宴

“杭州通用人工智能论坛暨AIIA人工智能产业发展大会”将于2023年5月30日-31日在杭州举办。本次人工智能产业发展大会由中国信息通信研究院、中国人工智能产业发展联盟主办&#xff0c;杭州城西科创大走廊管委会、杭州市经济和信息化局、杭州未来科技城管理委员会、人工智能关键…

企业级信息系统开发——初探JdbcTemplate操作

文章目录 一、创建数据库与表1、创建数据库2、创建用户表3、用户表添加记录 二、打开Spring项目三、添加数据库相关依赖四、创建用户实体类五、创建用户数据访问接口六、创建用户数据访问接口实现类七、创建用户服务类八、创建数据库配置属性文件九、创建Spring配置文件十、创建…

Springboot +spring security,解决跨域问题

一.简介 这篇文章主要是解释什么是跨域&#xff0c;在Spring中如何解决跨域&#xff0c;引入Spring Security后Spring解决跨域的方式失效&#xff0c;Spring Security 如何解决跨域的问题。 二.什么是跨域 跨域的概率&#xff1a; 浏览器不能执行其他网站的脚本&#xff0c…

jsp页面调试

现象: 访问jsp页面, 页面为空, 网络请求显示失败, 控制台打印错误net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 分析: 错误描述&#xff1a;编码模块不完整&#xff0c;返回浏览器的流不完整 可能得原因: 1、网络是否稳定 2、服务器端是否有对响应数据做限制&#xff0c;比如…

【App自动化测试】(十七)遍历测试工具——Android Maxim

目录 1. Android Maxim介绍2. Android Maxim使用方法3.Android Maxim运行命令4.Android Maxim的策略5.实例演示——Windows系统&#xff0c;使用AVD模拟器&#xff0c;系统 Android6.0 1. Android Maxim介绍 Android Maxim是基于遍历规则的高性能Android Monkey&#xff0c;适…

基于SpringBoot+Vue的毕业生信息招聘平台设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

Elasticsearch常用接口使用说明以及postman调用调试

查看集群状态 接口url&#xff1a;http://xxxx:9200/_cat 查看所有索引 http://xxxx:9200/_cat/indices?v 创建索引 http://xxxx:9200/test-20230526?pretty 返回值 { "acknowledged": true, "shards_acknowledged": true, "index": &quo…

Opencv-C++笔记 (2) : opencv的矩阵操作

文章目录 创建与初始化1.1 数据类型1.2 基本方法1.3 初始化方法 矩阵加减法矩阵乘法矩阵转置矩阵求逆矩阵非零元素个数矩阵均值与标准差矩阵全局极值及位置GEMM 通用矩阵乘法Transform 对数组每一个元素执行矩阵变换MulTransposed 计算数组和数组的转置的乘积Trace 返回矩阵的迹…

WIN10:Cognos10.2_x32安装

一、Cognos BI Server 10.2 32Bit 二、Cognos Transformer 10.2 三、Cognos Framework Manager 10.2 四、环境 1、如果使用Cognos自带的Tomcat web容器&#xff0c;将E:\common\Cognos\c10\webcontent下的所有文件拷贝到E:\common\Cognos\c10\webapps\p2pd 下面.(一般我们就使…

redis高级篇 缓存双写一致性之更新策略

闲聊 缓存通用查询3部曲 redis 中数据&#xff0c;返回redis 中的数据redis 中没有&#xff0c;查询数据库并返回完成第二部的同时&#xff0c;将数据库查询结果写到redis,redis和数据库数据一致. 谈谈双写一致性的理解 1.如果redis 中有数据&#xff1a;需要和数据库中的相…

什么是可视化开发平台?拥有什么优势?

随着科技的进步和发展&#xff0c;可视化开发平台拥有广阔的市场前景&#xff0c;在提升企业办公企业效率、做好数据管理等方面具有自身的特色和优势。在办公自动化发展的年代&#xff0c;低代码开发平台是助力企业实现提质增效办公效率的得力助手&#xff0c;其可视化、易操作…

Windows操作系统存储管理——实存管理和虚存管理

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天总结一下Windows操作系统存储管理——实存管理和虚存管理。 存储器管理的对象是主存&#xff08;内存&#xff09;。重点是要知道实存和虚存的管理&#xff0c;而虚存管理重点是逻辑地址和物理地址间的转…

桥梁结构健康监测解决方案

城市桥梁担负着城市的交通和运输网络的重要角色&#xff0c;是城市生命线的重要组成部分。然而&#xff0c;随着时间的推移和日益增长的负荷&#xff0c;桥梁可能会受到各种因素的损害&#xff0c;如自然灾害、疲劳、腐蚀等。因此&#xff0c;桥梁结构健康监测变得至关重要&…

osg给osg::Geometry(自己绘制的几何体)添加纹理(二)

目录 1. 前言 2. 自会集合体贴纹理 2.1. 一张图贴到整个几何体 2.2. 几何体每个面贴不同的图片纹理 3. 说明 1. 前言 前文讲述了如何给osg自带的几何体&#xff0c;如&#xff1a;BOX等&#xff0c;添加纹理&#xff0c;文章参考链接如下&#xff1a; osg给osg::Geometry&…

6步带你弄懂敏捷软件开发管理

敏捷开发是一种项目管理和软件开发的迭代方法&#xff0c;可帮助团队较快地为客户创造价值&#xff0c;同时减少问题。为了获得好处&#xff0c;软件项目团队需要知道如何正确使用敏捷管理方法。 了解敏捷宣言 敏捷宣言阐述了基本的价值观&#xff0c;还详细说明了敏捷团队应…

【云计算与虚拟化】第五章—— vCenter Server 5.5 的高级功能(三)

第五章—— vCenter Server 5.5 的高级功能&#xff08;三&#xff09; 1.使用vsphere client 登陆vcenter服务器,创建一个群集&#xff0c;名称为自己的学号&#xff0c;&#xff08;截图&#xff09; 2.针对该群集打开HA功能&#xff08;截图&#xff09; 3.接入控制策略选择…

【Linux安装】从无到有!在VM虚拟机上安装Linux

系列文章目录 文章目录 系列文章目录准备工作1、Linux阿里云iso镜像: [Centos7.9.2009](http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/?spma2c6h.25603864.0.0.5ec0f5adDd8whz) 一、在虚拟机上开辟空间 这里使用VM15做安装例子&#xff0c;16也同样适用1、打开VM 点…

ORB-SLAM内的卡方检验

ORB-SLAM内的卡方检验 1. 概念2. 卡方检验的基本思想3. 卡方检测示例4. ORB-SLAM2中卡方检测剔除外点的策略4.1 示例&#xff0c;卡方检验计算置信度得分: CheckFundamental()、CheckHomography() Reference: 卡方检验(Chi-square test/Chi-Square Goodness-of-Fit Test)卡方检…

chatgpt在复杂问题的回答表现

2023年东南大学论文&#xff1a;Evaluation of ChatGPT as a Question Answering System for Answering Complex Questions 代码库已经无法访问了&#xff1a;https://github.com/tan92hl/Complex-Question-Answering- Evaluation-of-ChatGPT 1.简介 复杂问题的回答&#xff…