24小时热门版块排行榜    

查看: 6301  |  回复: 8
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

meizhixin

新虫 (小有名气)

[交流] ovito软件分析Voronoi

使用ovito分析Voronoi,输入参数后,怎么得到结果?不明白?有会的吗?

发自小木虫Android客户端
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

meizhixin

新虫 (小有名气)

引用回帖:
2楼: Originally posted by valenhou001 at 2017-02-28 12:52:46
采用python script来计算吧:
https://www.ovito.org/manual/python/introduction/examples.html#example-compute-voronoi-indices

老师好,我把路径改了,在ovito图形界面,run scripts,但是ovito图形界面只是闪了下,没报错,也没结果,啥也没有,是脚本的问题吗?我用的是vasp的POSAR文件,下面是ovito计算voro的脚本,我直接复制的,不知道对不对
# Import OVITO modules.
from ovito.io import *
from ovito.modifiers import *

# Import NumPy module.
import numpy

# Load a simulation snapshot of a Co-B metallic glass.
node = import_file("E:/ovito/Co65B35/POSCAR"

# Set atomic radii (required for polydisperse Voronoi tessellation).
atypes = node.source.particle_properties.particle_type.type_list
atypes[0].radius = 1.25        # Co atomic radius (atom type 1 in input file)
atypes[1].radius = 0.82        # B  atomic radius (atom type 2 in input file)

# Set up the Voronoi analysis modifier.
voro = VoronoiAnalysisModifier(
    compute_indices = True,
    use_radii = True,
    edge_count = 6, # Length after which Voronoi index vectors are truncated
    edge_threshold = 0.1
)
node.modifiers.append(voro)
                     
# Let OVITO compute the results.
node.compute()

# Make sure we did not lose information due to truncated Voronoi index vectors.
if voro.max_face_order > voro.edge_count:
    print("Warning: Maximum face order in Voronoi tessellation is {0}, "
          "but computed Voronoi indices are truncated after {1} entries. "
          "You should consider increasing the 'edge_count' parameter to {0}."
          .format(voro.max_face_order, voro.edge_count))
    # Note that it would be possible to automatically increase the 'edge_count'
    # parameter to 'max_face_order' here and recompute the Voronoi tessellation:
    #   voro.edge_count = voro.max_face_order
    #   node.compute()

# Access computed Voronoi indices as NumPy array.
# This is an (N)x(edge_count) array.
voro_indices = node.output.particle_properties['Voronoi Index'].array

# This helper function takes a two-dimensional array and computes a frequency
# histogram of the data rows using some NumPy magic.
# It returns two arrays (of equal length):
#    1. The list of unique data rows from the input array
#    2. The number of occurences of each unique row
# Both arrays are sorted in descending order such that the most frequent rows
# are listed first.
def row_histogram(a):
    ca = numpy.ascontiguousarray(a).view([('', a.dtype)] * a.shape[1])
    unique, indices, inverse = numpy.unique(ca, return_index=True, return_inverse=True)
    counts = numpy.bincount(inverse)
    sort_indices = numpy.argsort(counts)[::-1]
    return (a[indices[sort_indices]], counts[sort_indices])

# Compute frequency histogram.
unique_indices, counts = row_histogram(voro_indices)

# Print the ten most frequent histogram entries.
for i in range(10):
    print("%s\t%i\t(%.1f %%)" % (tuple(unique_indices),
                                 counts,
                                 100.0*float(counts)/len(voro_indices)))
4楼2017-03-09 14:30:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 9 个回答

valenhou001

至尊木虫 (职业作家)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
meizhixin: 金币+10 2017-02-28 13:32:37
2楼2017-02-28 12:52:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

meizhixin

新虫 (小有名气)

引用回帖:
2楼: Originally posted by valenhou001 at 2017-02-28 12:52:46
采用python script来计算吧:
https://www.ovito.org/manual/python/introduction/examples.html#example-compute-voronoi-indices

明白了,谢谢大神

发自小木虫Android客户端
3楼2017-02-28 13:31:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tongaigao

新虫 (初入文坛)


小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
2楼: Originally posted by valenhou001 at 2017-02-28 12:52:46
采用python script来计算吧:
https://www.ovito.org/manual/python/introduction/examples.html#example-compute-voronoi-indices

你好,请问为什么用python脚本算出来的voronoi参数和在软件里直接一个一个输入算的不一样呢?我算的两者误差不小呢,请教大神这是怎么回事啊
5楼2017-05-18 15:49:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见