Neper 学习文档

运行环境

系统: Ubuntu16.04

Neper: version-3.5.0

学习记录一

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

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

  1. 初始化文件

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

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

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

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

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

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

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

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

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

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

  3. 参数分隔符

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

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

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

学习记录二

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

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

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

    1. 输入数据
    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. 输出文件

    镶嵌

    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

    Example

  2. 网格划分模块-M

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

    1. 参数

      前提

      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网格算法

  neper -mesh2dalgo char_string

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

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

指定3D网格算法

  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
3
4
5
6

> 网格转换选项

```shell
# 将网格按照三个轴向的方向进行缩放
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加载





0%