/*
 
uf_sf_post_datatypes.h
*File description:
*
*   Datatypes for the UF_SF (Scenario User Function ) Post Processor module.
*******************************************************************************/


#ifndef UF_SF_POST_DATATYPES_H_INCLUDED
#define UF_SF_POST_DATATYPES_H_INCLUDED

#include <uf_defs.h>
#include <uf_cfi.h>

/* The following must be the last include file */
#include <libufun_cae_exports.h>




/******************************************************************/

/* Constants for Post Processor */

/*
* UF_SF_POST_NO_RESULT_NUM -This is prompted when there is no result
                            number

* UF_SF_POST_DESC_SZ -      Maximum size of description

* UF_SF_POST_FILE_NM_SZ     Maximum size of file name

* UF_SF_POST_LIBRARY_NM_SZ  Maximum size of library name

* UF_SF_POST_STATE_NM_SZ    Maximum size of state name
*/


#define UF_SF_POST_NO_RESULT_NUM            -777
#define UF_SF_POST_DESC_SZ                  64
#define UF_SF_POST_FILE_NM_SZ               1024
#define UF_SF_POST_LIBRARY_NM_SZ            9
#define UF_SF_POST_STATE_NM_SZ              16
#define UF_SF_POST_MAX_STRING_LEN           256

#define UF_SF_POST_DSN_NM_NCHARS        64
#define UF_SF_POST_DSN_NM_BUFSIZE       NX_BUFSIZE(UF_SF_POST_DSN_NM_NCHARS)

/*  */
#define UF_SF_POST_DSN_NM_SZ         (UF_SF_POST_DSN_NM_BUFSIZE-1)
/*  */

/******************************************************************/

/*****type def's for POST PROCESSOR********/


enum UF_SF_POST_result_file_type_t
{
   UF_SF_POST_OUTPUT2 = 0,      /*Nastran output file*/
   UF_SF_POST_ANSYS = 2,        /*Ansys output file*/
   UF_SF_POST_FOCUS = 4,        /*FOCUS Database file*/
   UF_SF_POST_ABAQUS = 5,       /*Abaqus results file*/
   UF_SF_POST_MODEL_SOL = 6,     /*Model Solution results file*/
   UF_SF_POST_OUTPUT2_FATIGUE = 7, /* Nastran fatigue file */
   UF_SF_POST_ANSYS_FATIGUE = 8,   /* Ansys fatigue file */
   UF_SF_POST_ABAQUS_FATIGUE = 9,  /* Abaqus fatigue file */
   UF_SF_POST_FOCUS_FATIGUE = 10,  /* Focus fatigue file */
   UF_SF_POST_THERMAL_FLOW = 11,   /* TMG THERMAL / FLOW file */
   UF_SF_POST_LSDYNA_STATE_RESULT = 12 /*LSDyna State result*/
};
typedef UF_SF_POST_result_file_type_t *UF_SF_POST_result_file_type_p_t ;


/* Result parameters */
enum UF_SF_POST_result_type_quan_e
{
   UF_SF_POST_DISPLACEMENT, /* Displacement values in the result */
   UF_SF_POST_ROTATION, /* Rotational values */
   UF_SF_POST_CONTACT_DISP, /* Displacement for contact elements */
   UF_SF_POST_VELOCITY, /* Velocity for centrifugal loads */
   UF_SF_POST_ACCELERATION, /* Acceleration for centrifugal loads */
   UF_SF_POST_STRESS, /* Stress values */
   UF_SF_POST_STRAIN, /* Strain values */
   UF_SF_POST_STRAIN_E, /* Strain Energy values */
   UF_SF_POST_STRAIN_ED, /* Strain Energy density */
   UF_SF_POST_STRAIN_EE, /* Strain Energy Error */
   UF_SF_POST_STRAIN_PLAST_EQ, /*  */
   UF_SF_POST_STRAIN_CREEP_EQ, /*  */
   UF_SF_POST_THICKNESS, /* Thickness value */
   UF_SF_POST_TEMPERATURE, /* Temperature value */
   UF_SF_POST_TEMP_GRAD, /* Temperature Gradient value */
   UF_SF_POST_HEAT_FLUX, /* Heat flux value */
   UF_SF_POST_THERMAL_ENERGY, /* Thermal energy value */
   UF_SF_POST_REACTION_HEAT_FLOW, /* Reaction heat flow value */
   UF_SF_POST_APPLIED_FORCE, /* Applied load */
   UF_SF_POST_APPLIED_MOMENT, /*  */
   UF_SF_POST_REACTION_FORCE, /* Reaction force */
   UF_SF_POST_REACTION_MOMENT , /*  */
   UF_SF_POST_CONTACT_TRACTION , /*  */
   UF_SF_POST_CONTACT_FORCE , /*  */
   UF_SF_POST_ELEMENT_FORCE, /* Element force */
   UF_SF_POST_ELEMENT_PRESSURE, /* Element Pressure (Contact Elements) */
   UF_SF_POST_FATIGUE_LIFE, /* Fatigue life */
   UF_SF_POST_FATIGUE_DAMAGE, /* Fatigue damage */
   UF_SF_POST_FATIGUE_SAFETY, /* Fatigue safety factor */
   UF_SF_POST_STRENGTH_SAFETY, /* Strength safety factor */
   UF_SF_POST_ELEMENT_ERROR, /* Element Error */
   UF_SF_POST_ELEMENTRESULT, /*  */
   UF_SF_POST_MAX_TEMPERATURE_TRANSIENT, /*  */
   UF_SF_POST_MIN_TEMPERATURE_TRANSIENT, /*  */
   UF_SF_POST_TIME_OF_MAX_TEMPERATURE_TRANSIENT, /*  */
   UF_SF_POST_TIME_OF_MIN_TEMPERATURE_TRANSIENT, /*  */
   UF_SF_POST_CONDUCTIVE_FLUX, /*  */
   UF_SF_POST_TOTAL_HEAT_LOAD, /*  */
   UF_SF_POST_TOTAL_HEAT_FLUX, /*  */
   UF_SF_POST_HEAT_RESIDUAL, /*  */
   UF_SF_POST_FILM_COEF, /*  */
   UF_SF_POST_VIEW_FACTORS_SUM, /*  */
   UF_SF_POST_VELOCITIES_ADJUSTED, /*  */
   UF_SF_POST_PRESSURE_POSITIVE_SIDE, /*  */
   UF_SF_POST_PRESSURE_NEGATIVE_SIDE, /*  */
   UF_SF_POST_STATIC_PRESSURE, /*  */
   UF_SF_POST_TOTAL_PRESSURE, /*  */
   UF_SF_POST_TURBULENCE_ENERGY, /*  */
   UF_SF_POST_TURBULENCE_DISSIPATION, /*  */
   UF_SF_POST_FLUID_DENSITIES, /*  */
   UF_SF_POST_SHEAR_STRESS_POSITIVE_SIDE, /*  */
   UF_SF_POST_SHEAR_STRESS_NEGATIVE_SIDE, /*  */
   UF_SF_POST_ROUGHNESS_POSITIVE_SIDE, /*  */
   UF_SF_POST_ROUGHNESS_NEGATIVE_SIDE, /*  */
   UF_SF_POST_YPLUS_POSITIVE_SIDE, /*  */
   UF_SF_POST_YPLUS_NEGATIVE_SIDE, /*  */
   UF_SF_POST_MASS_FLUX, /*  */
   UF_SF_POST_FLUID_TEMPERATURES, /*  */
   UF_SF_POST_HEAT_FLUX_CONVECTIVE, /*  */
   UF_SF_POST_CONVECTION_COEF_LOCAL, /*  */
   UF_SF_POST_CONVECTION_COEF_BULK, /*  */
   UF_SF_POST_PRESSURE, /*  */
   UF_SF_POST_VELOCITY_COMPONENT, /*  */
   UF_SF_POST_MASS_FLOW, /*  */
   UF_SF_POST_ELEM_HEAT_LOAD, /*  */
   UF_SF_POST_STRUCTURAL_PERF, /* Structural Performance */
   UF_SF_POST_FAIL_INDEX_PLY, /* Ply failure index */
   UF_SF_POST_FAIL_INDEX_BOND, /* Bond failure index */

   /*
   For Response Simulation use, aready had these types
   UF_SF_POST_DISPLACEMENT,
   UF_SF_POST_VELOCITY,
   UF_SF_POST_ACCELERATION,
   UF_SF_POST_STRESS,
   UF_SF_POST_STRAIN,
   UF_SF_POST_STRAIN_E,
   UF_SF_POST_STRENGTH_SAFETY */

   UF_SF_POST_ELEM_FORCE,      /* RS element force */
   UF_SF_POST_SHELL_RESULTANT, /* RS shell resultant */

   UF_SF_POST_PEAK_DISPL,      /* PEAK Response:  */
   UF_SF_POST_PEAK_ACCEL,      /* PEAK Response:  */
   UF_SF_POST_PEAK_STRES,      /* PEAK Response:  */
   UF_SF_POST_PEAK_EL_FC,      /* PEAK Response:  */
   UF_SF_POST_PEAK_SH_RE,      /* PEAK Response:  */

   UF_SF_POST_RMS_DISPL,       /* Root Mean Square: */
   UF_SF_POST_RMS_ACCEL,       /* Root Mean Square: */
   UF_SF_POST_RMS_STRES,       /* Root Mean Square: */
   UF_SF_POST_RMS_EL_FC,       /* Root Mean Square: */
   UF_SF_POST_RMS_SH_RE,       /* Root Mean Square: */

   UF_SF_POST_LCR_DISPL,       /* Lever Crossing Rate: */
   UF_SF_POST_LCR_ACCEL,       /* Lever Crossing Rate: */
   UF_SF_POST_LCR_STRES,       /* Lever Crossing Rate: */
   UF_SF_POST_LCR_EL_FC,       /* Lever Crossing Rate: */
   UF_SF_POST_LCR_SH_RE,       /* Lever Crossing Rate: */
   UF_SF_ADAPT_ELEMENT_STRESS_ERROR, /* Element stess error */
   UF_SF_ADAPT_NODE_REFINEMENT /* Mesh refinement level */

};
typedef enum UF_SF_POST_result_type_quan_e UF_SF_POST_result_type_quan_t;


/* Results at layers */
enum UF_SF_POST_result_type_lay_e
{
   UF_SF_POST_AT_MID, /* Result at mid section */
   UF_SF_POST_AT_TOP, /* Result at top section */
   UF_SF_POST_AT_BOT, /* Result at bottom section */
   UF_SF_POST_AT_MIN, /* Minimum value */
   UF_SF_POST_AT_MAX, /* Maximum value */
   UF_SF_POST_AT_SRP_C, /* Stress Recovery Point at section-1 */
   UF_SF_POST_AT_SRP_D, /* Stress Recovery Point at section-2 */
   UF_SF_POST_AT_SRP_E, /* Stress Recovery Point at section-3 */
   UF_SF_POST_AT_SRP_F, /* Stress Recovery Point at section-4 */
   UF_SF_POST_AT_ALL /* Result at all sections/plies */
};
typedef enum UF_SF_POST_result_type_lay_e UF_SF_POST_result_type_lay_t;



/* Results at locations */
enum UF_SF_POST_result_type_loc_e
{
   UF_SF_POST_AT_NODES, /* Nodal results */
   UF_SF_POST_AT_ELEMS, /* Element results */
   UF_SF_POST_AT_ELNDS  /* Element Nodal results */
};
typedef enum UF_SF_POST_result_type_loc_e UF_SF_POST_result_type_loc_t;


struct UF_SF_POST_result_type_s
{
   UF_SF_POST_result_type_quan_t quan;
   UF_SF_POST_result_type_lay_t  lay;
   UF_SF_POST_result_type_loc_t  loc;
};
typedef struct UF_SF_POST_result_type_s UF_SF_POST_result_type_t, *UF_SF_POST_result_type_p_t;


/* Stress Components */
enum UF_SF_POST_result_comp_e
{
   UF_SF_POST_COMP_SCALAR, /* Scalar value of the result */
   UF_SF_POST_COMP_X, /* X-component result */
   UF_SF_POST_COMP_Y, /* Y-component result */
   UF_SF_POST_COMP_Z, /* Z-component result */
   UF_SF_POST_COMP_MAG, /* Magnitude */
   UF_SF_POST_COMP_XX, /* XX-component */
   UF_SF_POST_COMP_YY, /* YY-component */
   UF_SF_POST_COMP_ZZ, /* ZZ-component */
   UF_SF_POST_COMP_XY, /* XY-component */
   UF_SF_POST_COMP_YZ, /* YZ-component */
   UF_SF_POST_COMP_ZX, /* ZX-component */
   UF_SF_POST_COMP_DETERMINANT, /* Determinant values */
   UF_SF_POST_COMP_MEAN, /* Mean stress values */
   UF_SF_POST_COMP_MAX_SHEAR, /* Maximum shear values */
   UF_SF_POST_COMP_MIN_PRNCPL, /* Minimum Principal stress */
   UF_SF_POST_COMP_MID_PRNCPL, /* Mid Principal stress */
   UF_SF_POST_COMP_MAX_PRNCPL, /* Maximum Principal stress */
   UF_SF_POST_COMP_OCTAHEDRAL, /* Octahedral values */
   UF_SF_POST_COMP_VON_MISES, /* Von-mises stresses */
   UF_SF_POST_COMP_MEMBRANE_XX, /*  */
   UF_SF_POST_COMP_MEMBRANE_YY, /*  */
   UF_SF_POST_COMP_MEMBRANE_XY, /*  */
   UF_SF_POST_COMP_BENDING_XX, /*  */
   UF_SF_POST_COMP_BENDING_YY, /*  */
   UF_SF_POST_COMP_BENDING_XY, /*  */
   UF_SF_POST_COMP_SHEAR_YZ, /*  */
   UF_SF_POST_COMP_SHEAR_XZ, /*  */
   UF_SF_POST_COMP_AXIAL, /*  */
   UF_SF_POST_COMP_BENDING_S, /*  */
   UF_SF_POST_COMP_BENDING_T, /*  */
   UF_SF_POST_COMP_TORSION, /*  */
   UF_SF_POST_COMP_SHEAR_S, /*  */
   UF_SF_POST_COMP_SHEAR_T, /*  */

   /* Kirby insert
   For Response Simulation use */

   UF_SF_POST_COMP_RX, /*  */
   UF_SF_POST_COMP_RY, /*  */
   UF_SF_POST_COMP_RZ, /*  */

   /* Element force */
   UF_SF_POST_COMP_EF_FX, /*  */
   UF_SF_POST_COMP_EF_FY, /*  */
   UF_SF_POST_COMP_EF_FZ, /*  */
   UF_SF_POST_COMP_EF_MX, /*  */
   UF_SF_POST_COMP_EF_MY, /*  */
   UF_SF_POST_COMP_EF_MZ, /*  */

   /* Element strain energy */
   UF_SF_POST_COMP_STRAIN_E, /*  */

   /* Shell Resultant */
   UF_SF_POST_COMP_SH_RE_FXX,   /*UF_SF_POST_COMP_MEMBRANE_XX */
   UF_SF_POST_COMP_SH_RE_FYY,   /*UF_SF_POST_COMP_MEMBRANE_YY */
   UF_SF_POST_COMP_SH_RE_FXY,   /*UF_SF_POST_COMP_MEMBRANE_XY */
   UF_SF_POST_COMP_SH_RE_MX,    /*UF_SF_POST_COMP_BENDING_XX */
   UF_SF_POST_COMP_SH_RE_MY,    /*UF_SF_POST_COMP_BENDING_YY */
   UF_SF_POST_COMP_SH_RE_MXY,   /*UF_SF_POST_COMP_BENDING_XY */
   UF_SF_POST_COMP_SH_RE_VX,    /*UF_SF_POST_COMP_SHEAR_YZ */
   UF_SF_POST_COMP_SH_RE_VY,    /*UF_SF_POST_COMP_SHEAR_XZ */

   UF_SF_POST_COMP_STRENGTH    /* Strength Resultant */

   /* Kirby insert end   */

};
typedef enum UF_SF_POST_result_comp_e UF_SF_POST_result_comp_t, *UF_SF_POST_result_comp_p_t;


enum UF_SF_POST_object_type_t
{
   UF_SF_POST_NODE,
   UF_SF_POST_ELEM
};
typedef UF_SF_POST_object_type_t  *UF_SF_POST_object_type_p_t;


enum UF_SF_POST_id_type_t
{
   UF_SF_POST_USERID,
   UF_SF_POST_VKIID
};
typedef UF_SF_POST_id_type_t  *UF_SF_POST_id_type_p_t;


enum UF_SF_POST_minmax_t
{
   UF_SF_POST_MINIMUM,
   UF_SF_POST_MAXIMUM
};
typedef UF_SF_POST_minmax_t  *UF_SF_POST_minmax_p_t;




/* Co-ordinate systems */
enum UF_SF_POST_coord_sys_type_e
{
   UF_SF_POST_ABS_RECTANGULAR, /* Absolute rectangular co-ord system */
   UF_SF_POST_ABS_CYLINDRICAL, /* Cylindrical co-ordinate system */
   UF_SF_POST_ABS_SPHERICAL, /* Absolute Spherical co-ord system */
   UF_SF_POST_WRK_RECTANGULAR, /* WCS rectangular co-ord system */
   UF_SF_POST_WRK_CYLINDRICAL, /* WCS  Cylindrical co-ord system */
   UF_SF_POST_WRK_SPHERICAL, /* WCS Spherical co-ord system */
   UF_SF_POST_LOCAL /* Local co-ordinate system */
};
typedef enum UF_SF_POST_coord_sys_type_e UF_SF_POST_coord_sys_type_t, *UF_SF_POST_coord_sys_type_p_t;


/* Fringe Style Components */
enum UF_SF_POST_fringe_style_e
{
   UF_SF_POST_FRINGE_NONE, /* No Style */
   UF_SF_POST_FRINGE_CONTOUR_LINES, /* Contour lines display format */
   UF_SF_POST_FRINGE_ISOSURFACES, /* Isosurface display format */
   UF_SF_POST_FRINGE_CONTOUR_BANDS, /* Contour band display format */
   UF_SF_POST_FRINGE_SMOOTH_TONE, /* Smooth tone display format */
   UF_SF_POST_FRINGE_ELEM_VALUES, /* Element value display format */
   UF_SF_POST_FRINGE_ARROW, /*  */
   UF_SF_POST_FRINGE_CUBE, /*  */
   UF_SF_POST_FRINGE_SPHERE, /*  */
   UF_SF_POST_FRINGE_TENSOR /*  */
};
typedef enum UF_SF_POST_fringe_style_e UF_SF_POST_fringe_style_t, *UF_SF_POST_fringe_style_t_p;



/* Fringe Color Spectrum Components */
enum UF_SF_POST_fringe_color_spec_e
{
   UF_SF_POST_FRINGE_COLOR_STRUCT, /* Structural scale color display */
   UF_SF_POST_FRINGE_COLOR_TEMP, /* Temperature scale color display */
   UF_SF_POST_FRINGE_COLOR_GRAY, /* Grey scale color display */
   UF_SF_POST_FRINGE_COLOR_SAFETY_FACTOR /*  */
};
typedef enum UF_SF_POST_fringe_color_spec_e UF_SF_POST_fringe_color_spec_t, *UF_SF_POST_fringe_color_spec_t_p;



/* Fringe Scale Spectrum Components */
enum UF_SF_POST_fringe_scale_spec_e
{
   UF_SF_POST_FRINGE_SCALE_AUTOMATIC, /* Automatic query for linear scale or log scale */
   UF_SF_POST_FRINGE_SCALE_LINEAR, /* Linear scale spectrum */
   UF_SF_POST_FRINGE_SCALE_LOG /* Log scale spectrum */
};
typedef enum UF_SF_POST_fringe_scale_spec_e UF_SF_POST_fringe_scale_spec_t, *UF_SF_POST_fringe_scale_spec_t_p;



/* Fringe Legend Components */
enum UF_SF_POST_fringe_legend_opt_e
{
   UF_SF_POST_FRINGE_LEGEND_NONE, /* No Legend color bar */
   UF_SF_POST_FRINGE_LEGEND_COLOR, /* Legend color bar with color index only */
   UF_SF_POST_FRINGE_LEGEND_DETAILED /* Legend color bar with color index and detailed specification */
};
typedef enum UF_SF_POST_fringe_legend_opt_e UF_SF_POST_fringe_legend_opt_t, *UF_SF_POST_fringe_legend_opt_t_p;


enum UF_SF_POST_res_type_dimension_t
{
   UF_SF_POST_RES_TYPE_SCALAR = 0,
   UF_SF_POST_RES_TYPE_VECTOR,
   UF_SF_POST_RES_TYPE_TENSOR,
   UF_SF_POST_TYPE_SIX_DOF_VECTOR,
   UF_SF_POST_TYPE_ELEMENTRESULT,
   UF_SF_POST_TYPE_GENERALTENSOR
};
typedef UF_SF_POST_res_type_dimension_t  *UF_SF_POST_res_type_dimension_t_p;

/* Element Edge Display Styles */
enum UF_SF_POST_elem_edge_style_e
{
   UF_SF_POST_ELEM_EDGE_NONE, /* No element edges are displayed */
   UF_SF_POST_ELEM_EDGE_FREE, /* Only free element edges are displayed */
   UF_SF_POST_ELEM_EDGE_EXTERNAL, /* All external element edges are displayed */
   UF_SF_POST_ELEM_EDGE_WIRE /* Element edges are displayed as wireframe */
};
typedef enum UF_SF_POST_elem_edge_style_e UF_SF_POST_elem_edge_style_t, *UF_SF_POST_elem_edge_style_t_p;


/* Element Face Display Styles */
enum UF_SF_POST_elem_face_style_e
{
   UF_SF_POST_ELEM_FACE_NONE, /* Element faces are not displayed */
   UF_SF_POST_ELEM_FACE_FILLED, /* Faces displayed in a fill color */
   UF_SF_POST_ELEM_FACE_FILLED_TRANS, /* Translucency applied over fill color */
   UF_SF_POST_ELEM_FACE_AUTO /* Automatic style selection enabled */
};
typedef enum UF_SF_POST_elem_face_style_e UF_SF_POST_elem_face_style_t, *UF_SF_POST_elem_face_style_t_p;


/* Element Display Styles
  NOTE : This choice does NOT seem to be exposed via UI at present */

enum UF_SF_POST_elem_display_e
{
   UF_SF_POST_ELEM_DISP_ALL= 0, /* All elements are displayed */
   UF_SF_POST_ELEM_DISP_FOLLOW_SCENARIO, /* Use Scenario settings */
   UF_SF_POST_ELEM_DISP_1D, /* Display 1D elements only */
   UF_SF_POST_ELEM_DISP_2D, /* Display 2D elements only */
   UF_SF_POST_ELEM_DISP_3D /* Display 3D elements only */
};
typedef enum UF_SF_POST_elem_display_e UF_SF_POST_elem_display_t, *UF_SF_POST_elem_display_t_p;


/* Display Marker Styles */
enum UF_SF_POST_display_marker_e
{
   UF_SF_POST_DISPLAY_MARKER_MIN_MAX = 0, /* Display both Max and Min markers */
   UF_SF_POST_DISPLAY_MARKER_MAXIMUM, /* Display only the Max marker */
   UF_SF_POST_DISPLAY_MARKER_MINIMUM, /* Display only the Min marker */
   UF_SF_POST_DISPLAY_MARKER_NONE /* Do not display any markers */
};
typedef enum UF_SF_POST_display_marker_e UF_SF_POST_display_marker_t, *UF_SF_POST_display_marker_t_p;

/* Choice of colors for element edge/face display */
enum UF_SF_POST_hue_colors_e
{
   UF_SF_POST_BLACK,
   UF_SF_POST_MAGENTA_RED,
   UF_SF_POST_MAGENTA,
   UF_SF_POST_BLUE_MAGENTA,
   UF_SF_POST_BLUE,
   UF_SF_POST_CYAN_BLUE,
   UF_SF_POST_CYAN,
   UF_SF_POST_GREEN_CYAN,
   UF_SF_POST_GREEN,
   UF_SF_POST_YELLOW_GREEN,
   UF_SF_POST_YELLOW,
   UF_SF_POST_ORANGE,
   UF_SF_POST_RED,
   UF_SF_POST_DARK_GRAY,
   UF_SF_POST_LIGHT_GRAY,
   UF_SF_POST_WHITE
};
typedef enum UF_SF_POST_hue_colors_e UF_SF_POST_hue_colors_t, *UF_SF_POST_hue_colors_t_p;

enum UF_SF_POST_elem_value_e
{
   UF_SF_POST_ELEM_VALUE_CENT = 0,
   UF_SF_POST_ELEM_VALUE_AVE,
   UF_SF_POST_ELEM_VALUE_MIN,
   UF_SF_POST_ELEM_VALUE_MAX
};
typedef enum UF_SF_POST_elem_value_e UF_SF_POST_elem_value_t, *UF_SF_POST_elem_value_t_p;

struct UF_SF_POST_mark_vec_comp_s
{
   int x_sw;
   int y_sw;
   int z_sw;
   int mag_sw;
};
typedef struct UF_SF_POST_mark_vec_comp_s UF_SF_POST_mark_vec_comp_t, *UF_SF_POST_mark_vec_comp_t_p;

/*****************************************************************************
 Structure defining the parameters of a results request.
******************************************************************************/

struct UF_SF_POST_result_parms_s
{
   int                         abs_sw;
   int                         avg_sw;
   int                         lcase;
   int                         iter;
   double                      scale;
   UF_SF_POST_coord_sys_type_t coords;
   UF_SF_POST_result_type_t    res_type;
   UF_SF_POST_result_comp_t    comp;
   tag_t                       units_tag;
   UF_SF_POST_mark_vec_comp_t vcomp;
   int tensor_cube_sw;
   UF_SF_POST_elem_value_t elem_value;
   int eval_sw;
};
typedef struct UF_SF_POST_result_parms_s UF_SF_POST_result_parms_t, *UF_SF_POST_result_parms_t_p;


struct UF_SF_post_clipping_data_s
 {
   int                  clip_tgl_data;
   int                  ghost_tgl_data;
   int                  outline_tgl_data;
   int                  auto_update_tgl_data;
   int                  plane_type_data;
   int                  clip_side_data;
   double               clip_value_data;
   int                  clip_scale_data;
   double               clip_scale_curr_min;
   double               clip_scale_curr_max;
   double               scale_min;
   double               scale_max;
};
typedef struct UF_SF_post_clipping_data_s UF_SF_post_clipping_data_t, *UF_SF_post_clipping_data_t_p;

struct UF_SF_post_deform_result_s
{
   int loadcase;
   int iteration;
   UF_SF_POST_result_type_t res_type;
   int scaling_choice;
   int undef_toggle;
   double scaling_value;

};
typedef struct UF_SF_post_deform_result_s UF_SF_post_deform_result_t, *UF_SF_post_deform_result_t_p;



enum UF_SF_clip_plane_t
{
   UF_SF_CLIP_ABS_XY,
   UF_SF_CLIP_ABS_YZ,
   UF_SF_CLIP_ABS_ZX,
   UF_SF_CLIP_WCS_XY,
   UF_SF_CLIP_WCS_YZ,
   UF_SF_CLIP_WCS_ZX,
   UF_SF_CLIP_WCS_CYL_RT,
   UF_SF_CLIP_WCS_CYL_TZ,
   UF_SF_CLIP_WCS_SPH_TP
};
typedef UF_SF_clip_plane_t *UF_SF_clip_plane_t_p;


enum UF_SF_clip_side_t
{
   UF_SF_CLIP_POSITIVE,
   UF_SF_CLIP_NEGATIVE,
   UF_SF_CLIP_BOTH
};
typedef UF_SF_clip_side_t *UF_SF_clip_side_t_p;


enum UF_SF_POST_file_type_e
{
   UF_SF_POST_FILE_NONE,
   UF_SF_POST_FILE_ASCII,
   UF_SF_POST_FILE_BINARY,
   UF_SF_POST_FILE_VRML,
   UF_SF_POST_FILE_JT
};
typedef enum UF_SF_POST_file_type_e  UF_SF_POST_file_type_t;
typedef UF_SF_POST_file_type_t  *UF_SF_POST_file_type_t_p;


/*****************************************************************************
 Structure defining the parameters of a fringe request.
******************************************************************************/

struct UF_SF_POST_fringe_s
{
   UF_SF_POST_fringe_style_t style;                /* Selected fringe style.      */
   UF_SF_POST_fringe_color_spec_t spec;            /* Selected fringe color spec. */
   UF_SF_POST_fringe_scale_spec_t fringe_scale;    /* Scale method option
                                               Auto/Linear/Log Scales      */

   logical whole_sw;                          /* TRUE - calculate fringe
                                               thresholds using whole
                                               model, otherwise use only
                                               the displayed model       */

   double threshold_max;                      /* Maximum color index value   */
   double threshold_min;                      /* Minimum color index value   */
   int    colors_used;                        /* number of colors used       */
   logical trans_sw;                          /* Fringe translucency switch  */
   UF_SF_POST_fringe_legend_opt_t legend;          /* Selected fringe legend style
                                              structures items are        */

   logical thresh_sw;
};
typedef struct UF_SF_POST_fringe_s UF_SF_POST_fringe_t, *UF_SF_POST_fringe_t_p;

enum UF_SF_POST_ident_action_e
{
   UF_SF_POST_IDENT_NODES,
   UF_SF_POST_IDENT_ELEMS,
   UF_SF_POST_IDENT_ELEM_NODES,
   UF_SF_POST_IDENT_MESH_NODES,
   UF_SF_POST_IDENT_MESH_ELEMS,
   UF_SF_POST_IDENT_MESH_ELEMS_1D,
   UF_SF_POST_IDENT_MESH_ELEMS_2D,
   UF_SF_POST_IDENT_MESH_ELEMS_3D,
   UF_SF_POST_IDENT_EDGE_NODES,
   UF_SF_POST_IDENT_FACE_NODES,
   UF_SF_POST_IDENT_BODY_NODES,
   UF_SF_POST_IDENT_N_HIGH_NODES,
   UF_SF_POST_IDENT_N_LOW_NODES,
   UF_SF_POST_IDENT_N_HIGH_ELEMS,
   UF_SF_POST_IDENT_N_LOW_ELEMS,
   UF_SF_POST_IDENT_NODE_IDS,
   UF_SF_POST_IDENT_ELEM_IDS,
   UF_SF_POST_IDENT_NODE_BY_ELEM_IDS,
   UF_SF_POST_IDENT_1D_ELMS
};
typedef enum UF_SF_POST_ident_action_e UF_SF_POST_ident_action_t, *UF_SF_POST_ident_action_t_p;

/* Soma start */




enum UF_SF_POST_layout_type_t
{
   UF_SF_SINGLE_VIEW = 1,
   UF_SF_SIDE_BY_SIDE,
   UF_SF_TOP_BOTTOM,
   UF_SF_THREE_VIEWS,
   UF_SF_FOUR_VIEWS,
   UF_SF_SIX_VIEWS,
   UF_SF_NINE_VIEWS
};
typedef UF_SF_POST_layout_type_t *UF_SF_POST_layout_type_t_p;


/* Soma end */



struct UF_SF_POST_ident_parms_s
{
   UF_SF_POST_ident_action_t action;
   int number;
   char *id_string;
   logical List_all_Comp_sw;
};
typedef struct UF_SF_POST_ident_parms_s UF_SF_POST_ident_parms_t, *UF_SF_POST_ident_parms_t_p;

/*****************************************************************************
 Structure defining the parameters for deformed model scaling
******************************************************************************/

struct UF_SF_POST_def_s
{
   char    dsn[UF_SF_POST_DSN_NM_BUFSIZE];      /* FOCUS result dataset name   */
   logical rel_sw;                            /* Show relative deformations  */
   double  rel_percentage;                    /* relative def model percent  */
   double  true_multiplier;                   /* true deformation scaling    */
};
typedef struct UF_SF_POST_def_s UF_SF_POST_def_t, *UF_SF_POST_def_t_p;

/*****************************************************************************
 Structure defining the parameters to display an undeformed model
******************************************************************************/

struct UF_SF_POST_undef_disp_s
{
   UF_SF_POST_elem_edge_style_t edge_style;        /* Element edge rendering      */
   UF_SF_POST_hue_colors_t edge_color;             /* Element edge color          */
   UF_SF_POST_elem_face_style_t face_style;        /* Element face rendering      */
   UF_SF_POST_hue_colors_t face_color;             /* Element edge color          */
};
typedef struct UF_SF_POST_undef_disp_s UF_SF_POST_undef_disp_t, *UF_SF_POST_undef_disp_t_p;

/*****************************************************************************
 Structure defining the parameters to display a deformed model
******************************************************************************/

struct UF_SF_POST_def_disp_s
{
   UF_SF_POST_elem_edge_style_t edge_style;        /* Element edge rendering      */
   UF_SF_POST_hue_colors_t edge_color;             /* Element edge color          */
   UF_SF_POST_elem_face_style_t face_style;        /* Element face rendering      */
   UF_SF_POST_hue_colors_t face_color;             /* Element edge color          */
   UF_SF_POST_elem_display_t elem_disp;            /* Element display             */
   UF_SF_POST_display_marker_t display_marker;     /* Marker display              */
   logical def_sw;                                 /* whether to display as def   */
   logical undef_sw;                               /* whether to display undef fem*/
   int num_vgrid;                                  /* number of vgrid in p model  */
   UF_SF_POST_undef_disp_t undef_data;             /* undeformed data structure   */

   /* NOTE : The following members are NOT used during UFT testing. They are
    *        here as placeholders to maintain parallelism with SFPPM_fem_disp_t_p
    */

   logical mesh_disp_flag;
   int     mesh_group_count;
   int     *mesh_count; /*  */
   tag_t   **mesh_tags; /*  */
   int     **mesh_disp; /*  */
   int     **mesh_post_id; /*     int     **mesh_geom_in_sync; /* };
typedef struct UF_SF_POST_def_disp_s UF_SF_POST_def_disp_t, *UF_SF_POST_def_disp_t_p;

/************ target **************/


enum UF_SF_POST_target_t
{
   UF_SF_POST_TARGET_FREEFACE = 0,
   UF_SF_POST_TARGET_VOLUME,
   UF_SF_POST_TARGET_CUTTINGPLANE
};
typedef UF_SF_POST_target_t *UF_SF_POST_target_t_p;

struct UF_SF_POST_template_data_s
{
   int                  post_view_id;
   char                 filename_text_data[ MAX_FSPEC_BUFSIZE ];
   int                  icon_toggle;
   char                 name_text_data[ UF_CFI_MAX_FILE_NAME_BUFSIZE ];
   int                  is_default;
};
typedef struct UF_SF_POST_template_data_s UF_SF_POST_template_data_t, *UF_SF_POST_template_data_t_p;


enum UF_SF_POST_template_type_t
{
   UF_SF_POST_UNKNOWN_TEMPLATE_TYPE = -1,
   UF_SF_POST_TEMPLATE_TYPE_LAYOUT,
   UF_SF_POST_TEMPLATE_TYPE_POSTVIEW
};
typedef UF_SF_POST_template_type_t *UF_SF_POST_template_type_t_p;


enum UF_SF_POST_mark_arrow_style_t
{
   UF_SF_POST_MARK_ARROW_STYLE_LINE,
   UF_SF_POST_MARK_ARROW_STYLE_UMBRELLA,
   UF_SF_POST_MARK_ARROW_STYLE_CYLINDER
};


enum UF_SF_POST_mark_tensor_style_t
{
   UF_SF_POST_MARK_TENSOR_STYLE_ARROWS,
   UF_SF_POST_MARK_TENSOR_STYLE_CROWSFEET,
   UF_SF_POST_MARK_TENSOR_STYLE_BOX
};


enum UF_SF_POST_mark_color_type_t
{
   UF_SF_POST_MARK_COLOR_RESULT,
   UF_SF_POST_MARK_COLOR_ANNOTEXT,
   UF_SF_POST_MARK_COLOR_SELECTED
};


enum UF_SF_POST_mark_size_type_t
{
   UF_SF_POST_MARK_SIZE_RESULT,
   UF_SF_POST_MARK_SIZE_CONSTANT
};


enum UF_SF_POST_mark_size_valtype_t
{
   UF_SF_POST_MARK_SIZE_MODELPERCENT,
   UF_SF_POST_MARK_SIZE_VALUE
};


enum UF_SF_POST_mark_loc_type_t
{
   UF_SF_POST_MARK_AT_NODES,
   UF_SF_POST_MARK_AT_ELEMCENTROID
};


enum UF_SF_POST_mark_hide_valtype_t
{
   UF_SF_POST_MARK_HIDE_RESULTPERCENT,
   UF_SF_POST_MARK_HIDE_VALUE
};



#undef EXPORTLIBRARY

#endif