当前位置:首页>python>SudoSim教程4|用Python玩转SudoSim模拟

SudoSim教程4|用Python玩转SudoSim模拟

  • 2026-10-11 07:48:04
SudoSim教程4|用Python玩转SudoSim模拟

SudoSim 是一款面向颗粒力学和计算连续介质力学的高性能开源模拟平台。它的建模语言是 Python——这意味着你不需要学习新的编程语言,只需要掌握 Python 基础,就能快速上手强大的科学模拟。

Python——简洁优雅,是科学计算的完美选择


为什么 SudoSim 选择 Python?

SudoSim 采用 Python 语言进行建模,为用户提供了极其自由的建模环境。

这意味着:

  • ✅ 你可以高效编写建模脚本,快速搭建复杂的模拟场景
  • ✅ 可以无缝调用大量已有的 Python 包,如 NumPy、SciPy、Matplotlib 等
  • ✅ 学习曲线低——Python 语法简洁直观,适合科研人员快速上手

Python 基础速览

在开始模拟之前,我们先快速过一遍 Python 的核心语法。

导入模块

Python 的强大来自丰富的标准库和第三方包。导入模块只需一行:

import math

这行代码导入了 Python 内置的数学库,包含了三角函数、对数、常数值等丰富的数学运算工具。

变量与数据类型

Python 的变量不需要提前声明类型,直接赋值即可:

a = 2# 整型b = 5# 整型c = 2.0# 浮点型d = a / b    # 浮点除法e = c / b    # 浮点除法print(a, d, e)  # 打印: 2 0.4 0.4

Python 支持丰富的数值类型:

类型
示例
说明
整型 (int)
42
整数
浮点型 (float)
3.14
浮点数
字符串 (str)
"hello"
文本
布尔型 (bool)
True/False
逻辑值

💡 Python 的变量非常灵活:即便一个变量之前赋值了整数,你也可以随时重新给它赋值浮点数或字符串。

运算符

Python 提供了一组熟悉的数值运算符:

运算符
说明
示例
+
加法
3 + 5 = 8
-
减法
10 - 3 = 7
*
乘法
4 * 2 = 8
/
除法
10 / 3 = 3.33
**
幂运算
2 ** 3 = 8

字符串处理

Python 处理文本非常轻松:

a = 'abc'b = "This is a 'Python' script."print(a, b)# 输出: abc This is a 'Python' script.

双引号和单引号在 Python 中可以互换使用。如果需要包含引号,可以用不同的引号类型来嵌套。


数据结构:列表、元组与字典

Python 提供了三种核心的数据结构,用于存储和组织数据。

列表(List)

列表是有序且可修改的数据容器:

c = [1, 2, 3, 'ss']     # 创建列表c[0] = 5# 修改第一个元素:[5, 2, 3, 'ss']

⚠️ 注意:列表的索引从 0 开始。

元组(Tuple)

元组与列表类似,但初始化后不可修改:

d = (1, 2, 3, 'ss')d[0] = 5# ❌ 报错!元组不可修改

元组适合存储不希望被修改的数据,如坐标、配置参数等。

字典(Dict)

字典以 键值对 形式存储数据:

d = {1: 22, 2: 33, 4: 'ssss', 'w': 123}print(d[1], d[4], d['w'])# 输出: 22 ssss 123

字典的键可以是数字、字符串等任意不可变类型,值可以是任意类型。

创建空容器

c = list()    # 空列表d = dict()    # 空字典

在需要稍后填充数据的场景中非常有用。


流程控制:条件与循环

条件判断

if1 > 2:print("1 is greater than 2, really?")else:if2in [1, 2, 3]:print("2 is in the list")

循环

for i inrange(5):  # 等价于 [0, 1, 2, 3, 4]print(i)

结合列表和字典操作:

c.append(math.cos(i) * 10 + 2.0 ** 5)if i notin d.keys():    d[i] = str(i)

函数:封装可复用逻辑

函数让你把一组命令封装起来,方便重复使用:

defGoodJob(input_number, keyword1=1, keyword2=True):if keyword2:  # 等价于 if keyword2 == Trueprint(f"the input number is {input_number}")    input_number += keyword1return input_number# 使用函数a = GoodJob(2)             # a = 3,打印: "the input number is 3"b = GoodJob(3, keyword1=5, keyword2=False)  # b = 8,无打印

💡 提示:keyword1=1 和 keyword2=True 是默认参数,调用时可以省略,此时会使用默认值。


在 SudoSim 中的实际应用

掌握了以上 Python 基础,你已经具备了运行数值模拟所需的全部编程知识!

在实际建模中,你会频繁使用:

  • NumPy 进行数组运算和矩阵操作
  • 列表/字典 管理颗粒参数(位置、半径、材料)
  • 循环 批量生成大量颗粒
  • 函数 封装可复用的建模逻辑
  • 条件判断 实现参数化建模

下一步

这只是 Python 的入门知识。如果你想深入学习,可以探索:

  • 📖 文件读写:保存和加载模拟数据
  • 📖 面向对象编程:构建复杂的建模类
  • 📖 NumPy/SciPy:科学计算的核心库
  • 📖 Matplotlib:可视化模拟结果

SudoSim 后续教程会逐步为你呈现更多进阶内容。

准备好了吗?下一篇文章,我们将学习 SudoSim 的完整建模流程。

往期教程:

非球离散元基础理论:球簇离散元模型

非球离散元基础理论:多面体离散元模型

非球颗粒离散元模型:超椭球离散元模型(上)

非球颗粒离散元模型:超椭球离散元模型(中)

非球颗粒离散元模型:超椭球离散元模型(下)

非球颗粒离散元模型:扩展超椭球离散元模型(上)

非球颗粒离散元模型:扩展超椭球离散元模型(中)

非球颗粒离散元模型:扩展超椭球离散元模型(下)

SudoSim 系列教程|自主研发高性能多算法耦合仿真计算平台介绍

SudoSim系列教程|求解器全解析

SudoSim教程1|SudoSim安装

SudoSim教程2|SudoSimGUI界面完全解读

SudoSim教程3|SudoSim 模拟实战

最新文章

随机文章