Neper 学习文档

运行环境

系统: Ubuntu16.04

Neper: version-3.5.0

学习记录一

该学习记录主要针对Neper的晶粒建模过程, 用于在Abaqus中进行细管尺度上的研究.

主要用于Linux系统中Neper的shell文件:

  • 初始化文件

调用模块前, 可以使用选项–rcfile指定另一个初始化文件.

当调用Neper的模块时, Neper在初始化文件中查找’neper module_name’的出现.

找不到初始化文件, 或者找不到’neper module_name’, 则neper将考虑命令行参数.

初始化参数仅使用最后指定的值

1
2
# 该处为禁用读取初始化文件
NEPER="neper --rcfile none"
  • 模块

模块名称: -T, -M, -V

模块参数: 包括所需的输入数据和选项

输入数据(不是文件名)和选项以-开头

可以按任意顺序选项提供选项, 每个选项后跟一个参数

可以分别提供参数值01来禁止和启用逻辑选项

  • 参数分隔符

,分隔符组合了相同类型的参数, 可以相互独立的进行处理

:分隔符用于组合相关参数, 即不同类型的参数, 这些参数不能进行独立的处理

::用于模块-T(以及模块-M中的一点), 用于将参数值分配给多尺度曲面细分的不同比例, 优先于,:分隔符

学习记录二

细分模块-T(镶嵌模块)

模块-T以二维或三维方式生成有界空间域的曲面细分多尺度曲面细分, 域必须是凸的, 且细分模块可以使曲面细分规则化, 从而实现更高质量的网格划分, 还可以为曲面细胞生成晶体去向.

在该模块下, 输出文件以标量格式.tess或者栅格格式描述曲面细分, 还有.tesr两者都是模块-M的输入文件.

输入数据

1
2
3
4
5
6
7
8
9
10
11
12
13
##-n 指定曲面细分的单元格数
neper -n integaer/char_string [Input data]
# -id 指定曲面细分的标识符, 它定义了随机数生成器用来计算初始种子位置的种子
# -dim 指定曲面细分的尺寸, 即维度
# -domain char_string
# "cube(size_x, size_y, size_z)" 3D立方体
# "square(size_x, size_y)" 2D矩形
##-loadtess 指定加载文件
neper -loadtess file_name [Input data]
# 从文件加载镶嵌
##-loadtesr 指定加载文件
neper -loadtesr file_name [Input data]
# 从文件加载栅格镶嵌
  • 形态选项
1
2
3
4
5
# -morpho char_string
# 'voronoi' 用于标准的Poisson-Voronoi镶嵌
# 'graingrowth/gg' 晶粒成长统计特性
# tesr 用于栅格镶嵌细胞
# -morphooptilogvar char_string 在优化过程中记录变量, 即种子属性
  • 晶向选项
1
2
3
4
5
# -ori 指定晶体取向分布的类型
neper -ori char_string
# 'random' 3D空间中随机分布
# 'uniform' 3D空间中均匀分布(晶体对称性必须使用-oricrysym进行规范)
# 'equal' 对于等效父单元格之一的方向
  • 转换选项
1
2
3
4
5
6
7
8
9
# -transform char_string(...) [标量镶嵌] 用于尺度上的缩放
neper -transform char_string()
# 'scale(x_fact,y_fact,z_fact)' 分别沿方向x、y和z缩放镶嵌, 对于2D空间, z_fact可以省略
# 'rotate(axis_x,axis_y,axis_z,angle)' 用于围绕中心和轴/角度对进行旋转
# 'translate(dist_x,dist_y,dist_z)' 沿着三个方向进行平移
# 'cut(primitive1,primitive2,...)' 用于切割一系列几何基元
# -sort char_string 对镶嵌单元格进行排序(通常是为了便于数据后处理)
neper -sort char_string
# '提供用于排序的数学表达式作为参数's
  • 正则化选项
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# -regularization logical 使镶嵌正则化,即去除小边,间接去除小面. 对于3D, 可以使得平面变为非平面
neper -regularization logical
# 这由选项-fmax、-sel和-mloop控制
# 使用正则化可以使模块-M获得更高质量的mesh
# 'Possible values: 0 or 1'
# -fmax real 指定允许的最大平坦面误差(以度表示)
neper -fmax real
# flatness容差是面上两个位置的法线之间的最大角
# 'Possible values: 0 to 180. Default value: 20.'
# -sel or -rsel real 指定绝对或相对小边(最大)长度
neper -sel or -rsel real
# -rsel 定义为相对的平均细胞尺寸
# 对于3D中的单位体积单元, 默认-rsel 1的长度为0.25; 对于2D中的单位面积单元, 则为0.125
# 该值还能够避免使用默认网格化参数进行网格化, 还可以基于每个单元格指定值
# -mloop integer 指定正则化循环的最大数量
neper -mloop integer
# 在每个循环期间, 在每个循环中,小边依次从最短到最大, 当达到最大循环数或在循环期间没有删除边时, 正则化停止. 默认值: 2.
  • 输出选项
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# -o file_name 指定输出文件名
neper -o file_name
# -format char_string 指定输出文件的格式
neper -format char_string
# 'tess' Neper
# 'geo' Gmsh
# ...
# 对于栅格镶嵌:
# 'tesr' Neper
# 'vtk' Kitware
# Possible values: tess, geo, ply, stl(:bycell), obj, 3dec, fe, tesr, vtk, ori. Default value: tess.
# -oridescriptor char_string 指定.tess, .tesr和.ori files中使用的方向描述符
neper -oridescriptor char_strin
# It can be Euler angles in Bunge, Kocks or Roe convention (e, ek, er).
# -oriformat char_string 指定.ori输出文件的格式
neper -oriformat char_string
# Default value: plain.
  • 后处理选项
1
2
3
4
5
6
7
8
9
10
11
12
13
##第一个选项适用于曲面细分或栅格镶嵌的单元格和种子,与其尺寸无关
# -statcell char_string 提供有关镶嵌单元格的统计信息
neper -statcell char_string
# -statseed char_string 提供有关镶嵌种子的统计信息
# ...
##对于曲面细分,还可以基于实体获取统计信息
# -statver char_string 提供有关镶嵌顶点的统计信息
# ...
##对于曲面细分,还可以获得基于体素的统计数据
##最后,可以获得特定点集的统计数据,该选项适用于曲面细分
# -statpoint char_string 提供点的统计信息
neper -statpoint char_string
# 必须使用-loadpoint加载这些点
  • 调试选项
1
2
3
4
# -checktess file_name
neper -checktess file_name
# 检查镶嵌文件. 将file名称作为参数提供
# 如果镶嵌文件无法使用, 请使用此选项-loadtess或在其他模块中加载

输出文件

  • 镶嵌
1
2
3
# Neper tessellation file: .tess 它包含镶嵌的标量说明
# Neper raster tessellation file: .tesr 它包含镶嵌的栅格描述
# Orientation file: .ori 它包含镶嵌单元的晶体方向, 使用由选项-oridescriptor指定的描述符,将方向写入连续的行
  • 统计

为细胞、种子、顶点、边、面、多面体和点提供统计, 它们按每行一个实体进行格式化

1
2
3
4
# 每一行都包含指定给相应的-stat选项的数据
# 镶嵌单元统计文件,.stcell
# 镶嵌种子统计文件,.stseed
# 点统计文件,.stpoint
  • 镶嵌优化日志文件
1
2
3
4
# 提供日志文件的时间,变量,统计分布和目标函数值
# 这些文件包含为相应的-morphooptilog选项指定的数据
# 时间文件,.logtime
# 变量,即种子属性,文件,.logvar

网格划分模块-M

模块-M是用于对标量和栅格镶嵌进行网格划分的模块, 有两种网格划分策略可用.

参数

  • 前提
1
2
3
4
# 指定Gmsh二进制文件的路径(用于划分为三角形和四面体单元)
neper -gmsh path_name
# 指定临时目录的路径(由Gmsh使用)
neper -tmp path_name

输入数据

在正常使用中, 输入数据是镶嵌文件.tess, 栅格镶嵌文件tesr和网格文件.msh.

也可以从文件加载结果网格(使用选项-o不会覆盖文件). 如果该文件包含的尺寸小于镶嵌的尺寸的网格,则使用这些网格,并且仅生成高维的网格

  • 网格选项
1
2
3
4
5
6
7
8
# 在四面体'tet'和六面体'hex'之间指定单元的类型, 可以使用2D对应的''tri'和'quad', 它们是等效的.
neper -elttype char_string
# 指定单元的绝对或相对特征长度
neper -cl or -rcl real
# rcl是相对于平均单元大小, 默认'-rcl 1', 平均每个cell有约100单元网格(2D中为64个)
# -dim char_string 指定网格尺寸, 默认情况下,它等于输入数据维度('inputdim')
# 根据选项-meshqualexpr的指定,指定网格质量O的最小目标值
neper -meshqualmin real

指定网格算法

2D网格算法

1
neper -mesh2dalgo char_string

The available values are mead (MeshAdapt), dela (Delaunay) and fron (Frontal).

1
# Possible values: mead, dela, fron. Default value: mead,dela,fron.

3D网格算法

1
2
3
4
5
6
7
8
neper -mesh3dalgo char_string
# 每种算法的格式均为“ mesh:opti”,其中mesh和opti表示网格划分和网格优化算法
# The available values of opti are ‘gmsh’ (Gmsh), ‘netg’ (Netgen) and ‘gmne’ (Gmsh + Netgen).
# Possible values: netg:none, netg:gmsh, netg:netg, netg:gmne. Default value: netg:gmsh,netg:netg,netg:gmne.
# 指定界面网格的类型
neper -interface char_string
# 提供'continuous'和'‘discontinuous'网格
# Default value: continuous.
  • 网格转换选项
1
2
# 将网格按照三个轴向的方向进行缩放
neper -scale real:real:real
  • 网格划分选项

使用libScotch库可实现网格划分

网格划分的原理是创建相同大小的分区,同时最小化它们之间的界面

  • 输出选项
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 指定输出文件名
neper -o file_name
# 指定输出文件的格式
neper -format char_string
# 'msh' Gmsh
# 'vtk' VTK
# 'inp' Abaqus
# 'geof' Zset
# 'fepx' FEpX
# 指定要提供的节点集
neper -nset char_string
# 指定要提供的节点集,包括:faces,edges,vertices的所有的域的面,边和顶点以及所有面和边实体的面体和边体.
# 指定提供的单元表面网格
neper -faset char_string
# 指定提供的单元集合
neper -elset char_string
  • 后处理选项
1
2
3
4
5
6
7
8
9
10
# 提供节点的统计信息
neper -statnode char_string
# 提供0D单元的统计信息
neper -statelt0d char_string
# 提供1D,2D,3D单元的统计信息, 代码同上相似, -statelt<>
# 提供0D单元集的统计信息
neper -statelset0d char_string
# 提供点的统计信息
neper -statpoint char_string
# 这些点必须使用选项-loadpoint加载

Reference

Neper

0%