mirror of
https://github.com/OpenFOAM/OpenFOAM-6.git
synced 2025-12-08 06:57:46 +00:00
117 lines
3.9 KiB
Plaintext
117 lines
3.9 KiB
Plaintext
udr_checker
|
|
-----------
|
|
|
|
udr_checker.c is a routine that can be used to debug EnSight User-defined
|
|
readers. It exists because of the difficulty of debugging dynamic shared
|
|
libraries when you don't have the source for the calling program (EnSight).
|
|
|
|
If udr_checker.c is compiled and linked with your reader source code (including
|
|
access to any libraries needed, and the global_extern.h file), it will exercise
|
|
most options of you reader, giving feedback as it goes. The resulting
|
|
executable can be debugged using your favorite debugger. And if you have
|
|
memory/bounds checking software (such as purify), you can (and should) run it
|
|
with this executable to make sure that you are not overwriting things. Readers
|
|
that bash memory will cause problems when run with EnSight!
|
|
|
|
You will note that the Makefile provided with the readers in the EnSight
|
|
distribution have a "checker" object. If you do a "make checker" instead of
|
|
just a "make", the "checker"executable will be produced. You may need to
|
|
modify these makefiles slightly if the locations of your reader files are
|
|
different than the normal.
|
|
|
|
|
|
--------------------------------------
|
|
Once the "checker" executable exists, you can run the checker program by simply
|
|
invoking it:
|
|
|
|
> checker
|
|
|
|
And you will be prompted for the type of information that you provide in the
|
|
EnSight Data Reader dialog, namely:
|
|
|
|
The path
|
|
filename_1
|
|
[filename_2] Only if your reader uses two fields
|
|
swapbytes flag
|
|
<toggle flags> Only if your reader implements extra GUI
|
|
<pulldown flags> one flag value per line
|
|
<field contents> one field string per line
|
|
|
|
There are certain command line options that you can use to control some aspects
|
|
of the checker program. One of the more useful is the ability to provide the
|
|
input just described in a file. This is done in this fashion:
|
|
|
|
> checker -p <playfile>
|
|
|
|
And <playfile> would be a simple ascii file with 3 [0r 4] lines:
|
|
line 1: the path
|
|
line 2: filename_1
|
|
line 3: [filename_2] (if two_fields is TRUE)
|
|
line 3 or 4: 0 or 1, for swapbytes (0 is FALSE, 1 is TRUE)
|
|
remaining lines 0 or 1 for toggle disable enabled
|
|
one line for each toggle
|
|
0 - num_pulldown_values for pulldown choice
|
|
one line for each pulldown
|
|
strings
|
|
one line for each field
|
|
|
|
example playfile for an EnSight Gold reader casefile (entitled cube.play)
|
|
could look something like the following: (Note: two_fields is FALSE)
|
|
-------------------
|
|
|
|
/usr/local/bin/data/ens
|
|
cube.case
|
|
0
|
|
|
|
|
|
And you would invoke checker as:
|
|
|
|
> checker -p check.play
|
|
|
|
Another example playfile
|
|
with swapbytes 0,
|
|
two enabled toggles,
|
|
three pulldowns with the value 0 chosen
|
|
and a single field "sample field value"
|
|
|
|
could look something like the following::
|
|
----------------------
|
|
|
|
/mydirectory/subdir/
|
|
myfile
|
|
0
|
|
1
|
|
1
|
|
0
|
|
0
|
|
0
|
|
sample field value
|
|
|
|
|
|
Other command line arguments are:
|
|
---------------------------------
|
|
-server_number For checking server number routines. If you use this
|
|
option, you will be prompted for the total number of
|
|
servers and the current server number. These will then be
|
|
used in the calls to the server number routines.
|
|
|
|
-gts # For specifying the geometry timestep to test. The default
|
|
is step 0.
|
|
The # is the (zero based) time step to read for geometry.
|
|
|
|
-vts # For specifying the variable timestep to test. The default
|
|
is step 0.
|
|
The # is the (zero based) time step to read for variables.
|
|
|
|
|
|
|
|
Testing optional routines using #defines
|
|
-----------------------------------------
|
|
For optional routines, such as the extra_gui, or var_extract_gui routines, you
|
|
must uncomment the proper #define in udr_checker.c
|
|
|
|
Currently the ones available are:
|
|
|
|
#define _EGS for extra gui routines
|
|
#define _VES for var extract gui routines
|