Decreasing the amount of data in an output database by retaining data at specific frames

This example illustrates how you can decrease the size of an output database. In most cases a large output database results from excessive field output being generated over a large number of frames. The Abaqus C++ API does not support the deletion of data from an output database; however, you can use this example program to copy data from select frames into a second output database created by a datacheck analysis that has identical model data. The original analysis and the datacheck analysis must be run using the same number of processors because the internal organization of data may differ based on the number of processors. The program uses addData to copy data at specified frames from the large output database into the new output database. The addData method works only when the model data in the two output databases are identical. For more information, see addData(...).

When you run the program, the following command line parameters are required:

-smallOdb odbName

The name of the output database created with a datacheck analysis of the original problem. For more information, see Abaqus/Standard and Abaqus/Explicit Execution.

-largeOdb odbName

The name of the large output database generated by the original problem. The program copies selected frames from this output database.

The following parameters are optional:

-history

Copy all history output from all available steps in the large output database. By default, history output is not copied.

Warning:

Copying large amounts of history data can result in the program creating a very large output database.

-debug

Print a detailed report of all the operations performed during the running of the program. By default, no debug information is generated.

Warning:

If you are extracting data from a large output database, the debug option can generate large amounts of information.

You can also run the example with only the -help parameter for a summary of the usage.

The following is an example of how you can use this program in conjunction with the output database generated by the problem described in Free ring under initial velocity: comparison of rate-independent and rate-dependent plasticity. Use the following commands to retrieve the example program and the benchmark input file:

abaqus fetch job=odbFilter.C
abaqus fetch job=ringshell.inp
  1. Run an analysis using the benchmark input file:

    abaqus job=ringshell

    This creates an output database called ringshell.odb that contains 100 frames of data.

  2. Run a datacheck analysis to obtain a new output database called ringshell_datacheck.odb that contains the same model data as ringshell.odb:

    abaqus job=ringshell_datacheck -input ringshell datacheck
  3. Create the executable program:

    abaqus make job=odbFilter.C

The program displays the number of frames available in each step. For each step you must specify the number of increments between frames, which is the frequency at which the data will be copied to the new output database. Data for the first and last increment in each step are always copied. For example, if a step has 100 frames, and you enter a frame interval of 37, the program will copy data for frames 0, 37, 74, and 100.

The following statement will run the executable program and read data from the small output database containing only model data and the large output database created by the benchmark example:

abaqus odbFilter -smallOdb ringshell_datacheck -largeOdb ringshell 

The program prompts you for the increment between frames:

Results from ODB : ringshell.odb will be filtered & written 
to ODB: ringshell_datacheck
By default only the first & last increment of a step will 
be saved
For each step enter the increment between frames
for example : 3 => frames 0,3,6,..,lastframe will be saved
STEP Step-1 has 101 Frames
Enter Increment between frames

Enter 37 to define the increment between frames. The program then reads the data and displays the frames being processed:

Processing frame # : 0
Processing frame # : 37
Processing frame # : 74
Processing frame # : 100
Filtering successfully completed