You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
666 lines
31 KiB
666 lines
31 KiB
\chapter{Exodiff}\label{ch:exodiff}
|
|
\section{Introduction}
|
|
|
|
\exodiff{} compares the results data from two \exo{} databases. The
|
|
databases should represent the same model, that is, the \exo{} meta
|
|
data should be identical as should be the genesis portion of the bulk
|
|
data. The only differences should be in the values of the transient
|
|
bulk data. \exodiff{}'s main purpose is to detect and report these
|
|
differences. \exodiff{} will compare global, nodal, element, nodeset,
|
|
and sideset transient variables at each selected timestep; it will
|
|
also compare element attribute variables on each element block
|
|
containing attributes.
|
|
|
|
If a third file is specified on the command line, it will be created
|
|
with the same meta data and non-transient bulk data as the first file,
|
|
and each variable in the third file will be the differences of the
|
|
corresponding variables in the first two files.
|
|
|
|
A command file can be specified and used to control exactly what
|
|
variables are to be compared/differenced and to what tolerance.
|
|
|
|
By default, element block names and variable names are compared ignoring case.
|
|
|
|
\subsection{Difference Terminology}
|
|
\exodiff{} supports several options for determining whether two values
|
|
differ. These are called {\em difference types} and include the
|
|
following:
|
|
|
|
\begin{tabular}{ll}
|
|
relative difference & $|val1 - val2|/\max(|val1|, |val2|)$. \\
|
|
absolute difference & $|val1 - val2|$ \\
|
|
combined difference & $|val1 - val2| / \max(tol, tol * \max(|val1|, |val2|))$ \\
|
|
eigen\_relative difference & $||val1| - |val2||/\max{(|val1|,|val2|)}$. \\
|
|
eigen\_absolute difference & $||val1| - |val2||$\\
|
|
eigen\_combined difference & $||val1| - |val2|| / \max(tol, tol * \max(|val1|, |val2|))$\\
|
|
\end{tabular}
|
|
|
|
Where $tol$ is a user-specified tolerance. The difference types
|
|
prefixed by {\em eigen\_} are intended to be used when the variable
|
|
being differenced describes the shape of an eigenvector and the
|
|
eigenvector shape is considered equal if the values on one database
|
|
are equal in magnitude, but possibly of a different sign\footnote{Note
|
|
that the difference type as implemented does not fully check whether
|
|
the eigenvectors represented by the data are truly the same shape with
|
|
a potential difference of sign since it works on an item-by-item basis and
|
|
does not check whether all items in the first database are multiplied
|
|
by the same 1.0 or -1.0 to match the items in the second database.
|
|
However, the implementation can be improved in the future without
|
|
breaking any existing scripts or command files.}.
|
|
|
|
Values are considered equal if $|val1| <= floor \&\& |val2| <= floor$;
|
|
where $floor$ is a user-specified value. Otherwise the difference is
|
|
computed using one of the above formulas and compared to a tolerance.
|
|
If the difference is greater than the tolerance, then the databases
|
|
are different. At the end of execution, a summary of the differences
|
|
found is output.
|
|
|
|
By default:
|
|
\begin{itemize}
|
|
\item All results variables and attributes are compared using a {\em relative difference} of $10^{-6}$
|
|
(about 6 significant digits) and a {\em floor} of~0.0.
|
|
\item Nodal locations are compared using {\em absolute difference} with
|
|
a tolerance of $10^{-6}$ and a {\em floor} of~0.0.
|
|
\item Time step values are compared using {\em relative difference} tolerance of $10^{-6}$ and a floor of $10^{-15}$.
|
|
\end{itemize}
|
|
|
|
\section{Invoking \exodiff}
|
|
\exodiff{} can be invoked using the following command lines:
|
|
To do normal comparison of two files using default tolerances
|
|
producing text output summarizing the differences, enter:
|
|
\begin{syntax}
|
|
exodiff [{options}] [-f <cmd\_file>] file1.e file2.e
|
|
\end{syntax}
|
|
Where \file{cmd\_file} is an optional file containing options and
|
|
tolerance values; its syntax is described below.
|
|
|
|
If you want \exodiff{} to output an \exo{} file created containing the differences of the two
|
|
files, the command line is similar, but also contains the name of the
|
|
file where the differences should be written\footnote{Note that all
|
|
variables on the third file are the difference of the values on the
|
|
first two files including the displacement variables. If you
|
|
visualize the file containing the differences, the visualization program may show a strange
|
|
deformed shape since the displacement variables are no longer true displacements.}:
|
|
\begin{syntax}
|
|
exodiff [{options}] [-f <cmd\_file>] file1.e file2.e diff_file.e
|
|
\end{syntax}
|
|
|
|
The third invocation option reads a single file and outputs a summary
|
|
of the variable data contained in the file. The summary data are the
|
|
minimum and maximum values for each variable and the time step and
|
|
entity id where the minimums and maximums occurred. This file can be
|
|
used for preparing a command input file for use in the previous two
|
|
invocations. The \param{no\_coord\_sep} option if present will
|
|
inhibit the calculation and output of the minimum distance between any
|
|
two nodes in the file which can take a long time for large models and
|
|
is often unneeded data.
|
|
\begin{syntax}
|
|
exodiff -summary [no\_coord\_sep] file.e (create variable summary)
|
|
\end{syntax}
|
|
|
|
The remaining invocation lines will output a short usage summary, a
|
|
much longer usage summary, and the last just output the version
|
|
information.
|
|
|
|
\begin{syntax}
|
|
exodiff [-h] [-help] (short usage summary)
|
|
exodiff [-H] (longer usage summary)
|
|
exodiff [-v] [-version] (version info)
|
|
\end{syntax}
|
|
|
|
The basic behavior can be modified using several optional parameters
|
|
specified on the command line. These are documented below:
|
|
|
|
\subsection{Optional Parameters}
|
|
|
|
\renewcommand\arraystretch{1.5}
|
|
\begin{longtable}{lp{4.0in}}
|
|
-t \tt<real value> & Overrides the default tolerance of $10^{-6}$ for
|
|
all variables.\\
|
|
-F \tt<real value> & Overrides the default floor tolerance of 0.0 for
|
|
all variables.\\
|
|
-absolute & Use absolute differences as default tolerance type \\
|
|
-relative & Use relative differences as default tolerance type \\
|
|
-combined & Use combined differences as default tolerance type \\
|
|
-eigen\_absolute & Use eigen\_absolute differences as default tolerance type (absolute value of values) \\
|
|
-eigen\_relative & Use eigen\_relative differences as default tolerance type (absolute value of values) \\
|
|
-eigen\_combined & Use eigen\_combined differences as default tolerance type (absolute value of values) \\
|
|
|
|
-T \tt<offset> & Match timestep 'x+offset' in first file with timestep
|
|
'x' in second file. \\
|
|
|
|
-TA & Automatically determine the timestep offset such that both databases end at the same step. \\
|
|
-TM & Automatically determine the timestep offset to find the closest match in file1 to the first step on file2.\\
|
|
-q & Quiet. Only errors will be sent to stdout. Comparison mode
|
|
will echo: {\tt exodiff: Files are the same.} or {\tt exodiff: Files are different.}\\
|
|
|
|
-show\_all\_diffs & Show all differences for all variables, not
|
|
just the maximum. Default behavior is that there will be a maximum of
|
|
one difference output per variable per timestep. If this option is
|
|
specified, then any pair of values that exceed the tolerance will be
|
|
output. Use of this option Can result in lots of output on large files
|
|
with lots of differences.\\
|
|
|
|
-m & Invoke a matching algorithm to create a mapping between the
|
|
nodes and elements of the two files based on geometric proximity.
|
|
The topology must still be the same (within tolerance), but can be ordered differently.
|
|
A match must be found for all nodes and elements or \exodiff{}
|
|
will output an error message and stop.\\
|
|
|
|
-p & Invoke a matching algorithm similar to the -m option. However
|
|
this option ignores unmatched nodes and elements. This allows
|
|
comparison of files that only partially overlap. \\
|
|
|
|
-match\_ids & Invoke a matching algorithm which matches nodes and elements using the node and element
|
|
global id maps in the two files. This is the default
|
|
mode of operation.\\
|
|
|
|
-match\_file\_order & Invoke a matching algorithm using the node and element
|
|
position order in the two files. \\
|
|
|
|
-show\_unmatched & If the -p option is given, this prints out the
|
|
elements that did not match. \\
|
|
|
|
-dumpmap & If the -m or -p switch is given, this prints out the resulting
|
|
map between the nodes and elements in the two files. \\
|
|
|
|
-nsmap & Create a map between the nodeset nodes in the two files
|
|
if they include the same nodes, but are in different
|
|
order. This is enabled by default.\\
|
|
|
|
-ssmap & Create a map between the sideset faces in the two files
|
|
if they include the same sides, but are in different order.
|
|
This is enabled by default.\\
|
|
|
|
-no\_nsmap & Compare nodeset nodes based on file order only. \\
|
|
-no\_ssmap & Compare sideset faces based on file order only. \\
|
|
|
|
-s & Short block type compare. Forces element block type strings to
|
|
be compared only up to the shortest string length. For example,
|
|
``HEX'' and ``HEX8'' will be considered the same. This is enabled by default. \\
|
|
|
|
-no\_short & Do not do the short block type compare. Forces element block
|
|
type strings to fully match. For example, ``HEX'' and ``HEX8''
|
|
will be considered different. \\
|
|
|
|
-ignore\_case & Ignore case. Variable names are compared case
|
|
in-sensitive. For example, ``Stress'' and ``STRESS'' will be
|
|
considered as the same variable. This is enabled by default. \\
|
|
|
|
-case\_sensitive & Variable names are compared case sensitive. For
|
|
example, ``Stress'' and ``STRESS'' will be considered as two different
|
|
variables. \\
|
|
|
|
-ignore\_maps& Output node and element difference summaries using file local implicit
|
|
ids instead of global ids. Note that the matching of
|
|
nodes and elements will use the mapping option
|
|
specified above; this option only affects the output of the node or
|
|
element id where the difference occurred. \\
|
|
|
|
-ignore\_nans& Don't check data for NaNs. By default, \exodiff{} will
|
|
output a warning message if any variable's value is NaN (Not a number). \\
|
|
|
|
-ignore\_dups& If two elements/nodes are in the same location in match or partial
|
|
match case, return first match instead of
|
|
aborting. This is used in the -m and -p matching options. Normally,
|
|
\exodiff{} will output an error message if a node in one file can be
|
|
matched to two or more nodes in the second file.\\
|
|
|
|
-ignore\_attributes& Don't compare element attribute values. \\
|
|
|
|
-nosymm & Turn off symmetric variable name checking. By default, a warning
|
|
will be produced if a variable that is not to be excluded\footnote{See
|
|
the command file description in Section~\ref{ed:command_file} for
|
|
details on excluding variables} is contained in the second file given
|
|
on the command line but not the first. This ``symmetric'' check can be
|
|
turned off with this option and the extra variables in the second file
|
|
will be ignored.\\
|
|
|
|
-allow\_name\_mismatch & Allow a variable name that is in the first database to
|
|
be absent from the second database. The default behavior is to
|
|
output an error if all variables in the first file cannot be matched
|
|
to variables in the second file.\\
|
|
|
|
-x {\tt <list>} & Exclude time steps. Does not calculate any
|
|
variable differences for the time steps
|
|
given in the list of integers. The format is comma
|
|
separated and ranged integers (with no spaces), such as ``1,5-9,28''.
|
|
The first time step is the number one. \\
|
|
|
|
-steps {\tt <b:e:i>}& Specify subset of steps to consider. Syntax is begin:end:increment,
|
|
Enter -1:: for just the last step. If only begin is set, then
|
|
end=begin and only that step will be considered \\
|
|
|
|
-norms& Calculate the $L_2$ norm of variable differences and output if
|
|
the norm is greater than 0.0. The output will also contain the
|
|
$L_2$ norm of each variable. This can be used to give an idea of
|
|
the relative magnitudes of the differences compared to the magnitudes
|
|
of the variables. This is for informational purposes only at
|
|
this time; it does not affect the determination of whether the
|
|
databases compare the same or different.\\
|
|
|
|
-stat & Return an exit status of 2 if the files are different. Normally,
|
|
the exit status is zero unless an error occurs. \\
|
|
|
|
-maxnames {\tt <int>}& There is a compiled limit of 1000 exodus
|
|
variable names. This option allows the maximum number to be
|
|
set to a larger value if either of the input databases contains more
|
|
than 1000 variables. \\
|
|
|
|
-use\_old\_floor& When \exodiff{} was first released, it used an
|
|
incorrect definition of the floor tolerance in which the differences
|
|
were ignored if the difference itself was less than the floor
|
|
value. This was fixed several years ago to the new definition which is
|
|
to ignore the differences if $|a| < floor \&\& |b| < floor$. This
|
|
option was provided so that users could use the old definition
|
|
if desired. It should not be used. \\
|
|
|
|
-summary & Produce a summary in \exodiff{} input format. This will
|
|
create an output file with max/min statistics on the data in the
|
|
format of an \exodiff{} input file. The algorithm to determine
|
|
the minimum separation between any two nodes can be disabled with
|
|
the ``no\_coord\_sep'' switch. \\
|
|
|
|
-copyright & Output the copyright and license information. \\
|
|
|
|
-f {\tt <cmd file>} & Use the given file to specify the variables to
|
|
be considered and the tolerances to be used for
|
|
each variable type or each individual variable. See
|
|
Section~\ref{ed:command_file} for details of the syntax in this file.\\
|
|
|
|
-H file & Show the syntax help for the command input file. This is
|
|
also documented in Section~\ref{ed:command_file}.\\
|
|
\end{longtable}
|
|
|
|
\subsection{\exodiff{} Command File Syntax}\label{ed:command_file}
|
|
|
|
If an \exodiff{} invocation uses the \param{-f <cmd\_file>} option,
|
|
then \exodiff{} will read commands from the specified file in addition
|
|
to parsing the options given on the command line. The command line
|
|
will be parsed first and then the commands in the input file. The
|
|
primary use of the input file is to give more control over the
|
|
difference types and tolerances to be used for individual variables.
|
|
|
|
The basic syntax of the file is:
|
|
\begin{itemize}
|
|
|
|
\item each command is given on a separate line.
|
|
|
|
\item Anything following the \param{\#} character on a line
|
|
will be treated as a comment and ignored.
|
|
|
|
\item Within a ``variables'' block, lines must be indented and must begin with a ``tab'' character.
|
|
\end{itemize}
|
|
|
|
The valid command lines are shown in all uppercase in the following
|
|
list. The list also describes the behavior that the command line will
|
|
specify.
|
|
\begin{itemize}
|
|
\item The variable names are case insensitive (unless the
|
|
\param{-case\_sensitive} option is specified or there is a
|
|
\param{CASE SENSITIVE} line in the command file).
|
|
|
|
\item All keyword comparisons are case insensitive. Abbreviations can be used.
|
|
|
|
\item All variable comparisons use the default of relative $10^{-6}$ for
|
|
variables and absolute $10^{-6}$ for coordinates. This is
|
|
overridden with the \param{DEFAULT TOLERANCE} line. The
|
|
\param{DEFAULT TOLERANCE} values are overridden by the values
|
|
given on the \param{VARIABLES} line and apply only to those
|
|
variables. Each variable can override all values by following
|
|
its name with a value.
|
|
|
|
\item A variable name must start with a tab character. If there is at least
|
|
one variable name of a specified type (element, nodal, global,
|
|
...) is listed, then only the listed variable(s) of that type will be differenced.
|
|
The variable name can be followed by an optional difference
|
|
type and tolerance, and an optional \param{floor} and floor
|
|
tolerance. The NOT symbol \param{!} means do not include this
|
|
variable. Mixing non-! and ! is not allowed without the
|
|
\param{(all)} specifier. For example
|
|
\begin{verbatim}
|
|
NODAL VARIABLES (all) absolute 1.E-8
|
|
<tab> DISPLX
|
|
<tab> !VELX
|
|
<tab> VELY relative 1.E-6 floor 1.e-10
|
|
\end{verbatim}
|
|
In this case, all variables are considered that are not prepended
|
|
with a ``!'' symbol.
|
|
|
|
\item If a variable type (e.g. \param{NODAL VARIABLES}) is not specified, no
|
|
variables of that type will be considered. Allowed variable
|
|
types are: \param{GLOBAL VARIABLES}, \param{NODAL VARIABLES},
|
|
\param{ELEMENT VARIABLES}, \param{NODESET VARIABLES}, and
|
|
\param{SIDESET VARIABLES}.
|
|
|
|
\item The command line option to set the maximum number of \exo{}
|
|
names can be set with \param{MAX NAMES <int>}. Note: this option must
|
|
appear before the variable blocks are read!
|
|
|
|
\item The time step exclusion option can be used in the input file with
|
|
the syntax \param{EXCLUDE TIMES <list>}, where \param{<list>} has the same
|
|
format as in the command line options.
|
|
|
|
\item The matching algorithm, \param{-m}, can be turned on from the input file
|
|
with the \param{APPLY MATCHING} keyword on a separate line.
|
|
|
|
\item The nodeset matching algorithm, \param{-nsmap}, can be turned on from the
|
|
input file with the \param{NODESET MATCH} keyword on a separate line.
|
|
\item The sideset matching algorithm, \param{-ssmap}, can be turned on from the
|
|
input file with the \param{SIDESET MATCH} keyword on a separate line.
|
|
\item The short block type compare option, \param{-s}, can be turned on with the
|
|
\param{SHORT BLOCKS} keyword.
|
|
\item The no short compare option, \param{-no\_short}, can be turned on with the
|
|
\param{NO SHORT BLOCKS} keyword.
|
|
\item The case\_sensitive option, \param{-case\_sensitive}, can be turned on with the
|
|
\param{CASE SENSITIVE} keyword.
|
|
\item The ignore case option, \param{-i}, can be turned on with the
|
|
\param{IGNORE CASE} keyword. (default behavior)
|
|
\item The ignore maps option, \param{-ignore\_maps}, can be turned on with the
|
|
\param{IGNORE MAPS} keyword.
|
|
\item The ignore nans option, \param{-ignore\_nans}, can be turned on with the
|
|
\param{IGNORE NANS} keyword.
|
|
\item The ignore dups option, \param{-ignore\_dups}, can be turned on with the
|
|
\param{IGNORE DUPLICATES} keyword.
|
|
\item The time step offset option, \param{-T}, can be turned on with the
|
|
\param{STEP OFFSET} keyword.
|
|
\item The automatic time step offset option, \param{-TA}, can be turned
|
|
on with the \param{STEP OFFSET AUTOMATIC} keyword.
|
|
\item The automatic time step offset option, \param{-TM}, can be turned
|
|
on with the \param{STEP OFFSET MATCH} keyword.
|
|
\item The calculation of the L2 norm of differences \param{-norms}, can be turned
|
|
on with the \param{CALCULATE NORMS} keyword.
|
|
\item The exit status return option, \param{-stat}, can be turned on with the
|
|
\param{RETURN STATUS} keyword.
|
|
\end{itemize}
|
|
\section{Examples}
|
|
The output below shows an example run of \exodiff{}. The command
|
|
invocation used was:
|
|
\begin{syntax}
|
|
exodiff -f P_exodiff.cmd P_gold_results.e bar-P.e
|
|
\end{syntax}
|
|
|
|
The \file{P\_exodiff.cmd} command file contains the following:
|
|
\begin{verbatim}
|
|
COORDINATES absolute 1.e-6
|
|
|
|
TIME STEPS relative 1.e-6 floor 0.0
|
|
|
|
GLOBAL VARIABLES relative 1.e-6 floor 1.e-16
|
|
internal_energy
|
|
kinetic_energy
|
|
momentum_x
|
|
|
|
NODAL VARIABLES relative 1.e-4 floor 1.e-16
|
|
displacement_x
|
|
acceleration_x
|
|
force_internal_x
|
|
mass
|
|
velocity_x
|
|
|
|
ELEMENT VARIABLES relative 1.e-6 floor 1.e-16
|
|
eqps
|
|
stress_xx absolute 1000
|
|
stress_yy absolute 1000
|
|
stress_zz absolute 1000
|
|
temperature absolute 1
|
|
yield_stress absolute 1000
|
|
\end{verbatim}
|
|
|
|
The first section of the output shows the code version and contact
|
|
information and when the output was generated; followed by some
|
|
summary statistics of the two files including the file paths and the
|
|
counts of nodes, elements, etc. If options are read from a command
|
|
file, the path to that file is listed.
|
|
|
|
\begin{verbatim}
|
|
*****************************************************************
|
|
EXODIFF EXODIFF EXODIFF EXODIFF EXODIFF EXODIFF EXODIFF
|
|
|
|
Version 2.43 (2011-04-07)
|
|
Authors: Richard Drake, rrdrake@sandia.gov
|
|
Greg Sjaardema, gdsjaar@sandia.gov
|
|
2011/04/28 21:11:00 MDT
|
|
|
|
EXODIFF EXODIFF EXODIFF EXODIFF EXODIFF EXODIFF EXODIFF
|
|
*****************************************************************
|
|
|
|
Reading first file ...
|
|
Reading second file ...
|
|
FILE 1: /home/exodiff/axial_pulse_par_ns/P_gold_results.e
|
|
Title: Default Database Title
|
|
Dim = 3, Blocks = 1, Nodes = 816, Elements = 450, Nodesets = 6, Sidesets = 0
|
|
Vars: Global = 7, Nodal = 13, Element = 16, Nodeset = 0, Sideset = 0, Times = 23
|
|
|
|
FILE 2: /home/exodiff/axial_pulse_par_ns/bar-P.e
|
|
Title: Default Database Title
|
|
Dim = 3, Blocks = 1, Nodes = 816, Elements = 450, Nodesets = 6, Sidesets = 0
|
|
Vars: Global = 7, Nodal = 13, Element = 16, Nodeset = 0, Sideset = 0, Times = 23
|
|
|
|
COMMAND FILE: /home/exodiff/axial_pulse_par_ns/P_exodiff.cmd
|
|
\end{verbatim}
|
|
|
|
\sectionline
|
|
The next output section summarizes what variables will be compared and
|
|
the difference types, tolerances, and floor values that will be used.
|
|
Note that the command file is specifying that only a subset of the
|
|
variables on the files will be differenced since the output above
|
|
shows 7 global variables, 13 nodal variables, and 16 element variables,
|
|
but the list below only shows 3 global, 5 nodal, and 6 element variables.
|
|
|
|
\begin{verbatim}
|
|
Coordinates will be compared .. tol: 1e-06 (absolute), floor: 0
|
|
Time step values will be compared .. tol: 1e-06 (relative), floor: 0
|
|
Global variables to be compared:
|
|
internal_energy tol: 1e-06 (relative), floor: 1e-16
|
|
kinetic_energy 1e-06 (relative), 1e-16
|
|
momentum_x 1e-06 (relative), 1e-16
|
|
Nodal variables to be compared:
|
|
displacement_x tol: 1e-06 (relative), floor: 1e-16
|
|
acceleration_x 1e-06 (relative), 1e-16
|
|
force_internal_x 1e-06 (relative), 1e-16
|
|
mass 1e-06 (relative), 1e-16
|
|
velocity_x 1e-06 (relative), 1e-16
|
|
Element variables to be compared:
|
|
eqps tol: 1e-06 (relative), floor: 1e-16
|
|
stress_xx 1e-06 (relative), 1e-16
|
|
stress_yy 1e-06 (relative), 1e-16
|
|
stress_zz 1e-06 (relative), 1e-16
|
|
temperature 1e-06 (relative), 1e-16
|
|
yield_stress 1e-06 (relative), 1e-16
|
|
No Element Attribute variables on either file.
|
|
No Nodeset variables on either file.
|
|
No Sideset variables on either file.
|
|
|
|
==============================================================
|
|
NOTE: All node and element ids are reported as global ids.
|
|
\end{verbatim}
|
|
|
|
\sectionline
|
|
The next output section shows the results of the differencing. For
|
|
the first several timesteps, no differences were found.
|
|
|
|
\begin{verbatim}
|
|
--------- Time step 1, 0.0000000e+00 ~ 0.0000000e+00, rel diff: 0.00000e+00 ---------
|
|
Global variables:
|
|
Nodal variables:
|
|
Element variables:
|
|
--------- Time step 2, 2.2708229e-08 ~ 2.2708229e-08, rel diff: 0.00000e+00 ---------
|
|
Global variables:
|
|
Nodal variables:
|
|
Element variables:
|
|
--------- Time step 3, 8.1607527e-08 ~ 8.1607527e-08, rel diff: 0.00000e+00 ---------
|
|
Global variables:
|
|
Nodal variables:
|
|
Element variables:
|
|
--------- Time step 4, 2.3437714e-07 ~ 2.3437714e-07, rel diff: 0.00000e+00 ---------
|
|
Global variables:
|
|
Nodal variables:
|
|
Element variables:
|
|
|
|
... deleted some output ...
|
|
|
|
--------- Time step 11, 7.7253933e-06 ~ 7.7253933e-06, rel diff: 0.00000e+00 ---------
|
|
Global variables:
|
|
Nodal variables:
|
|
Element variables:
|
|
--------- Time step 12, 8.9485520e-06 ~ 8.9485520e-06, rel diff: 0.00000e+00 ---------
|
|
Global variables:
|
|
Nodal variables:
|
|
Element variables:
|
|
\end{verbatim}
|
|
|
|
\sectionline
|
|
At this time step, differences are detected and output. The output
|
|
format is:
|
|
|
|
\begin{verbatim}
|
|
variable name diff type val file 1 val file 2 difference (which entity)
|
|
stress_xx rel diff: -1.1444528e+04 ~ -1.1444553e+04 = 2.15241e-06 (block 1, elmt 66)
|
|
\end{verbatim}
|
|
|
|
Note that only the maximum difference found for each variable at each
|
|
time step is output. There may be many more differences detected.
|
|
|
|
\begin{verbatim}
|
|
--------- Time step 13, 1.0171704e-05 ~ 1.0171704e-05, rel diff: 1.66547e-16 ---------
|
|
Global variables:
|
|
Nodal variables:
|
|
acceleration_x rel diff: 1.1719403e+04 ~ 1.1719426e+04 = 1.98010e-06 (node 68)
|
|
force_internal_x rel diff: -5.8141261e+02 ~ -5.8141376e+02 = 1.98010e-06 (node 68)
|
|
Element variables:
|
|
stress_xx rel diff: -1.1444528e+04 ~ -1.1444553e+04 = 2.15241e-06 (block 1, elmt 66)
|
|
stress_yy rel diff: -4.9048081e+03 ~ -4.9048309e+03 = 4.63816e-06 (block 1, elmt 266)
|
|
stress_zz rel diff: -4.9048129e+03 ~ -4.9048357e+03 = 4.64075e-06 (block 1, elmt 266)
|
|
--------- Time step 14, 1.1394849e-05 ~ 1.1394849e-05, rel diff: 1.48669e-16 ---------
|
|
Global variables:
|
|
Nodal variables:
|
|
displacement_x rel diff: 1.0981488e-11 ~ 1.0980936e-11 = 5.02741e-05 (node 740)
|
|
acceleration_x rel diff: 2.0947516e+02 ~ 2.0950905e+02 = 1.61776e-04 (node 639)
|
|
force_internal_x rel diff: -5.1961477e+00 ~ -5.1969885e+00 = 1.61776e-04 (node 639)
|
|
velocity_x rel diff: 5.9451636e-05 ~ 5.9447122e-05 = 7.59215e-05 (node 740)
|
|
Element variables:
|
|
stress_xx rel diff: -1.9233572e+02 ~ -1.9236707e+02 = 1.62922e-04 (block 1, elmt 326)
|
|
stress_yy rel diff: -8.2409892e+01 ~ -8.2442564e+01 = 3.96299e-04 (block 1, elmt 326)
|
|
stress_zz rel diff: -8.2408238e+01 ~ -8.2440733e+01 = 3.94165e-04 (block 1, elmt 326)
|
|
--------- Time step 15, 1.2617989e-05 ~ 1.2617989e-05, rel diff: 1.34258e-16 ---------
|
|
Global variables:
|
|
Nodal variables:
|
|
displacement_x rel diff: 1.4026865e-13 ~ 1.4075811e-13 = 3.47725e-03 (node 648)
|
|
acceleration_x rel diff: 2.7998765e+00 ~ 2.8278524e+00 = 9.89300e-03 (node 700)
|
|
force_internal_x rel diff: -1.3890498e-01 ~ -1.4029290e-01 = 9.89300e-03 (node 700)
|
|
velocity_x rel diff: 7.8395852e-07 ~ 7.8796013e-07 = 5.07844e-03 (node 648)
|
|
Element variables:
|
|
stress_xx rel diff: -2.4472564e+00 ~ -2.4778807e+00 = 1.23591e-02 (block 1, elmt 386)
|
|
stress_yy rel diff: -1.0366468e+00 ~ -1.0631157e+00 = 2.48974e-02 (block 1, elmt 386)
|
|
stress_zz rel diff: -1.0455424e+00 ~ -1.0720140e+00 = 2.46934e-02 (block 1, elmt 386)
|
|
|
|
... deleted some output ...
|
|
|
|
--------- Time step 22, 2.1179859e-05 ~ 2.1179859e-05, rel diff: 7.99848e-16 ---------
|
|
Global variables:
|
|
Nodal variables:
|
|
Element variables:
|
|
--------- Time step 23, 2.2036041e-05 ~ 2.2036041e-05, rel diff: 7.68771e-16 ---------
|
|
Global variables:
|
|
Nodal variables:
|
|
Element variables:
|
|
\end{verbatim}
|
|
|
|
\sectionline
|
|
The final section is the status output indicating that differences
|
|
were detected. This string will not change in future versions and can
|
|
be searched for to determine whether the files are the same or
|
|
different. The \exodiff{} exit status can also be used for this if
|
|
the \param{-status} option is set.
|
|
|
|
\begin{verbatim}
|
|
exodiff: Files are different
|
|
\end{verbatim}
|
|
\sectionline
|
|
The next example shows the summary output produced by the command
|
|
line:
|
|
\begin{syntax}
|
|
exodiff -summary bar-P.e
|
|
\end{syntax}
|
|
\begin{verbatim}
|
|
# *****************************************************************
|
|
# EXODIFF EXODIFF EXODIFF EXODIFF EXODIFF EXODIFF EXODIFF
|
|
#
|
|
# Version 2.43 (2011-04-07)
|
|
# Authors: Richard Drake, rrdrake@sandia.gov
|
|
# Greg Sjaardema, gdsjaar@sandia.gov
|
|
# 2011/06/03 11:23:07 MDT
|
|
#
|
|
# EXODIFF EXODIFF EXODIFF EXODIFF EXODIFF EXODIFF EXODIFF
|
|
# *****************************************************************
|
|
|
|
# FILE 1: /scratch/user/bar-P.e
|
|
# Title: An Exodiff Summary Example
|
|
# Dim = 3, Blocks = 1, Nodes = 204, Elements = 50, Nodesets = 5, Sidesets = 0
|
|
# Vars: Global = 7, Nodal = 10, Element = 16, Nodeset = 0, Sideset = 0, Times = 206
|
|
|
|
|
|
# ==============================================================
|
|
# NOTE: All node and element ids are reported as global ids.
|
|
|
|
# NOTES: - The min/max values are reporting the min/max in absolute value.
|
|
# - Time values (t) are 1-offset time step numbers.
|
|
# - Element block numbers are the block ids.
|
|
# - Node(n) and element(e) numbers are 1-offset.
|
|
|
|
COORDINATES absolute 1.e-6 # min separation = 0.1
|
|
|
|
TIME STEPS relative 1.e-6 floor 0.0 # min: 0 @ t1 max: 2.2088109e-05 @ t206
|
|
|
|
GLOBAL VARIABLES relative 1.e-6 floor 0.0
|
|
external_energy # min: 0 @ t1 max: 0 @ t1
|
|
internal_energy # min: 0 @ t1 max: 22205882 @ t206
|
|
kinetic_energy # min: 0 @ t1 max: 20210551 @ t206
|
|
momentum_x # min: 0 @ t1 max: 42651.567 @ t206
|
|
momentum_y # min: 0 @ t1 max: 0 @ t1
|
|
momentum_z # min: 0 @ t1 max: 0 @ t1
|
|
timestep # min: 0 @ t1 max: 1.3153439e-07 @ t51
|
|
|
|
NODAL VARIABLES relative 1.e-6 floor 0.0
|
|
acceleration_x # min: 0 @ t1,n1 max: 3.7989521e+08 @ t190,n1
|
|
acceleration_y # min: 0 @ t1,n1 max: 0 @ t1,n1
|
|
acceleration_z # min: 0 @ t1,n1 max: 0 @ t1,n1
|
|
force_internal_x # min: 0 @ t1,n1 max: 82739542 @ t190,n5
|
|
force_internal_y # min: 0 @ t1,n1 max: 1.3526743e+08 @ t206,n201
|
|
force_internal_z # min: 0 @ t1,n1 max: 1.3526743e+08 @ t206,n201
|
|
mass # min: 0.111625 @ t1,n1 max: 0.22325 @ t1,n21
|
|
velocity_x # min: 0 @ t1,n1 max: 994.29394 @ t206,n201
|
|
velocity_y # min: 0 @ t1,n1 max: 0 @ t1,n1
|
|
velocity_z # min: 0 @ t1,n1 max: 0 @ t1,n1
|
|
|
|
ELEMENT VARIABLES relative 1.e-6 floor 0.0
|
|
eqps # min: 0 @ t1,b2,e1 max: 0.00083689614 @ t206,b2,e50
|
|
rate_of_deformation_xx # min: 0 @ t1,b2,e1 max: 539.94599 @ t116,b2,e50
|
|
rate_of_deformation_yy # min: 0 @ t1,b2,e1 max: 4.0126165e-32 @ t200,b2,e46
|
|
rate_of_deformation_zz # min: 0 @ t1,b2,e1 max: 1.1275579e-32 @ t185,b2,e49
|
|
rate_of_deformation_xy # min: 0 @ t1,b2,e1 max: 1.1868359e-13 @ t186,b2,e42
|
|
rate_of_deformation_yz # min: 0 @ t1,b2,e1 max: 1.1093839e-32 @ t185,b2,e49
|
|
rate_of_deformation_zx # min: 0 @ t1,b2,e1 max: 4.7474497e-14 @ t203,b2,e39
|
|
sound_speed # min: 394000 @ t1,b2,e1 max: 395751.09 @ t206,b2,e50
|
|
stress_xx # min: 0 @ t1,b2,e1 max: 3.980196e+09 @ t206,b2,e50
|
|
stress_yy # min: 0 @ t1,b2,e1 max: 2.7099141e+09 @ t206,b2,e50
|
|
stress_zz # min: 0 @ t1,b2,e1 max: 2.7099141e+09 @ t206,b2,e50
|
|
stress_xy # min: 0 @ t1,b2,e1 max: 2.7908475e-07 @ t205,b2,e46
|
|
stress_yz # min: 0 @ t1,b2,e1 max: 3.7940314e-26 @ t190,b2,e49
|
|
stress_zx # min: 0 @ t1,b2,e1 max: 1.5648498e-07 @ t188,b2,e49
|
|
temperature # min: 298 @ t78,b2,e8 max: 299.37791 @ t206,b2,e50
|
|
yield_stress # min: 7.5751705e+08 @ t142,b2,e34 max: 1.3389387e+09 @ t148,b2,e50
|
|
|
|
# No NODESET VARIABLES
|
|
|
|
# No SIDESET VARIABLES
|
|
\end{verbatim}
|
|
\sectionline
|
|
The output starts with a database summary similar to the previous
|
|
example. It then gives a summary of the minimum and maximum values of
|
|
each variable and the timestep and node or element where that minimum
|
|
or maximum occurs.
|
|
|
|
The format of the summary is such that it can be used as a basis for
|
|
creating an \exodiff{} command input file.
|
|
|