- 博客(42)
- 收藏
- 关注
原创 【COMSOL】全流程实践与解析 Demo6-THMD热-流-固-损伤耦合
本案例建立了一个二维 THMD(热–流–固–损伤)多物理场耦合模型,用于模拟高温多孔岩体在低温流体注入条件下的渗流、传热、变形及损伤演化过程。模型采用 多孔弹性实体 + 多孔介质传热物理场,并结合稳态与瞬态研究。模型进一步建立了损伤–孔隙率–渗透率–热物性之间的动态联系,使岩石损伤能够反馈影响流体渗流和传热过程;同时考虑流体压力和温度变化对固体应力与热膨胀的影响,从而形成完整的热–流–固–损伤闭环耦合。
2026-08-31 09:00:00
171
原创 【COMSOL】全流程实践与解析 Demo5-渗流与传热耦合
本案例基于 COMSOL Multiphysics 6.4 二维模型,耦合达西定律与多孔介质传热,用于模拟含裂隙多孔介质中的流体渗流与传热过程。模型采用稳态研究,以水为流体介质,在左右边界施加压力差驱动流体流动,并设置裂隙孔径为 5 mm;同时通过温度边界条件模拟流体在多孔介质中的热传递。模型重点考虑了多孔介质基体、流体及裂隙的热物性参数,并通过总达西速度场实现流动与传热之间的耦合。网格采用物理场控制的整体划分,并对裂隙区域进行局部极细化,以提高裂隙附近流动和温度场计算的精度。最终通过结果模块提取压力、速
2026-08-28 09:00:00
342
原创 【COMSOL】全流程实践与解析 Demo4-渗流与裂隙流
该案例研究了存在裂隙的多孔介质在压力梯度作用下的流动过程。模型采用二维达西定律描述多孔介质中的稳态渗流,通过矩形与圆形几何构建带有裂隙通道的模型,并设置左右两侧压力差作为流动驱动力。在物理场中定义多孔介质及裂隙的渗透率,其中裂隙具有不同于基质的渗透能力,并对裂隙附近网格进行局部细化,以更准确地描述裂隙附近的流动变化。计算结果得到连续的压力场和具有局部变化的速度场,并通过速度箭头观察流体在基质与裂隙中的流动情况。该案例主要帮助理解压力梯度驱动渗流、基质与裂隙渗透率差异以及裂隙对多孔介质流动的影响
2026-08-26 17:34:21
215
原创 【COMSOL】全流程实践与解析 Demo3-孔隙尺度流动
该案例以二维岩石孔隙结构为研究对象,采用蠕动流模型模拟低雷诺数条件下流体在微观孔隙中的流动过程,并获得孔隙尺度的压力场和速度场。在此基础上,通过几何面积计算孔隙度,并对出口速度进行线积分,结合达西定律反算等效渗透率。随后建立宏观达西定律模型,将微观模型得到的孔隙度和渗透率作为宏观多孔介质参数,通过压力场、达西速度及出口流量与微观模型进行对比验证。该案例展示了从微观孔隙流动模拟到宏观渗流参数提取,再到宏观达西模型验证的完整建模思路,体现了微观尺度与宏观尺度之间的等效转换关系。
2026-08-26 11:14:52
235
原创 【COMSOL】全流程实践与解析 Demo2-流固耦合
本文案例通过 COMSOL 6.4 建立二维瞬态流固耦合模型,模拟随时间变化的流体流动对固体产生作用并引起固体变形,同时利用动网格描述计算域变化,最终通过流场、网格运动和位移曲线等结果分析整个动态耦合过程。
2026-08-25 09:00:00
243
原创 【COMSOL】全流程实践与解析 Demo1-隧道开挖
本文介绍了在COMSOL 6.4中建立隧道开挖模型的基本流程。通过二维案例,详细说明了从模型向导设置(选择结构力学/固体力学)、几何建模(矩形和圆形创建)、物理场配置(重力、边界条件)、塑性变形参数设定(土壤塑性、屈服准则选择)到网格划分(物理场控制与用户控制结合)的全过程。特别强调了岩土力学分析中稳态研究的重要性,以及如何通过两个物理场分别模拟开挖前、后的应力状态,其中第二个物理场需引入外部应力作为预应力。最后提及了计算设置和结果后处理中变形比例、等效应力等关键参数的调整方法。
2026-08-20 09:00:00
233
原创 【Petrel】基础教程2-构造建模全流程详细解读
本文介绍了Petrel软件在油气藏地质建模中的核心操作流程,包括:界面设置、数据导入与窗口操作技巧、构造建模关键步骤等,尤其是 角点网格构建、结构框架模型、属性建模方法。通过GR曲线分析展示了沉积相定量筛选方法,为储层三维建模提供了完整的技术路线
2026-07-13 16:36:35
414
原创 第15届蓝桥杯省赛Python研究生组-D限流器
实现了窗口统计功能,程序读取两个列表,第一个列表包含n和m两个参数,第二个列表包含一组整数。通过将每个整数除以n取整作为键值统计出现次数,最后计算每个键值出现次数与m的较小值之和并输出结果。核心算法使用字典进行分组统计,时间复杂度为O(k),其中k为不同键值数量。
2026-04-09 10:58:22
46
原创 第15届蓝桥杯省赛Python研究生组-C设置密码
本文介绍了一个密码强度判断程序的实现逻辑。程序通过一次性读取输入数据并分割处理,预定义特殊字符集合以提高查询效率。核心部分采用单次遍历检查密码字符类型(大写字母、小写字母、数字、特殊字符),同时进行合法性验证。密码强度分为三个等级:强密码(长度≥12且满足特定条件)、中密码(长度≥8且满足类型数量要求)和弱密码(其他情况)。程序通过集合操作优化特殊字符检查,使用标记变量跟踪字符类型,最后批量输出结果以提高性能。该实现注重时间复杂度的优化,适合处理大规模输入数据。
2026-04-09 09:00:00
65
原创 第十六届蓝桥杯省赛Python研究生组-F串
本文探讨了两种解决前N位二进制拼接串中1的个数统计问题的方法。方法1通过逐个拼接数字并统计1的个数,时间复杂度较高。方法2采用二分查找和数位统计:1) 使用二分定位目标数字;2) 计算完整数字的1总数;3) 统计不完整数字前offset位的1个数。核心是get_info函数,通过位运算和周期分析高效计算长度和1的个数。最终解法结合二分定位和数位统计,时间复杂度优化至O(logN)
2026-04-08 10:49:57
625
原创 第十六届蓝桥杯省赛Python研究生组-E小说
本文分析了一个逻辑推理问题,通过列举3-4人案例推导出通用公式。研究发现:当大于1时,n个人物会产生n次知道真相;和n(n-1)次发现他人知道/不知道真相的情况。最终得出计算公式2n²-3n+4,并提供了对应的Python实现代码。该解法通过具体案例归纳出一般规律,展示了从特殊到一般的数学推理过程。
2026-04-08 09:00:00
36
原创 第十六届蓝桥杯省赛Python研究生组-D最大数字
本文介绍了通过二进制字符串拼接实现最大值的排序算法,核心思路是将数字转为二进制后,使用贪心算法比较字符串拼接顺序(a+b与b+a),确保局部最优解。具体实现包括:1)二进制转换;2)自定义比较函数排序;3)拼接输出最大值。算法采用Python的cmp_to_key转换器将传统比较函数转为sort()可识别的键函数,时间复杂度为O(nlogn)。关键点在于通过两两比较确定最优拼接顺序,最终拼接结果转换为十进制输出。
2026-04-07 15:44:01
48
原创 第十六届蓝桥杯省赛Python研究生组-C变换数组
本文介绍了一个基础逻辑题的Python解法,题目要求对输入的整数列表进行多次转换,每次将每个数字乘以其二进制表示中1的个数。代码使用了基本的输入输出处理、类型转换和位运算操作,并提供了相关内置函数和字符串方法的说明。此外,还总结了Python中for循环的多种用法,包括直接遍历、结合range()、enumerate()和zip()的使用,以及列表推导式等高效编程技巧。
2026-04-07 14:48:13
630
原创 【Petrel】基础教程1-数据导入
本文主要介绍 Petrel 软件基础操作相关内容,先讲解 Input、Models、Windows、Processes 四大核心功能窗口的用途,随后说明操作流程,借助坐标系统管理器建立 Beijing_1954_GK 等常用高斯 - 克吕格投影坐标参考系;通过新建工区完成坐标系选择、米制单位与基准面等基础设置。数据导入方面,创建对应文件夹,分别导入含 MD、INCL、AZIM 等参数的井头、井轨迹、井分层、测井曲线等井数据,还导入地震解释层位与断层数据,同时规范列名、坐标等设置
2026-03-31 17:04:19
1071
1
原创 【ANSYS APDL】耦合挖孔实例
介绍了在ANSYS APDL中创建复杂几何体的操作流程。首先通过坐标系创建基本圆柱体,然后利用局部坐标系、切线连接等方法构建非圆柱体部分,实现由面到体的转换。接着重点阐述了挖孔操作步骤,包括工作平面迁移、被挖部分创建、布尔运算等关键技术。最后说明了如何通过视图调整将多个部件整合为一个完整模型
2026-01-16 10:28:40
344
原创 【ANSYS APDL】基础教程(会用就行版)
介绍了ANSYS有限元分析的基本流程和操作方法。主要内容包括:1)分析三阶段(前处理、求解、后处理)的具体步骤;2)APDL界面功能模块;3)基本建模操作;4)以悬臂梁为例演示完整分析过程,定义材料、划分网格、施加载荷、求解及结果查看。重点阐述了从几何建模到结果输出的完整工作流程
2026-01-16 10:28:06
2790
原创 【OPEN MLSYS】机器学习系统:设计和实现-基础篇
本文系统介绍了机器学习框架的核心技术与实现原理。首先阐述了机器学习的三大范式(监督、无监督、强化学习)及主流框架(TensorFlow、PyTorch等)的设计目标。重点分析了计算图技术,包括其基本构成(张量、算子)、依赖关系、控制流实现以及动静生成模式对比。详细讲解了神经网络层的实现原理与自定义方法,以及机器学习框架的编程范式。最后探讨了计算图的调度执行策略,包括算子调度、并行计算及数据载入的同步/异步机制。全文从理论基础到系统实现,全面剖析了现代机器学习框架的关键技术。
2025-12-29 16:50:58
969
1
原创 Python基础知识快速复盘
Python基础语法与数据结构学习指南,涵盖基础语法、判断语句、循环语句、函数和数据容器等内容。详细介绍了字面量、变量、运算符、字符串操作等基础概念,以及if/else条件判断和while/for循环结构。重点讲解了5种主要数据容器(列表、元组、字符串、集合、字典)的特性和操作方法,包括索引、切片、增删改查等常用功能。通过大量代码示例展示了Python编程的基本语法和数据处理技巧,适合初学者系统学习Python基础语法和数据结构知识。
2025-12-22 17:35:10
1311
原创 【Techlog】01入门-井筒数据整合软件的基本认识
Techlog是斯伦贝谢开发的井筒数据分析平台,提供地质建模、岩石力学分析等功能。本文将对软件的基本功能进行介绍,帮助初学者更快上手
2025-08-20 16:58:32
1796
原创 【深度学习】01入门-CPU版PyTorch安装及开发环境配置
Anaconda和PyTorch的安装配置流程:从官网或镜像下载Anaconda并安装,配置环境变量;然后在Anaconda Prompt中创建虚拟环境,安装CPU版PyTorch;最后连接Pycharm,通过测试代码验证安装成功
2025-08-08 09:00:00
1253
原创 【WeChatPayment】基础支付API(4)-生成订单、支付通知
而在 API 文档中,二维码有效期为 2 小时,因此在有效期内,可以在存储订单的同时把二维码地址也缓存起来,需要时直接使用,就不用重复调用 api 了。原本的下单方法中,每次生成或获取订单后都需要调用统一下单的 api,若用户频繁操作,那么 api 也会被频繁调用。而在每次生成订单后,先判断该订单二维码是否已保存,若是,则直接返回二维码,不需要再调用统一下单接口和后续操作了。该方法中的后续步骤就可以从生成的订单 orderInfo 中,获取调用统一下单 api 过程中需要的各种信息。
2025-02-25 15:37:08
916
原创 Ngrok内网穿透教程
现在的开发机器(电脑)大多是基于局域网的内网地址的,我们在开发项目时服务器不能直接通过内网地址找到我们使用的开发机器因此我们必须要做内网穿透,获取一个固定的外网地址,这样服务器就可以通过这个外网地址访问到开发机器。
2025-02-22 15:00:07
954
原创 【WeChatPayment】基础支付API V3(3)
② 前端点击确认支付后,首先会来到 controller 层的 nativePay 方法,接下来会调用 service 层的 nativePay。⑤ 在 executeWithSignature 方法中对应答进行验签,由此找到 validate 验签方法的调用位置。参数校验通过后进行初始化,第三个参数 60 表示每隔 60mins 检查是否有新的平台证书,有的话会进行下载。⑦ 回到初始化单例的证书管理器方法,初始化证书后,启动定时更新证书任务。最终其实就是由步骤(4)中的完成签名并执行请求方法调用的。
2025-02-22 10:00:00
1464
原创 【WeChatPayment】基础支付API V3(2)
(1)创建 WxPayController@Api(tags = "网站微信支付")@Slf4j(2)创建 WxPayService 接口和实现类//接口//实现类@Service@Slf4j(3)在 WxPayController 中注入 WxPayService,定义接口方法用日志对象打印日志,方便调试前端:获取商品信息,通过商品 ID 传给后端@Resource/*** Native下单* @return*/
2025-02-21 16:55:41
613
原创 【WeChatPayment】基础支付API V3(1)
1.2 在 config 目录下创建配置文件,使应用程序能从 properties 的配置文件中读取相关信息。1.4 引入注解自动处理器依赖,帮助生成自定义配置的元数据信息,让配置文件和代码之间的对应参数可以自动定位。测试完成后注释代码,并将 WxPayConfig 中的获取商户私钥方法改为私有 private 保证安全性。1.1 在 properties 配置文件中定义相关参数,包含商户号、证书等信息。在文档中查看通过平台证书验签原理,即私钥加密,公钥解密。问题:测试成功,但控制台输出的不是私钥而是
2025-02-21 12:56:10
1598
原创 VSCode创建Vue项目涉及的用户权限问题
在使用 VS Code 终端创建 Vue 项目时遇到 npm 错误代码 EPERM,通常是由于当前用户权限不足引起的。解决方法是进行用户授权,通过修改 node.js 的安装目录的安全权限来解决。具体步骤包括找到安装目录,进入安全设置,添加 Everyone 权限并替换子容器和对象的所有者权限,最终设置完全控制权限。完成这些步骤后重新在 VS Code 中创建 Vue 项目即可成功。
2025-02-12 15:58:21
418
原创 【WeChatPayment】创建项目
引入 lombok,简化实体类开发,自动生成 get/set、构造函数等方法--实体对象工具类:低版本idea需要安装lombok插件-->创建 R 对象,封装返回给前端的数据在 R 对象上使用 lombok 注解,创建静态方法方便对 R 的调用@Data //生成set、get等方法r.setMessage("成功");return r;r.setMessage("失败");return r;修改 controller 的 test 方法,返回统一结果。
2025-02-11 16:39:41
1028
原创 【WeChatPayment】支付安全
哈希函数:任意长度→固定长度(数据指纹、摘要)不可逆:只有算法没有密钥,只能加密不呢个解密,只能暴力破解发散性:原文的一点改动会使摘要发生剧烈变化(雪崩效应)抗碰撞性:原文不同摘要也不同摘要算法:MD5、SHA1、SHA2(SHA224、256、384)
2025-02-11 15:22:54
699
原创 python执行pip报错原因排查
python执行pip报错原因排查:1、无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。2、Fatal error in launcher: Unable to create process using '"D:\Work\Tool\Python\python.exe" "D:\Work\Tool\Python\Python\Scripts\pip.exe" ': ???????????
2024-06-11 17:32:56
1797
1
原创 LeetCode面试经典150题—13 分发糖果
拆分规则:将 “相邻两个孩子评分更高的孩子会获得更多的糖果” 这条规则拆分为左右两边的两条规则进行处理。左规则:从左往右遍历,当右边的孩子评分(当前遍历到的 ratings[i] )比左边高( ratings[i] > ratings[i - 1] )时,右边的孩子获得的糖果数比左边多 1 个;否则令 ratings[i] = 1右规则:与左规则同理,从右往左遍历,当左边的孩子评分(当前遍历到的 ratings[i] )比右边高( ratings[i] > ratings[i +1] )时,左边的孩
2023-10-11 21:03:12
223
1
原创 LeetCode面试经典150题—12 加油站
暴力 + 剪枝:最容易想到的暴力解法就是挨个遍历,假设下标 i 是出发时加油站的编号,变量 sum 存储当前剩余油量,从下标 j = i 开始维护更新 sum 值填坑思想:亏空最严重的一个点必须放在最后一步走,等着前面剩余的救助这个想法是在找 gas[i] - cost[i] 总和的最低点 minIndex,这个最低点就是亏空最严重的地方,那么将这个点放在最后去经过就是最安全的,即将minIndex 的下一个点作为出发点
2023-09-22 19:00:00
374
1
原创 LeetCode面试经典150题—11 除自身以外数组的乘积
左右乘积:题目中有提到 “前缀元素和后缀元素的乘积”,如果敏感的话这里就可以想到左右乘积的思路,把除自身以外的乘积拆分为左右两边乘积的乘积通过两次遍历分别维护左右两个数组 l、r,l[i] 表示下标为 i 的元素左边数字的乘积,r[i] 表示下标为 i 的元素右边数字的乘积最后一次遍历将数组左右两边的乘积再相乘
2023-09-21 13:00:00
273
原创 LeetCode面试经典150题—10 O(1)时间插入、删除和获取随机元素
题目要求保证每个函数的平均时间复杂度为 O(1),这里可以联想到用哈希表来实现添加和删除操作,具体详解见文末Hash 表拓展。这里用 List 作为变长数组存储元素,用 HashMap 作为哈希表,哈希表存储的是元素及其在 list 中对应的下标
2023-09-20 14:05:17
232
1
原创 LeetCode面试经典150题—09 H 指数
排序 从前往后:首先对数组升序排序,末尾即最大值 max,那么在该数组中 H 可能的最大值就是 max =Math.min(len, citations[len - 1])。从前往后遍历,在数组中查找大于等于 max 的最小位置,然后计算这样的数有多少个并与 max 进行比较。为什么是大于等于 max 呢?因为当得到的个数小于当前的 max 时,接下来需要使 max-- 继续查找,而此时 max 的值在数组中不一定存在
2023-09-16 16:50:05
325
1
原创 LeetCode面试经典150题—08 跳跃游戏 Ⅱ
动态规划:回顾动态规划一般解题要点:定义状态、状态转移方程、初始值、输出值本题定义数组 dp[i]:到达坐标为 i 处的最小跳跃次数、初始值:dp[0] = 0,dp[1] = 1、输出值:dp[n-1]贪心算法:在每次可跳跃边界里选择可以跳得更远的位置。定义三个变量:跳跃次数、当前跳跃次数下能到达的最远边界、当前边界实际能达到的最远位置
2023-09-15 10:00:00
225
1
原创 LeetCode面试经典150题—07 跳跃游戏
跳过 0:如果数组中没有 0,那么一定能到达最后一个下标;反之则判断是否能跳过,判断依据是看这个 0 前面的元素是否存在数值大于到 0 的距离维护最远能到达的位置:边跳边维护更新当前能到达的最远位置,能到达最后则成功,有点贪心思想
2023-09-14 13:33:14
268
1
原创 LeetCode面试经典150题—06 买卖股票的最佳时机 Ⅱ
这道题与05 买卖股票的最佳时机的区别就在于它可以多次买入卖出,这里提出动态规划和贪心算法两种解题思路
2023-09-13 13:37:59
210
原创 LeetCode面试经典150题—04 轮转数组
这道题想做出来很简单,设置成中等题应该是因为它的进阶要求:用空间复杂度为 O(1) 的算法解决。三次翻转,先整体翻转,然后以 k 为界左右两边分别翻转,就相当于右移了 k 位。额外创建新数组,遍历存放元素轮转后的结果。时间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(n)空间复杂度:O(1)
2023-09-12 11:50:51
171
原创 LeetCode面试经典150题—03 删除有序数组中的重复项 Ⅱ
删除有序数组中的重复项 Ⅱ 思路分析:HashMap、双指针、数组有序 & 保留
2023-09-11 18:10:29
285
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅