Logo

CEETRON SDK Suite

  • Home

Getting Started

  • Technical Overview
    • Application Development Environment
    • Directory Structure
    • Built-in CMake System - CMake
    • CMake compilation options - CMakePreset
    • Third party packages included in the distribution
    • [Deprecated] Compiling and Linking CEETRON Solve/Access/Mesh
    • Include Files and Data Types
    • Versioning
    • C++ Language Bindings
    • FORTRAN Language Bindings
    • C# Language Bindings
    • Parallelization and Thread Safety
    • Floating Point Precision
    • Programming language standards and compiler requirements
    • Major version Migration scripts

CEETRON Solve/Access/Mesh

  • Overview
  • Common [vsy|vut|vis]
    • Foundation Modules
      • Module Index
      • 1. Base Library
      • 2. Priority Queues - Heap, PQueue
        • 2.1. Heaps - Heap
        • 2.2. Priority Queues - PQueue
      • 3. Error Handling, License, Memory System, Standard Output, Quadruple Precision - Error, License, Memory, Print, VQuad
        • 3.1. Error Handling - Error
        • 3.2. License Check - License
        • 3.3. Memory System - Memory
        • 3.4. Standard Output - Print
        • 3.5. Quadruple Precision - VQuad
      • 4. Object Collections - List, Stack, Dictionary, HashTable, VHashTable, Tree
        • 4.1. Randomly Accessible Sequences - List
        • 4.2. Last-In First-Out Storage - Stack
        • 4.3. Storage Accessed by Name - Dictionary
        • 4.4. Storage Accessed by Integer - HashTable
        • 4.5. Multiple Integer Key Hashtable - VHashTable
        • 4.6. Tree Data Structure - Tree
      • 5. Numeric Type Collections - BitVec, DblVec, FltVec, IntDict, DblDict, IntHash, IntVHash, IntQue, IntVec
        • 5.1. Bit Vectors - BitVec
        • 5.2. Real Vectors (single FltVec) - DblVec
        • 5.3. Integer Dictionary - IntDict
        • 5.4. Double Dictionary - DblDict
        • 5.5. Integer Hashtable - IntHash
        • 5.6. Double Hashtable - DblHash
        • 5.7. Integer, Multiple Integer Key, Hashtable - IntVHash
        • 5.8. Integer Queue - IntQue
        • 5.9. Integer Vectors - IntVec
      • 6. Utilities - PropSet, Random, DataTable, Concat, LinkList, StrUtil
        • 6.1. Property Sets - PropSet
        • 6.2. Random Numbers - Random
        • 6.3. Data Tables - DataTable
        • 6.4. Concatenated Storage - Concat
        • 6.5. Linked List Storage - LinkList
        • 6.6. String Utilities - StrUtil
      • 7. Geometry Tools - VertLoc, LineCon, TriCon, ADTree, Pred
        • 7.1. Point Colocation - VertLoc
        • 7.2. Line Connectivity - LineCon
        • 7.3. Triangle Connectivity - TriCon
        • 7.4. Geometric Searching, Alternating Digital Tree - ADTree
        • 7.5. Geometric Predicates - Pred
      • 8. System - MachInfo, PTask, Timer, VSocket
        • 8.1. Machine Information - MachInfo
        • 8.2. Threading - PTask
        • 8.3. Timers - Timer
        • 8.4. Socket Communication - VSocket
      • 9. Text Processing - TextFun, TextTee, PlainText, HTMLText, LaTeXText
        • 9.1. Text Functions - TextFun
        • 9.2. File Operations
        • 9.3. Text Attributes and Modes
        • 9.4. Text Primitives
        • 9.5. Forms and Form Actions
        • 9.6. Text Tee - TextTee
        • 9.7. Plain Text Format - PlainText
        • 9.8. HTML Text Format - HTMLText
        • 9.9. LaTeX Text Format - LaTeXText
      • 10. Examples
        • 10.1. Example 1, Demonstration of Object Collections
        • 10.2. Example 2, Demonstration of Numeric Type Collections
        • 10.3. Example 3, Demonstration of Property Sets
        • 10.4. Example 4, Demonstration of Random Number Generation
        • 10.5. Example 5, Creating a Derived Class in C++ Using a Base Random Class
        • 10.6. Example 6, Install User Error Handler and Memory Management
        • 10.7. Example 7, Test and Demonstrate Concatenated Storage
        • 10.8. Example 8, Test and Demonstrate a Data Table
        • 10.9. Example 9, Test and Demonstrate a PQueue Object
        • 10.10. Example 9a, Test and Demonstrate a Heap Object
        • 10.11. Example 10, Test and Demonstrate a TriCon Object
        • 10.12. Example 11, Test and Demonstrate a VertLoc Object
        • 10.13. Example 12, Test and Demonstrate a LineCon Object
        • 10.14. Example 13, Test and Demonstrate a Timer Object
        • 10.15. Example 14, Test and Demonstrate the MachInfo Module
        • 10.16. Example 15, Test and Demonstrate a PTask Object
        • 10.17. Example 16, Test and Demonstrate Text Processing and Formatting
        • 10.18. Example 17, Test and Demonstrate the LinkList object
        • 10.19. Example 18, Test and Demonstrate the ADTree object
        • 10.20. Example 21, Purposefully left blank
        • 10.21. Example 22, Test and Demonstrate the VSocket object
        • 10.22. Example 23, Test and Demonstrate Quadruple Precision VQuad
        • 10.23. Example 23cc, C++ Operator Overloading for Quadruple Precision VQuad
        • 10.24. Example 24, Test and demonstrate Tree
        • 10.25. Example 25, Test and demonstrate Pred
        • 10.26. Example 26, Test and demonstrate StrUtil
    • Global Modules
      • Module Index
      • 1. Introduction
        • 1.1. Module Summary
      • 2. Grid Topology and Geometry - Connect, GridFun
        • 2.1. Finite Element (Unstructured) Grids - Connect
        • 2.2. Node and Element Editing and Element Adjacency Query
        • 2.3. Node and Element Associations
        • 2.4. Element, Element Face, Element Edge and Node Groups
        • 2.5. Element Face Normals and Edge Tangents
        • 2.6. Geometric Tesselation
        • 2.7. Parallel Functions
        • 2.8. Attribute Objects
        • 2.9. Function Descriptions
        • 2.10. Grid Topology and Geometry Query Functions - GridFun
        • 2.11. Function Descriptions
      • 3. Entity Sets and Identifier Translation - Group, IdTran
        • 3.1. Entity Sets - Group
        • 3.2. Function Descriptions
        • 3.3. Entity Identifier Translation - IdTran
        • 3.4. Function Descriptions
      • 4. Data Manipulation - ElemDat, State, History, RedMat, ZState
        • 4.1. Face and Edge Data - ElemDat
        • 4.2. Attribute Objects
        • 4.3. Function Descriptions
        • 4.4. Results Manipulation - State
        • 4.5. Local Coordinate Systems
        • 4.6. Parallel Functions
        • 4.7. Attribute Objects
        • 4.8. Function Descriptions
        • 4.9. History Results Manipulation - History
        • 4.10. Attribute Objects
        • 4.11. Function Descriptions
        • 4.12. System Degree of Freedom Data - RedMat
        • 4.13. Function Descriptions
        • 4.14. Results Compression - ZState
        • 4.15. Attribute Objects
        • 4.16. Function Descriptions
      • 5. Space and Range Searching - Space, Range
        • 5.1. Spatial Searching - Space
        • 5.2. Attribute Objects
        • 5.3. Function Descriptions
        • 5.4. Range Searching - Range
        • 5.5. Attribute Objects
        • 5.6. Function Descriptions
      • 6. Loads and Constraints - LCase, RCase, MCase, ICase
        • 6.1. Load Case - LCase
        • 6.2. Function Descriptions
        • 6.3. Restraint Case - RCase
        • 6.4. Function Descriptions
        • 6.5. Multipoint Constraint Case - MCase
        • 6.6. Function Descriptions
        • 6.7. Initial Condition Case - ICase
        • 6.8. Function Descriptions
      • 7. Contact Pairs, Surfaces - CPair, ASurf, RBody
        • 7.1. Contact Pair - CPair
        • 7.2. Function Descriptions
        • 7.3. Analytic Surface - ASurf
        • 7.4. Function Descriptions
        • 7.5. Rigid Body - RBody
        • 7.6. Function Descriptions
      • 8. Properties and Functions - GProp, EProp, MProp, SProp, TCurve, RProp, UProp
        • 8.1. Global Properties - GProp
        • 8.2. Function Descriptions
        • 8.3. Element Properties - EProp
        • 8.4. Function Descriptions
        • 8.5. Material Properties - MProp
        • 8.6. Function Descriptions
        • 8.7. Solution Properties - SProp
        • 8.8. Function Descriptions
        • 8.9. Tabular Functions - TCurve
        • 8.10. Function Descriptions
        • 8.11. Results Properties - RProp
        • 8.12. Function Descriptions
        • 8.13. User Defined Properties - UProp
        • 8.14. Function Descriptions
      • 9. Beam Section Properties Calculator - BeamSectCalculator
        • 9.1. Function Descriptions
      • 10. Utilities - Model, ElemChk, MassPrp, Mesh Metric
        • 10.1. Finite Element Model - Model
        • 10.2. Function Descriptions
        • 10.3. Element Checking - ElemChk
        • 10.4. Shape Parameters
        • 10.5. Attribute Objects
        • 10.6. Function Descriptions
        • 10.7. Mass Properties - MassPrp
        • 10.8. Attribute Objects
        • 10.9. Function Descriptions
        • 10.10. Mesh Metric - Mesh Metric
        • 10.11. Function Descriptions
      • 11. Examples
        • 11.1. Example 21, Translate Entity Identifiers Using IdTran.
        • 11.2. Example 22, Generate an Element Group Object
        • 11.3. Example 23, Element Connectivity and Adjacency using Connect
        • 11.4. Example 23a, Using a GridFun Object with Example 23.
        • 11.5. Example 24, Generate Element Face and Edge Groups
        • 11.6. Example 24a, Convert Linear Elements to Parabolic Elements
        • 11.7. Example 25, Node Results Data Using State
        • 11.8. Example 25a, Node History Results Data using History
        • 11.9. Example 25b, Element Node Scalar Section Results using History
        • 11.10. Example 25c, Element Face and Face Node Results using State
        • 11.11. Example 26, Element and Node Results Data
        • 11.12. Example 26a, Element Face Node Data Using ElemDat
        • 11.13. Example 26b, Element Face Node Normals Using ElemDat
        • 11.14. Example 26c, Averaging Element Node Data within Groups
        • 11.15. Example 26d, Computing Gradient of Normal Stress
        • 11.16. Example 27, Perform Space Searches Using Space.
        • 11.17. Example 27a, Intersection and Interpolation.
        • 11.18. Example 28, Perform Range Searches Using Range.
        • 11.19. Example 29, Node and Element Associations
        • 11.20. Example 30, Demo Visualizer Progressive Example
        • 11.21. Example 31, Perform Element Checking Using ElemChk.
        • 11.22. Example 31a, Compute Model Mass Properties Using MassPrp
        • 11.23. Example 32, Manage Loads Using LCase
        • 11.24. Example 32a, Manage Contact Pairs Using CPair
        • 11.25. Example 32b, Manage Analytic Surfaces using ASurf
        • 11.26. Example 32c, Manage Complex Loads Using LCase
        • 11.27. Example 32d, Draw Analytic Surfaces using ASurf and Glyph
        • 11.28. Example 33, Manage Constraints Using RCase and MCase
        • 11.29. Example 33a, Manage Initial Conditions Using ICase
        • 11.30. Example 33b, Manage Complex Constraints Using RCase
        • 11.31. Example 34, Manage Element Properties Using EProp
        • 11.32. Example 34a, Composite Shell and General Beam Property Using EProp
        • 11.33. Example 35, Manage Material Properties Using MProp
        • 11.34. Example 36, Manage Solution Properties Using SProp
        • 11.35. Example 37, Manage Tabular Functions Using TCurve
        • 11.36. Example 38, Manage Results Properties Using RProp
        • 11.37. Example 38avdm, Export Simple Finite Element Model and Results
        • 11.38. Example 38bvdm, Export Simple CFD Finite Element Model and Results
        • 11.39. Example 38cvdm, Export Simple Finite Element Model and Results with WriterFun
        • 11.40. Example 39, Export a Simple Linear Static Solveable Model
        • 11.41. Example 39a, Structural Finite Element Model Using Model
        • 11.42. Example 39b, Traverse and Print Contents of a Model Object
        • 11.43. Example 39c, Heat Transfer Finite Element Model Using Model
        • 11.44. Example 40vdm, Compute Shell and Beam Local Coordinate Systems
        • 11.45. Example 53, Manage System Degree of Freedom Data Using RedMat
        • 11.46. Example 55, Computational Features of Edge, Face, Cell
        • 11.47. Example 56, Using Units
        • 11.48. Example 57, Compress and Uncompress Coordinate Field with ZState
        • 11.49. Example 58vdm, Compress and Uncompress Results with ZState
        • 11.50. Example 59vgl, Demonstrate Parallel Contour and Threshold Generation
  • CEETRON Solve [vfe|vfs|vfx]
    • Vfe
      • Module Index
      • 1. Introduction
        • 1.1. Module Summary
        • 1.2. Element Library
        • 1.3. Element Technologies
        • 1.4. Accuracy of Finite Element Formulations
        • 1.5. Computed Element Quantities
        • 1.6. Degrees of Freedom
        • 1.7. Material Models
        • 1.8. Error Estimation and Mesh Adaptation
        • 1.9. Performance Issues
        • 1.10. Compiling and Linking a VfeTools Application
        • 1.11. A First Program - C Version
        • 1.12. A First Program - C++ Version
        • 1.13. A First Program - FORTRAN Version
        • 1.14. A First Program - C# Version
      • 2. Solid Elements - Solid2D, Solid3D
        • 2.1. 2D Solid Elements - Solid2D
        • 2.2. Function Descriptions
        • 2.3. 3D Solid Elements - Solid3D
        • 2.4. Function Descriptions
      • 3. Shell and Membrane Elements - Shell2D, Shell3D, Mem3D
        • 3.1. 2D Shell Elements - Shell2D
        • 3.2. Element Geometry
        • 3.3. Function Descriptions
        • 3.4. 3D Shell Elements - Shell3D
        • 3.5. Element Geometry
        • 3.6. Function Descriptions
        • 3.7. 3D Membrane Elements - Mem3D
        • 3.8. Element Geometry
        • 3.9. Function Descriptions
      • 4. Beam Elements - Beam3D
        • 4.1. Element Geometry
        • 4.2. Function Descriptions
      • 5. Truss Elements - Truss3D
        • 5.1. Element Geometry
        • 5.2. Function Descriptions
      • 6. Discrete Elements - ConElas, ConMass, Bulk, Spring
        • 6.1. Concentrated and Degree of Freedom Springs - ConElas
        • 6.2. Function Descriptions
        • 6.3. Concentrated and Degree of Freedom Masses - ConMass
        • 6.4. Function Descriptions
        • 6.5. Bulk Elements - Bulk
        • 6.6. Function Descriptions
        • 6.7. Springs - Spring
        • 6.8. Element Geometry
        • 6.9. Function Descriptions
      • 7. Interface and Gap Elements - Inter2D, Inter3D, Gap
        • 7.1. 2D Interface Elements - Inter2D
        • 7.2. Element Geometry
        • 7.3. Function Descriptions
        • 7.4. 3D Interface Elements - Inter3D
        • 7.5. Element Geometry
        • 7.6. Function Descriptions
        • 7.7. Gap Elements - Gap
        • 7.8. Element Geometry
        • 7.9. Function Descriptions
      • 8. MultiPoint Constraints - MPC
        • 8.1. Single Point Constraints
        • 8.2. Inextensional and Sliding Couplings
        • 8.3. Rigid Joints
        • 8.4. Kinematic Couplings
        • 8.5. Distributing Couplings
        • 8.6. Standard Form
        • 8.7. Function Descriptions
      • 9. Material Model Functions - MatlFun
        • 9.1. Integration Methodology
        • 9.2. Structural Analysis Material Quantities
        • 9.3. Thermal Analysis Material Quantities
        • 9.4. Function Descriptions
      • 10. Primitive Material Models - LinMat, PlasMat, HyperMat
        • 10.1. Linear Materials - LinMat
        • 10.2. Elastic Moduli
        • 10.3. Thermal Conductivity
        • 10.4. Thermal Expansions and Reference Temperature
        • 10.5. Density and Specific Heat
        • 10.6. Function Descriptions
        • 10.7. Elasto-Plastic Materials - PlasMat
        • 10.8. Elastic Moduli and Hardening Laws
        • 10.9. Thermal Expansions and Reference Temperature
        • 10.10. Function Descriptions
        • 10.11. Hyperelastic Materials - HyperMat
        • 10.12. Hyperelastic Models
        • 10.13. Thermal Expansions and Reference Temperature
        • 10.14. Function Descriptions
      • 11. Element Material Models - ShellProp, BeamProp, InterProp
        • 11.1. Shell Element Properties - ShellProp
        • 11.2. Element Properties
        • 11.3. Function Descriptions
        • 11.4. Beam Element Properties - BeamProp
        • 11.5. Element Properties
        • 11.6. Function Descriptions
        • 11.7. Interface and Gap Element Properties - InterProp
        • 11.8. Element Properties
        • 11.9. Function Descriptions
      • 12. Element and Node Utilities - ElemTran, NodeGeom, Corot
        • 12.1. Element Transformations - ElemTran
        • 12.2. Direction Cosine Matrix
        • 12.3. Element Degree of Freedom Condensation and Elimination
        • 12.4. Function Descriptions
        • 12.5. Node Geometry Utilities - NodeGeom
        • 12.6. Rigid Body Motion, Accelerations and Inertia Relief
        • 12.7. Function Descriptions
        • 12.8. Corotational Utilities - Corot
        • 12.9. Element Independent Corotation Frames
        • 12.10. Function Descriptions
      • 13. User-defined element functions - Functions
        • 13.1. Function Descriptions
      • 14. Examples
        • 14.1. Example 1, Generate Stiffness, Mass and Loads for a 3D 10 Node Tetrahedron
        • 14.2. Example 1a, Query for Element Degrees of Freedom
        • 14.3. Example 2, Generate Stiffness, Loads for a 2D Plane Stress Cantilever Beam
        • 14.4. Example 3, Generate Stiffness, Mass and Loads for a 3D 4 Node Shell
        • 14.5. Example 3a, Using a Custom MatlFun Object with Example 3
        • 14.6. Example 4, Generate Stiffness, Mass and Loads for a 3D 3 Node Beam
        • 14.7. Example 5, Rigid Body MPC Using Penalty Function
        • 14.8. Example 6, Infinitesimal Elasto-plasticity under Biaxial Stretching
        • 14.9. Example 7, Mooney-Rivlin Material in Plane Stress
        • 14.10. Example 8, Corotational Frame for a 3D Solid Element
        • 14.11. Example 9, Rigid Body Mode Detection using NodeGeom
        • 14.12. Example 10, Linear Stress Analysis Using 10 Node Tetrahedra
        • 14.13. Example 10a, Linear Stress Analysis Using 3D Solid Elements
        • 14.14. Example 11, Generate Gradients of Shape Functions
        • 14.15. Example 14, Gap Element Property Using InterProp
        • 14.16. Example 15, 2D 4-nodes interface element
        • 14.17. Example 16, 3D interface elements
        • 14.18. Example 20, Generate Flexible Body Using Component Mode Synthesis
        • 14.19. Example 21, Inertia Relief and Linear Stress Analysis
    • Vfs
      • Module Index
      • 1. Introduction
        • 1.1. Module Summary
        • 1.2. Degree of Freedom Management
        • 1.3. System Vectors and Matrices
        • 1.4. Direct and Iterative Solution of a Linear System
        • 1.5. Compiling and Linking a VfsTools Application
        • 1.6. Parallelizing a VfsTools Application
        • 1.7. A First Program - C Version
        • 1.8. A First Program - C++ Version
        • 1.9. A First Program - FORTRAN Version
        • 1.10. A First Program - C# Version
      • 2. Degree of Freedom and Connection Management - DofTab
        • 2.1. Parallel Assembly
        • 2.2. Special Considerations for the Iterative Solver
        • 2.3. Special Considerations for Rigid Mode Analysis
        • 2.4. Function Descriptions
      • 3. System Vectors and Matrices - SysVector, SysMatrix
        • 3.1. System Vectors - SysVector
        • 3.2. Function Descriptions
        • 3.3. System Matrices - SysMatrix
        • 3.4. Linear Equation Solvers
        • 3.5. Eigenvalue Extraction
        • 3.6. Function Descriptions
      • 4. Analysis Procedures - SolProc
        • 4.1. Function Descriptions
      • 5. PARDISO Emulator - IPardiso
        • 5.1. Function Descriptions
      • 6. Examples
        • 6.1. Example 1, Solve a System of Linear Equations
        • 6.2. Example 1a, Solve for Vibration Eigenvalues and Eigenvectors
        • 6.3. Example 2, Solve for Unknowns of Four Elements
        • 6.4. Example 2a, Solve for Unknowns of Four Elements with MPC
        • 6.5. Example 2b, Multiple Solutions of Four Elements with Restraints
        • 6.6. Example 3, Direct and Iterative Solver
        • 6.7. Example 3a, Direct and Iterative Solver with Monitor Function
        • 6.8. Example 3b, Direct and Iterative Solver with Parallel Assembly
        • 6.9. Example 3c, Direct and Iterative Solver with Rotated Systems
        • 6.10. Example 4, Direct factorization solution of a non-symmetric system
        • 6.11. Example 5, Linear Static Solution Procedure using SolProc
        • 6.12. Example 5a, Linear Dynamic Solution Procedure
        • 6.13. Example 5bvfe, Linear Dynamic Solution Procedure using VfeTools
        • 6.14. Example 5c, Nonlinear Static Solution Procedure
        • 6.15. Example 5dvfe, Pre-Stressed Nonlinear Static Solution Procedure
        • 6.16. Example 5evfevis, Large Rotation Cantilever Beam with Corot
        • 6.17. Example 5fvfevis, Nonlinear Elasto-plastic Transient Solution Procedure
    • Vfx
      • Module Index
      • 1. Introduction
        • 1.1. Module Summary
        • 1.2. A First Program
      • 2. Automatic Case Generation - GenLCase, GenMCase
        • 2.1. Generate Load Cases - GenLCase
        • 2.2. Function Descriptions
        • 2.3. Generate Multipoint Constraint Cases - GenMCase
        • 2.4. Function Descriptions
      • 3. Design Analysis Solver - ProSolve
        • 3.1. Solution Sequence, Case, Step, Phase
        • 3.2. Static or Steady State Solution
        • 3.3. Buckling Solution
        • 3.4. Vibration Solution
        • 3.5. Superelement Solution
        • 3.6. Frequency Response Solution
        • 3.7. Output Solution
        • 3.8. Singular Mode Solution
        • 3.9. Direct Sparse Solver vs. Iterative Solver
        • 3.10. Solution Output Files
        • 3.11. Function Descriptions
      • 4. Report Writing - LogFile
        • 4.1. Log File Content - LogFile
        • 4.2. Function Descriptions
      • 5. Examples
        • 5.1. Example 1, Attachment Point Load Distribution using GenLCase
        • 5.2. Example 2, Statically Determinant Constraints using GenMCase
        • 5.3. Example 3, Solving Inertia Relief and Attachment Point Loading
        • 5.4. Example 4, Design Analysis Finite Element Solver
        • 5.5. Example 5, Generate Software Rendered Images
        • 5.6. Example 6, Flexible Body Generation
        • 5.7. Example 7, Error Analysis and Mesh Refinement
        • 5.8. Example 8, Thermal-Structural Analysis
        • 5.9. Example 10, Buckling Analysis
        • 5.10. Example 11, Thermal Analysis
        • 5.11. Example 13, Frequency Response Analysis
  • CEETRON Access [vdm]
    • Module Index
    • 1. Introduction
      • 1.1. Module Summary
      • 1.2. Interface Support Information
      • 1.3. Compiling and Linking a CEETRON Access Application
        • 1.3.1. ABAQUS .odb interface
        • 1.3.2. AUTODYN interface
        • 1.3.3. FEMZIP LS-DYNA d3plot interface
        • 1.3.4. CFX results file
        • 1.3.5. CGNS data base
        • 1.3.6. Altair H3D interface
        • 1.3.7. PAM-CRASH .DSY interface
        • 1.3.8. PAM-CRASH .erfh5 interface, MSC/NASTRAN .h5, Native .vh5
        • 1.3.9. STAR-CCM .ccm results file interface
        • 1.3.10. SAMCEF .des results file interface
      • 1.4. Dataset Specification Syntax
        • 1.4.1. Dataset Name, dataset_name
        • 1.4.2. Numeric Identifiers, :id1:id2:id3
        • 1.4.3. Dataset Specification Expansion
      • 1.5. Dataset Parameters and Attributes
      • 1.6. Data Structures
      • 1.7. Finite Element Model Dataset Names and Descriptions
        • 1.7.1. Model Datasets
      • 1.8. Finite Element Result Dataset Names and Descriptions
      • 1.9. Finite Element Results at Section Points
      • 1.10. Finite Element Results at System Degrees of Freedom
      • 1.11. Finite Element Results History Datasets
      • 1.12. Monitor Functions
      • 1.13. Multiple Domains
      • 1.14. A First Program
      • 1.15. A First Program - C++ Version
    • 2. Library Device Components - Library, Dataset, Attribute
      • 2.1. Maintain Library Information - Library
        • 2.1.1. Function Descriptions
      • 2.2. Maintain Dataset Information - Dataset
        • 2.2.1. Function Descriptions
      • 2.3. Maintain Attribute Information - Attribute
        • 2.3.1. Function Descriptions
    • 3. Data Functions - DataFun, Settings - Settings
      • 3.1. Data Functions - DataFun
        • 3.1.1. Library Control
        • 3.1.2. Query
        • 3.1.3. Read Datasets
        • 3.1.4. Function Descriptions
      • 3.2. Settings - Settings
        • 3.2.1. Function Descriptions
    • 4. Data Function Filters, Interprocess Communication - DataIPC
      • 4.1. Function Descriptions
    • 5. Library Device Interfaces - *Fil, *Lib
      • 5.1. SDRC/IDEAS Universal File - SDRCLib
        • 5.1.1. Writing SDRC/IDEAS Universal Files
        • 5.1.2. Function Descriptions
      • 5.2. ABAQUS Input File - ABAFil
        • 5.2.1. Function Descriptions
        • 5.2.2. Writing ABAQUS input files
      • 5.3. ABAQUS .fil and .odb File Output - ABALib
        • 5.3.1. Writing ABAQUS .fil data files
        • 5.3.2. ABAQUS .odb Output Data Base
        • 5.3.3. Function Descriptions
      • 5.4. Adams files - AdamsLib
        • 5.4.1. Function Descriptions
      • 5.5. AFLR (Mississippi State) Grid File - AFLRFil
        • 5.5.1. Function Descriptions
      • 5.6. ANSYS Input File - ANSFil
        • 5.6.1. Writing ANSYS Input Files
        • 5.6.2. Function Descriptions
      • 5.7. ANSYS .rst, .rth, .rmg, .rfl Results Files - ANSLib
        • 5.7.1. Function Descriptions
      • 5.8. ANSYS AUTODYN results files - AUTODYNLib
        • 5.8.1. Function Descriptions
      • 5.9. CFX results file - CFXLib
        • 5.9.1. Function Descriptions
      • 5.10. CGNS data base - CGNSVLib
        • 5.10.1. Function Descriptions
      • 5.11. COMSOL MPH and Sectionwise file - COMSOLLib
        • 5.11.1. Function Descriptions
      • 5.12. LSTC LS-DYNA input file - D3DFil
        • 5.12.1. Function Descriptions
      • 5.13. LSTC LS-DYNA State and Time History Databases - D3DLib
        • 5.13.1. Function Descriptions
      • 5.14. ANSYS Data Processing Framework .rst, .rth, .rmg and .rfl Results Files - DPFLib
        • 5.14.1. Function Descriptions
      • 5.15. EnSight Casefile format - EnSightLib
        • 5.15.1. Function Descriptions
      • 5.16. FEMAP Neutral File - FEMAPLib
        • 5.16.1. Function Descriptions
      • 5.17. FIDAP Neutral File - FDILib
        • 5.17.1. Function Descriptions
      • 5.18. FLUENT Case and Data File - FLUENTLib
        • 5.18.1. Function Descriptions
      • 5.19. General Mesh Viewer File Format - GMVLib
        • 5.19.1. Function Descriptions
      • 5.20. Altair Engineering HyperMesh ASCII File - HMAFil
        • 5.20.1. Function Descriptions
      • 5.21. Altair Engineering H3D File - H3DLib
        • 5.21.1. Function Descriptions
      • 5.22. MSC/Marc Post File - MarcLib
        • 5.22.1. Function Descriptions
      • 5.23. Memory object - MemLib
        • 5.23.1. Function Descriptions
      • 5.24. MSC/NASTRAN bulk data input file - NASFil
        • 5.24.1. Function Descriptions
        • 5.24.2. Writing NASTRAN Input Files
      • 5.25. NASTRAN OUTPUT2, .xdb and .h5 data files - NASLib
        • 5.25.1. Function Descriptions
        • 5.25.2. Writing NASTRAN OUTPUT2 data files
      • 5.26. Native file - NatLib
        • 5.26.1. Function Descriptions
      • 5.27. OBJ file - OBJFil
        • 5.27.1. Function Descriptions
      • 5.28. OpenFOAM database - OpenFOAMLib
        • 5.28.1. Function Descriptions
      • 5.29. Patran Neutral model and results file - PatLib
        • 5.29.1. Function Descriptions
      • 5.30. ESI/PAM-CRASH DAISY and ERF file - PAMLib
        • 5.30.1. Function Descriptions
      • 5.31. PERMAS result file - PERMASLib
        • 5.31.1. Function Descriptions
      • 5.32. NASA/PLOT3D grid, solution and function files - PLOT3DLib
        • 5.32.1. Function Descriptions
      • 5.33. Interface to the Data Provider Framework - PluginLib
        • 5.33.1. Function Descriptions
      • 5.34. POLYFLOW data base - POLYFLOWLib
        • 5.34.1. Function Descriptions
      • 5.35. Writing PTC/Mechanica FEM Neutral Format - RASFil
        • 5.35.1. Function Descriptions
      • 5.36. PTC/Mechanica Design Study - RASLib
        • 5.36.1. Function Descriptions
      • 5.37. SAMCEF des file - SAMCEFLib
        • 5.37.1. Function Descriptions
      • 5.38. STAR-CCM data base - STARCCMLib
        • 5.38.1. Function Descriptions
      • 5.39. 3D Systems/STL ASCII text and binary file - STLFil
        • 5.39.1. Function Descriptions
      • 5.40. Tecplot file format - TecplotLib
        • 5.40.1. Function Descriptions
      • 5.41. Vtk Legacy and Vtu File Format - VTKLib
        • 5.41.1. Function Descriptions
    • 6. Library Manager - LMan
      • 6.1. Function Descriptions
    • 7. Unrecognized Data - UnrecognizedData
      • 7.1. Function Descriptions
    • 8. Plugin Manager, Plugin Settings - PluginManager , PluginSetting
      • 8.1. Plugin Manager - PluginManager
        • 8.1.1. Function Descriptions
      • 8.2. Plugin Settings - PluginSetting
        • 8.2.1. Function Descriptions
    • 9. Writer Components - Writer, WriterFun
      • 9.1. Writer Functions - WriterFun
        • 9.1.1. Function Descriptions
      • 9.2. Writer - Writer
        • 9.2.1. Function Descriptions
    • 10. Examples
      • 10.1. Example 1, List Datasets on a Library Device
      • 10.2. Example 2, Read and Print Model Data
      • 10.3. Example 3, Read and Print Results State Data
      • 10.4. Example 3a, Read and Print Results History Data
      • 10.5. Example 3b, Read and Print Remeshing Results
      • 10.6. Example 3c, Read and Print Results History Summary
      • 10.7. Example 3d, Read and Print Reduced Matrix Data
      • 10.8. Example 3e, Read and Print Particle Data
      • 10.9. Example 3f, Read and Print Modal and Panel Contribution Results
      • 10.10. Example 4, Export all Datasets
      • 10.11. Example 5, Open and Append Files
      • 10.12. Example 5a, Open Files without Model Data
      • 10.13. Example 6, Read and Print Finite Element Model in Fluent Form
      • 10.14. Example 7, Read and Write Input Decks
      • 10.15. Example 8, Remotely Access Any File Format
      • 10.16. Example 8a, Remotely Writing a Model in Native Vdm Format
      • 10.17. Example 9, Read and Transform Stress/Strain State Data
      • 10.18. Example 10, Using a Monitor Function
      • 10.19. Example 11, Reading Multiple Domains
      • 10.20. Example 12, Load Model and Results and Save to Native File
      • 10.21. Example 13, Save Model Using MemLib
      • 10.22. Example 14, Use a custom plugin reader through PluginManager and LMan
      • 10.23. Example 14a, Use the vtk-plugin reader through PluginManager and LMan
  • CEETRON Mesh [msh]
    • Module Index
    • 1. Introduction
      • 1.1. Module Summary
      • 1.2. Controlling Mesh Size
      • 1.3. Monitoring Meshing Progress
      • 1.4. Use of the Connect Module
    • 2. Mapped Mesh Generation - MapMesh, ExtMesh
      • 2.1. Mapped Mesh Generation - MapMesh
        • 2.1.1. Function Descriptions
      • 2.2. Extruded Mesh Generation - ExtMesh
        • 2.2.1. Function Descriptions
    • 3. Triangular Mesh Generation - TriMesh
      • 3.1. Function Descriptions
    • 4. 3D Curve and Surface Mesh Generation - CurvMesh, SurfMesh
      • 4.1. Curve Mesh Generation - CurvMesh
        • 4.1.1. Function Descriptions
      • 4.2. Surface Mesh Generation - SurfMesh
        • 4.2.1. Conic Section Geometry
        • 4.2.2. Mapped Mesh Regions
        • 4.2.3. Non-manifold Geometry, Voids and Inclusions
        • 4.2.4. Periodic Meshes
        • 4.2.5. Function Descriptions
    • 5. 3D Volume Mesh Generation - TetMesh, VolMesh
      • 5.1. 3D Tetrahedral Mesh Generation - TetMesh
        • 5.1.1. Non-manifold Geometry, Voids, Inclusions and Hard Nodes and Edges
        • 5.1.2. Mesh Refinement and Adaptivity
        • 5.1.3. Function Descriptions
      • 5.2. 3D General Volume Mesh Generation - VolMesh
        • 5.2.1. Function Descriptions
    • 6. Examples
      • 6.1. Example 41, Generate a Surface Mapped Mesh
      • 6.2. Example 41a, Generate a Multiple Patch Mapped Mesh
      • 6.3. Example 42, Generate an Extruded Mesh
      • 6.4. Example 42a, Generate an Extruded Mesh along Normals
      • 6.5. Example 42b, Generate a TetMesh with an Extruded Boundary Layer
      • 6.6. Example 42c, Generate an Extruded Mesh with Interface Layers
      • 6.7. Example 43, Generate a 2D Planar Tri Mesh
      • 6.8. Example 43a, Generate a 2D Planar Tri Mesh with Parabolic Lines
      • 6.9. Example 43b, Generate a 2D Planar Tri Mesh with Sizing Function
      • 6.10. Example 43c, Generate a 2D Planar Quad Mesh
      • 6.11. Example 43d, Refine a 2D Planar Tri Mesh
      • 6.12. Example 43e, Refine a 2D Planar Tri Mesh as an Orphan Mesh
      • 6.13. Example 43f, Generate a 2D Planar Tri Mesh with Sizing
      • 6.14. Example 43g, Generate a 2D Planar Tri Mesh with Interior Sizing
      • 6.15. Example 44, Generate a 3D Volume Tet Mesh
      • 6.16. Example 44a, Generate a 3D Volume Tet Mesh with Interior Features
      • 6.17. Example 44b, Generate a 3D Volume Tet Mesh of a Simple Cube
      • 6.18. Example 44c, Refine a 3D Volume Tet Mesh as an Orphan Mesh
      • 6.19. Example 44d, Successively Refine a 3D Linear Tet Mesh
      • 6.20. Example 44e, Successively Refine a 3D Parabolic Tet Mesh
      • 6.21. Example 45, Generate Surface Mesh and 3D Volume Tet Mesh
      • 6.22. Example 45a, Generate Surface and 3D Volume Tet Mesh with Sizing
      • 6.23. Example 46, Generate 3D Curve Mesh Using CurvMesh
      • 6.24. Example 47, Generate 3D Surface Mesh Using SurfMesh
      • 6.25. Example 47 [Parallel], Generate 3D Surface Mesh Using Parallel SurfMesh
      • 6.26. Example 47a, Generate 3D Surface Mesh with Associations
      • 6.27. Example 47b, Generate 3D Surface Mesh with Normals and Associations
      • 6.28. Example 47c, Generate a Non-Manifold 3D Surface Mesh with Sizing
      • 6.29. Example 47d, Generate a 3D Surface Mesh with Trimming Loop
      • 6.30. Example 48, Generate a 3D Volume Tet Mesh from an STL File
      • 6.31. Example 48a, Generate an Anisotropic Surface Mesh and Tet Mesh
      • 6.32. Example 48b, Generate a Surface Mesh and Tet Mesh, Non-manifold Solid
      • 6.33. Example 48c, Refine a non-Manifold 3D Volume Tet Mesh
      • 6.34. Example 48d, Generate a Tet Mesh, Non-manifold Solid
      • 6.35. Example 48e, Generate a Hybrid Boundary and Volumetric Mesh
      • 6.36. Example 48f, Generate a Surface Mesh and Pyr/Tet Mesh Interior Sizing
      • 6.37. Example 48g, Generate a Surface Mesh, Curve Mesh and Tet Mesh
      • 6.38. Example 49, Generate 3D Volume Tet Model and Write to .vdm File
      • 6.39. Example 50, Generate a 3D Volume Tet Mesh with No Interior Points
      • 6.40. Example 51, Tesselate and Mesh a Bounded Region in a Plane
      • 6.41. Example 52acis, Illustrate ACIS Interface to SurfMesh and TetMesh
      • 6.42. Example 52capri, Illustrate CAPRI Interface to SurfMesh and TetMesh
      • 6.43. Example 52pk, Illustrate Parasolid Interface to SurfMesh and TetMesh
      • 6.44. Example 52occ, Illustrate OpenCASCADE Interface to SurfMesh and TetMesh
      • 6.45. Example 60, Generate a 3D Surface Mesh with User Nodes
      • 6.46. Example 60a, Refine a 3D Surface Mesh
      • 6.47. Example 61, Generate a Mixed Volumetric and Boundary Mesh
      • 6.48. Example 61a, Generate a Mixed Shape 3D Volume Mesh
      • 6.49. Example 61b, Generate a Mixed Order 3D Volume Mesh
      • 6.50. Example 62, Generate a Quad Surface Mesh and Tet Volume Mesh
  • Legacy Visualization [vis|vgl]
    • Visualization Modules [vis]
      • Module Index
      • 1. Introduction
        • 1.1. Module Summary
        • 1.2. Computational Cells
        • 1.3. Element Types
        • 1.4. Element Coordinate Systems
        • 1.5. Mathematical Data Types
        • 1.6. Complex Numbers
        • 1.7. Compiling and Linking a VisTools Application
        • 1.8. Attribute Objects, Data Interpolation, Isovalue Clipping and Topology
        • 1.9. A First Program - C Version
        • 1.10. A First Program - C++ Version
        • 1.11. A First Program - FORTRAN Version
        • 1.12. A First Program - C# Version
      • 2. Attributes - CoordSys, Units, VisContext
        • 2.1. Coordinate System - CoordSys
        • 2.2. Function Descriptions
        • 2.3. Units - Units
        • 2.4. Function Descriptions
        • 2.5. Visualization Context - VisContext
        • 2.6. Function Descriptions
      • 3. Color and Transparency Mapping - Levels, ColorMap, TransMap, Legend
        • 3.1. Map Field Magnitude to Level - Levels
        • 3.2. Function Descriptions
        • 3.3. Color Mapping - ColorMap
        • 3.4. Function Descriptions
        • 3.5. Transparency Mapping - TransMap
        • 3.6. Function Descriptions
        • 3.7. Color and Transparency Mapping Diagrams - Legend
        • 3.8. Attribute Objects
        • 3.9. Function Descriptions
      • 4. Isosurface Clipping, Data Interpolation - IsoClip, DataInt, PrmClp
        • 4.1. Isosurface Clipping - IsoClip
        • 4.2. Function Descriptions
        • 4.3. Data Interpolation - DataInt
        • 4.4. Function Descriptions
        • 4.5. Graphics Primitive Clipping - PrmClp
        • 4.6. Attribute Objects
        • 4.7. Function Descriptions
      • 5. Discrete Markers and Values - Mark, Value
        • 5.1. Markers - Mark
        • 5.2. Attribute Objects
        • 5.3. Function Descriptions
        • 5.4. Values - Value
        • 5.5. Attribute Objects
        • 5.6. Function Descriptions
      • 6. Wire Frame and Shaded Surface Rendering - Edge, Face, Cell
        • 6.1. Wire Frame Rendering - Edge
        • 6.2. Attribute Objects
        • 6.3. Function Descriptions
        • 6.4. Shaded Surface - Face
        • 6.5. Attribute Objects
        • 6.6. Function Descriptions
        • 6.7. Shaded Solid - Cell
        • 6.8. Attribute Objects
        • 6.9. Function Descriptions
      • 7. Isovalues - Segment, Contour, Threshold, IsoLabel
        • 7.1. 1D Domains - Segment
        • 7.2. Attribute Objects
        • 7.3. Function Descriptions
        • 7.4. 2D Domains - Contour
        • 7.5. Attribute Objects
        • 7.6. Function Descriptions
        • 7.7. 3D Domains - Threshold
        • 7.8. Attribute Objects
        • 7.9. Function Descriptions
        • 7.10. 2D Contour Line Labeling - IsoLabel
        • 7.11. Attribute Objects
        • 7.12. Function Descriptions
      • 8. Tangent Curve Generation - Trace, Stream
        • 8.1. 2D Domains - Trace
        • 8.2. Attribute Objects
        • 8.3. Function Descriptions
        • 8.4. 3D Domains - Stream
        • 8.5. Attribute Objects
        • 8.6. Function Descriptions
      • 9. Annotation - Axis, Billboard, Dimension, Font, Glyph, Tess, Triad
        • 9.1. Annotated Axes - Axis
        • 9.2. Attribute Objects
        • 9.3. Function Descriptions
        • 9.4. Billboard Displays - Billboard
        • 9.5. Attribute Objects
        • 9.6. Function Descriptions
        • 9.7. Dimensioning - Dimension
        • 9.8. Attribute Objects
        • 9.9. Function Descriptions
        • 9.10. Stroked Text - Font
        • 9.11. Attribute Objects
        • 9.12. Function Descriptions
        • 9.13. Markers and Glyphs - Glyph
        • 9.14. Segmented Glyphs
        • 9.15. Attribute Objects
        • 9.16. Function Descriptions
        • 9.17. Tesselation Tools - Tess
        • 9.18. Attribute Objects
        • 9.19. Function Descriptions
        • 9.20. Coordinate System Triads - Triad
        • 9.21. Attribute Objects
        • 9.22. Function Descriptions
      • 10. Manipulators - HandleBox, PolyBox, WorkPlane
        • 10.1. Handle Box - HandleBox
        • 10.2. Attribute Objects
        • 10.3. Function Descriptions
        • 10.4. Polygon Box - PolyBox
        • 10.5. Attribute Objects
        • 10.6. Function Descriptions
        • 10.7. Work Plane - WorkPlane
        • 10.8. Attribute Objects
        • 10.9. Function Descriptions
      • 11. Beam Elements and Beam Sections - BeamElem, BeamSect
        • 11.1. Beam Elements - BeamElem
        • 11.2. Attribute Objects
        • 11.3. Function Descriptions
        • 11.4. Beam Section Properties - BeamSect
        • 11.5. Attribute Objects
        • 11.6. Function Descriptions
      • 12. Shell Elements and Shell Walls - ShellElem, ShellWall
        • 12.1. Shell Elements - ShellElem
        • 12.2. Attribute Objects
        • 12.3. Function Descriptions
        • 12.4. Shell Wall Properties - ShellWall
        • 12.5. Attribute Objects
        • 12.6. Function Descriptions
      • 13. Rigid, Mass, Spring and Gap Elements - RigidElem, MassElem, DiscElem, GapElem
        • 13.1. Rigid Elements - RigidElem
        • 13.2. Attribute Objects
        • 13.3. Function Descriptions
        • 13.4. Mass Elements - MassElem
        • 13.5. Attribute Objects
        • 13.6. Function Descriptions
        • 13.7. Spring and Dashpot Elements - DiscElem
        • 13.8. Attribute Objects
        • 13.9. Function Descriptions
        • 13.10. Gap Elements - GapElem
        • 13.11. Attribute Objects
        • 13.12. Function Descriptions
      • 14. Drawing Functions - DrawFun
        • 14.1. Drawing Function Summary
        • 14.2. Function Descriptions
        • 14.3. Summary of Drawing Functions
        • 14.4. Draw Function API - OpenGL
      • 15. Report Writing - ProRender
        • 15.1. Rendering - ProRender
        • 15.2. Function Descriptions
      • 16. Examples
        • 16.1. Example 1, Draw Isosurfaces and Volume Fringes in Hex and Tet
        • 16.2. Example 2, Draw Legends
        • 16.3. Example 3, Draw Vectors at Vertices of a Hexahedron
        • 16.4. Example 3a, Tensor Computations Using Mark
        • 16.5. Example 4, Draw Fringes on Threshold Surfaces
        • 16.6. Example 4a, Draw Fringes on Contour Lines
        • 16.7. Example 5, Tangent Curve Generation in a Plane
        • 16.8. Example 5a, Stream Ribbon Generation in a Tri-Parabolic Hexahedron
        • 16.9. Example 6, Using Stroked Fonts
        • 16.10. Example 7, Using Glyphs
        • 16.11. Example 7a, Draw Displacement Restraints Using Glyph
        • 16.12. Example 7b, Draw Segmented Glyphs
        • 16.13. Example 8, Drawing Axes
        • 16.14. Example 9, Clip Finite Element Faces to Isosurfaces
        • 16.15. Example 9a, Clip Finite Elements to a Volume
        • 16.16. Example 9b, Clip Graphics Primitives to Isosurfaces
        • 16.17. Example 10, Draw Contours on Element Faces Using Contour
        • 16.18. Example 10a, Draw Isosurfaces in Elements Using Threshold
        • 16.19. Example 10b, Draw Mesh Section Using Contour and Threshold
        • 16.20. Example 10c, Draw Contour Line Labels Using IsoLabel
        • 16.21. Example 11, Display Scalar, Vector and Tensor Markers
        • 16.22. Example 11a, Draw Distributed Loads
        • 16.23. Example 12, Draw Triads
        • 16.24. Example 13, Compute and Draw a TEE Beam Section
        • 16.25. Example 13a, Compute and Draw a User Defined Beam Section
        • 16.26. Example 13b, Draw a TEE, GEOMETRY and SEGMENTS Beam Element
        • 16.27. Example 13c, Compute and Plot Strain on a TEE Beam Section
        • 16.28. Example 13d, Contour Stress on a TEE Beam Element
        • 16.29. Example 13e, Draw TEE Beam Element Bending Moment Diagram
        • 16.30. Example 13f, Compute Cross-section Properties for Composite Beam
        • 16.31. Example 13g, Draw TEE Beam Element with Local Axis Orientations
        • 16.32. Example 14, Compute and Draw a Three Layer Shell Wall
        • 16.33. Example 14a, Draw a Three Layer Parabolic Triangular Shell Element
        • 16.34. Example 14b, Contour Plot and Cutting Plane 3D Monocoque Shell Elements
        • 16.35. Example 15, Draw a Simple Billboard
        • 16.36. Example 15a, Draw a Fancy Billboard
        • 16.37. Example 16, Draw Dimensioning Annotation
        • 16.38. Example 17, Using Coordinate Systems - CoordSys
        • 16.39. Example 18, Draw Rigid Elements - RigidElem
        • 16.40. Example 18a, Draw Mass Elements - MassElem
        • 16.41. Example 18b, Draw Spring and Dashpot Elements - DiscElem
        • 16.42. Example 18c, Draw Gap Elements - GapElem
        • 16.43. Example 19, Draw a 2D Polygon - Tess
        • 16.44. Example 19a, Triangulate a Planar Slice of a Bounded Tesselation
    • Rendering Modules [vgl]
      • 1. Introduction
      • 2. Embedding VglTools in Application Frameworks
      • 3. Bitmaps, Raster Fonts and Textures - Bitmap,RasFont,Texture
      • 4. Coordinate Transformations - Xfm,Xfmstack
      • 5. Graphics Buffers - ZBuffer,FBuffer,Pixelmap
      • 6. Drawing Functions - DrawFun
      • 7. Display List, File and Tee, - DList,DFile,DTee
      • 8. Software Rendering - DataBuf,RendBuf
      • 9. Graphics Device Interfaces - Dev,OpenGLDev
      • 10. User Input and Interaction - IActor,Popup
      • 11. Graphics Primitive Processing, - DOpt
      • 12. Utilities Quadric Surfaces - Quadric
      • 13. Examples

Additional Resources

  • Release Notes
    • SAM 2.x Releases
      • SAM 2.9.x - latest [Jun 11, 2025]
        • Fixed Bugs
        • New Features
        • Benchmark Report of CEETRON Solve
        • Provided third parties
      • SAM 2.8.x - [Apr 29, 2025]
        • Fixed Bugs
        • New Features
        • Patches
        • Benchmark Report of CEETRON Solve
        • Provided third parties
      • SAM 2.7.x - [Mar 21, 2025]
        • Fixed Bugs
        • New Features
        • Benchmark Report of CEETRON Solve
        • Provided third parties
      • SAM 2.6.x [Jan 22, 2025]
        • Fixed Bugs
        • New Features
        • Patches
        • Benchmark Report of CEETRON Solve
        • Provided third parties
      • SAM 2.5.x [Dec 16, 2024]
        • Fixed Bugs
        • New Features
        • Patches
        • Benchmark Report of CEETRON Solve
        • Provided third parties
      • SAM 2.4.x [Nov 20, 2024]
        • Fixed Bugs
        • New Features
        • Patches
        • Benchmark Report of CEETRON Solve
      • SAM 2.3.x [Oct 1, 2024]
        • Fixed Bugs
        • New Features
        • Patches
      • SAM 2.2 [Aug 23, 2024]
        • Fixed Bugs
        • New Features
      • SAM 2.1.x [Jul 15, 2024]
        • Fixed Bugs
        • New Features
        • Patches
      • SAM 2.0 [Jun 5, 2024]
        • Fixed Bugs
        • New Features
    • SAM 1.x Releases
      • SAM 1.11.x [Apr 18, 2024]
        • Fixed Bugs
        • New Features
        • Patches
      • SAM 1.10.x [Feb 28, 2024]
        • Fixed Bugs
        • New Features
        • Patches
      • SAM 1.9.x [Dec 20, 2023]
        • Fixed Bugs
        • New Features
        • Patches
      • SAM 1.8.x [Nov 7, 2023]
        • Fixed Bugs
        • New Features
        • Patches
      • SAM 1.7.x [Sep 29, 2023]
        • Fixed Bugs
        • New Features
        • Patches
      • SAM 1.6.x [Aug 16, 2023]
        • Fixed Bugs
        • New Features
        • Patches
      • SAM 1.5.x [Jul 4, 2023]
        • Fixed Bugs
        • New Features
        • Patches
      • SAM 1.4.x May 26, 2023
        • Fixed Bugs
        • New Features
        • Patches
      • SAM 1.3.x [Apr 28, 2023]
        • Fixed Bugs
        • New Features
        • Patches
      • SAM 1.2.x [Feb 17, 2023]
        • Fixed Bugs
        • New Features
        • Feature Gaps
        • Patches
      • SAM 1.0.x [Sep 28, 2022]
        • Fixed Bugs
        • New Features
        • Patches
  • Downloads
  • Evaluation
  • Archives

Support

  • Developer Support
  • Community Forum
  • Contact Us
CEETRON Solve/Access/Mesh
  • Common Libraries
  • Foundation Modules
  • 6. Utilities - PropSet, Random, DataTable, Concat, LinkList, StrUtil
Previous Next

6. Utilities - PropSet, Random, DataTable, Concat, LinkList, StrUtil

CEETRON SAM provides modules for managing vectors, strings or sets of specialized quantities. The PropSet module maintains a set of named properties which may be one of several primitive types such as integer, float, vector of doubles, character string, etc. The Random module generates random numbers in the interval [0.,1.]; The DataTable module stores, retrieves and interpolates vectors of double precision data as a function of an independent variable. The Concat module provides for data records of arbitrary length to be stored in an efficient concatenated form. It is most useful for storing many small records of data. The LinkList module provides for data records of a specified fixed length to be stored in a linked list. The StrUtil module provides string conversion and length queries for wide character and UTF-8 encoded strings.

6.1. Property Sets - PropSet

The PropSet module maintains an arbitrarily large set of named properties which may be one of several primitive types such as integer, float, vector of doubles, character string, etc. This module is built upon and is a generalization of the Dictionary collection module.

  • Begin and end an instance of an object, return object error flag
    • vsy_PropSetBegin() - create an instance of a PropSet object
    • vsy_PropSetEnd() - destroy an instance of a PropSet object
    • vsy_PropSetError() - return PropSet object error flag
    • vsy_PropSetCopy() - make a copy of a PropSet object
  • Set and query properties
    • vsy_PropSetDef() - suggest number of properties
    • vsy_PropSetInq() - get current storage capacity
    • vsy_PropSetCount() - get number of contained properties
    • vsy_PropSetInsert() - place property in the property set
    • vsy_PropSetLookup() - return property parameters by name
    • vsy_PropSetLookupDouble() - return double property by name
    • vsy_PropSetLookupFloat() - return float property by name
    • vsy_PropSetLookupInteger() - return integer property by name
    • vsy_PropSetLookupObject() - return object property by name
    • vsy_PropSetLookupString() - return string property by name
    • vsy_PropSetRemove() - remove any property with the specified name
    • vsy_PropSetClear() - remove all properties from a PropSet
    • vsy_PropSetInitIter() - prepare to successively visit each property
    • vsy_PropSetNextIter() - return the next property name in the set

Instance a PropSet object using vsy_PropSetBegin(). Once a PropSet is instanced, an approximate number of properties to be stored may defined using vsy_PropSetDef(). As properties are inserted the PropSet module will adjust memory as required. The actual size of the allocated storage may be determined by calling vsy_PropSetInq().

Each new property is placed in the property set by calling vsy_PropSetInserti(), vsy_PropSetInsertfv(), etc. depending upon the property type. The total number of properties contained in the property set may be found with vsy_PropSetCount(). The property with a specified name may be found by calling vsy_PropSetLookupInteger(), vsy_PropSetLookupFloat(), etc. The property parameters such as data type, size, etc. may be returned using vsy_PropSetLookup(). A property may be removed using vsy_PropSetRemove(). The method vsy_PropSetClear() removes all properties from the property set.

Each property in the property set may be processed with an “iterator” construct. The pair of methods vsy_PropSetInitIter() and vsy_PropSetNextIter() are used to visit each property name using a loop. Call the first method before the body of the loop to prepare the PropSet object for the iteration. Within the loop body, call vsy_PropSetNextIter(). It will return the name of a property each time it is called. It will return a NULL pointer when all of the properties have been visited.

6.1.1. Function Descriptions

The currently available PropSet functions are described in detail in this section.

vsy_PropSet *vsy_PropSetBegin(void)

create an instance of a PropSet object

Create an instance of a PropSet object. Memory is allocated for the object private data and the pointer to the data is returned.

Destroy an instance of a PropSet object using

void vsy_PropSetEnd (vsy_PropSet *propset)

Return the current value of a PropSet object error flag using

Vint vsy_PropSetError (vsy_PropSet *propset)

Make a copy of a PropSet object. The private data from the frompropset object is copied to the PropSet object. Any previous private data in propset is lost.

void vsy_PropSetCopy (vsy_PropSet *propset,
                     vsy_PropSet *frompropset)

Returns:The function returns a pointer to the newly created PropSet object. If the object creation fails, NULL is returned.
void vsy_PropSetEnd(vsy_PropSet *p)

destroy an instance of a PropSet object

See vsy_PropSetBegin()

Vint vsy_PropSetError(vsy_PropSet *p)

return the current value of a PropSet object error flag

See vsy_PropSetBegin()

void vsy_PropSetDef(vsy_PropSet *p, Vint numobj)

define initial size

Suggest a number of properties to be stored in the PropSet. This is used to allocate an initial array of storage which is used to hold the pointer to each stored property. Since the names and properties are stored sparsely within the PropSet module, the actual length of the internal array is larger than this supplied number. This function removes any previously entered properties.

Find the number of properties which may be managed by the currently allocated internal storage of a PropSet using

void vsy_PropSetInq (const vsy_PropSet *propset,
                     Vint *numobj,

Errors
SYS_ERROR_MEMORY is generated if new storage was unable to be allocated.

Parameters:
  • p – Pointer to PropSet object.
  • numobj – Estimated number of objects to be held.
void vsy_PropSetInq(const vsy_PropSet *p, Vint *nument)

find the number of properties which may be managed by the currently allocated internal storage

See vsy_PropSetDef()

void vsy_PropSetCount(const vsy_PropSet *p, Vint *num)

get number of contained properties

Get the number of properties which have been inserted and not yet removed.

Parameters:
  • p – Pointer to PropSet object.
  • num – [out] Number of properties held the in PropSet object.
void vsy_PropSetInserti(vsy_PropSet *p, const Vchar *name, Vint v)

place a property in the property set

See vsy_PropSetInsertc()

void vsy_PropSetInsertiv(vsy_PropSet *p, const Vchar *name, Vint num, Vint v[])

place a property in the property set

See vsy_PropSetInsertc()

void vsy_PropSetInsertf(vsy_PropSet *p, const Vchar *name, Vfloat v)

place a property in the property set

See vsy_PropSetInsertc()

void vsy_PropSetInsertfv(vsy_PropSet *p, const Vchar *name, Vint num, Vfloat v[])

place a property in the property set

See vsy_PropSetInsertc()

void vsy_PropSetInsertd(vsy_PropSet *p, const Vchar *name, Vdouble v)

place a property in the property set

See vsy_PropSetInsertc()

void vsy_PropSetInsertdv(vsy_PropSet *p, const Vchar *name, Vint num, Vdouble v[])

place a property in the property set

See vsy_PropSetInsertc()

void vsy_PropSetInsertp(vsy_PropSet *p, const Vchar *name, Vobject *v)

place a property in the property set

See vsy_PropSetInsertc()

void vsy_PropSetInsertpv(vsy_PropSet *p, const Vchar *name, Vint num, Vobject *v[])

place a property in the property set

See vsy_PropSetInsertc()

void vsy_PropSetInsertc(vsy_PropSet *p, const Vchar *name, Vchar *prop)

place a property in the property set

Place the property prop in the property set, associated with the specified name. This will replace any property which may have previously inserted with the same name. All name comparisons are case sensitive. A copy of the name and property is made internal to the PropSet object.

Errors
SYS_ERROR_MEMORY is generated if new storage was unable to be allocated.

Parameters:
  • p – Pointer to PropSet object.
  • name – String which identifies the property.
  • prop – Value or property or vector of properties
void vsy_PropSetLookupInteger(const vsy_PropSet *p, const Vchar *name, Vint *v)

return property parameters by name

See vsy_PropSetLookupDouble()

void vsy_PropSetLookupFloat(const vsy_PropSet *p, const Vchar *name, Vfloat *v)

return property parameters by name

See vsy_PropSetLookupDouble()

void vsy_PropSetLookupDouble(const vsy_PropSet *p, const Vchar *name, Vdouble *prop)

return property parameters by name

Get properties with the specified name. If the property has not been inserted then the returned properties are undefined.

Parameters:
  • p – Pointer to PropSet object.
  • name – Name of the desired property.
  • prop – [out] Returned properties
void vsy_PropSetLookupString(const vsy_PropSet *p, const Vchar *name, Vchar v[])

return property parameters by name

See vsy_PropSetLookupDouble()

void vsy_PropSetLookupObject(const vsy_PropSet *p, const Vchar *name, Vobject **v)

return property parameters by name

See vsy_PropSetLookupDouble()

void vsy_PropSetLookup(const vsy_PropSet *p, const Vchar *name, Vint *type, Vint *num, Vint *size)

return property parameters by name

Get property type and size parameters with the specified name. The type, num and size are all returned as zero if no property with that name has been previously inserted into the property set. The size is the result of the application of num multiplied by the sizeof operation on the data type, type. All name comparisons are case sensitive.

Parameters:
  • p – Pointer to PropSet object.
  • name – Name of the desired property.
  • type – [out] Data type of property
    x=SYS_DOUBLE             type Vdouble
     =SYS_FLOAT              type Vfloat
     =SYS_INTEGER            type Vint
     =SYS_OBJECT             type Vobject*
     =SYS_STRING             type Vchar*
    
  • num – [out] Number of data items in property
  • size – [out] Size of of data items in property
void vsy_PropSetRemove(vsy_PropSet *p, const Vchar *name)

remove a property from the property set

Remove the property with the specified name.

Remove all the properties from a PropSet object using

void vsy_PropSetClear (vsy_PropSet *propset)

Parameters:
  • p – Pointer to PropSet object.
  • name – Name of the property to be removed.
void vsy_PropSetClear(vsy_PropSet *p)

remove all the properties from a PropSet object

See vsy_PropSetRemove()

void vsy_PropSetInitIter(vsy_PropSet *p)

process each item in the propset

Sequential access to each item in the property set may be implemented using these two functions. Initialize the iteration using vsy_PropSetInitIter(). Each call of the method vsy_PropSetNextIter() will return one property name from the property set. After every property has been visited in this manner, vsy_PropSetNextIter() will return name as a NULL pointer until the iteration is restarted using vsy_PropSetInitIter(). The properties are visited in an unspecified order.

Parameters:p – Pointer to PropSet object.
void vsy_PropSetNextIter(vsy_PropSet *p, Vchar **name)

process each item in the propset

See vsy_PropSetInitIter()

Parameters:
  • p – Pointer to PropSet object.
  • name – [out] Name of the next property.
void vsy_PropSetCopy(vsy_PropSet *p, vsy_PropSet *q)

make a copy of a PropSet object

See vsy_PropSetBegin()

6.2. Random Numbers - Random

The Random module is used to generate sequences of floating point random numbers in the interval [0.,1.].

  • Begin and end an instance of an object, return object error flag
    • vsy_RandomBegin() - create an instance of a Random object
    • vsy_RandomEnd() - destroy an instance of a Random object
    • vsy_RandomError() - return Random object error flag
  • Set and query bits
    • vsy_RandomInit() - set random number seed
    • vsy_RandomNumber() - generate random number

Instance a Random object using vsy_RandomBegin(). Once a Random object is instanced, the random number seed may be set with vsy_RandomInit(). Setting the random number seed is optional, a suitable one is set internally when the object is instanced. Generate and retrieve random numbers using vsy_RandomNumber(). Note that the Random module does not use any operating system random number facilities. Like all other CEETRON SAM modules, all Random objects which are instanced are independent and thread-safe.

6.2.1. Function Descriptions

The currently available Random functions are described in detail in this section.

vsy_Random *vsy_RandomBegin(void)

create an instance of a Random object

Create an instance of a Random object. Memory is allocated for the object private data and the pointer to the data is returned. The random number seed is initialized to a positive number.

Destroy an instance of a Random object using

void vsy_RandomEnd (vsy_Random *random)

Return the current value of a Random object error flag using

Vint vsy_RandomError (vsy_Random *random)

Returns:The function returns a pointer to the newly created Random object. If the object creation fails, NULL is returned.
void vsy_RandomEnd(vsy_Random *p)

destroy an instance of a Random object

See vsy_RandomBegin()

Vint vsy_RandomError(vsy_Random *p)

return the current value of a Random object error flag

See vsy_RandomBegin()

void vsy_RandomInit(vsy_Random *p, Vint seed)

set random number seed

Set the random number seed. The seed should be a large positive integer for the best random number sequence. If the input seed is less than or equal to zero, the seed is set to one. This function may be called any number of times. The seed will initialize the subsequent sequence of random numbers generated by vsy_RandomNumber().

Parameters:
  • p – Pointer to Random object.
  • seed – Random number seed.
void vsy_RandomNumber(vsy_Random *p, Vfloat *number)

generate random number

Generate and return a random number, random in the interval [0.,1.]. The internal seed is altered by this operation. Use vsy_RandomInit() to set the random number seed.

Parameters:
  • p – Pointer to Random object.
  • number – [out] Random number

6.3. Data Tables - DataTable

The DataTable module holds a collection of double precision vectors as a function of an independent double precision variable. The vectors held in DataTable may be interpolated at any input value of the independent variable. The data is assumed to be piecewise linear. The user may specify the algorithm used to extrapolate the vector data for values of the independent variable outside the range of user input. The DataTable object may expand to contain an increasing number of vectors. It also supports “iterator” functions which are used to successively visit each vector stored in the data table.

  • Begin and end an instance of an object, return object error flag
    • vsy_DataTableBegin() - create an instance of a DataTable object
    • vsy_DataTableEnd() - destroy an instance of a DataTable object
    • vsy_DataTableError() - return DataTable object error flag
  • Set and query elements
    • vsy_DataTableDef() - define number of stored vectors and length
    • vsy_DataTableInq() - get current number of vectors and length
    • vsy_DataTableClear() - remove all vectors from the DataTable object
    • vsy_DataTableCount() - get number of inserted vectors
    • vsy_DataTableEval() - interpolate vectors at specified value
    • vsy_DataTableEvalGrad() - interpolate vectors and gradients at value
    • vsy_DataTableInsert() - insert vector at specified value
    • vsy_DataTableLookup() - find the vector inserted at a specified value
    • vsy_DataTableForEach() - call a function one time for each vector
    • vsy_DataTableInitIter() - prepare to successively visit each vector
    • vsy_DataTableNextIter() - return the next vector
    • vsy_DataTableSetParami() - type of interpolation and extrapolation

Instance a DataTable object using vsy_DataTableBegin(). Once a DataTable is instanced, an approximate number of double precision vectors to be stored may be defined using vsy_DataTableDef(). The user also specifies in this function the length of the vectors which are to be maintained by DataTable. Each vector in the DataTable object is assumed to be the specified length. The function vsy_DataTableDef() allocates an internal array for the storage of vector pointers. As vectors are inserted the DataTable module will expand its internal storage as required. The function vsy_DataTableInq() returns the number of vectors which may be managed by the presently allocated storage.

Each new vector and the associated value of the independent variable are placed in the data table using vsy_DataTableInsert(). The DataTable module does not copy the vector data, it only stores the pointer to the vector and the value of the associated independent variable. Two vectors may not be stored at the same value of the associated independent variable. The total number of vectors contained in the data table may be found by calling vsy_DataTableCount(). A vector which is inserted with a specified value of the independent variable may be retrieved using vsy_DataTableLookup(). The function vsy_DataTableClear() removes all vectors from the data table. Use the function vsy_DataTableEval() to interpolate or extrapolate the vector data for a given value of the independent variable. The type of interpolation and extrapolation to be performed is defined using vsy_DataTableSetParami(). Use vsy_DataTableEvalGrad() to compute the function gradients as well.

Each vector in the data table may be processed with an “iterator” construct. The method vsy_DataTableForEach() takes a function as its argument and calls that function repeatedly, each time with a vector from the data table. The pair of methods vsy_DataTableInitIter() and vsy_DataTableNextIter() are used to visit each independent variable, vector pair using a loop. Call the first method before the body of the loop to prepare the DataTable object for the iteration. Within the loop body, call vsy_DataTableNextIter(). It will return a double precision value of the independent variable and a pointer to the vector each time it is called. It will return zero and a NULL pointer when all of the vectors have been processed.

6.3.1. Function Descriptions

The currently available DataTable functions are described in detail in this section.

vsy_DataTable *vsy_DataTableBegin(void)

create an instance of a DataTable object

Create an instance of a DataTable object. Memory is allocated for the object private data and the pointer to the data is returned.

Destroy an instance of a DataTable object using

void vsy_DataTableEnd (vsy_DataTable *datatable)

Return the current value of a DataTable object error flag using

Vint vsy_DataTableError (vsy_DataTable *datatable)

Returns:The function returns a pointer to the newly created DataTable object. If the object creation fails, NULL is returned.
void vsy_DataTableEnd(vsy_DataTable *p)

destroy an instance of a DataTable object

See vsy_DataTableBegin()

Vint vsy_DataTableError(vsy_DataTable *p)

return the current value of a DataTable object error flag

See vsy_DataTableBegin()

void vsy_DataTableDef(vsy_DataTable *p, Vint numobj, Vint length)

define number of stored vectors and length

Suggest a number of vectors of size length to be stored in the DataTable. This is used to allocate the initial array of storage which is used to hold each vector/value pair. If the number of inserted vectors is eventually greater than this initial estimate, storage space will dynamically expanded to hold the extra vectors. This function removes any previously inserted vectors.

Find the number and length of vectors which may be managed with the presently allocated storage using

void vsy_DataTableInq (const vsy_DataTable *datatable,
                       Vint *numobj,
                       Vint *length)

Errors
  • SYS_ERROR_MEMORY is generated if new storage was unable to be allocated.
  • SYS_ERROR_VALUE is generated if an improper length is specified.

Parameters:
  • p – Pointer to DataTable object.
  • numobj – Estimated number of vectors to be held.
  • length – Number of values in each double precision vector
void vsy_DataTableInq(const vsy_DataTable *p, Vint *len, Vint *siz)

find the number and length of vectors which may be managed with the presently allocated storage

See vsy_DataTableDef()

void vsy_DataTableSetParami(vsy_DataTable *p, Vint ptype, Vint iparam)

specify type of interpolation and extrapolation

Set data table evaluation parameters. The DATATABLE_EXTRAPOLATE parameter sets the extrapolation method used when the data is to evaluated at a value outside of the input range. The setting DATATABLE_LINEAR extrapolates linearly using the slope of the first two or last two entries which ever applies. The setting DATATABLE_PARABOLIC_SLOPE extrapolates linearly using the slope of the parabola fit through the first three or last three entries which ever applies. If only one vector is defined the evaluation is always clamped. If two vectors are defined and DATATABLE_PARABOLIC_SLOPE has been specified, then linear extrapolation is performed. The default DATATABLE_EXTRAPOLATE is DATATABLE_LINEAR.

The DATATABLE_INTERPOLATE parameter sets the interpolation method. Currently the only interpolation method implemented is DATATABLE_LINEAR. The default DATATABLE_INTERPOLATE is DATATABLE_LINEAR.

Errors
SYS_ERROR_ENUM is generated if an improper ptype is specified.

Parameters:
  • p – Pointer to DataTable object.
  • ptype – Type of parameter to set
    x=DATATABLE_EXTRAPOLATE  Extrapolation method
     =DATATABLE_INTERPOLATE  Interpolation method
    
  • iparam – Specifies the integer value that ptype will be set to.
    x=DATATABLE_LINEAR       Linear interpolation, extrapolation
     =DATATABLE_CLAMP        Clamp to extremes extrapolation
     =DATATABLE_PARABOLIC_SLOPE Parabolic slope extrapolation
    
void vsy_DataTableCount(const vsy_DataTable *p, Vint *num)

get number of contained vectors

Get the number of vectors which have been inserted.

Parameters:
  • p – Pointer to DataTable object.
  • num – [out] Number of vectors held the in DataTable object.
void vsy_DataTableInsert(vsy_DataTable *p, Vdouble value, Vdouble vec[])

insert vector at specified value

Insert the vector vec in the DataTable object. Associate value with this new vector. The data is not copied from vec, instead the pointer value of vec is stored.

Errors
  • SYS_ERROR_MEMORY is generated if new storage was unable to be allocated.
  • SYS_ERROR_OPERATION is generated if a vector has already been inserted at the specified value.

Parameters:
  • p – Pointer to DataTable object.
  • value – Double precision independent variable
  • vec – Pointer to vector
void vsy_DataTableLookup(const vsy_DataTable *p, Vdouble value, Vdouble *vec[])

find the vector inserted at a specified value

Get a pointer to the vector associated the specified value. Returns a NULL pointer if no vector has been entered with this value.

Parameters:
  • p – Pointer to DataTable object.
  • value – Double precision independent variable
  • vec – [out] Pointer to vector associated with value
void vsy_DataTableEval(vsy_DataTable *p, Vdouble value, Vdouble vec[])

interpolate vectors at specified value

Get vector of data evaluated at the specified value. The type of interpolation and extrapolation used during the evaluation is defined using vsy_DataTableSetParami().

Errors
SYS_ERROR_OPERATION is generated if no data vectors have been defined.

Parameters:
  • p – Pointer to DataTable object.
  • value – Double precision independent variable
  • vec – [out] Vector data evaluated at value
void vsy_DataTableEvalGrad(vsy_DataTable *p, Vdouble value, Vdouble vec[], Vdouble grad[])

interpolate vectors and gradients at specified value

Get vector of data evaluated at the specified value. The type of interpolation and extrapolation used during the evaluation is defined using vsy_DataTableSetParami().

Errors
SYS_ERROR_OPERATION is generated if no data vectors have been defined.

Parameters:
  • p – Pointer to DataTable object.
  • value – Double precision independent variable
  • vec – [out] Vector data evaluated at value
  • grad – [out] Gradient data evaluated at value
void vsy_DataTableClear(vsy_DataTable *p)

remove all vectors from the DataTable object

Remove all vectors.

Parameters:p – Pointer to DataTable object.
void vsy_DataTableInitIter(vsy_DataTable *p)

sequential access to each vector in the data table

See vsy_DataTableForEach()

void vsy_DataTableNextIter(vsy_DataTable *p, Vdouble *var, Vdouble **value)

sequential access to each vector in the data table

See vsy_DataTableForEach()

void vsy_DataTableForEach(vsy_DataTable *p, Vfunc1 *func)

call a function one time for each vector

Calls the supplied function repeatedly, each time using a vector from the data table as the sole argument to this function. This is useful for deallocating a collection of vectors, prior to calling vsy_DataTableEnd(). The vectors are visited in an unspecified order.

Sequential access to each vector in the data table may also be implemented using

void vsy_DataTableInitIter (vsy_DataTable *datatable)

This is followed by repeated calls to the method

void vsy_DataTableNextIter (vsy_DataTable *datatable,
                            Vdouble *value
                            Vdouble **vec)
Each call of the method vsy_DataTableNextIter() will return a new vector from the data table, together with its associated value. These value/vec pairs are visited in ascending order of the values. After every vector has been visited in this manner, vsy_DataTableNextIter() will return a value of zero and a NULL pointer until the iteration is restarted using vsy_DataTableInitIter().

Parameters:
  • p – Pointer to DataTable object.
  • func – Pointer to function which is to be applied to each vector.

6.4. Concatenated Storage - Concat

The Concat module stores a series of data records, each of arbitrary length, in an expandable, concatenated storage form. As data records are added to a Concat object, any additional required memory is allocated in relatively large blocks, decreasing the possibility of memory fragmentation due to many small memory allocations. The Concat module supports “iterator” functions which are used to successively visit each data record stored in the concatenated storage.

  • Begin and end an instance of an object, return object error flag
    • vsy_ConcatBegin() - create an instance of a Concat object
    • vsy_ConcatEnd() - destroy an instance of a Concat object
    • vsy_ConcatError() - return Concat object error flag
  • Set and query indices
    • vsy_ConcatDef() - define total number of bytes to be stored
    • vsy_ConcatInq() - get current number of bytes stored
    • vsy_ConcatClear() - delete all data records
    • vsy_ConcatCount() - get number of added records
    • vsy_ConcatAdd() - add a data record of arbitrary length
    • vsy_ConcatRef() - return last addition pointer
    • vsy_ConcatInitIter() - prepare to successively visit each record
    • vsy_ConcatNextIter() - return the next record and length

Instance a Concat object using vsy_ConcatBegin(). Once a Concat is instanced, an approximate number of bytes to be stored may be defined using vsy_ConcatDef(). The function, vsy_ConcatDef() may also be used to reinitialize the Concat object. As records are added the Concat module will expand its internal storage as required. The function vsy_ConcatInq() returns the number of bytes which are currently stored. Data records are added to the concatenation by calling vsy_ConcatAdd(). The data record is defined by a specified number of bytes and a pointer to the start of the data. The function copies the data and concatenates it to any previously added data records. The last data concatenation pointer may be queried using vsy_ConcatRef(). Call this function just after a call to vsy_ConcatAdd() to determine the memory pointer at which the prior added data was copied. The total number of records contained in the concatentation may be found by calling vsy_ConcatCount(). Note that there are no functions to remove a specific data record.

The pair of methods vsy_ConcatInitIter() and vsy_ConcatNextIter() are used to visit each data record using a loop. Call the first method before the body of the loop to prepare the Concat object for the iteration. Within the loop body, call vsy_ConcatNextIter(). It will return a number of bytes and pointer to the start of the data record each time it is called. It will return zero and a NULL pointer when all of the records have been processed. All data may be deleted using vsy_ConcatClear().

6.4.1. Function Descriptions

The currently available Concat functions are described in detail in this section.

vsy_Concat *vsy_ConcatBegin(void)

create an instance of a Concat object

Create an instance of a Concat object. Memory is allocated for the object private data and the pointer to the data is returned.

Destroy an instance of a Concat object using

void vsy_ConcatEnd (vsy_Concat *concat)

Return the current value of a Concat object error flag using

Vint vsy_ConcatError (vsy_Concat *concat)

Returns:The function returns a pointer to the newly created Concat object. If the object creation fails, NULL is returned.
void vsy_ConcatDef(vsy_Concat *p, Vlong maxbytes)

define total number of bytes to be stored

Suggest a number of bytes, maxbytes to be stored in the Concat. If an added data record is eventually greater than this initial estimate, storage space will dynamically expand to hold the data. This function deletes any previously entered data.

Find the number of bytes presently stored using

void vsy_ConcatInq (const vsy_Concat *concat,
                    Vlong *maxbytes)

Errors
SYS_ERROR_VALUE is generated if an improper maxbytes is specified.

Parameters:
  • p – Pointer to Concat object.
  • maxbytes – Estimated number of bytes to be held.
void vsy_ConcatCount(const vsy_Concat *p, Vint *num)

get number of added records

Get the number of data records which have been added.

Parameters:
  • p – Pointer to Concat object.
  • num – [out] Number of added data records
void vsy_ConcatAdd(vsy_Concat *p, Vint nbytes, void *data)

add a data record of arbitrary length

Copy nbytes of data from pointer, data, to concatenated storage. Use vsy_ConcatRef() to determine the memory location to which the data was copied in concatenation storage after calling this function.

Errors
  • SYS_ERROR_VALUE is generated if an improper nbytes is specified.
  • SYS_ERROR_MEMORY is generated if new storage was unable to be allocated.

Parameters:
  • p – Pointer to Concat object.
  • nbytes – Number of bytes in data
  • data – Pointer to data to copy to concatenation
void vsy_ConcatRef(const vsy_Concat *p, void **data)

return last addition pointer

Return the pointer to the last memory location in concatenated storage to which the previous data record was added.

Parameters:
  • p – Pointer to Concat object.
  • data – [out] Pointer to last data addition address in concatention
void vsy_ConcatClear(vsy_Concat *p)

delete all data records

Clear all data from the concatenation.

Parameters:p – Pointer to Concat object.
void vsy_ConcatInitIter(vsy_Concat *p)

process each record in concatenation

Sequential access to each data record in the concatenation may be implemented using these two functions. Initialize the iteration using vsy_ConcatInitIter(). Each call of the method vsy_ConcatNextIter() will return information for one data record in the concatenation. After every data record has been visited in this manner, vsy_ConcatNextIter() will return nbytes as zero and data as a NULL pointer until the iteration is restarted using vsy_ConcatInitIter(). The data records are visited in the order of addition.

Parameters:p – Pointer to Concat object.
void vsy_ConcatNextIter(vsy_Concat *p, Vint *nbytes, void **data)

process each record in concatenation

See vsy_ConcatInitIter()

Parameters:
  • p – Pointer to Concat object.
  • nbytes – [out] Number of bytes in data
  • data – [out] Pointer to data in concatenation

6.5. Linked List Storage - LinkList

The LinkList module stores a series of data records, each of fixed length, in a linked list structure. As data records are added to a LinkList object, any additional required memory is allocated in relatively large blocks, decreasing the possibility of memory fragmentation due to many small memory allocations. The linked list data organization makes the LinkList module useful for efficient management of fixed length data records which are repeatedly inserted and deleted. The LinkList module supports “iterator” functions which are used to successively visit each data record stored in the linked list.

  • Begin and end an instance of an object, return object error flag
    • vsy_LinkListBegin() - create an instance of a LinkList object
    • vsy_LinkListEnd() - destroy an instance of a LinkList object
    • vsy_LinkListError() - return LinkList object error flag
  • Set and query indices
    • vsy_LinkListDef() - define length of records
    • vsy_LinkListInq() - get current number of records and length
    • vsy_LinkListClear() - delete all data records
    • vsy_LinkListCount() - get number of records
    • vsy_LinkListAdd() - add a data record to linked list
    • vsy_LinkListRef() - return pointer given index
    • vsy_LinkListRemove() - delete a record given index
    • vsy_LinkListHead() - return head record index and pointer
    • vsy_LinkListInitIter() - prepare to successively visit each record
    • vsy_LinkListNextIter() - return the next record index and pointer

Instance a LinkList object using vsy_LinkListBegin(). Once a LinkList is instanced, specify the approximate number of records to be stored and the fixed length of each record using vsy_LinkListDef(). The function, vsy_LinkListDef() may also be used to reinitialize the LinkList object. As records are added the LinkList module will expand its internal storage as required. Records are keyed by an integer index. A fixed length of memory is associated with each record. Data records may be added to the linked list by calling vsy_LinkListAdd(). In this case the function returns an integer key and a pointer to the memory associated with the integer key. The pointer is guaranteed to be aligned for use with all data types. Use vsy_LinkListRef() to return the pointer to the memory associated with a given index. A record may be deleted using vsy_LinkListRemove(). The total number of records contained in the linked list may be found by calling vsy_LinkListCount().

The pair of methods vsy_LinkListInitIter() and vsy_LinkListNextIter() are used to visit each data record using a loop. Call the first method before the body of the loop to prepare the LinkList object for the iteration. Within the loop body, call vsy_LinkListNextIter(). It will return an integer index and pointer to the start of the data record each time it is called. It will return zero and a NULL pointer when all of the records have been processed. All data may be deleted using vsy_LinkListClear().

6.5.1. Function Descriptions

The currently available LinkList functions are described in detail in this section.

vsy_LinkList *vsy_LinkListBegin(void)

create an instance of a LinkList object

Create an instance of a LinkList object. Memory is allocated for the object private data and the pointer to the data is returned.

Destroy an instance of a LinkList object using

void vsy_LinkListEnd (vsy_LinkList *linklist)

Return the current value of a LinkList object error flag using

Vint vsy_LinkListError (vsy_LinkList *linklist)

Returns:The function returns a pointer to the newly created LinkList object. If the object creation fails, NULL is returned.
void vsy_LinkListEnd(vsy_LinkList *p)

destroy an instance of a LinkList object

See vsy_LinkListBegin()

Vint vsy_LinkListError(vsy_LinkList *p)

return the current value of a LinkList object error flag

See vsy_LinkListBegin()

void vsy_LinkListDef(vsy_LinkList *p, Vint len, Vint nbytes)

define length of records

Specify a number of records, len, and the length of each record, nbytes to be stored in the LinkList. The number of records, len, only need be approximate. This function deletes any previously entered data.

Find the number of records currently allocated and the fixed length of each record in bytes using

void vsy_LinkListInq (const vsy_LinkList *linklist,
                      Vint *len,
                      Vint *nbytes)

Errors
SYS_ERROR_VALUE is generated if an improper len or nbytes is specified.

Parameters:
  • p – Pointer to LinkList object.
  • len – Approximate number of records
  • nbytes – Length of each record in bytes
void vsy_LinkListInq(const vsy_LinkList *p, Vint *len, Vint *nbytes)

find the number of records currently allocated and the fixed length of each record in bytes

See vsy_LinkListDef()

void vsy_LinkListCount(const vsy_LinkList *p, Vint *num)

get number of records

Get the number of data records.

Parameters:
  • p – Pointer to LinkList object.
  • num – [out] Number of data records
void vsy_LinkListAdd(vsy_LinkList *p, Vint *index, Vobject **value)

add a data record to linked list

Add a record to the linked list. An index is returned as well as a pointer, value, to the memory associated with the index.

Errors
SYS_ERROR_MEMORY is generated if new storage was unable to be allocated.

Parameters:
  • p – Pointer to LinkList object.
  • index – [out] Index of record
  • value – [out] Pointer to memory associated with index.
void vsy_LinkListRef(const vsy_LinkList *p, Vint index, Vobject **value)

return pointer given index

Return the pointer to memory associated with index. If the index has not been defined, value is set to NULL.

Parameters:
  • p – Pointer to LinkList object.
  • index – Index of record
  • value – [out] Pointer to memory associated with index.
void vsy_LinkListRemove(vsy_LinkList *p, Vint index)

delete a record given index

Remove the record associated with index from the linked list.

Errors
SYS_ERROR_VALUE is generated if an improper index is specified.

Parameters:
  • p – Pointer to LinkList object.
  • index – Index of record
void vsy_LinkListClear(vsy_LinkList *p)

delete all data records

Clear all data from the linked list.

Parameters:p – Pointer to LinkList object.
void vsy_LinkListHead(vsy_LinkList *p, Vint *index, Vobject **value)

return head record index and pointer

Access the data record at the head of the linked list.

Parameters:
  • p – Pointer to LinkList object.
  • index – [out] Index of record
  • value – [out] Pointer to memory associated with index.
void vsy_LinkListInitIter(vsy_LinkList *p)

process each record in linked list

Access to each data record in the linked list may be implemented using these two functions. Initialize the iteration using vsy_LinkListInitIter(). Each call of the method vsy_LinkListNextIter() will return information for one data record in the linked list. After every data record has been visited in this manner, vsy_LinkListNextIter() will return index as zero and value as a NULL pointer until the iteration is restarted using vsy_LinkListInitIter().

Parameters:p – Pointer to LinkList object.
void vsy_LinkListNextIter(vsy_LinkList *p, Vint *index, Vobject **value)

process each record in linked list

See vsy_LinkListInitIter()

Parameters:
  • p – Pointer to LinkList object.
  • index – [out] Index of record
  • value – [out] Pointer to memory associated with index.

6.6. String Utilities - StrUtil

The StrUtil module is a static module. Its main purpose is to provide utilities for wide character and UTF-8 encoded string conversion and length queries.

The StrUtil module supports the following functions.

  • UTF-8 and Wide Character String Functions
    • vut_StrUtilFromUTF8() - convert UTF-8 string to wide character
    • vut_StrUtilToUTF8() - convert wide character string to UTF-8
    • vut_StrUtilLenUTF8() - determine character length of UTF-8 string
    • vut_StrUtilMBCSfromUTF8() - convert UTF-8 string to MBCS

The StrUtil module is designed to provide system independent string utilities for UTF-8 and wide character string conversion and length query. The vut_StrUtilMBCSfromUTF8() will convert UTF-8 to Multi-Byte Character Set (MBCS).

6.6.1. Function Descriptions

The currently available StrUtil functions are described in detail in this section.

void vut_StrUtilFromUTF8(const char *utf8buf, Vint maxwidechar, wchar_t *widebuf)

convert UTF-8 string to wide character

Convert a UTF-8 encoded string to a wide character string. The input parameter maxwidechar is the maximum length able to be accommodated in widebuf.

Parameters:
  • utf8buf – UTF-8 encoded string
  • maxwidechar – Maximum number of wide characters.
  • widebuf – [out] Wide character encoded string
void vut_StrUtilToUTF8(const wchar_t *widebuf, Vint maxutf8char, char *utf8buf)

convert wide character string to UTF-8

Convert a wide character encoded string to a UTF-8 character string. The input parameter maxutf8char is the maximum length able to be accommodated in utf8buf.

Parameters:
  • widebuf – Wide character encoded string
  • maxutf8char – Maximum number of UTF-8 characters.
  • utf8buf – [out] UTF-8 encoded string
Vint vut_StrUtilLenUTF8(const char *utf8buf)

determine character length of UTF-8 string

The number of UTF-8 encoded characters is returned.

Parameters:utf8buf – UTF-8 encoded string
void vut_StrUtilMBCSfromUTF8(const char *utf8buf, Vint maxMBCSchar, Vuchar mbcs[])

convert UTF-8 string to MBCS

Convert a UTF-8 encoded string to a wide character string. The input parameter maxwidechar is the maximum length able to be accommodated in widebuf.

Parameters:
  • utf8buf – UTF-8 encoded string
  • maxMBCSchar – Maximum number of MBCS characters.
  • mbcs – [out] MBCS string
Previous Next

© Copyright 2025, Tech Soft 3D

Hello I'm HOOPSY!

HOOPSY BETA

Hello I am HOOPSY! your Docs generative AI assistant.

Ask me anything about CEETRON Solve/Access/Mesh or choose a sample question below to start a conversation:

Additional info

HOOPSY may store chats to provide and maintain the service according to OpenAI's data policy.


This feature is currently experimental. While we are continually enhancing its performance and quality, the underlying AI model may generate inaccurate or fabricated responses, especially if prompted to do so.

New Conversation

Continue generating
Return to top