ODB Splitter

The ODB splitter utility is a plug-in that is provided to help the user reduce the size of ODBs. This is achieved by generating an 'empty' ODB by carrying out a datacheck and selecting the variables and frames which are to be written to the 'empty' ODB. It should be noted that Frame 0 of the first step is generated automatically by the datacheck. This information cannot be removed from the new ODB. When accessed through the plug-in architecture the utility is suitable for ODBs that have been created from analyses that have not used user subroutines, restarts or imports. For ODBs that contain these features, the utility has to be run manually.

Requirements/Information:

  • The input file associated with the ODB has to be available in the same directory as the ODB.
  • A .txt file is created that contains the selected steps, frames and variables.
  • By default, all history data (xy data) will be written to the ODB. The history data can be toggled off in the plug-in or by including the following line in the .txt file:

  • For ODBs created from a restart or using a user subroutine, it is required to run the odbSplitter.py manually with the datachecked ODB already created.
  • The script can be run multiple times on the same datachecked ODB. In this way data can be added in a stepwise manner. Data cannot be removed from an ODB.
  • It is the user's responsibility to ensure that the memory settings in the Abaqus environment are sufficient to carry out a datacheck analysis.

    Format of .txt file

    The format of the .txt must follow the style generated by the makeOdbInfo.py utility (usage is described below) or by the plug-in. It is not envisaged that a .txt file will be created by hand.

    The data in the .txt file consists of step names, output variable identifiers and names of frames. The Step: line defines a step to be included in the new ODB. This string followed by the step name. For example,

    Step: Step-3

    Lines following this step definition are associated with the output variables and frames associated with this step until another step definition is found or the end of file is reached. Output variable identifiers are defined, one per line, after a line containing Output Variables:. The output variables identifiers are followed by the description of the frames to be included in the new ODB. Output variables that are not available for a particular frame are ignored. Output variables not being available can be caused by the output variable not being requested as output for a particular increment or due to a typographical errors i.e. an invalid name. The frame description has to match exactly the frame description contained in the original ODB. Blank lines are ignored.

    A warning is issued for any output variable that cannot be written to the new ODB and for any frame that does not have a matching description in the original ODB. It is suggested that the makeOdbInfo.py utility or the plug-in is used as this will ensure the syntax of the .txt file created is correct.

    Using as a plug-in

    To make the plug-in available from Abaqus/CAE or Abaqus/Viewer, you must place the files in one of the directories of subdirectories that Abaqus searches for plug-ins. These are:

    If the plug-in is found it will appear in the Plug-ins menu on the main menu bar.

    The plug-in allows the user to select an output database and name the new output database. The next dialog lists the contents of the output database. Depending on the size of the original output database this dialog may take a while to appear.

    From this dialog the user can select the required field output variables and the steps and frames required. This dialog is followed by a review of the selections made.

    On OK the .txt file is generated and a new process is started that creates the datacheck ODB and runs the splitter script. The output from this is reported in the command window associated with the Abaqus/CAE or Abaqus/Viewer session.

    Using in batch mode

    The odbSplitter.py script can be run in batch mode.

    Usage: abq661 python odbSplitter.py -originalOdb odbIn -newOdb odbOut <-txt txtIn>

    The txt file specified using the -txt option has to contain a list of steps, frames and field outputs to be written to the ODB. If this argument is not specified the default name used is odbIn.txt.

    A utility script makeOdbInfo.py can be used to generate a full listing of the contents of the ODB in the correct format for use with the ODB splitter script. Once this file has been created using the makeOdbInfo.py script, items can be removed from the file using any editor before running the odbSplitter.py script.

    Usage: abq661 python makeOdbInfo.py -odb odbIn

    This will create the full listing of the contents of odbIn.odb in odbIn.txt

    Restarts and User Subroutines

    The odbSplitter script works by copying data into an ODB that has been created using a datacheck. If the original ODB was created from a restart or user subroutines were used, the datacheck ODB has to be created using the same restart analysis or by using the same user subroutines. For these types of ODBs it is up to the user to generate the datachecked ODB prior to running the splitter script.

    WARNING

    This plug-in has undergone limited testing and is provided as an example to show how to reduce the size of ODBs. It is up to the user to check that the reduced size ODB that has been created can be opened and contains the information required before deleting the original ODB.

    Known Issues

  • History data has to be renamed before being added to the new ODB. _copy is appended to all xy data names.
  • The script has failed on some analyses that use *Import. This is being investigated.
  • The datacheck ODB that is created has to be created using the same number of CPUs as the original analysis.