Neper
Neper
Neper
16 February 2017
Romain Quey
Copyright
c 2003–2016 Romain Quey
Permission is granted to make and distribute verbatim copies of this manual provided the copy-
right notice and this permission notice are preserved on all copies.
i
Table of Contents
Conditions of Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Copying Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
User Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1 The Neper Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2 Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Installing Neper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.1 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.2 Argument Separators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.3 Initialization File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Reading this Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2.3 Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.4 Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Appendix D Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Option Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Conditions of Use 1
Conditions of Use
Copying Conditions
Neper is “free software”; this means that everyone is free to use it and to redistribute it on a
free basis. Neper is not in the public domain; it is copyrighted and there are restrictions on its
distribution, but these restrictions are designed to permit everything that a good cooperating
citizen would want to do. What is not allowed is to try to prevent others from further sharing
any version of Neper that they might get from you.
Specifically, we want to make sure that you have the right to give away copies of Neper, that
you receive source code or else can get it if you want it, that you can change Neper or use pieces
of Neper in new free programs, and that you know you can do these things.
To make sure that everyone has such rights, we have to forbid you to deprive anyone else of
these rights. For example, if you distribute copies of Neper, you must give the recipients all the
rights that you have. You must make sure that they, too, receive or can get the source code.
And you must tell them their rights.
Also, for our own protection, we must make certain that everyone finds out that there is no
warranty for Neper. If Neper is modified by someone else and passed on, we want their recipients
to know that what they have is not what we distributed, so that any problems introduced by
others will not reflect on our reputation.
The precise conditions of the license for Neper are found in the General Public License that
accompanies the source code (see Appendix E [GNU General Public License], page 79). Further
information about this license is available from the GNU Project webpage http://www.gnu.
org/copyleft/gpl-faq.html.
User Guidelines
If you use Neper for your own work, please,
• mention it explicitly in your reports (books, papers, talks, . . . ).
• cite the following paper: R. Quey, P.R. Dawson, F. Barbe. Large-scale 3D random poly-
crystals for the finite element method: Generation, meshing and remeshing. Computer
Methods in Applied Mechanics and Engineering, vol. 200, pp. 1729–1745, 2011.
Chapter 1: Introduction 3
1 Introduction
Neper aims to be an easy-to-use, efficient and robust tool. All the input data are prescribed non-
interactively, using command lines and/or ASCII files, so that all treatments can be automated.
1.1.2 Resources
Several, complementary resources describing Neper are available:
• The Neper reference manual, which is this document, describes all of Neper’s capabilities.
Each module is the subject of a specific chapter, which describes the available commands
and result files, and provides examples. The manual is available at the PDF and info
formats.1
• The Neper website, http://neper.sourceforge.net, is where Neper’s official distribution
can be downloaded from. It also provides an illustrative introduction to Neper.
• The Neper GitHub repository, http://github.com/rquey/neper, is the page for develop-
ment. It is also where the latest version of Neper can be downloaded from.
• The Neper reference paper, “R. Quey, P.R. Dawson and F. Barbe, Large-scale 3D random
polycrystals for the finite element method: Generation, meshing and remeshing, Comput.
Methods Appl. Mech. Engrg., vol. 200, pp. 1729-1745, 2011.”, describes the regularization /
meshing methodologies. It can be downloaded from the Neper homepage or directly from
this link: http://neper.sourceforge.net/docs/neper-reference-paper.pdf.
1
Provided that the info file is properly installed at your site, it can be accessed by the command: info neper.
4 Neper 3.0.2
1.3.1 Modules
To call a module, run:
$ neper module_name module_arguments
where the module name can be -T, -M or -V, and the module arguments can include both
required input data and options. Input data (when not a file name) and options start by ‘-’.
The options can be provided in arbitrary order and each of them is followed by a single argument
(no space). American-english variants of options can be used. String completion is available
for all options, so they may be abbreviated as long as the abbreviation is not ambiguous. For
instance, in module -T, option -regularization can be abbreviated to -reg. Logical options
can be enabled or disabled by providing argument values of ‘1’ or ‘0’, respectively. Integer
or real argument values can be written as mathematical or logical expressions (for details on
expressions, see Section A.1 [Mathematical and Logical Expressions], page 51). For instance, in
module -T, option -rcl 0.5 can also be written as -rcl 1/2 or -rcl "cos(pi/3)". Module -V
shows some exceptions with respect to these rules: the argument cannot be listed in arbitrary
order, string completion is not available and option -loop takes several arguments.
conv convergence
coo coordinate
crysym crystal symmetry
csys coordinate system
dim dimension
dis distribution or distortion
dof degree of freedom
dup duplicate(d)
elset element set
elt element
expr expression
fact factor
faset element face set
geo geometry
id identifier
ini initial
inter interpolation
iter iteration
max maximum
min minimum
morpho morphology
neigh neighbour
nset node set
opti optimization
ori orientation
part partition
poly polyhedron
pov POV-Ray file
qual quality
rad radius
rcl relative characteristic length
rmax relative maximum
sing singular
stat statistics
surf surface
tesr raster tessellation
tess scalar tessellation
tmp temporary
trs transparency
val value
var variable
ver vertex
Chapter 2: Tessellation Module (-T) 9
2.1 Arguments
2.1.1 Input Data
-n integer or char_string [Input data]
Specify the number of cells of the tessellation. The argument can be a mathematical expres-
sion based on the size variable, which is the size of the domain (volume in 3D, area in 2D).
For regular morphologies (cubes, lamellae, etc., see option -morpho), the number of cells is
defined from option -morpho and so the argument must be ‘from_morpho’.
Possible values: any. Default value: none.
file_name is the name of the tessellation file and cell_id is the cell identifier. To
transform the domain, append a transformation to the domain name using the ‘:’
separator. Available transformations are: ‘rotate(axis_x,axis_y,axis_z,angle)’ for a
rotation about an axis/angle pair, ‘scale(x_factor,y_factor,z_factor)’ for scaling,
‘translate(x_delta,y_delta,z_delta)’ for a translation and ‘split(dir)’ for splitting
the domain in half along direction ‘dir’ (‘x’, ‘y’ or ‘z’), which can be used to apply symme-
tries. An example is ‘sphere(1,100):translate(-0.5,-0.5,-0.5):scale(0.5,1,2)’.
Possible values: see above list. Default value: cube(1,1,1) in 3D and square(1,1) in
2D.
Finally, it is possible to load a set of points. These points are used only for statistics, in option
-statpoint; they are not seed points of the tessellation (see option -morphooptiini instead).
‘-morpho’: for ‘voronoi’, it is ‘random’, for a cell-size statistical distribution, it is ‘none’, and
for cell-based coordinate values (including -morpho tesr), it is ‘centroid’.
Possible values: see above list. Default value: default.
-morphooptiobjective char_string [Secondary option]
Specify the objective function. For statistical distributions, the available values of the
goodness-of-fit test are ‘chi2’ (Chi-square test), ‘ks’ (Kolmogorov-Smirnov test), ‘kuiper’
(Kuiper’s test), ‘cmv’ (Cramér-Von Mises test), ‘ad’ (Anderson-Darling test), ‘FL2’ (L2 -norm
on F ), ‘FL2w’ (weighted L2 -norm on F )2 , and the default value is ‘FL2w’. For ‘centroid’, a
Minkowski distance between the seeds and centroids is used, and can be ‘L1’, ‘L2’ or ‘Linf’.
For a raster tessellation, the distance function is used, which can be computed on different re-
gions. The available values are ‘vol’ for the full volume and ‘surf’ for only the surface voxels
of the cells. The surface voxels can be computed using different connexity rules: connexities
of 0, 1 and 2 indicate that two voxels form a connex set if they share at least a vertex, edge
of face, respectively (they lead to decreasing numbers of surface voxels). ‘surf’ assumes a
connexity level of 1; to set the connexity level, use ‘surflevel’, where level is the connexity
level. The default value is ‘surf’.
Possible values: any. Default value: default.
-morphooptidof char_string [Secondary option]
Specify the degrees of freedom. The available values are ‘x’, ‘y’ and ‘z’ for the 3 coordinates,
and ‘w’ for the weights. Combine with ‘,’.
Possible values: see above list. Default value: x,y,z,w.
-morphooptistop char_string [Secondary option]
Specify the stopping criteria of the optimization process. Note that you do not have to define
all criteria; in most cases, only one or two are needed. A stopping expression must be of
the form ‘var=val’, where ‘var’ is a variable and ‘val’ is its value. The available variables
are: an absolute or relative error on the value of the objective function, ‘eps’ or ‘reps’, an
absolute or relative error on the components of the solution vector, ‘xeps’ or ‘xreps’, a value
of the objective function, ‘val’, a value of the derivative of the (minimum of the) objective
function with respect to the iteration number, ‘dvalditer’, a maximum number of iterations,
‘itermax’, or a maximum computation time, ‘time’, Combine them with ‘,’. Optimization
stops as soon as one stopping criterion is matched. Optimization can also be stopped anytime
by invoquing the Ctrl+C command.
Possible values: any. Default value: dvalditer=1e-5 (val=1e-4,iter=1e4 for -morpho
centroidal).
-morphooptialgo char_string [Secondary option]
Specify the optimization algorithm. The available values are ‘subplex’ (Subplex), ‘praxis’
(Praxis), ‘neldermead’ (Nelder-Mead), ‘cobyla’ (Cobyla), ‘bobyqa’ (Bobyqa) and ‘newuoa’
(Newuoa) — only ‘subplex’ and ‘praxis’ are recommended. In the case of -morpho
centroidal, another available value is ‘lloyd’ (Lloyd’s algorithm); to specify the seed dis-
placement factor (from the seed to the centroid), use ‘lloyd(factor)’ (the default value is
2). Another available value is ‘random’, for which seeds are moved randomly by the distance
specified using -morphooptiinistep (use only if you really know what you are doing).
Possible values: any. Default value: subplex (lloyd for -morpho centroidal).
-morphooptialgoneigh char_string [Secondary option]
Specify the neighbour search algorithm. The available values are ‘ann’ (ANN) and ‘qsort’
(direct computation with qsort). ‘ann’ is much faster.
Possible values: any. Default value: ann.
2 QN
Weighting by 1/ i=0 |F − pi | where p0 = 0 and pi are the cumulative proportions of the distribution modes.
For a unimodal distribution, the expression simplifies to 1/(F (1 − F )).
14 Neper 3.0.2
3
Endianness is both written in the tesr file and tested on the system when reading the tesr file, so that the user
normally does not have to care about it (even when transferring files across systems).
Chapter 2: Tessellation Module (-T) 17
2.2.2 Statistics
Statistics files are provided for cells, seeds, vertices, edges, faces, polyhedra and points. They are
formatted with one entity per line. Each line contains the data specified to the corresponding
-stat option and described in Section A.2 [Tessellation Keys], page 52 and Section A.3 [Raster
Tessellation Keys], page 54 (files .stcell and .stseed only).
• Tessellation cell statistics file, .stcell.
• Tessellation seed statistics file, .stseed.
• Tessellation vertex statistics file, .stver.
• Tessellation edge statistics file, .stedge.
• Tessellation face statistics file, .stface.
• Tessellation polyhedron statistics file, .stpoly.
• Point statistics file, .stpoint.
2.3 Examples
Below are some examples of use of neper -T.
1. Generate a Voronoi tessellation containing 100 cells (with identifier = 1).
$ neper -T -n 100 -id 1
2. Use an elongated domain and generate a Voronoi tessellation containing 100 cells.
$ neper -T -n 100 -id 1 -domain "cube(3,1,0.33)"
3. Generate a Voronoi tessellation containing 100 cells and apply regularization.
$ neper -T -n 100 -id 1 -reg 1
4. Generate a 2D Voronoi tessellation containing 100 cells.
$ neper -T -n 100 -id 1 -dim 2
5. Generate a tessellation containing 100 cells with experimental grain-growth morphological
properties.
$ neper -T -n 100 -id 1 -morpho gg
6. Generate a tessellation containing 100 cells with experimental grain-growth morphological
properties, and get the equivalent diameters and sphericities of the cells.
$ neper -T -n 100 -id 1 -morpho gg -statcell diameq:rel,sphericity
7. Generate a 2-scale Voronoi tessellation containing 100 × 10 cells.
$ neper -T -n 100::10 -id 1::1
8. Generate a 2-scale tessellation containing 10 primary cells with grain-growth morphological
properties, each one divided into lamellae of width 0.1.
$ neper -T -n 10::from_morpho -id 1::1 -morpho "gg::lamellar(w=0.1)"
20 Neper 3.0.2
9. Generate a 2-scale Voronoi tessellation containing 10 primary cells with grain-growth mor-
phological properties, each one divided into lamellae of widths loaded from file lam_width
and plane normals loaded from file lam_normal.
$ neper -T -n 10::from_morpho -id 1::1 -morpho "gg::lamellar(w=file(lam_
width),v=file(lam_normal))"
lam_width:
1 0.05
2 0.10
3 0.05
4 0.10
5 0.05
6 0.10
7 0.05
8 0.10
9 0.05
10 0.10
lam_normal:
1 1.000000 0.000000 0.000000
2 0.000000 1.000000 0.000000
3 1.000000 0.000000 0.000000
4 0.000000 1.000000 0.000000
5 1.000000 0.000000 0.000000
6 0.000000 1.000000 0.000000
7 1.000000 0.000000 0.000000
8 0.000000 1.000000 0.000000
9 1.000000 0.000000 0.000000
10 0.000000 1.000000 0.000000
10. Generate a 2-scale Voronoi tessellation containing 3 primary cells divided into 1, 10 and
100 secondary cells, respectively.
$ neper -T -n "3::file(myfile)" -id 1::1
myfile:
1 1
2 10
3 100
11. Generate a 2-scale Voronoi tessellation containing 2 × 3 cells with specific seed coordinates
at both scales (files coo1 and coo2).
$ neper -T -n 2::3 -id 1::1 \
-morphooptiini "coo:file(coo1),weight:0::coo:file(coo2),weight:0" \
-morpho voronoi
coo1:
0.25 0.50 0.50
0.75 0.50 0.50
coo2:
1 0.25 0.10 0.50
1 0.25 0.50 0.50
1 0.25 0.90 0.50
2 0.75 0.50 0.10
2 0.75 0.50 0.50
2 0.75 0.50 0.90
Chapter 2: Tessellation Module (-T) 21
Note that coo1 is a simple position file (see Section B.4 [Position File], page 68) while coo2
is a multiscale cell file (see Section B.3 [Multiscale Cell File], page 67).
Chapter 3: Meshing Module (-M) 23
1
Each partition being assigned to a processor in the finite element calculation, the minimization of the interfaces
between the partitions is done in terms of the number of necessary communications between processors.
24 Neper 3.0.2
$ neper -M n10-id1.tess
======================== N e p e r =======================
Info : A software package for polycrystal generation and meshing.
Info : Version 3.0.0
Info : Built with: gsl nlopt muparser
Info : <http://neper.sourceforge.net>
Info : Copyright (C) 2003-2016, and GNU GPL’d, by Romain Quey.
Info : Comments and bug reports: <neper-users@lists.sourceforge.net>.
Info : Loading initialization file ‘/home/rquey/.neperrc’...
Info : ---------------------------------------------------------------
Info : MODULE -M loaded with arguments:
Info : [ini file] -gmsh /foo/bar/bin/gmsh
Info : [com line] n10-id1.tess
Info : ---------------------------------------------------------------
Info : Reading input data...
Info : - Reading arguments...
Info : Loading input data...
Info : - Loading tessellation...
Info : [i] Parsing file ‘n10-id1.tess’...
Info : [i] Parsed file ‘n10-id1.tess’.
Info : Meshing...
Info : - Preparing... (cl = 0.2321) 100%
Info : - 0D meshing... 100%
Info : - 1D meshing... 100%
Info : - 2D meshing... 100% (0.72|0.87/83%|11%| 6%)
Info : > Checking 2D mesh for pinching out...
Info : - 3D meshing... 100% (0.89|0.91/100%| 0%| 0%)
Info : Searching nsets...
Info : Writing mesh results...
Info : - Preparing mesh...
Info : - Mesh properties:
Info : > Node number: 287
Info : > Elt number: 1006
Info : > Mesh volume: 1.000
Info : - Writing mesh...
Info : [o] Writing file ‘n10-id1.msh’...
Info : [o] Wrote file ‘n10-id1.msh’.
Info : Elapsed time: 8.537 secs.
========================================================================
Chapter 3: Meshing Module (-M) 25
3.1 Arguments
3.1.1 Prerequisites
-gmsh path_name [Prerequisite]
Specify the path of the Gmsh binary (for meshing into triangle and tetrahedral elements).
Possible values: any. Default value: gmsh.
It is also possible to load a result mesh from a file. (Using option -o along with this capability
avoids overwriting the input data.)
Finally, it is possible to load a set of points. These points are used only for statistics, in option
-statpoint,
The following options define the multimeshing algorithm (for 2D and 3D free meshings). Multi-
meshing consists in using several meshing algorithms concurrently, for each face or polyhedron,
until a minimum, target mesh quality is reached. The mesh quality factor, O, accounts for both
the element sizes and aspect ratios. It is given by O = Odis α × Osize 1−α , where Odis and Osize
Chapter 3: Meshing Module (-M) 27
range from 0 (poor quality) to 1 (high quality) and α is a factor equal to 0.8. Therefore, O
also ranges from 0 (poor quality) to 1 (high quality). See the Neper reference paper for more
information. The minimum quality value can be modified using option -meshqualmin. The
values of O and Odis can be modified using options -meshqualexpr and -meshqualdisexpr.
The value of the target mesh quality significantly influences meshing speed and output mesh
quality. A value of 0 provides the fastest meshing while a value of 1 provides the best-quality
meshing. The default value provides an effective balance. The meshing algorithms are taken
from the Gmsh1 and Netgen2 libraries (options -mesh2dalgo and -mesh3dalgo).
-meshqualmin real [Option]
Specify the minimum, target value of mesh quality, O, as defined by option -meshqualexpr.
Possible values: 0 to 1. Default value: 0.9.
-meshqualexpr char_string [Option]
Specify the expression of mesh quality, O, as a function of Odis and Osize.
Possible values: any. Default value: Odis^0.8*Osize^0.2.
-meshqualdisexpr char_string [Secondary option]
Specify the expression of the mesh element distortion parameter, Odis, as a function of the
element distortion parameter dis (see the Neper reference paper).
Possible values: any. Default value: dis^(exp((dis^0.1)/(dis^0.1-1))).
-mesh2dalgo char_string [Secondary option]
Specify the 2D meshing algorithms (combine with ‘,’). The available values are mead (Me-
shAdapt), dela (Delaunay) and fron (Frontal).
Possible values: mead, dela, fron. Default value: mead,dela,fron.
-mesh3dalgo char_string [Secondary option]
Specify the 3D meshing algorithms (combine with ‘,’). Each algorithm has format
‘mesh:opti’, where mesh and opti stand for the meshing and mesh optimization algorithms.
The available values of mesh are currently limited to netg (Netgen). The available values of
opti are ‘gmsh’ (Gmsh), ‘netg’ (Netgen) and ‘gmne’ (Gmsh + Netgen). Use ‘none’ for none.
Possible values: netg:none, netg:gmsh, netg:netg, netg:gmne. Default value:
netg:gmsh,netg:netg,netg:gmne.
-interface char_string [Secondary option]
Specify the type of interface meshing. Provide ‘continuous’ for a continuous mesh at in-
terfaces, with shared nodes between neighbour element sets (which are associated to the
tessellation cells). Provide ‘discontinuous’ for a discontinuous mesh at interfaces, with
distinct nodes for the neighbour element sets. Provide ‘cohesive’ for cohesive elements at
interfaces, joining the neigbour element sets. See option -faset for the output format.
Possible values: see above. Default value: continuous.
using the coordinates of the neighbouring nodes. At iteration i, the position of a node,
Xi , is calculated from its previous position, Xi−1 , and the position of the barycentre of the
neighbouring nodes (weighted barycentre, considering the inverse of the distance between
n n
the node and the neighbour), Xi−1 , as follows: Xi = (1 − A) Xi−1 + A Xi−1 . A ∈ [0, 1] is
an adjustable parameter (see option -tesrsmoothfact). The number of iterations is set by
option -tesrsmoothitermax. There is no stop criterion, so itermax will always be reached.
Possible values: laplacian or none. Default value: laplacian.
-tesrsmoothfact real [Secondary option]
Specify the factor used for the interface mesh smoothing (A in option -tesrsmooth).
Possible values: 0 to 1. Default value: 0.5.
-tesrsmoothitermax integer [Secondary option]
Specify the number of iterations used for interface mesh smoothing.
Possible values: any >= 0. Default value: 5.
the same load to all computation units and minimizes communications between them, therefore
minimizes the total computation time. There are two available strategies for mesh partitioning.
The first one creates partitions and arranges them independently of each other, while the second
one consists in optimizing the size and arrangment of the partitions based on a given computer
cluster architecture to minimize computation time further. For those clusters that contain
processors made of several cores, the communication time between cores of a processor is much
lower than the communication time between cores of different processors. To minimize the
global communication time, partitions which are processed by cores of the same processor can
be grouped together. Partitioning is applied to the higher-dimension mesh. On top of defining
the partitions, it renumbers the nodes and elements by increasing partition identifier and writes
partitions as element and node sets (vtk, inp and geof formats). This can be managed using
option -part.
-part integer or char_string [Option]
Specify the number of partitions or a computer cluster architecture. Using the first option,
the number of partition can be any. At the opposite, for a computer cluster architecture, the
total number of partitions must be a power of 2. An architecture can be specified in two ways.
First, for clusters that contain processors made of several cores, the number of processors
and the number of cores per processor can be combined using the ‘:’ separator. A ratio of
10 is considered between the computation time between cores located on different processors
and the one between cores of the same processor. Second, the name of a file describing the
cluster architecture at the Scotch format can be provided.
Possible values: any. Default value: none.
-partbalancing real [Secondary option]
Specify the rate of element partition balancing. The partitioning algorithm applies to
the nodes; the element partitions are determined afterwards and can be somewhat unbal-
anced. This option enables to enforce balancing, but getting a full balancing is highly CPU-
demanding.
Possible values: 0 to 1. Default value: 0.5.
-partmethod char_string [Secondary option]
Specify the partitioning method. Provide the partitioning expression in Scotch’s jargon, or
‘none’ for none.
Possible values: any. Default value: see_the_source.
3.2.2 Periodicity
• File .per. For each slave node, the file provides (one slave node per line): the node id, the
master node id and the shift vector of the slave.
3.2.3 Interfaces
• File .intl. For each 2D interface, the file provide (one 2D interface per line): the labels of
the two element sets of the interface.
Chapter 3: Meshing Module (-M) 33
3.2.4 Statistics
Statistics files are provided for nodes, elements, element sets and points. They are formatted
with one entity per line. Each line contains the data specified to the corresponding -stat option
and described in Section A.5 [Mesh Keys], page 55.
• Node statistics file, .stnode.
• (Higher-dimension) element statistics file, .stelt.
• (Higher-dimension) element set statistics file, .stelset.
• 0D element statistics file, .stelt0d.
• 1D element statistics file, .stelt1d.
• 2D element statistics file, .stelt2d.
• 3D element statistics file, .stelt3d.
• 0D element set statistics file, .stelset0d.
• 1D element set statistics file, .stelset1d.
• 2D element set statistics file, .stelset2d.
• 3D element set statistics file, .stelset3d.
• Point statistics file, .stpoint.
3.3 Examples
Below are some examples of use of neper -M,
1. Mesh tessellation n100-id1.tess.
$ neper -M n100-id1.tess
2. Mesh 2D raster tessellation n100-id1.tesr.
$ neper -M n100-id1.tesr
3. Mesh tessellation n100-id1.tess with a mesh size of rcl = 0.5 and in 2nd-order elements.
$ neper -M n100-id1.tess -rcl 0.5 -order 2
4. Mesh tessellation n100-id1.tess with small elements for the interior cells and bigger ele-
ments for the boundary cells.
$ neper -M n100-id1.tess -rcl "0.2,body==0:0.5"
5. Remesh mesh n150_def.msh (comprising poor-quality elements) into a clean, new mesh.
Transport the scalar data of file n150_def.data from the deformed mesh to the new mesh.
$ neper -M n150.tess,n150_def.msh -transport elt:real1:n150_def.data
-rcl 0.5 -o n150_new
6. Mesh tessellation n100-id1.tess and divide the mesh into 8 partitions.
$ neper -M n100-id1.tess -part 8
7. Mesh tessellation n100-id1.tess into regular hexahedral elements (non-conformal mesh).
$ neper -M n100-id1.tess -elt hex
8. Mesh tessellation n100-id1.tess and get, for each element, its radius ratio and its volume.
$ neper -M n100-id1.tess -statelt rr,vol
Chapter 4: Visualization Module (-V) 35
======================== N e p e r =======================
Info : A software package for polycrystal generation and meshing.
Info : Version 3.0.0
Info : Built with: gsl nlopt muparser
Info : <http://neper.sourceforge.net>
Info : Copyright (C) 2003-2016, and GNU GPL’d, by Romain Quey.
Info : Comments and bug reports: <neper-users@lists.sourceforge.net>.
Info : Loading initialization file ‘/home/rquey/.neperrc’...
Info : ---------------------------------------------------------------
Info : MODULE -V loaded with arguments:
Info : [ini file]
Info : [com line] n10-id1.tess,n10-id1.msh -dataelsetcol id -print img
Info : ---------------------------------------------------------------
Info : Loading tessellation...
Info : [i] Parsing file ‘n10-id1.tess’...
Info : [i] Parsed file ‘n10-id1.tess’.
Info : Loading mesh...
Info : [i] Parsing file ‘n10-id1.msh’...
Info : [i] Parsed file ‘n10-id1.msh’.
Info : Reconstructing mesh...
Info : Reading data (elset3d, col)...
Info : Printing image...
Info : [o] Writing file ‘img.pov’...
Info : - Printing mesh...
Info : > Reducing data...
Info : . Number of 3D elt faces reduced by 90% (to 410).
Info : . Number of 3D elt edges reduced by 50% (to 615).
Info : . Number of 0D elts reduced by 100% (to 0).
Info : [o] Wrote file ‘img.pov’.
Info : - Generating png file (1080x1080 pixels)...
Info : [o] Writing file ‘img.png’...
Info : [o] Wrote file ‘img.png’.
36 Neper 3.0.2
4.1 Arguments
4.1.1 Prerequisites
The following options enable to load data relative to the 2D elements. Note that the options
can be applied to element sets by changing ‘elt’ to ‘elset’.
The following options enable to load data relative to the 1D elements. Note that the options
can be applied to element sets by changing ‘elt’ to ‘elset’.
The following options enable to load data relative to the 0D mesh elements. Note that the
options can be applied to element sets by changing ‘elt’ to ‘elset’.
-dataelt0dcol char_string [Option]
Set the colours of the 0D elements. See option -dataelt3dcol for the argument format.
Possible values: any. Default value: black.
-dataelt0dcolscheme char_string [Option]
Set the colour scheme used to get colours from the data of the 0D elements loaded with
option -dataelt0dcol. See option -dataelt3dcolscheme for the argument format.
Possible values: see option -dataelt3dcolscheme. Default value: see option
-dataelt3dcolscheme.
-dataelt0dscale char_string [Option]
Set the scale relative to the ‘-dataelt0dcol scal’ data. Provide as argument the start and
end values, combined with ‘:’. To specify the intermediate values, provide as argument the
start value, the intermediate values and then the end value, combined with ‘:’. The labels of
the scale follow the format used for the start value.
Possible values: any. Default value: data minimum:data maximum.
-dataelt0dscaletitle char_string [Option]
Set the title of the scale relative to the ‘-dataelt0dcol scal’ data.
Possible values: any. Default value: none.
-dataelt0drad char_string [Option]
Set the radius of the 0D elements.
Possible values: any. Default value: mesh dependent.
format ‘var:file_name’, where var can be ‘disp’ for displacements, and file_name is the
name of the file containing the data.
Possible values: any. Default value: none.
-datanodecoofact real [Option]
Set the value of the scaling factor to apply to the displacements of the nodes.
Possible values: any. Default value: 1.
-datanoderad file_name [Option]
Set the radius of the nodes.
Possible values: any. Default value: mesh dependent.
-datanodecol file_name [Option]
Set the colours of the nodes. See option -dataelt3dcol for the argument format.
Possible values: any. Default value: black.
-datanodecolscheme char_string [Option]
Set the colour scheme used to get colours from the data of the nodes loaded with option
-datanodecol. See option -dataelt3dcolscheme for the argument format.
Possible values: see option -dataelt3dcolscheme. Default value: see option
-dataelt3dcolscheme.
-datanodescale char_string [Option]
Set the scale relative to the ‘-datanodecol scal’ data. Provide as argument the start and
end values, combined with ‘:’. To specify the intermediate values, provide as argument the
start value, the intermediate values and then the end value, combined with ‘:’. The labels of
the scale follow the format used for the start value.
Possible values: any. Default value: data minimum:data maximum.
-datanodescaletitle char_string [Option]
Set the title of the scale relative to the ‘-datanodecol scal’ data.
Possible values: any. Default value: none.
points and file_name is the name of the file containing the morphology parameters. For
cube shape, var must be ‘cube’ and the file must contain, for each point, the radius (half of
the edge length) then the coordinates of the three axes (which also is the rotation matrix that
brings the reference axes into coincidence with the cube axes). For cylinder shape, var must
be ‘cyl’ and the file must contain, for each point, the radius, the length, then the coordinates
of the axis. For ellipsoidal shape, var must be ‘ell’ and the file must contain, for each point,
the three radii then the coordinates of the three axes. The last capability is very specific: if
the points are plotted in Rodrigues space, appending ‘:rodrigues’ to the option argument
enables to account for space distortion.
Possible values: any. Default value: point set dependent.
4.1.11 Scripting
-loop char_string real real real ... -endloop [Option]
Create a loop of commands. Provide as argument the name of the loop variable, its initial
value, the loop increment value, the final value then the commands to execute. An example
of use of the -loop / -endloop capability is provided in the Examples Section.
Possible values: any. Default value: none.
4.3 Examples
Below are some examples of use of neper -V.
1. Print out tessellation n10-id1.tess with cells coloured from their identifiers and an image
size of 900 × 450 pixels.
$ neper -V n10-id1.tess -datacellcol id -imagesize 900:450 -print img
2. Print out tessellation n10-id1.tess with cells coloured from crystal orientations and semi-
transparency.
$ neper -V n10-id1.tess -datacellcol ori -datacelltrs 0.5 -print img
3. Print out mesh n10-id1.msh with elements coloured from scalar values written in file v and
a scale ranging from 0 to 100.
$ neper -V n10-id1.msh -dataeltcol scal:v -dataeltscale 0:100
-print img
4. Print out mesh n10-id1.msh with elements coloured from nodal scalar values written in
file v and a scale ranging from 0 to 100.
$ neper -V n10-id1.msh -datanodecol scal:v -dataeltcol from_nodes
-dataeltscale 0:100 -print img
5. Print out the 10 first cells of a 100-cell tessellation, coloured from their identifiers and semi-
transparency, and with edges shown in red and vertices shown as green spheres of radius
0.01.
$ neper -V n100-id1.tess -showcell "id<=10"
-datacellcol id -datacelltrs 0.5
-showedge cell_shown -showver cell_shown
-dataverrad 0.01 -dataedgecol red -datavercol green
-print img
6. Print out the interior element sets of mesh n100-id1.msh and show the 1D elements.
$ neper -V n100-id1.tess,n100-id1.msh -dataelsetcol id
-showelset ’body>0’ -showelt1d elt3d_shown -print img
7. Print out 3 slices of mesh n100-id1.msh.
$ neper -V n100-id1.msh -dataelsetcol id
-slicemesh "x=0.5,y=0.5,z=0.5" -print img
8. Print out slices of mesh n100-id1.msh, at z coordinates ranging from 0.1 to 0.9 by step
of 0.1, each slice being printed in a separate file.
$ neper -V n100-id1.msh -dataelsetcol id
-loop Z 0.1 0.1 0.9
-slicemesh "z=Z" -print imgZ
-endloop
Appendix A: Expressions and Keys 51
A.1.1 Functions
The following table gives an overview of the functions supported by the default implementation.
It lists the function names, the number of arguments and a brief description.
Name Description
sin sine function
cos cosine function
tan tangens function
asin arcus sine function
acos arcus cosine function
atan arcus tangens function
sinh hyperbolic sine function
cosh hyperbolic cosine
tanh hyperbolic tangens function
asinh hyperbolic arcus sine function
acosh hyperbolic arcus tangens function
atanh hyperbolic arcur tangens function
log2 logarithm to the base 2
log10 logarithm to the base 10
log logarithm to the base 10
ln logarithm to base e (2.71828. . . )
exp e raised to the power of x
sqrt square root of a value
sign sign function: -1 if x < 0; 1 if x > 0
rint round to nearest integer
abs absolute value
min min of all arguments
max max of all arguments
sum sum of all arguments
avg mean value of all arguments
2
Sphericity of a polyhedron = ratio of the surface area of the sphere of equivalent volume to the surface area of
the polyhedron.
3
Convexity of a polyhedron (face) = ratio of the volume (area) of the polyhedron (face) to the volume (area) of
the convex hull of the polyhedron (face).
4
Applies only to a 2D tessellation.
Appendix A: Expressions and Keys 53
theta disorientation angle (in degrees) edge (in 2D), face (in 3D)
cyl whether or not is used to describe the cir- edge
cular part of a cylinder domain
vernb number of vertices edge, face, poly
edgenb number of edges ver, face, poly
facenb number of faces ver, edge, poly
polynb number of polyhedra ver, edge, face
neighnb Number of neighbours of a face or polyhe- face, poly
dron5
verlist vertex list face, poly
edgelist edge list face, poly
facelist face list edge, poly
nfacelist neighbouring face list face
npolylist neighbouring polyhedron list6 poly
facearealist face area list poly
faceeqlist face equation list7 poly
vercoolist list of vertex coordinates face, poly
scaleid(scale) Identifier of the corresponding cell at scale cell
scale
lamid lamella width id8 face, poly
modeid mode id9 face, poly
The list variables (‘verlist’, etc.) are not available for sorting (option -sort).
For a cell, the body and true variables are defined as follows,
• body is an integer equal to 0 if the cell is at the domain boundary, i.e. if it shares at least
one face with it (edge in 2D), and is equal to 1 or higher otherwise. This is determined as
follows: if a cell is surrounded by cells with body values equal to or higher than n, its body
value is equal to n + 1. Therefore, body tends to increase with the distance to the domain
boundary and can be used to define cells that may suffer from boundary effects.
• true is an integer equal to 0 it the cell shape is biased by the domain boundary, and is
equal to 1 or higher otherwise. A value higher than 0 is achieved if and only if any seed
that would have been located outside the domain (where it could not be) would not have
affected the shape of the cell. This condition is fulfilled if the distance between the seed of
the cell and any of its vertices is lower than the minimum distance between a vertex of the
cell and the domain boundary. true is extended to values higher than 1 in the same way
as body: if a cell is surrounded by cells with true values equal to or higher than n, its true
value is equal to n + 1. As body, true tends to increase with the distance to the domain
boundary, and true ≤ body. true is especially useful for statistics on the cells (morphology,
mesh, etc.), for which only cells with true ≥ 1 should be considered.
For entities of lower dimension than cells (vertices, edges and faces), body and true are equal
to the maximum body or true values of the cells they belong to.
5
Neighbour of a face or polyhedron = touching entity of the same type (faces for a face, . . . ).
6
If a polyhedron has no neighbour on a face, a negative value is returned instead of the neighbour id.
7
A face equation is specified by the parameters d, a, b and c, with the equation being: ax + by + cz = d. The
vector (a, b, c) is pointing outwards of the polyhedron.
8
In the case of a lamellar tessellation with several lamella widths, lamid stands for the actual lamellar width of
the cell (starting from 1).
9
In the case of a multimodal tessellation (e.g. in terms of cell size), modeid stands for the actual mode (starting
from 1).
54 Neper 3.0.2
10
Convexity of a cell = ratio of the volume of the cell to the volume of the convex hull of the cell.
Appendix A: Expressions and Keys 55
nD stands for an arbitrary dimension (from 0D to 3D). Variables starting by ‘2dmesh’ are only
available for statistics (options starting by -stat of module -M); for elements, they apply to the
centroids.
Cube (0 0 1) [1 0 0]
Goss (0 1 1) [1 0 0]
U (1 0 1) [1̄ 0 1]
45NDCube (0 0 1) [1 1̄ 0]
S1 (1 2 3) [6 3 4̄]
S2 (1̄ 2 3) [6 3̄ 4]
S3 (1 2̄ 3) [6 3̄ 4̄]
S4 (1̄ 2̄ 3) [6 3 4]
Brass1 (1 1 0) [1 1̄ 2]
Brass2 (1̄ 1 0) [1 1 2̄]
Copper1 (1 1 2) [1 1 1̄]
Copper2 (1̄ 1 2) [1 1̄ 1]
A.8 Colours
The available colours are provided below, with their corresponding RGB channel
values. Any other colour can be defined from the RGB channel values, under format
‘R_value|G_value|B_value’.
( 0, 0, 0) black (255, 0, 0) red
( 0, 255, 0) green ( 0, 0, 255) blue
(255, 255, 0) yellow (255, 0, 255) magenta
( 0, 255, 255) cyan (255, 255, 255) white
(128, 0, 0) maroon ( 0, 0, 128) navy
(127, 255, 0) chartreuse ( 0, 255, 127) springgreen
(128, 128, 0) olive (128, 0, 128) purple
( 0, 128, 128) teal (128, 128, 128) grey
( 0, 191, 255) deepskyblue (124, 252, 0) lawngreen
( 64, 64, 64) darkgrey (255, 69, 0) orangered
(192, 192, 192) silver (255, 250, 250) snow
(139, 0, 0) darkred ( 0, 0, 139) darkblue
(255, 140, 0) darkorange (240, 255, 255) azure
(248, 248, 255) ghostwhite (255, 255, 240) ivory
( 0, 0, 205) mediumblue (255, 182, 193) lightpink
(245, 255, 250) mintcream ( 75, 0, 130) indigo
(240, 128, 128) lightcoral (255, 192, 203) pink
(255, 127, 80) coral (250, 128, 114) salmon
58 Neper 3.0.2
The default colour palette (used for options -datacellcol, -dataelt3dcol, etc.) is
defined from the above colour list, by excluding colours of brightness below 0.2 and
above 0.8. The brightness is defined as the average of the channel values divided by 255.
The resulting list of colours is: red, green, blue, yellow, magenta, cyan, chartreuse,
springgreen, olive, purple, teal, grey, deepskyblue, lawngreen, darkgrey, orangered,
silver, darkorange, mediumblue, indigo, lightcoral, coral, salmon, aquamarine, gold,
orange, darkmagenta, darkcyan, peru, steelblue, mediumspringgreen, darkslateblue,
darkgoldenrod, lightsalmon, lightskyblue, tomato, slategrey, hotpink, darkkhaki,
darkturquoise, mediumseagreen, mediumvioletred, violet, greenyellow, darkseagreen,
rosybrown, deeppink, saddlebrown, darkviolet, dodgerblue, lightslategrey, burlywood,
mediumslateblue, turquoise, skyblue, mediumturquoise, tan, limegreen, darksalmon,
lightsteelblue, royalblue, palegreen, crimson, mediumorchid, khaki, lightgreen,
darkslategrey, darkorchid, seagreen, yellowgreen, blueviolet, palevioletred,
olivedrab, mediumpurple, sandybrown, darkolivegreen, mediumaquamarine, slateblue,
forestgreen, midnightblue, lightseagreen, orchid, cornflowerblue, sienna, firebrick,
indianred, dimgrey, chocolate, brown, goldenrod, plum and cadetblue.
Appendix B: File Formats 61
***tess
**format
format
**general
dim type
**cell
number_of_cells
[*id
cell1_id cell2_id ... ]
[*seed
seed_id seed_x seed_y seed_z seed_weight
... ]
[*ori
descriptor
cellid_param1 cellid_param2 ...
... ]
[*lamid
cell1_lamid cell2_lamid ... ]
[*modeid
cell1_modeid cell2_modeid ... ]
[*crysym
crysym]
**vertex
total_number_of_vertices
ver_id ver_x ver_y ver_z ver_state
...
**edge
total_number_of_edges
edge_id ver_1 ver_2 edge_state
...
**face
total_number_of_faces
face_id number_of_vertices ver_1 ver_2 ...
number_of_edges edge_1* edge_2* ...
face_eq_d face_eq_a face_eq_b face_eq_c
face_state face_point face_point_x face_point_y face_point_z
...
**polyhedron
total_number_of_polyhedra
poly_id number_of_faces face_1* face_2* ...
...
**domain
*general
62 Neper 3.0.2
dom_type
*vertex
total_number_of_dom_vertices
dom_ver_id dom_ver_x dom_ver_y dom_ver_z dom_ver_label
number_of_dom_tess_vertices ver_1
...
*edge
total_number_of_dom_edges
dom_edge_id dom_ver_1 dom_ver_2 dom_edge_label
number_of_dom_tess_edges edge_1 edge_2 ...
...
*face
total_number_of_dom_faces
dom_face_id number_of_dom_vertices dom_ver_1 dom_ver_2 ...
number_of_dom_edges dom_edge_1 dom_edge_2 ...
dom_face_eq_d dom_face_eq_a dom_face_eq_b dom_face_eq_c
dom_face_label
number_of_dom_tess_faces dom_tess_face_1 dom_tess_face_2 ...
...
**periodic
*general
per_x per_y per_z
per_dist_x per_dist_y per_dist_z
*seed
slave_seed_qty
slave_seed_id master_seed_id per_shift_x per_shift_y per_shift_z
...
*vertex
slave_ver_qty
slave_ver_id master_ver_id per_shift_x per_shift_y per_shift_z
...
*edge
slave_edge_qty
slave_edge_id master_edge_id per_shift_x per_shift_y per_shift_z slave_edge_
ori
...
*face
slave_face_qty
slave_face_id master_face_id per_shift_x per_shift_y per_shift_z slave_face_
ori
...
**scale
*general
number_of_scales
*cellid
cell1_id cell1_scale1 cell1_scale2 ... cell1_scalenumber_of_scales
...
***end
• face_eq_a, face_eq_b, face_eq_c and face_eq_d are the parameters of the equation of
a face: face eq a x + face eq b y + face eq c z = face eq d. The parameters are scaled so
that face eq a2 + face eq b2 + face eq c 2 = 1.
• face_state is an integer indicating the state of a face. For a standard tessellation (no
regularization), it equals 0. For a regularized tessellation, it equals 0 if it has not been
modified by regularization and 1 otherwise.
• face_point is an integer indicating the point used for the interpolation of a face. For a
standard tessellation (no regularization), it equals 0. For a regularized tessellation: if the
point is the face barycentre, it equals 0; if the point is one of the face vertices, it equals
to the position of the vertex in the list of vertices of the face. It equals -1 if the point is
undefined.
• face_point_x, face_point_y and face_point_z are the coordinates of the point used for
the interpolation of a face (equal 0 if undefined).
• **polyhedron denotes the beginning of the polyhedron field. It is present for a tessellation
of dimension 3.
• total_number_of_polyhedra is the total number of polyhedra.
• poly_id is the identifier of a polyhedron and ranges from 1 to total_number_of_
polyhedra.
• number_of_faces is the number of faces of a polyhedron.
• face_1*, face_2*, ... are identifiers of the faces of a polyhedron, signed according to their
orientations in the polyhedron (positive if the normal of the face is pointing outwards and
negative if it is pointing inwards).
• **domain denotes the beginning of the domain field.
• *general denotes the beginning of the domain general information field.
• dom_type is the type of the domain (one of cube, cylinder, square, circle, poly and
planes).
• *vertex denotes the beginning of the domain vertex field.
• total_number_of_dom_vertices is the total number of domain vertices.
• dom_ver_id is the identifier of a domain vertex and ranges between 1 to total_number_
of_dom_vertices.
• dom_ver_x, dom_ver_y and dom_ver_z are the three coordinates of a domain vertex (real
numbers).
• dom_ver_label is the label of a domain vertex.
• number_of_dom_tess_vertices is the number of tessellation vertices of a domain vertex
(must be 1).
• *edge denotes the beginning of the domain edge field (for a tessellation of dimension 2
or 3).
• total_number_of_dom_edges is the total number of domain edges.
• dom_edge_id is the identifier of a domain edge and ranges between 1 to total_number_
of_dom_edges.
• dom_ver_1, dom_ver_2, ... are identifiers of the domain vertices of a domain edge or face.
• dom_edge_label is the label of a domain edge.
• number_of_dom_tess_edges is the number of tessellation edges of a domain edge.
• *face denotes the beginning of the domain face field (for a tessellation of dimension 3).
• total_number_of_dom_faces is the total number of domain faces.
• dom_face_id is the identifier of a domain face and ranges from 1 to total_number_of_
dom_faces.
Appendix B: File Formats 65
***tesr
**format
format data_format
**general
dimension
size_x size_y [size_z]
rptsize_x rptsize_y [rptsize_z]
[**cell
number_of_cells
[*id
cell1_id cell2_id ...]
[*seed
seed_id seed_x seed_y [seed_z] seed_weight
... ]
[*ori
descriptor
cell1_param1 cell1_param2 ...
cell2_param1 cell2_param2 ...
...]
[*coo
cell1_x cell1_y [cell1_z]
cell2_x cell2_y [cell2_z]
... ]
[*vol
cell1_vol
cell2_vol
... ]
[*convexity
cell1_convexity
cell2_convexity
... ]
]
**data
rpt1_cell rpt2_cell ...
or
*file data_file_name
***end
where,
• ***tesr denotes the beginning of a raster tessellation file.
• **format denotes the beginning of the format field.
• format is the file format, currently ‘2.0’ (character string).
Appendix B: File Formats 67
• data_format is the format of the data in field **data. It can be either ascii, binary8 (8-bit
binary), binary16 (16-bit binary, LittleEndian), binary16_big (16-bit binary, BigEndian),
binary32 (32-bit binary, LittleEndian) or binary32_big (32-bit binary, BigEndian).
• **general denotes the beginning of the general information field.
• dimension is the dimension of the raster tessellation.
• size_x, size_y and size_z are the raster sizes along the 3 coordinate axes. The number
of sizes must match dimension.
• rptsize_x, rptsize_y and rptsize_z are the point sizes along the 3 coordinate axes. The
number of sizes must match dimension.
• **cell denotes the beginning of an optional cell field.
• number_of_cells is the number of cells.
• *id denotes the beginning of an optional identifier field. If the field is present, the cell
identifiers listed under **data are supposed to be numbered contiguously from 1 (or 0 in
case of void), and their actual identifiers are considered to be the ones provided in the list.
The actual identifiers are used in output files.
• cell1_id, cell2_id, . . . are the actual identifiers of the cells.
• *seed denotes the beginning of a seed field.
• seed_id is the identifier of a seed and ranges from 1 to number_of_cells.
• seed_x, seed_y and seed_z are the three coordinates of a seed (real numbers).
• seed_weight is the weight of a seed (real number).
• *ori denotes the beginning of an optional crystal orientation field.
• descriptor is the descriptor used to parametrize the crystal orientations. See Section A.7
[Rotations and Orientations], page 57 for the list of available descriptors.
• cellid_param1, cellid_param2, . . . are the values of the orientation descriptor of cell id.
• *coo denotes the beginning of an optional centroid field.
• cellid_x, cellid_y and cellid_z are the coordinates of the centroids of cell id.
• *vol denotes the beginning of an optional volume field.
• cellid_vol is the volume of cell id.
• *convexity denotes the beginning of an optional convexity field.
• cellid_convexity is the convexity of cell id.
• **data denotes the beginning of the data field. Data can be provided in the .tesr file or
in a separate file, using *file, see below.
• rptid_cell is the cell raster point id belongs to. The cell identifiers should start from 1.
Use 0 for voids.
• *file denotes the beginning of a file field.
• data_file_name is the name of a file that contains the data. Typically, it is a .raw file.
1::1 3
1::2 4
1::3 5
2::1 4
2::2 2
2::3 1
A module directory, neper_X/, where ‘X’ stands for the module letter (one of ‘t’, ‘m’ or ‘v’), is
structured as follows,
• neper_X.h, neper_X_.h and neper_X.c
These are the source code header files and source code file of the module. neper_X.c con-
tains the module function, ‘neper_X’. neper_X_.h is the source code header file, which
is #include’ed in neper_X.c and contains a bunch of #includes to all necessary library
header files. neper_X.h contains the prototype of the module function and is #include’ed
in neper_.h. Hence, files _.h are local header files while files .h are header files #include’ed
into a upper-level source code header file. This is true anywhere in the source code. More-
over, any function specific to module X is prefixed ‘neX_’.
• neX_input/ and structIn_X.h
The ‘neX_input/’ directory contains functions for reading the value of the arguments passed
to module X from the command line. The information are recorded into an ‘IN’ C structure,
which is declared in file ‘structIn_X.h’.
• neX_foo/, neX_bar/, etc.
Each of these directories is associated to a specific task of the module and contains a function
of the same name (‘neX_foo’, etc.) which is called from function ‘neper_X’. Each directory
contains a directory tree structure.
• CMakeLists.txt
This file tells CMake where to find the source files and how to manage dependencies in
the module. It is used by the upper-level CMakeLists.txt file (there is no lower-level
CMakeLists.txt file).
The neut directory is roughly structured as follows,
• CMakeLists.txt
This file tells CMake where to find the source files and how to manage dependencies in
the module. It is used by the upper-level CMakeLists.txt file (there is no lower-level
CMakeLists.txt file).
• neut.h, neut_t.h, neut_m.h and neut_v.h
These files are source code header files that #include header files of neut (which contain
function prototypes) and are #included in the modules. neut.h #includes all header files
while the three others #include header files only necessary to the corresponding module
(this speeds up compilation at development stage).
• neut_structs/
This directory contains header files which defines all C structures used in the program.
• neut_foo/, neut_bar/, etc.
Each of these directories contain functions specific to a particular C structure. For example,
neut_tess contains functions relative to the ‘TESS’ structure, which describes a tessellation.
C.1.2 Documentation
Neper’s documentation is located in directory doc/. It is written in Texinfo, the GNU software
documentation system. The documentation consists of a collection of .texi files (text files).
The documentation may be compiled in PDF, info or html format by running make pdf, make
info or make html, respectively. In official releases, both the PDF and info documentation files
are built and included in the archive.
Appendix C: Developer’s Guide 71
In module -V, options are processed differently. Instead of being recorded in a C structure, they
are read one after the other and associated functions are executed along the way. To add a new
option, take an existing option as an example.
• DEVEL_DEBUGGING_FLAG
Setting the option to ON turns on the debugging compilation flag ‘-g’, which is required
for debugging with gdb and valgrind, and turns on the compilation flag ‘-Werror’, which
makes all compilation warnings into errors.
• DEVEL_DEBUGGING_TEST
Setting the option to ON runs internal tests during Neper execution at places where the code
is otherwise considered robust.
• DEVEL_OPTIMIZATION
Setting this option to OFF disables code optimization, which is useful for debugging with
gdb and valgrind.
• DEVEL_PROFILING
Setting this option to ON turns on the code profiling compilation flag ‘-pg’, which is required
for profiling with gprof. This is a highy CPU-sensitive option, which should be used only
when profiling is actually carried out.
C.2.4 Testing
The code can be tested using CTest. The usual way is as follows:
$ ctest
It is also possible to run only some of the tests.
• Option -R selects the tests whose name contains a character string:
$ ctest -R string
As test names start by the letter of the module they refer to, followed by character ‘_’, it
becomes handy to run tests on a specific module, for example:
$ ctest -R T_
• Option -E selects the tests that do not contain a character string:
$ ctest -E string
• Option -I selects the tests from their numbers, for example:
$ ctest -I 3,5
Appendix D: Versions 73
Appendix D Versions
New in 3.0.2 (16 Feb 2017):
- module -T: added -transform scale and transform rotate for scalar
tessellations (.tess), fixed -morpho with -periodic, fixed -morpho
with non-unitary domains, fixed -statedge/-statface theta with
-oricrysym hexagonal, improved -ori, added -morpho
lamellar(v=crysdir), added ***tess/**cell/*crysym section to .tess
file, fixed -morphooptialgo random, small fixes.
- module -M: fixed -interface cohesive in 2D and 3D (for Abaqus), enable
-interface discontinuous and cohesive for periodic tessellations,
added -format msh:binary, fixed faset internal for 3D, added
-transport node:..., changed point keys "elt3d" and "elset3d" into "elt"
and "elset" (now apply to 3D or 2D), small fixes.
- documentation: minor fixes.
Preamble
The GNU General Public License is a free, copyleft license for software and other kinds of works.
The licenses for most software and other practical works are designed to take away your freedom
to share and change the works. By contrast, the GNU General Public License is intended to
guarantee your freedom to share and change all versions of a program—to make sure it remains
free software for all its users. We, the Free Software Foundation, use the GNU General Public
License for most of our software; it applies also to any other work released this way by its
authors. You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public
Licenses are designed to make sure that you have the freedom to distribute copies of free software
(and charge for them if you wish), that you receive source code or can get it if you want it, that
you can change the software or use pieces of it in new free programs, and that you know you
can do these things.
To protect your rights, we need to prevent others from denying you these rights or asking you
to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of
the software, or if you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must
pass on to the recipients the same freedoms that you received. You must make sure that they,
too, receive or can get the source code. And you must show them these terms so they know
their rights.
Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on
the software, and (2) offer you this License giving you legal permission to copy, distribute and/or
modify it.
For the developers’ and authors’ protection, the GPL clearly explains that there is no warranty
for this free software. For both users’ and authors’ sake, the GPL requires that modified versions
be marked as changed, so that their problems will not be attributed erroneously to authors of
previous versions.
Some devices are designed to deny users access to install or run modified versions of the software
inside them, although the manufacturer can do so. This is fundamentally incompatible with
the aim of protecting users’ freedom to change the software. The systematic pattern of such
abuse occurs in the area of products for individuals to use, which is precisely where it is most
unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for
those products. If such problems arise substantially in other domains, we stand ready to extend
this provision to those domains in future versions of the GPL, as needed to protect the freedom
of users.
Finally, every program is threatened constantly by software patents. States should not allow
patents to restrict development and use of software on general-purpose computers, but in those
that do, we wish to avoid the special danger that patents applied to a free program could make it
effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render
the program non-free.
80 Neper 3.0.2
The precise terms and conditions for copying, distribution and modification follow.
that the work is specifically designed to require, such as by intimate data communication
or control flow between those subprograms and other parts of the work.
The Corresponding Source need not include anything that users can regenerate automati-
cally from other parts of the Corresponding Source.
The Corresponding Source for a work in source code form is that same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of copyright on the Program,
and are irrevocable provided the stated conditions are met. This License explicitly affirms
your unlimited permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its content, constitutes
a covered work. This License acknowledges your rights of fair use or other equivalent, as
provided by copyright law.
You may make, run and propagate covered works that you do not convey, without conditions
so long as your license otherwise remains in force. You may convey covered works to others
for the sole purpose of having them make modifications exclusively for you, or provide
you with facilities for running those works, provided that you comply with the terms of
this License in conveying all material for which you do not control copyright. Those thus
making or running the covered works for you must do so exclusively on your behalf, under
your direction and control, on terms that prohibit them from making any copies of your
copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under the conditions stated
below. Sublicensing is not allowed; section 10 makes it unnecessary.
3. Protecting Users’ Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological measure under any
applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on
20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.
When you convey a covered work, you waive any legal power to forbid circumvention of
technological measures to the extent such circumvention is effected by exercising rights
under this License with respect to the covered work, and you disclaim any intention to limit
operation or modification of the work as a means of enforcing, against the work’s users,
your or third parties’ legal rights to forbid circumvention of technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program’s source code as you receive it, in any
medium, provided that you conspicuously and appropriately publish on each copy an ap-
propriate copyright notice; keep intact all notices stating that this License and any non-
permissive terms added in accord with section 7 apply to the code; keep intact all notices
of the absence of any warranty; and give all recipients a copy of this License along with the
Program.
You may charge any price or no price for each copy that you convey, and you may offer
support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to produce it from the
Program, in the form of source code under the terms of section 4, provided that you also
meet all of these conditions:
a. The work must carry prominent notices stating that you modified it, and giving a
relevant date.
b. The work must carry prominent notices stating that it is released under this License
and any conditions added under section 7. This requirement modifies the requirement
in section 4 to “keep intact all notices”.
82 Neper 3.0.2
c. You must license the entire work, as a whole, under this License to anyone who comes
into possession of a copy. This License will therefore apply, along with any applicable
section 7 additional terms, to the whole of the work, and all its parts, regardless of how
they are packaged. This License gives no permission to license the work in any other
way, but it does not invalidate such permission if you have separately received it.
d. If the work has interactive user interfaces, each must display Appropriate Legal Notices;
however, if the Program has interactive interfaces that do not display Appropriate Legal
Notices, your work need not make them do so.
A compilation of a covered work with other separate and independent works, which are not
by their nature extensions of the covered work, and which are not combined with it such as
to form a larger program, in or on a volume of a storage or distribution medium, is called an
“aggregate” if the compilation and its resulting copyright are not used to limit the access or
legal rights of the compilation’s users beyond what the individual works permit. Inclusion
of a covered work in an aggregate does not cause this License to apply to the other parts
of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms of sections 4 and 5,
provided that you also convey the machine-readable Corresponding Source under the terms
of this License, in one of these ways:
a. Convey the object code in, or embodied in, a physical product (including a physical
distribution medium), accompanied by the Corresponding Source fixed on a durable
physical medium customarily used for software interchange.
b. Convey the object code in, or embodied in, a physical product (including a physical
distribution medium), accompanied by a written offer, valid for at least three years and
valid for as long as you offer spare parts or customer support for that product model,
to give anyone who possesses the object code either (1) a copy of the Corresponding
Source for all the software in the product that is covered by this License, on a durable
physical medium customarily used for software interchange, for a price no more than
your reasonable cost of physically performing this conveying of source, or (2) access to
copy the Corresponding Source from a network server at no charge.
c. Convey individual copies of the object code with a copy of the written offer to provide
the Corresponding Source. This alternative is allowed only occasionally and noncom-
mercially, and only if you received the object code with such an offer, in accord with
subsection 6b.
d. Convey the object code by offering access from a designated place (gratis or for a
charge), and offer equivalent access to the Corresponding Source in the same way
through the same place at no further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to copy the object code
is a network server, the Corresponding Source may be on a different server (operated by
you or a third party) that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the Corresponding Source.
Regardless of what server hosts the Corresponding Source, you remain obligated to
ensure that it is available for as long as needed to satisfy these requirements.
e. Convey the object code using peer-to-peer transmission, provided you inform other
peers where the object code and Corresponding Source of the work are being offered
to the general distrib at no charge under subsection 6d.
A separable portion of the object code, whose source code is excluded from the Corre-
sponding Source as a System Library, need not be included in conveying the object code
work.
Appendix E: GNU General Public License 83
A “User Product” is either (1) a “consumer product”, which means any tangible personal
property which is normally used for personal, family, or household purposes, or (2) anything
designed or sold for incorporation into a dwelling. In determining whether a product is a
consumer product, doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, “normally used” refers to a typical or common use of
that class of product, regardless of the status of the particular user or of the way in which the
particular user actually uses, or expects or is expected to use, the product. A product is a
consumer product regardless of whether the product has substantial commercial, industrial
or non-consumer uses, unless such uses represent the only significant mode of use of the
product.
“Installation Information” for a User Product means any methods, procedures, authoriza-
tion keys, or other information required to install and execute modified versions of a covered
work in that User Product from a modified version of its Corresponding Source. The infor-
mation must suffice to ensure that the continued functioning of the modified object code is
in no case prevented or interfered with solely because modification has been made.
If you convey an object code work under this section in, or with, or specifically for use in,
a User Product, and the conveying occurs as part of a transaction in which the right of
possession and use of the User Product is transferred to the recipient in perpetuity or for
a fixed term (regardless of how the transaction is characterized), the Corresponding Source
conveyed under this section must be accompanied by the Installation Information. But this
requirement does not apply if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has been installed in
ROM).
The requirement to provide Installation Information does not include a requirement to con-
tinue to provide support service, warranty, or updates for a work that has been modified or
installed by the recipient, or for the User Product in which it has been modified or installed.
Access to a network may be denied when the modification itself materially and adversely
affects the operation of the network or violates the rules and protocols for communication
across the network.
Corresponding Source conveyed, and Installation Information provided, in accord with this
section must be in a format that is distribly documented (and with an implementation
available to the distrib in source code form), and must require no special password or key
for unpacking, reading or copying.
7. Additional Terms.
“Additional permissions” are terms that supplement the terms of this License by making
exceptions from one or more of its conditions. Additional permissions that are applicable
to the entire Program shall be treated as though they were included in this License, to the
extent that they are valid under applicable law. If additional permissions apply only to part
of the Program, that part may be used separately under those permissions, but the entire
Program remains governed by this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option remove any additional
permissions from that copy, or from any part of it. (Additional permissions may be written
to require their own removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work, for which you have or
can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you add to a covered work,
you may (if authorized by the copyright holders of that material) supplement the terms of
this License with terms:
a. Disclaiming warranty or limiting liability differently from the terms of sections 15 and
16 of this License; or
84 Neper 3.0.2
A patent license is “discriminatory” if it does not include within the scope of its coverage,
prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights
that are specifically granted under this License. You may not convey a covered work if you
are a party to an arrangement with a third party that is in the business of distributing
software, under which you make payment to the third party based on the extent of your
activity of conveying the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory patent license (a)
in connection with copies of the covered work conveyed by you (or copies made from those
copies), or (b) primarily for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement, or that patent license
was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting any implied license or
other defenses to infringement that may otherwise be available to you under applicable
patent law.
12. No Surrender of Others’ Freedom.
If conditions are imposed on you (whether by court order, agreement or otherwise) that
contradict the conditions of this License, they do not excuse you from the conditions of this
License. If you cannot convey a covered work so as to satisfy simultaneously your obligations
under this License and any other pertinent obligations, then as a consequence you may not
convey it at all. For example, if you agree to terms that obligate you to collect a royalty
for further conveying from those to whom you convey the Program, the only way you could
satisfy both those terms and this License would be to refrain entirely from conveying the
Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have permission to link or combine
any covered work with a work licensed under version 3 of the GNU Affero General Public
License into a single combined work, and to convey the resulting work. The terms of
this License will continue to apply to the part which is the covered work, but the special
requirements of the GNU Affero General Public License, section 13, concerning interaction
through a network will apply to the combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of the GNU General
Public License from time to time. Such new versions will be similar in spirit to the present
version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies that a
certain numbered version of the GNU General Public License “or any later version” applies
to it, you have the option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software Foundation. If the Program
does not specify a version number of the GNU General Public License, you may choose any
version ever published by the Free Software Foundation.
If the Program specifies that a proxy can decide which future versions of the GNU Gen-
eral Public License can be used, that proxy’s distrib statement of acceptance of a version
permanently authorizes you to choose that version for the Program.
Later license versions may give you additional or different permissions. However, no addi-
tional obligations are imposed on any author or copyright holder as a result of your choosing
to follow a later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMIT-
TED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRIT-
Appendix E: GNU General Public License 87
ING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PRO-
GRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE
RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MOD-
IFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE
TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED
OF THE POSSIBILITY OF SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided above cannot be given local
legal effect according to their terms, reviewing courts shall apply local law that most closely
approximates an absolute waiver of all civil liability in connection with the Program, unless
a warranty or assumption of liability accompanies a copy of the Program in return for a fee.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short notice like this when it starts
in an interactive mode:
program Copyright (C) year name of author
88 Neper 3.0.2
This program comes with ABSOLUTELY NO WARRANTY; for details type ‘show w’.
This is free software, and you are welcome to redistribute it
under certain conditions; type ‘show c’ for details.
The hypothetical commands ‘show w’ and ‘show c’ should show the appropriate parts of the
General Public License. Of course, your program’s commands might be different; for a GUI
interface, you would use an “about box”.
You should also get your employer (if you work as a programmer) or school, if any, to sign a
“copyright disclaimer” for the program, if necessary. For more information on this, and how to
apply and follow the GNU GPL, see http://www.gnu.org/licenses/.
The GNU General Public License does not permit incorporating your program into proprietary
programs. If your program is a subroutine library, you may consider it more useful to permit
linking proprietary applications with the library. If this is what you want to do, use the GNU
Lesser General Public License instead of this License. But first, please read http://www.gnu.
org/philosophy/why-not-lgpl.html.
Option Index 89
Option Index
--help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 -dataelt2dcol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
--license . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 -dataelt2dcolscheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
--version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 -dataelt2dedgecol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
-cameraangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 -dataelt2dedgerad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
-cameracoo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 -dataelt2dscale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
-cameralookat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 -dataelt2dscaletitle . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
-cameraprojection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 -dataelt3dcol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
-camerasky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 -dataelt3dcolscheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
-checktess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 -dataelt3dedgecol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
-cl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -dataelt3dedgerad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
-clean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 -dataelt3dscale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
-clmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -dataelt3dscaletitle . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
-clratio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -datafacecol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
-datacellcol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 -datafacecolscheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
-datacellcolscheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 -datafacescale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
-datacellscale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 -datafacescaletitle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
-datacellscaletitle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 -datafacetrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
-datacelltrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 -datanodecol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
-datacsyscol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 -datanodecolscheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
-datacsyscoo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 -datanodecoo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
-datacsyslabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 -datanodecoofact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
-datacsyslength . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 -datanoderad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
-datacsysrad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 -datanodescale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
-dataedgecol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 -datanodescaletitle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
-dataedgecolscheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 -datapointcol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
-dataedgerad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 -datapointcolscheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
-dataedgescale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 -datapointcoo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
-dataedgescaletitle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 -datapointcoofact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
-dataedgetrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 -datapointrad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
-dataelset0dcol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 -datapointscale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
-dataelset0dcolscheme . . . . . . . . . . . . . . . . . . . . . . . . . 42 -datapointscaletitle . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
-dataelset0drad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 -datapointtrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
-dataelset0dscale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 -datapolycol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
-dataelset0dscaletitle . . . . . . . . . . . . . . . . . . . . . . . . 42 -datapolycolscheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
-dataelset1dcol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 -datapolyscale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
-dataelset1dcolscheme . . . . . . . . . . . . . . . . . . . . . . . . . 42 -datapolyscaletitle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
-dataelset1drad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 -datapolytrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
-dataelset1dscale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 -datarptedgecol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
-dataelset1dscaletitle . . . . . . . . . . . . . . . . . . . . . . . . 42 -datarptedgerad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
-dataelset2dcol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 -dataseedcol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
-dataelset2dcolscheme . . . . . . . . . . . . . . . . . . . . . . . . . 41 -dataseedcolscheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
-dataelset2dedgecol . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 -dataseedrad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
-dataelset2dedgerad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 -dataseedscale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
-dataelset2dscale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 -dataseedscaletitle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
-dataelset2dscaletitle . . . . . . . . . . . . . . . . . . . . . . . . 41 -datavercol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
-dataelset3dcol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 -datavercolscheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
-dataelset3dcolscheme . . . . . . . . . . . . . . . . . . . . . . . . . 40 -dataverrad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
-dataelset3dedgecol . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 -dataverscale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
-dataelset3dedgerad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 -dataverscaletitle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
-dataelset3dscale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 -datavertrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
-dataelset3dscaletitle . . . . . . . . . . . . . . . . . . . . . . . . 41 -dim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
-dataelt0dcol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 -dim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
-dataelt0dcolscheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 -domain. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
-dataelt0drad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 -dupnodemerge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
-dataelt0dscale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 -elttype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
-dataelt0dscaletitle . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 -endloop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
-dataelt1dcol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 -faset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
-dataelt1dcolscheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 -fmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
-dataelt1drad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 -format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16, 30
-dataelt1dscale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 -id . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
-dataelt1dscaletitle . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 -imageantialias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
90 Neper 3.0.2
-imagebackground . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 -sel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
-imageformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 -showcell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
-imagesize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 -showcsys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
-includepov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 -showedge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
-interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 -showelset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
-loadmesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 -showelset0d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
-loadpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11, 25 -showelset1d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
-loadtesr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 -showelset2d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
-loadtess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 -showelset3d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
-loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 -showelt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
-mesh2dalgo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 -showelt0d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
-mesh2diter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 -showelt1d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
-mesh2dmaxtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 -showelt2d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
-mesh2drmaxtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 -showelt3d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
-mesh3dalgo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 -showface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
-mesh3dclconv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 -showfaceinter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
-mesh3diter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 -showmesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
-mesh3dmaxtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 -showmeshslice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
-mesh3drmaxtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 -shownode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
-meshqualdisexpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 -showpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
-meshqualexpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 -showpoly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
-meshqualmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 -showseed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
-mloop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 -showshadow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
-morpho. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 -showtesr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
-morphooptialgo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
-showtess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
-morphooptialgoneigh . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
-showver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
-morphooptideltamax . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
-singnodedup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
-morphooptidof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
-slicemesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
-morphooptigrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
-sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
-morphooptiini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
-statcell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
-morphooptiinistep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
-statedge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
-morphooptilogdis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
-morphooptilogtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 -statelset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
-morphooptilogval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 -statelset0d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
-morphooptilogvar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 -statelset1d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
-morphooptiobjective . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 -statelset2d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
-morphooptismooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 -statelset3d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
-morphooptistop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 -statelt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
-n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 -statelt0d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
-nset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 -statelt1d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
-o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16, 29 -statelt2d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
-order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -statelt3d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
-ori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 -statface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
-oricrysym . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 -statnode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
-oridescriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 -statpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
-oriformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 -statpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
-part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 -statpoly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
-partbalancing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 -statseed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
-partmethod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 -statver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
-periodicity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 -tesrformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
-pl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -tesrsize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
-rcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -tesrsmooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
-regularization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 -tesrsmoothfact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
-rsel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 -tesrsmoothitermax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
-scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 -transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
-scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 -transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29