It is often helpful in the development of your reader to know what order the routines will be called. The various main operations are given basically in the order they will be performed. Within each operation, the order the routines will be called is given.
Setting name in the graphical user interface, and specifying one or two input fields
USERD_get_reader_descrip (optional)
USERD_prefer_auto_distribute (optional)
USERD_set_filename_button_labels (optional)
USERD_get_extra_gui_numbers (optional)
USERD_get_extra_gui_defaults (optional)
USERD_get_reader_release (optional)
Getting the reader version (also distinguishes between API's)
Setting filenames and getting timeset and time info
USERD_set_extra_gui_data (optional if reader has USERD_get_extra_gui_defaults routine)
USERD_get_structured_reader_cinching
USERD_set_extra_gui_data (optional)
for each timeset
Gathering info for part builder
USERD_get_changing_geometry_status
USERD_get_element_label_status
USERD_get_number_of_files_in_dataset
USERD_get_dataset_query_file_info
USERD_get_descrip_lines (for geometry)
USERD_get_number_of_model_parts
USERD_get_gold_part_build_info
USERD_get_ghosts_in_model_flag
USERD_get_ghosts_in_block_flag (if any ghost cells in model)
USERD_get_model_extents -- or -- (for model extents)
USERD_get_part_coords -- and/or --
<USERD_set_block_range_and_stride > (if doing structured reader cinching)
Gathering variable info
Part building (per part created)
Both unstructured and structured
If unstructured part
USERD_get_part_coords -- or --
USERD_get_part_coords_in_buffers (optional)
USERD_rigidbody_values (optional)
USERD_get_part_node_ids -- or --
USERD_get_part_node_ids_in_buffers (optional)
USERD_get_part_element_ids_by_type - - or --
USERD_get_part_element_ids_by_type_in_buffers (optional)
USERD_get_part_elements_by_type -- or --
USERD_get_part_elements_by_type_in_buffers (optional)
If any nsided elements
USERD_get_nsided_conn -- or --
USERD_get_nsided_conn_in_buffers (optional)
If any nfaced elements
USERD_get_nfaced_nodes_per_face
USERD_get_nfaced_conn -- or --
USERD_get_nfaced_conn_in_buffers (optional)
else if structured part
<USERD_set_block_range_and_stride > (If doing structured reader cinching)
USERD_get_block_coords_by_component
USERD_rigidbody_values (optional)
USERD_get_block_ghost_flags (If ghost cells in part)
USERD_get_part_node_ids (If node ids given)
USERD_get_part_element_ids_by_type (If element ids given)
both again
USERD_get_border_availability (If border representation is selected)
USERD_get_border_elements_by_type (If border representation is selected)
USERD_stop_part_building (only once when part builder dialog is closed)
Loading Variables
constants
USERD_get_constant_per_part_data
scalars/vectors/tensors
USERD_set_right_side (optional)
<USERD_set_block_range_and_stride > (If doing structured reader cinching)
USERD_get_var_by_component -- or --
USERD_get_var_by_component_in_buffers (optional)
Changing geometry
changing coords only (per part)
USERD_get_part_coords -- or --
USERD_get_part_coords_in_buffers (optional)
<USERD_set_block_range_and_stride > (If doing structured reader cinching)
USERD_get_block_coords_by_component
changing connectivity (per part)
Both unstructured and structured
USERD_get_number_of_model_parts
USERD_get_gold_part_build_info
USERD_get_ghosts_in_model_flag
If unstructured part:
USERD_get_model_extents -- or --
USERD_get_part_coords -- or --
USERD_get_part_coords_in_buffers (optional)
USERD_rigidbody_values (optional)
USERD_get_part_node_ids -- or --
USERD_get_part_node_ids_in_buffers (optional)
USERD_get_part_element_ids_by_type -- or --
USERD_get_part_element_ids_by_type_in_buffers (optional)
USERD_get_part_elements_by_type -- or --
USERD_get_part_elements_by_type_in_buffers (optional)
If any nsided elements:
USERD_get_nsided_conn -- or --
USERD_get_nsided_conn_in_buffers (optional)
If any nfaced elements:
USERD_get_nfaced_nodes_per_face
USERD_get_nfaced_conn -- or --
USERD_get_nfaced_conn_in_buffers (optional)
else if structured part:
USERD_get_model_extents -- or --
<USERD_set_block_range_and_stride > (If doing structured reader cinching)
USERD_get_block_coords_by_component
USERD_rigidbody_values (optional)
USERD_get_block_ghost_flags (If ghost cells in part)
USERD_get_part_node_ids (If node ids given)
USERD_get_part_element_ids_by_type (If element ids given)
both again
USERD_get_border_availability (If border representation is selected)
USERD_get_border_elements_by_type (If border representation is selected)
Node or Element queries over time
To see if materials in the model
USERD_get_number_of_material_sets
If any material sets in the model (calls these once per material set)
For each element type of each part containing material ids, calls
If there are any elements with mixed materials, when a domain or interface is created, calls these again per part
To modify the variable extraction parameters and have the variables update accordingly.
USERD_get_var_extract_gui_numbers
To get vector vglyphs
USERD_get_var_value_at_xyz_specific
USERD_get_vglyph_timeline_info
USERD_get_vglyph_timeline_times