edem 通过导出颗粒的位置坐标 和ID、接触数获得颗粒团形貌的代码
时间: 2023-06-25 11:08:17 浏览: 879
以下是一个简单的例子,演示如何使用edem导出的颗粒位置坐标和ID信息以及接触数数据来生成颗粒团形貌:
```python
import numpy as np
import matplotlib.pyplot as plt
# 加载颗粒位置和ID信息
data = np.loadtxt('particle_positions.txt', skiprows=1)
positions = data[:, 1:4]
ids = data[:, 0].astype(int)
# 加载接触数据
contacts = np.loadtxt('contact_data.txt', skiprows=1)
num_contacts = contacts[:, 2]
# 将颗粒按ID排序
sorted_indices = np.argsort(ids)
positions = positions[sorted_indices]
num_contacts = num_contacts[sorted_indices]
# 根据接触数设置颜色
colors = np.zeros((len(ids), 3))
max_contacts = np.max(num_contacts)
for i, n in enumerate(num_contacts):
colors[i] = plt.cm.viridis(n / max_contacts)[:3]
# 绘制颗粒团形貌
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.scatter(positions[:, 0], positions[:, 1], positions[:, 2], c=colors, s=10)
plt.show()
```
在这个例子中,我们首先加载了edem导出的颗粒位置和ID信息,以及接触数数据。然后,我们根据颗粒ID对颗粒位置进行排序,以确保相邻颗粒的位置连续。接着,我们使用接触数数据来设置每个颗粒的颜色,颗粒接触数越多,颜色越深。最后,我们使用Matplotlib的3D散点图功能来绘制颗粒团形貌。
阅读全文