三轴和直剪

news2025/1/23 9:19:46

目录

常规三轴

成样

预压

围压加载

二维直剪

成样

预压

围压加载


常规三轴


成样


cylinder keyword ...(3D ONLY)

Generate a cylinder in 3D. If the name keyword has not been specified, then s = cylinderWall. By default, the cylinder is closed and each side of the cylinder is a separate wall. In this case, the wall name is concatenated with the wall side name (e.g., top, bottom, or side) and the wall ID. For instance, if s = fred, the name of the top wall is fredTopXX, where XX is the wall ID. A unique ID, starting with id, is assigned to each wall. Use the one-wall keyword to specify that all cylinder sides belong to a single wall.

        cap bbottom <btop >

        Indicate the inclusion status of the end caps. If one boolean is specified, then this state         is given to both end caps. If two booleans are specified, then the first one applies to         the bottom cap and the second to the top cap. By default, both caps are created.

new
def par
    sampleRadius=0.08  
    height=sampleRadius*4
    
    rdmin=0.006
    rdmax=0.009
    
    poro=0.12
end
@par

domain extent [-sampleRadius*2.0] [sampleRadius*2.0] ...
        [-sampleRadius*2.0] [sampleRadius*2.0]  ...
        [-height*2.0] [height*2.0]
set random 10001

wall generate cylinder base 0 0 [-height*0.5*1.2] axis 0 0 1 ...
        radius [sampleRadius] height [height*1.2] cap false false  
;生成空心圆筒,base指底部位置
wall generate plane position 0 0 [height*0.5] ddir 0 dip 0 ;倾角
wall generate plane position 0 0 [-height*0.5] ddir 0 dip 0
ball distribute porosity @poro radius [rdmin] [rdmax] range cylinder ...
        end1 0 0 [-height*0.5+rdmin] end2 0 0 [height*0.5-rdmin] radius [sampleRadius-rdmin]
;把半径缩小一点,防止颗粒生成在wall上
        
        
ball attribute density 2e3 damp 0.7
cmat default model linear method deform emod 100e6 kratio 1.5
cycle 2000 calm 50
ball delete range cylinder ...
        end1 0 0 [-height*0.5] end2 0 0 [height*0.5] radius [sampleRadius] not
;删除wall之外的颗粒
wall property fric 0.2   
ball property fric 0.5
solve
save sample

预压


        二维改三维

restore sample

[trr=1e4]
[tzz=1e4]
[do_rSevro=true]
[do_zServo=true]  ;给出径向和法向伺服的开关
[servo_factor=0.5]
[vpOnWall = wall.vertex.find(1)]
[wp=wall.find(1)]
def wallinit
    wpCe=wall.find(1)
    wpUp=wall.find(2)
    wpDown=wall.find(3)
end
@wallinit
def calChiCun
    pos_xy=vector(wall.vertex.pos.x(vpOnWall),wall.vertex.pos.y(vpOnWall),0)
    wlr=math.mag(pos_xy)  ;计算圆环的半径
    wlz=wall.pos.z(wpUp)-wall.pos.z(wpDown)
end

def calStress
    calChiCun
    sumForce=0
    loop foreach ct wall.contactmap(wpCe)    
        sumForce+=contact.force.normal(ct) ;得到侧向应力
    endloop
    wsrr=sumForce/(2*math.pi*wlr*wlz)
    wzss=(-1)*0.5*(wall.force.contact.z(wpdown)-wall.force.contact.z(wpup))/(math.pi*wlr*wlr)
end

def getg
    zongKNR=100e6*2.0
    zongKNZ=100e6*2.0
    loop foreach ct wall.contactmap(wpCe)
        zongKNR+=contact.prop(ct,"kn")
    endloop
    loop foreach ct wall.contactmap(wpup)
        zongKNZ+=contact.prop(ct,"kn")
    endloop
    loop foreach ct wall.contactmap(wpdown)
        zongKNZ+=contact.prop(ct,"kn")
    endloop
    gz=1.0*servo_factor*math.pi*wlr*wlr/(zongKNZ*global.timestep)  
    gr=1.0*servo_factor*2*math.pi*wlr*wlz/(zongKNR*global.timestep)  
end

[sevro_freq=100]
[time_record=global.step-1]
def sevro_wall
    calStress
    if global.step>time_record then
        getg
        time_record=global.step+sevro_freq
    endif
    if do_rSevro =true then 
        rvel=gr*(wsrr-trr)    
        loop foreach vt wall.vertexlist(wpCe)
            pos_xy=vector(wall.vertex.pos.x(vt),wall.vertex.pos.y(vt),0)    
            direct=math.unit(pos_xy)
            vel_vector=direct*rvel
            wall.vertex.vel(vt)=vel_vector
        endloop 
    endif
    
    if do_zServo=true then
        zvel=gz*math.abs(math.abs(wzss)-tzz)
        if math.abs(wzss)<tzz then
            wall.vel.z(wpup)=-zvel
            wall.vel.z(wpdown)=zvel
        else
            wall.vel.z(wpup)=zvel
            wall.vel.z(wpdown)=-zvel
        endif 
    endif
end

set fish callback -1.0 @sevro_wall

history id 1 @wsrr
history id 2 @wzss
cycle 1
solve

save yuya

围压加载


加载围压

restore yuya

[trr=1e5]
[tzz=1e5]

cycle 1
solve
save weiya

试样加载

restore weiya
[do_zServo=false]  ;关上轴向伺服
ball attribute displacement multiply 0
[strainRate=1e-2]
wall attribute zvel [strainRate*wlz] range id 3
wall attribute zvel [-strainRate*wlz] range id 2

[Iz0=wlz]
[Ir0=wlr]
def computer_strain
    wlz=wall.pos.z(wpup)-wall.pos.z(wpdown)
    wezz=(Iz0-wlz)/Iz0
    werr=(Ir0-wlr)/Ir0
    wevol=wezz+werr+werr ;监测应变
end
set fish callback -1.0 @computer_strain
history delete 
history id 1 @wsrr
history id 2 @wzss
history id 3 @wezz
history id 4 @werr
history id 5 @wevol

[stop_me=0]
def stop_me
    if wezz>0.2 then
        stop_me=1
    endif
end
solve fishhalt @stop_me

二维直剪


成样


加载板发生改变,对应代码也需要重新编写。

​​​​​​

 

new
def par
    width=0.9
    height=width*0.5
    
    rdmin=0.006
    rdmax=0.009
    
    poro=0.12
end
@par

domain extent [-width*2.0] [width*2.0] ...
        [-height*2.0] [height*2.0]
set random 10001

[scale=1.5]  ;用来增加盒子的高度
wall generate id 1 box [-width*0.5*2.0] [-width*0.5]  ...
            0 [height*0.5*scale] onewall
            
wall generate id 2 box  [width*0.5] [width*0.5*2.0] ...
            0 [height*0.5*scale] onewall
            
wall generate id 3 box [-width*0.5*2.0] [-width*0.5]  ...
             [-height*0.5*scale] 0 onewall
            
wall generate id 4 box  [width*0.5] [width*0.5*2.0] ...
             [-height*0.5*scale] 0 onewall
             
wall generate id 5 box  [-width*0.5] [width*0.5] ...
             [height*0.5] [height*0.5*scale]  onewall
;生成上加载板
wall generate id 6 box  [-width*0.5] [width*0.5] ...
             [-height*0.5*scale] [-height*0.5]  onewall
;生成下加载板

ball distribute porosity @poro radius [rdmin] [rdmax] box ...
    [-width*0.5] [width*0.5] [-height*0.5] [height*0.5] 
ball attribute density 2e3 damp 0.7
cmat default model linear method deform emod 100e6 kratio 1.5
cycle 2000 calm 50
ball property fric 0.5
solve
save sample
; 

预压


只需要在轴向进行预压即可 

restore sample

[tyy=1e4]
def wall_ini
    wpup=wall.find(5)
    wpdown=wall.find(6)
    wpleftUp=wall.find(1)
    wpRightUp=wall.find(2)
    wpleftDown=wall.find(3)
    wpRightDown=wall.find(4)
end
;定义不同的wall
@wall_ini

def computer_stress
    wyss=0.5*(wall.force.contact.y(wpdown)-wall.force.contact.y(wpup))/width
end
;只用保留y向应力

[servo_factor=0.8]
def get_g

    zongKNY=100e6*2.0
    loop foreach ct wall.contactmap(wpup)
        zongKNY+=contact.prop(ct,"kn")
    endloop
    loop foreach ct wall.contactmap(wpdown)
        zongKNY+=contact.prop(ct,"kn")
    endloop
    
    
    gy=1.0*servo_factor*width/(zongKNY*global.timestep)  
end

[sevro_freq=100]
[time_record=global.step-1]
def sevro_walls
    computer_stress
    if global.step>time_record then
        get_g
        time_record=global.step+sevro_freq
    endif    
    yvel=gy*math.abs(math.abs(wyss)-tyy)
    if math.abs(wyss)<tyy then
        wall.vel.y(wpup)=-yvel
        wall.vel.y(wpdown)=yvel
    else
        wall.vel.y(wpup)=yvel
        wall.vel.y(wpdown)=-yvel
    endif  
   
end

set fish callback -1.0 @sevro_walls 
history id 1 @wyss
cycle 10
solve
save yuya

围压加载


restore yuya

[tyy=1e5]

cycle 1
solve
save weiya
restore weiya

set mech age 0
ball attribute displacement multiply 0
[strainRate=1e-3]
wall attribute xvel [strainRate*width] range id 1
wall attribute xvel [strainRate*width] range id 2
wall attribute xvel [strainRate*width] range id 5
;对上方的墙体施加x方向的速度

def jiance
    whilestepping
    weiyi=strainRate*width*mech.age
    wexx=weiyi/width
    wsxx=0
    wsxx+=wall.force.contact.x(wpup)
    wsxx+=wall.force.contact.x(wpleftUp)
    wsxx+=wall.force.contact.x(wpRightUp)
    wsxx=wsxx/(width-weiyi) ;求解应力和位移
end
history delete 
history id 1 @wsxx
history id 2 @weiyi
history id 3 @wexx

[stop_me=0]
def stop_me
    if weyy>0.2 then
        stop_me=1
    endif
end
solve fishhalt @stop_me

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

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

相关文章

HTTP协议(二)/HTTPS

HTTPS是啥 https是在http协议的基础上&#xff0c;加上了数据的加密解密层&#xff0c;即TLS/SSL。在进行http请求的时候&#xff0c;通过TLS/SSL进行加密&#xff0c;在响应的时候&#xff0c;也会通过TLS/SSL进行解密。加密解密层TLS/SSL不会对下三层加密解密&#xff0c;而…

【27】核心易中期刊推荐——计算机工程与技术

🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…

[ 云计算 华为云 ] 华为云开天 aPaaS:构建高效的企业数字化平台(下)

文章目录 前言四、华为云开天aPaaS 核心功能4.1 业务模型管理4.2 连接器4.2.1 连接器的种类4.2.1.1 公共连接器4.2.1.2 私有连接器 4.2.2连接器的开发步骤 4.3 自动化流4.3.1 自动化流介绍4.3.2 自动化流日志监控 4.4 自定义逻辑处理4.5 分享连接器和流模板 五、aPaaS 的应用实…

关于C/C++语言重复包含头文件,编译时报错已定义的宏未定义的原因及解决方法

在编写一个文件较多的单片机程序时&#xff0c;为了在一个文件中定义的变量或宏能被另一个文件使用&#xff0c;经常会写成在多个头文件相互包含&#xff0c;由此将可能会导致明明已经定义的宏&#xff0c;且已经将宏所在的文件使用 #include 包含&#xff0c;编译时仍会报错未…

自学大语言模型的应用程序框架Langchain(初入门)

现阶段chatGPT非常火热。带动了第三方开源库&#xff1a;LangChain火热。它是一个在大语言模型基础上实现联网搜索并给出回答、总结 PDF 文档、基于某个 Youtube 视频进行问答等等的功能的应用程序。 什么是Langchain LangChain 是一个用于开发由语言模型驱动的应用程序的框架…

Vue 3.3 浪客剑心

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: 三十天精通 Vue 3 文章目录 特征弃用一、 < s c r i p t s e t u p > <script setup…

【啃书C++Primer5】-编写一个简单C++程序

每个C程序都包含一个或多个函数(function)&#xff0c;其中一个必须命名为main。操作系统通过调用main来运行C程序。下面是一个非常简单的main函数&#xff0c;它什么也不干&#xff0c;只是返回给操作系统一个值: int main() {return 0; }一个函数的定义包含四部分:返回类型(r…

【讨论话题】 工作中应不应该出于好心,帮助同事完成不属于你职责范围内的问题?

前言 职场如战场&#xff0c;职场中经常有一种好心帮忙反而成了义务的乱相存在。我们要做一个好人&#xff0c;同事要防备一些坏人。 勿以善小而不为&#xff0c;勿以恶小而为之 文章目录 前言社群内部讨论社群内部讨论总结师父的回答如何优雅的说不总结 社群内部讨论 先来看…

声音合成——Foley Sound——DECASE项目——多模态智能感知与应用——代码实现(6)

文章目录 概述encoder的编写过程代码编写运行结果问题总结 decoder的编写过程知识补充关于逆卷积 代码编写运行结果总结 Autoencoder模型编写 compile方法 train方法 保存和加载模型模块编写实现代码——autoencoder代码实现代码——train代码实现代码——保存和加载模型的代…

GPT-4最强竞品迎来重磅升级:一次10万token,百页资料一分钟总结完毕

夕小瑶科技说 分享 来源 | 量子位 作者 | 丰色 萧箫 号称ChatGPT“最强竞争对手”的Claude&#xff0c;今天迎来史诗级更新—— 模型记忆力原地起飞&#xff0c;现在1分钟看完一本数万字的小说&#xff0c;已经不在话下。 消息一出&#xff0c;评论区直接炸了&#xff0c;网友…

HTTP第九讲——你能写出正确的网址吗?

应该用什么来标记服务器上的资源呢&#xff1f;怎么区分“这个”资源和“那个”资源呢&#xff1f; 用的是 URI&#xff0c;也就是统一资源标识符&#xff08;Uniform Resource Identifier&#xff09;。因为它经常出现在浏览器的地址栏里&#xff0c;所以俗称为“网络地址”&a…

猫妹人生中的第一张Python证书长这样(1)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 欢迎和猫妹一起&#xff0c;快乐学习&#xff0c;茁壮成长&#xff01; 猫妹和她的朋友们 猫妹和她的朋友们有两层含义。 一是新的合集名称&#xff0c;在这个合集里面&am…

redis从零开始(3)----基本类型hyperloglog/geo/stream

接上文 redis基本类型 HyperLogLog 简介 HyperLogLog是用于「统计基数」的数据集合类型&#xff0c;基数统计就是指统计一个集合中不重复的元素个数&#xff0c; 但是准确率不是百分百&#xff0c;即他可以提供不精确的去重计数。HyperLogLog 的优点是&#xff0c;在输入元素…

.Net平台下OpenGL绘制图形(1)(VS2019,Winform,C#)

1、介绍 OpenGL&#xff08;英语&#xff1a;Open Graphics Library&#xff0c;译名&#xff1a;开放图形库或者“开放式图形库”&#xff09;是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口&#xff08;API&#xff09;。这个接口由近350个不同的函数调用组成…

【图解KMP算法】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 找出字符串中第一个匹配项的下标 1.什么是KMP…

Windows 下 VMware 虚拟机的 vmdk 文件的压缩

在 Windows 下玩虚拟机&#xff0c;一般大家都会安装 VMware 软件&#xff0c;然后通过软件安装其它操作系统环境&#xff08;如 Linux&#xff09;来模拟各个服务器环境。然而大家在使用过程中可以发现这样一个问题&#xff0c;那就是每个操作系统对应主机磁盘目录中&#xff…

与小我11岁的人一次PK

基本情况 时间过得很快&#xff0c;如同流水一般。 我的同事F已经离职一段时间了&#xff0c;怎么说呢&#xff1f; 公司领导的想让我们进行PK,谁是胜利者&#xff0c;谁留下&#xff0c;这的确与别的公司不同&#xff0c;别的公司通过面试&#xff0c;公司领导感觉那样不足体…

STC15单片机+nRF24L01硬件SPI通讯

STC15单片机+nRF24L01硬件SPI通讯 📍相关篇《STC15单片机+nRF24L01通讯利用PCA输入捕获触发》🔖验证对象:STC15L2K60S2📍STC15L2K60S2自制系统板硬件开源地址:https://oshwhub.com/perseverance51/stc15l2k60s2-ji-tong-ban⏱时钟频率:11.0592MHz🌼NRF24L01模块以及…

C#串口通信从入门到精通(11)——串口接收的数据存储到本地文件(txt、csv)

文章目录 前言一、将数据以CSV格式进行存储二、将数据以TXT格式进行存储三、全部代码前言 我们在串口通信程序开发中经常需要将串口接收到的数据存储到本地电脑,本文就来介绍如何在串口通信中将数据进行存储 一、将数据以CSV格式进行存储 我们将软件选择为csv文件存储,如下…

搭建React Native开发环境

1.安装node node.js官网 需要确定自己安装的版本是否是12版本以上 node -v 2.安装yarn npm install -g yarn 3.安装 Android Studio 这是官网推荐的安装地址: android studio 国内用户可能无法打开官方链接&#xff0c;请自行使用搜索引擎搜索可用的下载链接。安装界面中选…