当前位置: 首页 > article >正文

说起来上周还在为怎么把PFC5.0里颗粒接触力按角度统计出来头疼,翻了好几篇教程终于摸清楚门道,今天把整个流程捋一遍,顺便把踩过的坑都标出来

pfc5.0类岩石材料在进行单轴压缩双轴压缩、直接剪切、巴西劈裂试验时数值模拟岩石颗粒各个角度的平均接触力角度输出代码及后处理绘制接触力的极坐标等高线图 具体内容见图片文件夹有具体教程很清楚不管是单轴压缩、双轴压缩、直接剪切还是巴西劈裂我们做岩石细观数值模拟的时候最终都绕不开接触力的分析——毕竟宏观的破坏、强度这些本质都是颗粒之间的接触力攒出来的。尤其是想画接触力的极坐标等高线图看看不同角度下的受力分布能帮我们快速验证模型对不对比盯着一堆数字顺眼多了。pfc5.0类岩石材料在进行单轴压缩双轴压缩、直接剪切、巴西劈裂试验时数值模拟岩石颗粒各个角度的平均接触力角度输出代码及后处理绘制接触力的极坐标等高线图 具体内容见图片文件夹有具体教程很清楚首先得明确我们要统计的角度是什么一般取接触的法向与全局坐标系x轴的夹角范围从0到2π这样画极坐标图的时候才顺。比如单轴压缩是上下压板压颗粒之间的接触法向大多在y轴方向也就是90°和270°的位置最后画出来的图这两个地方的力峰会特别明显一眼就能看出来代码没写错。第一步PFC5.0里的接触力统计代码直接上核心的Fish代码我把注释写得尽量直白省得大家像我一样对着手册抠字眼; 初始化统计数组按2度一个区间分180份要更细的话可以改成360份 array avg_contact_force[180] array contact_cnt[180] ; 遍历所有颗粒接触跳过墙和颗粒的接触避免压板数据干扰 loop over all c in contacts ; 跳过墙接触只统计颗粒-颗粒的接触 if c.prop1.type wall or c.prop2.type wall then continue end ; 获取接触的法向力这里我们先统计法向接触力需要总力的话后面改就行 set fn c.normal_force ; 计算两个接触颗粒的位置差得到接触法向的向量 set dx c.pos2.x - c.pos1.x set dy c.pos2.y - c.pos1.y ; 用atan2算角度注意参数顺序是dy, dx搞反了会直接转90度我一开始就踩过这个坑 set theta atan2(dy, dx) ; 把角度转到0~2π的范围避免出现负数 if theta 0 then set theta theta 2*pi end ; 把弧度角度转成数组索引0~2π对应0~179 set idx int(theta / (2*pi) * 180) ; 累加对应角度的接触力和计数 set avg_contact_force[idx] avg_contact_force[idx] fn set contact_cnt[idx] contact_cnt[idx] 1 end_loop ; 计算每个角度的平均接触力避免除以0报错 loop i from 0 to 179 if contact_cnt[i] 0 then avg_contact_force[i] avg_contact_force[i] / contact_cnt[i] else avg_contact_force[i] 0 end end_loop ; 导出数据到txt方便后面Python画图 open write contact_force_angle.txt loop i from 0 to 179 ; 第一列是角度弧度第二列是平均法向接触力 write i*(2*pi/180) , avg_contact_force[i] end_loop close write这里要划几个重点atan2的参数顺序一定是dy在前dx在后不然算出来的角度会反过来我第一次跑出来的图直接把力峰转到了x轴方向尴尬到抠脚。跳过墙接触一开始我没加这个判断结果画出来的图全是压板和颗粒的接触力根本看不到颗粒内部的分布加了判断之后就正常了。统计力的类型这里我用的是法向力要是你想统计总接触力法向切向把fn c.normalforce改成set totalfn sqrt(c.normalforce^2 c.shearforce^2)就行。第二步用Python画极坐标等高线图PFC自带的绘图工具画极坐标图特别拉胯还是导出数据用Python画灵活得多直接上代码import numpy as np import matplotlib.pyplot as plt # 读取PFC导出的txt数据第一列是弧度角度第二列是平均接触力 theta, avg_force np.loadtxt(contact_force_angle.txt, unpackTrue) # 把数据首尾拼接让极坐标图闭合 theta np.append(theta, theta[0]) r np.append(avg_force, avg_force[0]) # 插值成更密的网格让等高线更平滑这里转成360个点每1度一个 theta_grid np.linspace(0, 2*np.pi, 360) r_grid np.interp(theta_grid, theta, r) # 生成径向的网格轴从0到最大力的1.2倍 r_axis np.linspace(0, np.max(r_grid)*1.2, 50) # 生成二维网格用于画等高线 Theta, R np.meshgrid(theta_grid, r_axis) Z np.tile(r_grid, (len(r_axis), 1)) # 开始绘图调整一下细节避免踩坑 fig plt.figure(figsize(8,8)) ax fig.add_subplot(111, polarTrue) # 用百分位数切掉最高5%的大值避免颜色被少数点拉偏 v_max np.percentile(Z, 95) contour ax.contourf(Theta, R, Z, cmapviridis, levels20, vmaxv_max) # 加颜色条和标签 plt.colorbar(contour, pad0.1, labelAverage Normal Contact Force) # 设置角度刻度改成中文标签更直观 ax.set_xticks(np.pi/4 * np.arange(8)) ax.set_xticklabels([0°, 45°, 90°, 135°, 180°, 225°, 270°, 315°]) # 设置标题调整位置避免被颜色条挡住 ax.set_title(PFC岩石试验接触力极坐标等高线图, y1.1, fontsize12) # 保存图片分辨率拉满 plt.savefig(contact_polar_contour.png, dpi300, bbox_inchestight) plt.show()这里的小技巧用np.percentile(Z, 95)限制颜色轴的上限不然如果有个别接触力特别大的点大部分区域都会变成蓝色看不到细节。把xtick的标签改成中文看起来更顺眼毕竟我们写博文还是要给国内的同学看。不同试验的结果对比我上周跑了几个模型大概说一下不同试验对应的图是什么样的单轴压缩力峰主要集中在90°和270°也就是y轴方向和宏观的轴向受压对应得上非常直观。双轴压缩如果围压是x方向的那x轴方向的接触力会明显比其他方向高围压越高各个角度的力分布越均匀。直接剪切剪切面一般是水平的所以力峰会集中在0°和180°的位置和剪切方向对应。巴西劈裂加载点在上下两侧所以接触力的峰值会在径向方向也就是从加载点向外扩散的角度范围。要是你手里有教程里的示例图片照着里面的模型参数改一下就能得到对应的图比瞎调参数快多了。最后再说一句这个流程其实通用性很强不光是岩石材料只要是PFC的颗粒模型都可以用这个代码统计接触力的角度分布反正我现在做细观分析的时候第一步都是先跑这个代码看看力的分布确认模型没跑偏再继续往下做。

相关文章:

说起来上周还在为怎么把PFC5.0里颗粒接触力按角度统计出来头疼,翻了好几篇教程终于摸清楚门道,今天把整个流程捋一遍,顺便把踩过的坑都标出来

pfc5.0类岩石材料在进行单轴压缩,双轴压缩、直接剪切、巴西劈裂试验时,数值模拟岩石颗粒各个角度的平均接触力,角度输出代码及后处理绘制接触力的极坐标等高线图 具体内容见图片文件夹,有具体教程,很清楚 不管是单轴压…...

单片机裸机编程的系统化工程实践

单片机裸机编程的系统化工程实践1. 裸机编程概念解析1.1 裸机编程的本质特征裸机编程(Bare-metal Programming)是指在无操作系统支持的硬件环境下直接编写控制程序的技术实践。在嵌入式系统领域特指基于单片机硬件平台的直接编程方法,其核心特征包括:直接…...

EasyAnimateV5图生视频模型:VMware环境搭建与中文提示词实战

EasyAnimateV5图生视频模型:VMware环境搭建与中文提示词实战 1. 为什么选择EasyAnimateV5进行图生视频创作 在当今内容创作领域,视频内容的需求呈现爆发式增长。EasyAnimateV5-7b-zh-InP作为一款专注于图生视频任务的AI模型,为创作者提供了…...

一文读懂 PageQueryUtil:分页查询的优雅打开方式

适用人群&#xff1a;Java 开发者&#xff0c;想了解函数式编程在实际项目中的应用 前置知识&#xff1a;了解 Java 8 Lambda 表达式基础一、先来看一个实际场景场景&#xff1a;同步 10000 条债券数据到接口平台传统做法&#xff1a;Java// 一次性查询所有数据List<BondQuo…...

GetQzonehistory完整教程:三步轻松备份QQ空间所有历史说说

GetQzonehistory完整教程&#xff1a;三步轻松备份QQ空间所有历史说说 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否担心QQ空间中的珍贵回忆随着时间流逝而消失&#xff1f;Get…...

daily_stock_analysis多语言支持开发实战

daily_stock_analysis多语言支持开发实战 1. 引言 想象一下这样的场景&#xff1a;一位香港投资者收到了一份全英文的股票分析报告&#xff0c;虽然内容专业但阅读起来颇为吃力&#xff1b;一位内地用户看到繁体中文的分析结果&#xff0c;需要额外时间理解&#xff1b;而一位…...

开源项目的依赖管理:平衡兼容性与扩展性的艺术

开源项目的依赖管理&#xff1a;平衡兼容性与扩展性的艺术 【免费下载链接】IPED IPED Digital Forensic Tool. It is an open source software that can be used to process and analyze digital evidence, often seized at crime scenes by law enforcement or in a corporat…...

OpenRGB终极指南:一站式跨平台RGB设备控制解决方案

OpenRGB终极指南&#xff1a;一站式跨平台RGB设备控制解决方案 【免费下载链接】OpenRGB Open source RGB lighting control that doesnt depend on manufacturer software. Supports Windows, Linux, MacOS. Mirror of https://gitlab.com/CalcProgrammer1/OpenRGB. Releases …...

ChatGPT合租架构设计与实现:高可用代理服务的技术解析

ChatGPT合租架构设计与实现&#xff1a;高可用代理服务的技术解析 作为一名开发者&#xff0c;我最近在项目中频繁使用ChatGPT API&#xff0c;虽然效果惊艳&#xff0c;但账单也着实让人心疼。更头疼的是&#xff0c;官方对单个账户的请求速率和月度配额都有严格限制&#xf…...

C语言完美演绎5-6

/* 范例&#xff1a;5-6 */#include <stdio.h>void main(void){int a;a2; /* 将整数2赋予给变量a&#xff0c;变量a的类型与整数2一样*/printf("a%d\n",a);a6.83; /* 将浮点数6.83重新赋予给变量a&#xff0c;浮点数6.83可以自动转型为int并赋予给变量a …...

PyTorch 2.8镜像入门必看:RTX 4090D显存24G下8bit量化加载Llama3-70B方法

PyTorch 2.8镜像入门必看&#xff1a;RTX 4090D显存24G下8bit量化加载Llama3-70B方法 1. 环境准备与快速验证 在开始之前&#xff0c;让我们先确认你的环境已经准备就绪。这个PyTorch 2.8镜像已经针对RTX 4090D显卡进行了深度优化&#xff0c;预装了所有必要的组件。 1.1 环…...

Antd Upload组件文件上传前校验与拦截实战:从阻止默认请求到实现自定义上传逻辑

Antd Upload组件文件上传前校验与拦截实战&#xff1a;从阻止默认请求到实现自定义上传逻辑 在当今前端开发中&#xff0c;文件上传功能几乎是每个Web应用都绕不开的核心需求。而Ant Design作为企业级React UI库&#xff0c;其Upload组件凭借丰富的功能和优雅的API设计&#xf…...

从Noise2Noise到Noise2Void:无监督图像去噪技术的演进与实践

1. 无监督图像去噪的困境与突破 想象你手上有张老照片&#xff0c;布满了岁月留下的噪点&#xff0c;但原始底片早已遗失。传统图像去噪方法就像个需要参考答案的学生——必须同时看到"噪点版"和"干净版"的成对图像才能学会去噪。这种监督学习范式在2018年…...

Qwen3-1.7B部署案例分享:中小企业无需专业AI团队,30分钟上线语音转录SaaS服务

Qwen3-1.7B部署案例分享&#xff1a;中小企业无需专业AI团队&#xff0c;30分钟上线语音转录SaaS服务 1. 引言&#xff1a;当语音转录不再是技术难题 想象一下这个场景&#xff1a;你是一家小型律所的负责人&#xff0c;每天需要处理大量的会议录音、客户访谈和庭审记录。过去…...

如何突破AI音频处理瓶颈?开源工具让音质提升30%的秘密

如何突破AI音频处理瓶颈&#xff1f;开源工具让音质提升30%的秘密 【免费下载链接】so-vits-svc SoftVC VITS Singing Voice Conversion 项目地址: https://gitcode.com/gh_mirrors/so/so-vits-svc 在直播、音乐制作和语音交互等场景中&#xff0c;音频质量直接影响用户…...

OpenClaw+GLM-4.7-Flash:个人健康数据追踪

OpenClawGLM-4.7-Flash&#xff1a;个人健康数据追踪 1. 为什么选择这个技术组合 去年体检报告上的几项异常指标让我开始关注健康数据追踪。试过各种健康类App后&#xff0c;发现它们要么数据封闭&#xff0c;要么分析流于表面。直到偶然将OpenClaw与GLM-4.7-Flash结合使用&a…...

AI 辅助开发实战:高效完成自动化专业毕业设计的工程化路径

最近在帮学弟学妹们看自动化专业的毕业设计&#xff0c;发现大家普遍被几个问题困扰&#xff1a;时间紧、任务重&#xff0c;软硬件一结合就出各种玄学问题&#xff0c;算法调参调到怀疑人生。传统的开发方式&#xff0c;从查资料、写代码到调试&#xff0c;周期拉得很长&#…...

curl详细使用方法

curl -X POST -d "whatflag" http://171.80.2.169:19534&#x1f3af; 这道题的核心原理&#xff1a;HTTP POST 传参 后端条件判断1. 题目到底在干什么&#xff1f;题目页面写着&#xff1a;“什么也没有。”这是后端代码故意写的&#xff1a;正常访问&#xff08;G…...

Porymap:让宝可梦地图编辑效率提升300%的跨平台工具

Porymap&#xff1a;让宝可梦地图编辑效率提升300%的跨平台工具 【免费下载链接】porymap Map editor for pokeemerald, pokefirered, and pokeruby 项目地址: https://gitcode.com/gh_mirrors/po/porymap 功能概述&#xff1a;重新定义宝可梦地图创作体验 作为专为第三…...

BitNet 1-bit大语言模型CPU端高效推理实战指南

BitNet 1-bit大语言模型CPU端高效推理实战指南 【免费下载链接】BitNet 1-bit LLM 高效推理框架&#xff0c;支持 CPU 端快速运行。 项目地址: https://gitcode.com/GitHub_Trending/bitne/BitNet BitNet 1-bit大语言模型推理框架是微软官方推出的革命性低比特推理解决方…...

告别职场年龄焦虑:大龄职场人如何借网络安全赛道实现逆袭

告别职场年龄焦虑&#xff1a;大龄职场人如何借网络安全赛道实现逆袭 职场人如何借网络安全赛道实现逆袭告别职场年龄焦虑 //前言// 今天&#xff0c;我们来聊聊每个职场人都可能面对的痛点 —— 年龄焦虑。最近后台收到不少读者留言&#xff0c;有人感慨 35 岁后求职屡屡碰…...

Laravel迁移配置实战指南:从数据库结构到迁移文件的自定义策略

Laravel迁移配置实战指南&#xff1a;从数据库结构到迁移文件的自定义策略 【免费下载链接】migrations-generator Laravel Migrations Generator: Automatically generate your migrations from an existing database schema. 项目地址: https://gitcode.com/gh_mirrors/mi/…...

ComfyUI工作流概念启发:可视化编排春联生成提示词

ComfyUI工作流概念启发&#xff1a;可视化编排春联生成提示词 春节快到了&#xff0c;想用AI写一副别出心裁的春联&#xff0c;却发现生成的要么太普通&#xff0c;要么对不上联&#xff0c;要么文采不够&#xff1f;别急&#xff0c;今天我们不聊复杂的模型部署&#xff0c;而…...

PyTorch 2.8镜像惊艳效果展示:FlashAttention-2加速下文生视频生成实拍

PyTorch 2.8镜像惊艳效果展示&#xff1a;FlashAttention-2加速下文生视频生成实拍 1. 开篇&#xff1a;专业级视频生成环境 当我们需要处理视频生成这类计算密集型任务时&#xff0c;一个优化到位的深度学习环境能带来质的飞跃。今天要展示的PyTorch 2.8镜像&#xff0c;就是…...

如何用Chinese-STD-GB-T-7714-related-csl解决学术论文参考文献格式难题

如何用Chinese-STD-GB-T-7714-related-csl解决学术论文参考文献格式难题 【免费下载链接】Chinese-STD-GB-T-7714-related-csl GB/T 7714相关的csl以及Zotero使用技巧及教程。 项目地址: https://gitcode.com/gh_mirrors/chi/Chinese-STD-GB-T-7714-related-csl Chinese…...

从0到1掌握KubeRay:架构解析与实战

从0到1掌握KubeRay&#xff1a;架构解析与实战 【免费下载链接】kuberay A toolkit to run Ray applications on Kubernetes 项目地址: https://gitcode.com/GitHub_Trending/ku/kuberay KubeRay作为在Kubernetes上运行Ray应用的核心工具包&#xff0c;解决了分布式计算…...

Type-C有线网卡转接方案:RTL8153B与AX88179芯片如何实现手机千兆稳定联网与百瓦快充

1. 为什么需要Type-C有线网卡转接方案 现在很多手机、平板和Switch游戏机都取消了传统的RJ45网口&#xff0c;只保留Type-C接口。虽然WiFi很方便&#xff0c;但在需要稳定高速网络的时候&#xff0c;有线连接依然是更好的选择。比如我在玩在线游戏时&#xff0c;经常遇到WiFi延…...

Springboot旅游民宿订购平台vue3

目录技术栈选择系统模块划分接口设计规范前端工程结构开发里程碑部署方案性能优化措施项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作技术栈选择 后端采用Spring Boot框架&#xff0c;提供RESTful API接口&#xff0c;处理业务…...

Trae 远程开发使用密钥时SSH权限被拒绝

如果同环境下 VSCode、PyCharm 都能正常 SSH 连接&#xff0c;唯独 Trae 报公钥认证失败。可以参考以下的解决方案&#xff1a; &#xff08;SSH 权限被拒绝&#xff1a;Public key authentication failed, please check your SSH keys&#xff09;步骤 1&#xff1a;把.ppk 密…...

Teriteri后端开发指南:如何用SpringBoot构建完整的视频网站平台

Teriteri后端开发指南&#xff1a;如何用SpringBoot构建完整的视频网站平台 【免费下载链接】teriteri-backend 一个基于 springboot mybatis-plus 搭建的视频网站平台后端 项目地址: https://gitcode.com/gh_mirrors/te/teriteri-backend Teriteri是一个基于SpringBoo…...