MIXD2EnSight Converter
MIXD2EnSight is a utility used to convert the output from FEM simulations into the EnSight 7 format, which is used by the EnSight visualization package. It handles multiple data records, as well as deforming and mutating meshes, i.e., multiple coordinate and connectivity records. Changing connectivity arrays are not supported yet, and such data will have to be converted and visualized one record at a time. Only all-tetrahedral or all-hexahedral meshes are accepted.
Documentation
This is it, and you can also look at the source code in the mixd2ensight CVS module. The file parseinput.F can be helpful in identifying all current options, and the initialize.F will show you some of the default values.
Data Requirements
MIXD2EnSight reads standard MIXD format data files. The files should be pure IEEE binary, 64-bit floating point, node-level. For more information on writing pure binary files see the EWD library documentation.
System Requirements
MIXD2EnSight has been compiled on Mac OS 10.x, Linux 2.x and IRIX 6.x. Because of heavy I/O activity, it is usually preferable to place both the original and converted data on a disk local to the machine on which the converter is running. However, the converted data should be placed in a directory accessible from the EnSight server machine, or transferred there afterwards. On SGI, the converter can take advantage of multiprocessing capabilities which are controlled by the
MP_SET_NUMTHREADS environment variable.
Usage
MIXD2EnSight executable resides typically in /usr/local/bin/mixd2ensight. When run interactively, it looks for a mixd2ensight.in input file in the current directory, and if it is found, accepts the command input from there. If that file does not exist, the commands are read from the standard input. Alternatively, the input can be redirected from an arbitrary file. There are no command line options at the moment.
Input
MIXD2EnSight accepts the following keywords as commands.
Key values can be integer %d, floating point %f, strings without spaces %s, and arbitrary strings %z.
| Key | Description | Example | Default |
abort |
aborts the program | abort |
- |
source %s |
temporarily switches command input to another file | source minf |
- |
elemtype %s |
element type a | elemtype qua |
tet |
nsd %d |
number of spatial dimensions | nsd 2 |
3 |
nen %d |
number of element nodes | nen 8 |
4 |
ndf %d |
number of degrees of freedom per node | ndf 5 |
4 |
ne %d |
number of mesh elements | ne 396682 |
- |
nemin %d |
starting element (ignore preceding elements) | nemin 200 |
1 |
nemax %d |
ending element (ignore subsequent elements) | nemax 400 |
ne |
nn %d |
number of mesh nodes | nn 139352 |
- |
neface %d |
number of faces per element | neface 6 |
4 |
nnface %d |
number of nodes per face | nnface 4 |
3 |
nrec %d |
number of data and/or coordinate records | nrec 20 |
1 |
minrec %d |
nstarting data and/or coordinate record | minrec 2 |
1 |
maxrec %d |
ending data and/or coordinate record | maxrec 18 |
nrec |
increc %d |
data and/or coordinate record increment | increc 2 |
1 |
srng %d %z |
name assigned to a face group (RNG) | srng 2 inflow boundary |
b |
sdf %d %s |
name assigned to a degree of freedom | sdf 6 concentration |
c |
t0 %f |
time for the initial record | t0 20.125 |
0.0 |
dt %f |
time interval between records | dt 0.125 |
1.0 |
moving [on|off] |
deforming mesh | moving on |
off |
mutating [on|off] |
changing mesh connectivity | mutating on |
off |
debug [on|off] |
debugging output | debug on |
off |
elabel [on|off] |
generate element labels | elabel off |
on d |
nlabel [on|off] |
generate node labels | nlabel on |
off |
mien %s |
file name containing connectivity array | mien /tmp/io.0048 |
mien |
mxyz %s |
file name containing nodal coordinates | mxyz /tmp/xo.0048 |
mxyz |
data %s |
file name containing nodal data | data /tmp/do.0048 |
data e |
mrng %s |
file name containing face group (RNG) definitions | mrng /tmp/mrng.odd |
mrng f |
dcel %s |
file name containing element data | data mipe.1024 |
mclt |
cellint %s |
integer element data | cellint on |
off |
case %s |
EnSight case file to be created | case new.case |
out.case |
geo %s |
EnSight geometry file to be created | geo new.geo |
out.geo |
var %s |
EnSight result file to be created | var new.var |
out.var |
a) Element types can be triangles
tri, quads qua, tetrahedra tet, hexahedra hex, 5-node pyramids pyr and 6-node prisms pri.b) Default face group names are
rng_01, rng_02, rng_03, etc.c) If
ndf is 4, default is x_velocity, y_velocity, z_velocity and pressure. If ndf is 5, default is density, x_velocity, y_velocity, z_velocity and energy. In all other situations, default is dof_01, dof_02, etc.d) If
off, numeric labels are generated by EnSight. They are absurd for the surface mesh elements, but this way converter uses slightly less memory. If on, the surface mesh element labels always correspond to the parent volume element. You can turn it off if you're never going to look at the element numbers during the EnSight session.e) If set to
-, no data file will be read and no result file will be created.f) If set to
-, no surface parts will be created.
Sample Run
As an example, consider the input file listed below:
hydra(test)% cat mixd2ensight.in directory /Users/behr/work/ohio.0418 source mesh.info mien mien mxyz xo.1e7.0500 data do.1e7.0500 mrng mrng debug on moving on ndf 4 nrec 5 srng 1 upstream bed srng 2 right srng 3 outflow srng 4 left srng 5 inflow srng 6 free surface srng 7 spillway srng 8 downstream bed
With the debugging output on, the converter produces following progress messages:
hydra(test)% mixd2ensight parseinput: accepting input from mixd2ensight.in driver: starting driver: record 001 driver: reading /Users/behr/work/ohio.0418/xo.1e7.0500 driver: reading /Users/behr/work/ohio.0418/mien driver: reading /Users/behr/work/ohio.0418/mrng driver: reading /Users/behr/work/ohio.0418/do.1e7.0500 driver: record 002 driver: reading /Users/behr/work/ohio.0418/xo.1e7.0500 driver: reading /Users/behr/work/ohio.0418/do.1e7.0500 driver: record 003 driver: reading /Users/behr/work/ohio.0418/xo.1e7.0500 driver: reading /Users/behr/work/ohio.0418/do.1e7.0500 driver: record 004 driver: reading /Users/behr/work/ohio.0418/xo.1e7.0500 driver: reading /Users/behr/work/ohio.0418/do.1e7.0500 driver: record 005 driver: reading /Users/behr/work/ohio.0418/xo.1e7.0500 driver: geometry file done driver: reading /Users/behr/work/ohio.0418/do.1e7.0500 driver: result file done
The EnSight files thus created are:
tempest(test)% ls /Users/behr/work/ohio.0418/out.∗ /Users/behr/work/ohio.0418/out.case /Users/behr/work/ohio.0418/out.var02.003 /Users/behr/work/ohio.0418/out.geo.001 /Users/behr/work/ohio.0418/out.var02.004 /Users/behr/work/ohio.0418/out.geo.002 /Users/behr/work/ohio.0418/out.var02.005 /Users/behr/work/ohio.0418/out.geo.003 /Users/behr/work/ohio.0418/out.var03.001 /Users/behr/work/ohio.0418/out.geo.004 /Users/behr/work/ohio.0418/out.var03.002 /Users/behr/work/ohio.0418/out.geo.005 /Users/behr/work/ohio.0418/out.var03.003 /Users/behr/work/ohio.0418/out.var01.001 /Users/behr/work/ohio.0418/out.var03.004 /Users/behr/work/ohio.0418/out.var01.002 /Users/behr/work/ohio.0418/out.var03.005 /Users/behr/work/ohio.0418/out.var01.003 /Users/behr/work/ohio.0418/out.var04.001 /Users/behr/work/ohio.0418/out.var01.004 /Users/behr/work/ohio.0418/out.var04.002 /Users/behr/work/ohio.0418/out.var01.005 /Users/behr/work/ohio.0418/out.var04.003 /Users/behr/work/ohio.0418/out.var02.001 /Users/behr/work/ohio.0418/out.var04.004 /Users/behr/work/ohio.0418/out.var02.002 /Users/behr/work/ohio.0418/out.var04.005
For this deforming domain case, each record produces one geometry file and a set of result files, one for each degree of freedom. In the case of fixed domain, only one geometry file is produced. The out.case result file is the only one in ASCII format and it contains links to all other geometry and result files:
hydra(test)% cat /Users/behr/work/ohio.0418/out.case FORMAT type: ensightGEOMETRY model: 1 out.geo.∗∗∗
VARIABLE scalar per node: 1 x_velocity out.var01.∗∗∗ scalar per node: 1 y_velocity out.var02.∗∗∗ scalar per node: 1 z_velocity out.var03.∗∗∗ scalar per node: 1 pressure out.var04.∗∗∗
TIME time set: 1 number of steps: 5 filename start number: 1 filename increment: 1 time values: 0.000000 1.000000 2.000000 3.000000 4.000000
In the EnSight Data Reader dialog, one has to select the Case file format, and then specify the file out.case as the geometry file.
Note that transient cases with deforming meshes and constant connectivity require the Initial Time to be set to 0.0 in the Data Reader dialog. Failure to do so will cause EnSight to read the parts, and consequently the connectivity, from the last record, which does not have the connectivity defined. Only the first record can be used for this purpose.
Known Problems
- The files to be read must be big-endian, and there is no likely way to change it in the future; we need to keep a single data format if we are to remain sane. The files created may be big-endian (on workstations) or little-endian (on PCs). When running EnSight, one may need to take the extra step of selecting Big-Endian or Little-Endian format in the Data Reader dialog, depending on which platform MIXD2EnSight was running on.
- If you want to access the RNGs after opening the
out.casefile in Paraview, you have to specify the number of RNGs in yourmixd2ensight.in, e.g. putnrng 8somewhere (which is neither in the list nor in the example input file on this page). Then you can access them with the ExtractBlocks filter in Paraview which will also recognize the RNG names you possibly specified using thesrngkeyword.




