VMAP API Reference – VMAP.h and VMAPFile.h

VMAP API Reference Manual

A hand-curated, Doxygen-style reference for src/VMAP.h, src/VMAPFile.h, and the VMAP/HDF5 storage behavior implemented in src/VMAPFile.cxx.

C++ API Reference Manual Getting Started Tutorials Included

Reference manual overview

This page is organized like a lightweight reference manual. Start with Getting started for the recommended write order, continue with the end-to-end tutorials, then use the structure sections and the declaration appendix as an API lookup.

  • Data model source: src/VMAP.h
  • I/O API source: src/VMAPFile.h
  • Storage behavior cross-check: src/VMAPFile.cxx
  • Examples cross-checked against test/ and swig/Interfacetest/C++/example.cxx

Contents

Getting started

Recommended write order

  1. Open a file with VMAPFile in CREATEORREPLACE mode.
  2. Create the simulation branches with createSimulationGroups().
  3. Create a part path with createGeometryGroup(partId, partName).
  4. Write sPointsBlock and sElementBlock for that part.
  5. Store referenced system data such as sIntegrationType and sElementType.
  6. Create a result branch with createVariablesGroup(stateId, partId).
  7. Describe the state using setVariableStateInformation().
  8. Write one or more sStateVariable objects with writeVariable() or writeVariablesBlock().
  9. Close the file explicitly when finished.

Primary headers and helper classes

  • src/VMAP.h – structs, enums, and field metadata
  • src/VMAPFile.h – VMAP/HDF5 file operations
  • src/VMAPElementTypeFactory.h – reusable element metadata creation
  • src/VMAPIntegrationTypeFactory.h – predefined integration rules

Common simulation paths

  • /VMAP/SIMULATION/GEOMETRY/<partId>
  • /VMAP/SIMULATION/VARIABLES/STATE-<stateId>/<partId>
  • /VMAP/SIMULATION/SYSTEM/ELEMENTTYPES
  • /VMAP/SIMULATION/SYSTEM/INTEGRATIONTYPES

Minimal file skeleton

#include "VMAP.h"
#include "VMAPFile.h"

int main() {
  using namespace VMAP;

  VMAPFile file("tutorial_result.vmap", VMAPFile::CREATEORREPLACE);
  file.createSimulationGroups();

  // add system data, geometry, and variables here

  file.closeFile();
  return 0;
}

Tutorials

Tutorial 1 – Create a simulation result with geometry, one part, and one nodal variable

This tutorial follows the same API sequence used by the existing geometry examples in test/write_read_pointsblock.cxx, test/write_read_elementsblock.cxx, and the state-variable setup visible in swig/Interfacetest/C++/example.cxx.

  1. Open the VMAP file and create the simulation branch hierarchy.
  2. Create a geometry group for the part and write its point block.
  3. Create the integration type and element type referenced by the mesh.
  4. Write the element block using the previously defined element type identifier.
  5. Create a result group for STATE-1 and attach state metadata.
  6. Create a scalar nodal sStateVariable and write it into the state/part result path.
#include "VMAP.h"
#include "VMAPFile.h"
#include "VMAPElementTypeFactory.h"
#include "VMAPIntegrationTypeFactory.h"

#include <vector>

int main() {
  using namespace VMAP;

  VMAPFile file("plate_result.vmap", VMAPFile::CREATEORREPLACE);
  file.createSimulationGroups();

  const int partId = 1;
  const int stateId = 1;

  std::string partPath = file.createGeometryGroup(partId, "Plate");

  sPointsBlock points(4);
  points.setPoint(0, 1, 0.0, 0.0, 0.0);
  points.setPoint(1, 2, 1.0, 0.0, 0.0);
  points.setPoint(2, 3, 1.0, 1.0, 0.0);
  points.setPoint(3, 4, 0.0, 1.0, 0.0);
  file.writePointsBlock(partPath, points);

  sIntegrationType quadRule =
      VMAPIntegrationTypeFactory::createVMAPIntegrationType(
          VMAPIntegrationTypeFactory::GAUSS_QUAD_4);
  quadRule.setIdentifier(1);
  file.writeIntegrationTypes(std::vector<sIntegrationType>{quadRule});

  sElementType quadType =
      VMAPElementTypeFactory::createVMAPElementType(
          sElementType::ELEM_3D,
          sElementType::QUAD_4,
          sElementType::CONSTANT,
          quadRule.getIdentifier());
  quadType.setIdentifier(1);
  quadType.setTypeDescription("Four-node quad shell");
  quadType.setNumberOfNormalComponents(3);
  quadType.setNumberOfShearComponents(1);
  file.writeElementTypes(std::vector<sElementType>{quadType});

  sElement element;
  element.setIdentifier(1);
  element.setElementType(quadType.getIdentifier());
  element.setCoordinateSystem(-1);
  element.setMaterialType(-1);
  element.setSectionType(-1);
  element.setConnectivity(std::vector<int>{1, 2, 3, 4});

  sElementBlock elements(1);
  elements.setElement(0, element);
  file.writeElementsBlock(partPath, elements);

  std::string resultPath = file.createVariablesGroup(stateId, partId);
  file.setVariableStateInformation(stateId, "LOADSTEP-1", 1.0, 1.0, 1);

  sStateVariable temperature;
  temperature.setIdentifier(1);
  temperature.setVariableName("TEMPERATURE");
  temperature.setVariableDescription("Nodal temperature in degree Celsius");
  temperature.setIncrementValue(1);
  temperature.setTimeValue(1.0);
  temperature.setModalFrequency(-1.0);
  temperature.setUnit(-1);
  temperature.setCoordinateSystem(-1);
  temperature.setDimension(sStateVariable::DIMENSION_SCALAR);
  temperature.setLocation(sStateVariable::LOCATION_NODE);
  temperature.setMultiplicity(1);
  temperature.setEntity(sStateVariable::ENTITY_REAL);
  temperature.setValues(std::vector<double>{20.0, 35.0, 42.0, 28.0});
  file.writeVariable(resultPath, temperature);

  file.closeFile();
  return 0;
}

Tutorial 2 – Read the written simulation result back for validation

After writing, reopen the file in read-only mode and confirm the part geometry, state metadata, and variable block.

#include "VMAP.h"
#include "VMAPFile.h"

#include <string>
#include <vector>

int main() {
  using namespace VMAP;

  VMAPFile file("plate_result.vmap", VMAPFile::OPENREADONLY);

  sPointsBlock points;
  file.readPointsBlock("/VMAP/SIMULATION/GEOMETRY/1", points);

  sElementBlock elements;
  file.readElementsBlock("/VMAP/SIMULATION/GEOMETRY/1", elements);

  std::string stateName;
  double totalTime = 0.0;
  double stepTime = 0.0;
  double modalFrequency = -1.0;
  int increment = 0;
  file.getVariableStateInformation(1, stateName, totalTime, stepTime, increment, modalFrequency);

  std::vector<sStateVariable> variables;
  file.readVariablesBlock("/VMAP/SIMULATION/VARIABLES/STATE-1/1", variables);

  file.closeFile();
  return 0;
}

Class and structure index

AreaPrimary symbolsWhere to look next
File lifecycle and groups VMAPFile, createSimulationGroups(), createGeometryGroup(), createVariablesGroup() VMAPFile API map, declaration appendix
System metadata sVersion, sMetaInformation, sUnitSystem, sUnit System and unit structs
Geometry and mesh sPointsBlock, sIntegrationType, sElementType, sElement, sElementBlock, sGeometrySet Geometry and mesh structs
Simulation results sStateVariable, sMaterial, sInitialCondition, sBoundaryCondition, sConnection Simulation variable/material/condition structs
Measurement data sMeasurementDevice, sMeasurandValues, sMultiParameterObject Measurement structs
Factories VMAPElementTypeFactory, VMAPIntegrationTypeFactory Classes and factories appendix

HDF5 model and type legend

VMAP storage model

  • /VMAP/SIMULATION/SYSTEM: meta information, units, element types, integration types, sections
  • /VMAP/SIMULATION/GEOMETRY/<partId>: points, elements, geometry sets
  • /VMAP/SIMULATION/VARIABLES/STATE-<id>/<partId>: state variables
  • /VMAP/SIMULATION/MATERIAL: materials and material cards
  • /VMAP/SIMULATION/INITIAL_CONDITIONS and /BOUNDARY_CONDITION: condition groups
  • /VMAP/MEASUREMENT/*: measurement system, geometry, variables, and devices

HDF5 type shorthand

  • attr:i32 – integer attribute
  • attr:f64 – double attribute
  • attr:str – string attribute
  • dset:i32[] – integer dataset
  • dset:f32[]/f64[] – floating-point dataset
  • dset:compound – compound dataset with named members
  • vlen i32[] / vlen f64[] – variable-length array member
  • nested compound – structure embedded into a larger compound record

The implementation in src/VMAPFile.cxx builds HDF5 compound types for core structs such as sVersion, sMetaInformation, sCoordinateSystem, sBaseUnit, sUnitSystem, sUnit, sIntegrationType, sSection, sElementType, sElement, sParameter, and sConnection. Variable-sized vectors are typically stored using HDF5 variable-length members or dedicated datasets.

VMAPFile API map

DomainCreate / group functionsWrite functionsRead functions
System createSimulationGroups(), createMeasurementGroups() writeMetaInformation(), writeUnitSystem(), writeUnits(), writeElementTypes(), writeIntegrationTypes(), writeSections(), writeCoordinateSystems() readVersion(), readMetaInformation(), readUnitSystem(), readUnits(), readElementTypes(), readIntegrationTypes(), readSections(), readCoordinateSystems()
Simulation geometry createGeometryGroup() writePointsBlock(), writeElementsBlock(), writeGeometrySets() readPointsBlock(), readElementsBlock(), readGeometrySets()
Simulation variables createVariablesGroup(), setVariableStateInformation() writeVariablesBlock(), writeVariable() readVariablesBlock(), readVariable()
Materials / tables writeTable(), writeMaterial(), writeMaterialBlock() readTable(), readMaterial(), readMaterialBlock()
Conditions writeInitialCondition(), writeInitialConditionsBlock(), writeBoundaryCondition(), writeBoundaryConditionsBlock(), writeConnectionsBlock(), writeNativeSolverContent() readInitialCondition(), readInitialConditionsBlock(), readBoundaryCondition(), readBoundaryConditionsBlock(), readConnectionsBlock(), readNativeSolverContent()
Measurement createMeasurementGeometryGroup(), createMeasurementVariablesGroup() writeMeasurementUnitSystem(), writeMeasurementUnits(), writeMeasurementElementTypes(), writeMeasurementDevice(), writeMeasurandValues(), writeMeasurandValuesBlock() readMeasurementUnitSystem(), readMeasurementUnits(), readMeasurementElementTypes(), readMeasurementDevice(), readMeasurandValues(), readMeasurandValuesBlock()

System and unit structs

sVersion

Stores the VMAP format/library version as myMajor, myMinor, and myPatch. The public access pattern is simple member storage plus VMAPFile::readVersion().

MembersmyMajor, myMinor, myPatch
Access functionsreadVersion() (write is handled internally by the file layer)
VMAP location/VMAP attribute VERSION
HDF5 typecompound value bound to the VERSION attribute

C++

VMAP::sVersion version;
file.readVersion(version);
int major = version.myMajor;

Python

import PyVMAP as VMAP
ver = VMAP.sVersion()
vm.readVersion(ver)
print(ver.myMajor, ver.myMinor, ver.myPatch)

sMetaInformation

Describes the exporter and file provenance. Typical members are exporter name, file date/time, description, analysis type, and user id. Access is mainly through setter/getter pairs.

Core membersmyExporterName, myFileDate, myFileTime, myDescription, myAnalysisType, myUserId
Access functionssetExporterName(), setFileDate(), setFileTime(), setDescription(), setAnalysisType(), setUserId(), matching getters
VMAP location/VMAP/SIMULATION/SYSTEM/METADATA
HDF5 typecompound dataset with variable-length strings

C++

VMAP::sMetaInformation meta;
meta.setExporterName("ExampleSolver");
meta.setAnalysisType("STATIC");
file.writeMetaInformation(meta);

Python

meta = VMAP.sMetaInformation()
meta.setExporterName("ExampleSolver")
meta.setAnalysisType("STATIC")
vm.writeMetaInformation(meta)

sCoordinateSystem

Defines a reference frame with identifier, type, reference point, and three axis vectors. Coordinate systems are usually written into a caller-provided system or geometry group.

Core membersmyIdentifier, myType, myReferencePoint[3], myAxisVectors[9]
Access functionssetIdentifier(), setType(), setReferencePoint(), setAxisVector(), matching getters
VMAP location<group>/COORDINATESYSTEM
HDF5 typecompound dataset; integer members plus fixed-size f64[3] and f64[9] arrays

C++

VMAP::sCoordinateSystem cs;
cs.setIdentifier(1);
cs.setType(VMAP::sCoordinateSystem::CARTESIAN_RIGHT_HAND);
cs.setReferencePoint(0.0, 0.0, 0.0);

Python

cs = VMAP.sCoordinateSystem()
cs.setIdentifier(1)
cs.setType(VMAP.sCoordinateSystem.CARTESIAN_RIGHT_HAND)
cs.setReferencePoint(0.0, 0.0, 0.0)

sBaseUnit and sUnitSystem

sBaseUnit stores one SI base-unit definition. sUnitSystem groups seven of them for length, mass, time, current, temperature, amount of substance, and luminous intensity.

Core memberssBaseUnit: identifier, SI scale/shift, symbol, quantity.
sUnitSystem: myLengthUnitmyLuminousIntensityUnit
Access functionssBaseUnit::setIdentifier(), setSIScale(), setSIShift(), setUnitSymbol(), setUnitQuantity(); sUnitSystem::getLengthUnit(), etc.
VMAP location/VMAP/SIMULATION/SYSTEM/UNITSYSTEM or /VMAP/MEASUREMENT/SYSTEM/UNITSYSTEM
HDF5 typenested compound dataset; each base unit is itself a compound entry

C++

VMAP::sUnitSystem us;
us.getLengthUnit().setUnitSymbol("mm");
us.getTimeUnit().setUnitSymbol("s");
file.writeUnitSystem(us);

Python

us = VMAP.sUnitSystem()
us.getLengthUnit().setUnitSymbol("mm")
us.getTimeUnit().setUnitSymbol("s")
vm.writeUnitSystem(us)

sUnit

Represents a derived unit with identifier, symbol, and a seven-component dimension vector over the base quantities. It complements sUnitSystem.

Core membersmyIdentifier, myUnitSymbol, myUnitDimension[7]
Access functionssetIdentifier(), setUnitSymbol(), setUnitDimension(), matching getters
VMAP location/VMAP/SIMULATION/SYSTEM/UNITS or measurement equivalent
HDF5 typecompound dataset with integer id, string symbol, integer dimension array

C++

VMAP::sUnit stress;
stress.setIdentifier(100);
stress.setUnitSymbol("MPa");
stress.setUnitDimension({-1, 1, -2, 0, 0, 0, 0});

Python

u = VMAP.sUnit()
u.setIdentifier(100)
u.setUnitSymbol("MPa")
u.setUnitDimension([ -1, 1, -2, 0, 0, 0, 0 ])

Geometry and mesh structs

sPointsBlock

Stores point or node identifiers and coordinates for one geometry part. The storage layout is a point-id vector plus a flat coordinate vector.

Core membersmyCoordinateSystem, mySize, myIdentifiers, myCoordinates
Access functionssetPoint(), getPoint(), setPoints(), getIdentifiers(), getCoordinates()
VMAP location/VMAP/SIMULATION/GEOMETRY/<partId>/POINTS
HDF5 typeinteger dataset for ids, float/double dataset for coordinates, integer coordinate-system attribute

C++

VMAP::sPointsBlock pts(2);
pts.setPoint(0, 1, 0.0, 0.0, 0.0);
pts.setPoint(1, 2, 1.0, 0.0, 0.0);
file.writePointsBlock(partPath, pts);

Python

pts = VMAP.sPointsBlock(2)
pts.setPoint(0, 1, [0.0, 0.0, 0.0])
pts.setPoint(1, 2, [1.0, 0.0, 0.0])
vm.writePointsBlock(partPath, pts)

sIntegrationType

Defines an integration rule: identifier, name, point count, dimension, offset, abscissas, weights, and optional subtypes.

Core membersmyIdentifier, myTypeName, myNumberOfPoints, myDimension, myOffset, myAbscissas, myWeights, mySubTypes
Access functionssetIdentifier(), setTypeName(), setOffset(), setSubTypes(), setAbscissasAndWeights(), matching getters
VMAP location/VMAP/SIMULATION/SYSTEM/INTEGRATIONTYPES
HDF5 typecompound dataset; varlen f64[] for abscissas/weights and varlen i32[] for subtypes

C++

auto it = VMAP::VMAPIntegrationTypeFactory::createVMAPIntegrationType(
    VMAP::VMAPIntegrationTypeFactory::GAUSS_QUAD_4);
it.setIdentifier(1);
file.writeIntegrationTypes({it});

Python

it = VMAP.VMAPIntegrationTypeFactory.createVMAPIntegrationType(
    VMAP.VMAPIntegrationTypeFactory.GAUSS_QUAD_4)
it.setIdentifier(1)
vm.writeIntegrationTypes(VMAP.VectorTemplateIntegrationType([it]))

sSection

Captures section metadata such as section type, linked material, coordinate system, integration type, and thickness handling.

Core membersmyIdentifier, myName, myType, myMaterial, myCoordinateSystem, myIntegrationType, myThicknessType
Access functionssetIdentifier(), setName(), setType(), setMaterial(), setCoordinateSystem(), setIntegrationType(), setThicknessType()
VMAP location/VMAP/SIMULATION/SYSTEM/SECTION
HDF5 typecompound dataset with integer references and name string

C++

VMAP::sSection sec;
sec.setIdentifier(1);
sec.setName("ShellSection");
sec.setType(VMAP::sSection::SHELL_SECTION);

Python

sec = VMAP.sSection()
sec.setIdentifier(1)
sec.setName("ShellSection")
sec.setType(VMAP.sSection.SHELL_SECTION)

sElementType

Describes element topology and interpolation, including type name, node count, dimension, shape, interpolation type, integration-type reference, and template connectivity.

Core membersmyIdentifier, myTypeName, myTypeDescription, myNumberOfNodes, myDimension, myShapeType, myInterpolationType, myIntegrationType, myConnectivity, myFaceConnectivity
Access functionssetIdentifier(), setTypeName(), setTypeDescription(), setNumberOfNodes(), setDimension(), setShapeType(), setInterpolationType(), setIntegrationType(), setConnectivity(), setFaceConnectivity()
VMAP location/VMAP/SIMULATION/SYSTEM/ELEMENTTYPES
HDF5 typecompound dataset with scalar metadata plus varlen integer connectivity members

C++

auto et = VMAP::VMAPElementTypeFactory::createVMAPElementType(
    VMAP::sElementType::ELEM_3D,
    VMAP::sElementType::QUAD_4,
    VMAP::sElementType::LINEAR,
    1);

Python

et = VMAP.VMAPElementTypeFactory.createVMAPElementType(
    VMAP.sElementType.ELEM_3D,
    VMAP.sElementType.QUAD_4,
    VMAP.sElementType.LINEAR,
    1)

sElement

Represents one finite element instance with element-type reference, material/section references, coordinate system, and connectivity.

Core membersmyIdentifier, myElementType, myCoordinateSystem, myMaterialType, mySectionType, myConnectivity
Access functionssetIdentifier(), setElementType(), setCoordinateSystem(), setMaterialType(), setSectionType(), setConnectivity()
VMAP locationrow inside /VMAP/SIMULATION/GEOMETRY/<partId>/ELEMENTS
HDF5 typecompound row with scalar integer members and varlen integer connectivity

C++

VMAP::sElement e;
e.setIdentifier(1001);
e.setElementType(1);
e.setConnectivity({1,2,3,4});

Python

e = VMAP.sElement()
e.setIdentifier(1001)
e.setElementType(1)
e.setConnectivity([1,2,3,4])

sElementBlock

Container for multiple sElement entries. This is the object written into one part’s ELEMENTS dataset.

Core membersmyElementsSize, myElements
Access functionssetElement(), getElement(), getElementsSize()
VMAP location/VMAP/SIMULATION/GEOMETRY/<partId>/ELEMENTS
HDF5 typecompound dataset with one row per element

C++

VMAP::sElementBlock block(1);
block.setElement(0, e);
file.writeElementsBlock(partPath, block);

Python

block = VMAP.sElementBlock(1)
block.setElement(0, e)
vm.writeElementsBlock(partPath, block)

sGeometrySet

Defines a named set of node or element ids. Geometry sets are commonly referenced by variables, initial conditions, and boundary conditions.

Core membersmyIdentifier, mySetName, mySetType, mySetIndexType, myGeometrySetData
Access functionssetIdentifier(), setSetName(), setSetType(), setSetIndexType(), setGeometrySetData()
VMAP locationgeometry-set datasets under /VMAP/SIMULATION/GEOMETRY/<partId>
HDF5 typescalar metadata via attributes; members as integer dataset

C++

VMAP::sGeometrySet gs;
gs.setIdentifier(5);
gs.setSetName("EDGE_SET");
gs.setSetType(VMAP::sGeometrySet::NODE_LOCATION);
gs.setGeometrySetData({1,2});

Python

gs = VMAP.sGeometrySet()
gs.setIdentifier(5)
gs.setSetName("EDGE_SET")
gs.setSetType(VMAP.sGeometrySet.NODE_LOCATION)
gs.setGeometrySetData([1,2])

Simulation variable, material, and condition structs

sStateVariable

Represents one simulation result variable with metadata, values, optional integration-type ids, and addressed geometry ids. Used for nodal, elemental, set-based, and integration-point fields.

Core membersmyIdentifier, myVariableName, myVariableDescription, myUnit, myCoordinateSystem, myDimension, myLocation, myMultiplicity, myEntity, myValues, myIntegrationTypes, myGeometryIds
Access functionssetVariableName(), setVariableDescription(), setUnit(), setCoordinateSystem(), setDimension(), setLocation(), setMultiplicity(), setEntity(), setValues(), setIntegrationTypes(), setGeometryIds()
VMAP location/VMAP/SIMULATION/VARIABLES/STATE-<stateId>/<partId>/<variable>
HDF5 typemetadata as attributes; values and addressing vectors as datasets

C++

VMAP::sStateVariable sv;
sv.setIdentifier(101);
sv.setVariableName("DISPLACEMENT");
sv.setLocation(VMAP::sStateVariable::LOCATION_NODE);
sv.setValues({0.0, 0.0, 0.0});

Python

sv = VMAP.sStateVariable()
sv.setIdentifier(101)
sv.setVariableName("DISPLACEMENT")
sv.setLocation(VMAP.sStateVariable.LOCATION_NODE)
sv.setValues([0.0, 0.0, 0.0])

sParameter

Generic name/value(/description) parameter record reused in tables, material cards, and connections.

Core membersmyName, myValue, myDescription
Access functionssetName(), setValue(), setDescription(), matching getters
VMAP locationembedded where needed, e.g. parameter datasets and table/material card payloads
HDF5 typecompound record with variable-length strings

C++

VMAP::sParameter p("Density", "7850", "kg/m^3");

Python

p = VMAP.sParameter("Density", "7850", "kg/m^3")

sTable

Represents a 2D table with row/column count, column names, flattened values, and optional parameters.

Core membersmyIdentifier, myTableName, myNumberOfRows, myNumberOfColumns, myColumnNames, myValues, myParameters
Access functionssetIdentifier(), setTableName(), setNumberOfRows(), setNumberOfColumns(), setColumnNames(), setValues(), setParameters()
VMAP locationcaller-provided group, usually a dedicated table subgroup
HDF5 typeattributes for shape/name; datasets for values and names; optional compound parameter dataset

C++

VMAP::sTable table;
table.setIdentifier(1);
table.setTableName("StressStrain");
table.setNumberOfColumns(2);

Python

table = VMAP.sTable()
table.setIdentifier(1)
table.setTableName("StressStrain")
table.setNumberOfColumns(2)

sMaterialCard and sMaterial

sMaterialCard carries solver-specific material definition data, parameters, and tables. sMaterial wraps identity and descriptive metadata around one material card.

Core memberssMaterialCard: model, identifier, physics, solver, solution, unit system, idealization, parameters, tables.
sMaterial: identifier, name, description, supplier, type, state, material card.
Access functionssMaterialCard::setModelName(), setPhysics(), setSolver(), setParameters(), setTables(); sMaterial::setIdentifier(), setMaterialName(), setMaterialDescription(), setMaterialCard()
VMAP location/VMAP/SIMULATION/MATERIAL/<material> and nested MATERIALCARD
HDF5 typematerial metadata in group attributes; parameters/tables in nested datasets/groups

C++

VMAP::sMaterialCard card;
card.setModelName("ELASTIC");
VMAP::sMaterial mat;
mat.setIdentifier(1);
mat.setMaterialName("Steel");
mat.setMaterialCard(card);

Python

card = VMAP.sMaterialCard()
card.setModelName("ELASTIC")
mat = VMAP.sMaterial()
mat.setIdentifier(1)
mat.setMaterialName("Steel")
mat.setMaterialCard(card)

sConnection

Defines master/slave relations between nodes, elements, and surfaces. It stores connection type, index mode, relation data, and optional parameter records.

Core membersmyIdentifier, myName, myType, myMasterIndexType, mySlaveIndexType, myMasterData, mySlaveData, myAuxiliary
Access functionssetIdentifier(), setName(), setType(), setMasterIndexType(), setSlaveIndexType(), setMasterData(), setSlaveData(), setParameters()
VMAP location/VMAP/SIMULATION/CONDITIONS/CONNECTION
HDF5 typecompound + varlen integer arrays + varlen parameter records

C++

VMAP::sConnection c;
c.setIdentifier(1);
c.setType(VMAP::sConnection::NODE_TO_NODE_TYPE);
c.setMasterData({1, 2});
c.setSlaveData({3, 4});

Python

c = VMAP.sConnection()
c.setIdentifier(1)
c.setType(VMAP.sConnection.NODE_TO_NODE_TYPE)
c.setMasterData([1, 2])
c.setSlaveData([3, 4])

sInitialCondition

Stores one initial-condition definition and a map of per-geometry-part value blocks. For integration-point data, the nested value object also carries integration-type ids.

Core membersmyIdentifier, myName, myDescription, myType, myUnit, myCoordinateSystem, myDimension, myMultiplicity, myLocation, myValues
Nested value datamyValueDistribution, myIntegrationTypes, myGeometryIds, myValues
Access functionssetType(), setDimension(), setLocation(), setValuesForGeometryPart(), plus nested setters/getters
VMAP location/VMAP/SIMULATION/INITIAL_CONDITIONS/<condition>/<geometryPartId>
HDF5 typecondition metadata as group attributes; per-part values in datasets and attributes

C++

VMAP::sInitialCondition ic;
ic.setIdentifier(11);
ic.setType(VMAP::sInitialCondition::TEMPERATURE_TYPE);
VMAP::sInitialCondition::sInitialConditionValueData d;
d.setGeometryIds({1,2,3});
d.setValues({293.15, 294.15, 295.15});
ic.setValuesForGeometryPart(1, d);

Python

ic = VMAP.sInitialCondition()
ic.setIdentifier(11)
ic.setType(VMAP.sInitialCondition.TEMPERATURE_TYPE)
d = VMAP.sInitialCondition.sInitialConditionValueData()
d.setGeometryIds([1,2,3])
d.setValues([293.15, 294.15, 295.15])

sBoundaryCondition

Stores one boundary condition and a per-part map of value payloads. The nested value object supports geometry ids, values, optional tables, and free-text metadata.

Core membersmyIdentifier, myName, myDescription, myBaseType, mySubType, myUnit, myCoordinateSystem, myDimension, myMultiplicity, myLocation, myControlType, myBeginStep, myEndStep, myValues
Nested value datamyValueDistribution, myGeometryIds, myValues, myTables, myValueMetadata
Access functionssetBaseType(), setSubType(), setLocation(), setControlType(), setValuesForGeometryPart(), plus nested setters/getters
VMAP location/VMAP/SIMULATION/BOUNDARY_CONDITION/<condition>/<geometryPartId>
HDF5 typegroup attributes for metadata, datasets for ids/values, nested groups for tables

C++

VMAP::sBoundaryCondition bc;
bc.setIdentifier(21);
bc.setBaseType(VMAP::sBoundaryCondition::CONDITON_BASE_MECHANICAL);
bc.setSubType(VMAP::sBoundaryCondition::CONDITION_FIXATION);

Python

bc = VMAP.sBoundaryCondition()
bc.setIdentifier(21)
bc.setBaseType(VMAP.sBoundaryCondition.CONDITON_BASE_MECHANICAL)
bc.setSubType(VMAP.sBoundaryCondition.CONDITION_FIXATION)

sNativeSolverContent

Stores raw solver-native text content plus minimal metadata such as identifier, name, and description.

Core membersmyIdentifier, myName, myDescription, myData
Access functionssetIdentifier(), setName(), setDescription(), setData(), matching getters
VMAP locationcaller-provided group path
HDF5 typemetadata as attributes; solver text as string dataset

C++

VMAP::sNativeSolverContent ns;
ns.setIdentifier(1);
ns.setName("NASTRAN_BULK");
ns.setData("GRID,1,,0.,0.,0.");

Python

ns = VMAP.sNativeSolverContent()
ns.setIdentifier(1)
ns.setName("NASTRAN_BULK")
ns.setData("GRID,1,,0.,0.,0.")

Measurement structs

sMultiParameterObject

Reusable named container for a vector of sParameter. Used inside measurement-device sections such as components, setup, and ambient conditions.

Core membersmyIdentifier, myName, myParameters
Access functionssetIdentifier(), setName(), setParameters(), matching getters
VMAP locationnested under a measurement-device subgroup
HDF5 typeattributes for id/name plus compound parameter dataset

C++

VMAP::sMultiParameterObject mpo;
mpo.setIdentifier(1);
mpo.setName("SensorHead");
mpo.setParameters({VMAP::sParameter("Range", "10g")});

Python

mpo = VMAP.sMultiParameterObject()
mpo.setIdentifier(1)
mpo.setName("SensorHead")

sMeasurandValues

Measurement result payload with unit, dimension, location, multiplicity, values, optional uncertainties, and optional geometry/integration addressing vectors.

Core membersmyIdentifier, myMeasurandName, myMeasurandDescription, myUnit, myDimension, myIncrementValue, myTimeValue, myLocation, myMultiplicity, myEntity, myCoordinateSystem, myUncertaintyFormat, myValues, myUncertainties, myIntegrationTypes, myGeometryIds
Access functionssetMeasurandName(), setDimension(), setLocation(), setMultiplicity(), setValues(), setUncertainties(), setIntegrationTypes(), setGeometryIds()
VMAP location/VMAP/MEASUREMENT/VARIABLES/<deviceId>/STATE-<stateId>/<measurand>
HDF5 typemetadata as attributes; numeric payload and id vectors as datasets

C++

VMAP::sMeasurandValues mv;
mv.setIdentifier(1);
mv.setMeasurandName("ACC");
mv.setValues({9.81});

Python

mv = VMAP.sMeasurandValues()
mv.setIdentifier(1)
mv.setMeasurandName("ACC")
mv.setValues([9.81])

sMeasurementDevice

Describes the measurement setup. The device contains vectors of sMultiParameterObject for components, ambient conditions, measured objects, measuring setup, and post processing.

Core membersmyIdentifier, myName, myComponents, myAmbientConditions, myMeasuredObjects, myMeasuringSetup, myPostProcessing
Access functionssetIdentifier(), setName(), setComponents(), setAmbientConditions(), setMeasuredObjects(), setMeasuringSetup(), setPostProcessing()
VMAP location/VMAP/MEASUREMENT/GEOMETRY/<deviceId>
HDF5 typedevice metadata as attributes; nested subgroup trees for the object vectors

C++

VMAP::sMeasurementDevice dev;
dev.setIdentifier(1);
dev.setName("DAQ-1");
file.writeMeasurementDevice(devicePath, dev);

Python

dev = VMAP.sMeasurementDevice()
dev.setIdentifier(1)
dev.setName("DAQ-1")
vm.writeMeasurementDevice(devicePath, dev)

Detailed C++ members and signatures

This appendix refines the summaries above. For every top-level struct and the main public classes, it lists member types and the most relevant public construction/access signatures exactly in C++ form.

System and unit declarations

sVersion
MemberC++ type
myMajorint
myMinorint
myPatchint
SignatureReturn type
sVersion()constructor
sMetaInformation
MemberC++ type
myExporterNameconst char*
myFileDateconst char*
myFileTimeconst char*
myDescriptionconst char*
myAnalysisTypeconst char*
myUserIdconst char*
SignatureReturn type
sMetaInformation()constructor
sMetaInformation(const sMetaInformation & other)copy constructor
~sMetaInformation()destructor
sMetaInformation& operator=(const sMetaInformation& metainfo)sMetaInformation&
const char* getExporterName() constconst char*
void setExporterName(const char* s)void
const char* getDescription() constconst char*
void setDescription(const char* s)void
sCoordinateSystem
MemberC++ type
myIdentifierint
myTypeint
myReferencePointdouble[3]
myAxisVectorsdouble[9]
SignatureReturn type
sCoordinateSystem()constructor
sCoordinateSystem(const sCoordinateSystem & other)copy constructor
int getIdentifier() constint
void setIdentifier(int id)void
int getType() constint
void setType(int id)void
void getReferencePoint(std::vector<double> & refPoint) constvoid
void getReferencePoint(double & x, double & y, double & z) constvoid
void setReferencePoint(const std::vector<double> & refPoint)void
void setReferencePoint(double x, double y, double z)void
void getAxisVector(int index, std::vector<double> & axis) constvoid
void setAxisVector(int index, const std::vector<double> & axis)void
sBaseUnit
MemberC++ type
myIdentifierint
mySIScaledouble
mySIShiftdouble
myUnitSymbolconst char*
myUnitQuantityconst char*
SignatureReturn type
sBaseUnit()constructor
sBaseUnit(const sBaseUnit& other)copy constructor
sBaseUnit& operator=(const sBaseUnit& baseunit)sBaseUnit&
int getIdentifier() constint
void setIdentifier(int id)void
double getSIScale() constdouble
void setSIScale(double scale)void
const char* getUnitSymbol() constconst char*
void setUnitSymbol(const char* s)void
sUnitSystem
MemberC++ type
myLengthUnitsBaseUnit
myMassUnitsBaseUnit
myTimeUnitsBaseUnit
myCurrentUnitsBaseUnit
myTemperatureUnitsBaseUnit
myAmountOfSubstanceUnitsBaseUnit
myLuminousIntensityUnitsBaseUnit
SignatureReturn type
sUnitSystem()constructor
sUnitSystem(const sUnitSystem & other)copy constructor
sBaseUnit & getLengthUnit()sBaseUnit&
sBaseUnit & getMassUnit()sBaseUnit&
sBaseUnit & getTimeUnit()sBaseUnit&
sBaseUnit & getTemperatureUnit()sBaseUnit&
sUnit
MemberC++ type
myIdentifierint
myUnitSymbolconst char*
myUnitDimensionint[7]
SignatureReturn type
sUnit()constructor
sUnit(const sUnit & other)copy constructor
sUnit& operator=(const sUnit& type)sUnit&
int getIdentifier() constint
void setIdentifier(int id)void
const char* getUnitSymbol() constconst char*
void setUnitSymbol(const char* s)void
void getUnitDimension(std::vector<int> & dimensions) constvoid
void setUnitDimension(const std::vector<int> & dimensions)void

Geometry and mesh declarations

sPointsBlock
MemberC++ type
myCoordinateSystemint
mySizeunsigned long
myIdentifiersstd::vector<int>
myCoordinatesstd::vector<double>
SignatureReturn type
sPointsBlock(), sPointsBlock(unsigned long numberOfPoints)constructors
int getCoordinateSystem() constint
void setCoordinateSystem(int id)void
unsigned long getSize() constunsigned long
void getPoint(unsigned long index, int& identifier, std::vector<double> & xyz) constvoid
void setPoint(unsigned long index, int identifier, const std::vector<double> & xyz)void
void setPoints(const std::vector<int> & identifiers, const std::vector<double> & coordinates)void
const std::vector<double> & getCoordinates() constconst std::vector<double>&
sIntegrationType
MemberC++ type
myIdentifierint
myTypeNameconst char*
myNumberOfPointsint
myDimensionint
myOffsetdouble
myAbscissasstd::vector<double>
myAbscissasHandlehvl_t
myWeightsstd::vector<double>
myWeightsHandlehvl_t
mySubTypesstd::vector<int>
mySubTypesHandlehvl_t
SignatureReturn type
sIntegrationType(), sIntegrationType(const sIntegrationType& other)constructors
sIntegrationType& operator=(const sIntegrationType& type)sIntegrationType&
int getIdentifier() constint
void setIdentifier(int id)void
const char* getTypeName() constconst char*
void setTypeName(const char* s)void
double getOffset() constdouble
void setOffset(double offset)void
void getAbscissasAndWeights(int & dimension, std::vector<double> & abscissas, std::vector<double> & weights) constvoid
void setAbscissasAndWeights(int dimension, const std::vector<double> & abscissas, const std::vector<double> & weights)void
sSection
MemberC++ type
myIdentifierint
myNameconst char*
myTypeint
myMaterialint
myCoordinateSystemint
myIntegrationTypeint
myThicknessTypeint
SignatureReturn type
sSection(), sSection(const sSection & other)constructors
sSection& operator=(const sSection& other)sSection&
int getIdentifier() const, void setIdentifier(int id)int / void
const char* getName() const, void setName(const char* s)const char* / void
sElementType
MemberC++ type
myIdentifier, myNumberOfNodes, myDimension, myShapeType, myInterpolationType, myIntegrationType, myNumberOfNormalComponents, myNumberOfShearComponentsint
myTypeName, myTypeDescriptionconst char*
myConnectivity, myFaceConnectivitystd::vector<int>
myConnectivityHandle, myFaceConnectivityHandlehvl_t
SignatureReturn type
sElementType(), sElementType(const sElementType& other)constructors
sElementType& operator=(const sElementType& type)sElementType&
int getIdentifier() const, void setIdentifier(int id)int / void
const char* getTypeName() const, void setTypeName(const char* s)const char* / void
const std::vector<int> & getConnectivity() const, void setConnectivity(const std::vector<int> & connectivity)const std::vector<int>& / void
sElement and sElementBlock
MemberC++ type
sElement::myIdentifier, myElementType, myCoordinateSystem, myMaterialType, mySectionTypeint
sElement::myConnectivitystd::vector<int>
sElementBlock::myElementsSizeunsigned long
sElementBlock::myElementsstd::vector<sElement>
SignatureReturn type
void setConnectivity(const std::vector<int> & connectivity)void
const std::vector<int> & getConnectivity() constconst std::vector<int>&
sElementBlock(unsigned long numberOfElements)constructor
const sElement & getElement(unsigned long index) constconst sElement&
void setElement(unsigned long index, const sElement & element)void
sGeometrySet
MemberC++ type
myIdentifier, mySetType, mySetIndexTypeint
mySetNameconst char*
myGeometrySetDatastd::vector<int>
SignatureReturn type
sGeometrySet(), sGeometrySet(const sGeometrySet& other)constructors
sGeometrySet& operator=(const sGeometrySet& other)sGeometrySet&
int getIdentifier() const, void setIdentifier(int id)int / void
const char* getSetName() const, void setSetName(const char* s)const char* / void
const std::vector<int> & getGeometrySetData() const, void setGeometrySetData(const std::vector<int> & data)const std::vector<int>& / void

Simulation, material, and condition declarations

sStateVariable
MemberC++ type
myIdentifier, myIncrementValue, myUnit, myCoordinateSystem, myDimension, myLocation, myMultiplicity, myEntityint
myTimeValue, myModalFrequencydouble
myVariableName, myVariableDescription, myVariableDependencyconst char*
myValuesstd::vector<double>
myIntegrationTypes, myGeometryIdsstd::vector<int>
SignatureReturn type
sStateVariable(), sStateVariable(const sStateVariable& other)constructors
sStateVariable& operator=(const sStateVariable& other)sStateVariable&
const char* getVariableName() const, void setVariableName(const char* s)const char* / void
int getDimension() const, void setDimension(int dim)int / void
int getLocation() const, void setLocation(int loc)int / void
const std::vector<double> & getValues() const, void setValues(const std::vector<double> & values)const std::vector<double>& / void
const std::vector<int> & getIntegrationTypes() constconst std::vector<int>&
sParameter and sTable
MemberC++ type
sParameter::myName, myValue, myDescriptionconst char*
sTable::myIdentifier, myNumberOfRows, myNumberOfColumnsint
sTable::myTableNameconst char*
sTable::myColumnNamesstd::vector<std::string>
sTable::myValuesstd::vector<double>
sTable::myParametersstd::vector<sParameter>
SignatureReturn type
sParameter(const char* name, const char* value)constructor
const char* getName() const, void setName(const char* s)const char* / void
int getIdentifier() const, void setIdentifier(int id)int / void
void setColumnNames(const std::vector<std::string> & colNames)void
const std::vector<double> & getValues() const, void setValues(const std::vector<double> & values)const std::vector<double>& / void
sMaterialCard and sMaterial
MemberC++ type
sMaterialCard::myModelName, myIdentifier, myPhysics, mySolver, mySolverVersion, mySolution, myUnitSystem, myIdealizationconst char*
sMaterialCard::myParametersstd::vector<sParameter>
sMaterialCard::myTablesstd::vector<sTable>
sMaterial::myIdentifierint
sMaterial::myMaterialName, myMaterialDescription, myMaterialSupplier, myMaterialType, myMaterialStateconst char*
sMaterial::myMaterialCardsMaterialCard
SignatureReturn type
void setModelName(const char* s), const char* getModelName() constvoid / const char*
void setParameters(const std::vector<sParameter> & params)void
void setTables(const std::vector<sTable> & tables)void
void setMaterialName(const char* s), const char* getMaterialName() constvoid / const char*
void setMaterialCard(const sMaterialCard & mc), const sMaterialCard & getMaterialCard() constvoid / const sMaterialCard&
sConnection
MemberC++ type
myIdentifier, myType, myMasterIndexType, mySlaveIndexTypeint
myNameconst char*
myMasterData, mySlaveDatastd::vector<int>
myAuxiliarystd::vector<sParameter>
myMasterDataHandle, mySlaveDataHandle, myAuxiliaryHandlehvl_t
SignatureReturn type
sConnection(), sConnection(const sConnection & other)constructors
sConnection& operator=(const sConnection & other)sConnection&
int getType() const, void setType(int type)int / void
const std::vector<int> & getMasterData() const, void setMasterData(const std::vector<int> & data)const std::vector<int>& / void
void setParameters(const std::vector<sParameter> & auxParams)void
sInitialCondition and nested sInitialConditionValueData
MemberC++ type
sInitialConditionValueData::myValueDistributionint
sInitialConditionValueData::myIntegrationTypes, myGeometryIdsstd::vector<int>
sInitialConditionValueData::myValuesstd::vector<double>
sInitialCondition::myIdentifier, myType, myUnit, myCoordinateSystem, myDimension, myMultiplicity, myLocationint
sInitialCondition::myName, myDescriptionconst char*
sInitialCondition::myValuesstd::unordered_map<int, sInitialConditionValueData>
SignatureReturn type
int getValueDistribution() const, void setValueDistribution(int distribution)int / void
const std::vector<double> & getValues() const, void setValues(const std::vector<double> & values)const std::vector<double>& / void
int getIdentifier() const, void setIdentifier(int id)int / void
void setValuesForGeometryPart(int geometryPartId, const sInitialConditionValueData & values)void
bool hasValuesForGeometryPart(int geometryPartId) constbool
sBoundaryCondition and nested sBoundaryConditionValueData
MemberC++ type
sBoundaryConditionValueData::myValueDistributionint
sBoundaryConditionValueData::myGeometryIdsstd::vector<int>
sBoundaryConditionValueData::myValuesstd::vector<double>
sBoundaryConditionValueData::myTablesstd::vector<sTable>
sBoundaryConditionValueData::myValueMetadatastd::string
sBoundaryCondition::myIdentifier, myBaseType, mySubType, myUnit, myCoordinateSystem, myDimension, myMultiplicity, myLocation, myControlType, myBeginStep, myEndStepint
sBoundaryCondition::myName, myDescriptionconst char*
sBoundaryCondition::myValuesstd::unordered_map<int, sBoundaryConditionValueData>
SignatureReturn type
const std::vector<sTable> & getTables() const, void setTables(const std::vector<sTable> & tables)const std::vector<sTable>& / void
const std::string & getValueMetadata() const, void setValueMetadata(const std::string & metadata)const std::string& / void
void setBaseType(int baseType), int getBaseType() constvoid / int
void setSubType(int type), int getSubType() constvoid / int
void setValuesForGeometryPart(int geometryPartId, const sBoundaryConditionValueData & values)void
bool hasValuesForGeometryPart(int geometryPartId) constbool
sNativeSolverContent
MemberC++ type
myIdentifierint
myName, myDescriptionconst char*
myDatastd::string
SignatureReturn type
sNativeSolverContent(), sNativeSolverContent(const sNativeSolverContent & other)constructors
sNativeSolverContent& operator=(const sNativeSolverContent& entry)sNativeSolverContent&
std::string getData() const, void setData(const std::string & s)std::string / void

Measurement declarations

sMultiParameterObject, sMeasurandValues, and sMeasurementDevice
MemberC++ type
sMultiParameterObject::myIdentifierint
sMultiParameterObject::myParametersstd::vector<sParameter>
sMultiParameterObject::myNameconst char*
sMeasurandValues scalar membersint, double, const char*, std::vector<double>, std::vector<int>
sMeasurementDevice::myIdentifierint
sMeasurementDevice::myNameconst char*
sMeasurementDevice object vectorsstd::vector<sMultiParameterObject>
SignatureReturn type
const std::vector<sParameter> & getParameters() const, void setParameters(const std::vector<sParameter> & params)const std::vector<sParameter>& / void
const char* getMeasurandName() const, void setMeasurandName(const char* s)const char* / void
const std::vector<double> & getValues() const, void setValues(const std::vector<double> & values)const std::vector<double>& / void
const std::vector<sMultiParameterObject> & getComponents() const, void setComponents(const std::vector<sMultiParameterObject> & c)const std::vector<sMultiParameterObject>& / void
const std::vector<sMultiParameterObject> & getPostProcessing() const, void setPostProcessing(const std::vector<sMultiParameterObject> & p)const std::vector<sMultiParameterObject>& / void

Classes and factories

class VMAPFile
MemberC++ type
myFileH5::H5File*
myDatasetPropList, myImagePropList, myExternalPropListH5::DSetCreatPropList
myPathPrefix, mySimulationPrefix, myMeasurementPrefixstd::string
myFloatTruncationTablestd::unordered_map<std::string, int>
myFloatToleranceTablestd::unordered_map<std::string, double>
Public signatureReturn type
VMAPFile()constructor
VMAPFile(const std::string & path, int mode = CREATEORREPLACE)constructor
VMAPFile(const std::string & path, int mode, const std::string & prefix)constructor
void openFile(const std::string & path, int mode = CREATEORREPLACE)void
void closeFile()void
std::string createGeometryGroup(int identifier, const std::string & name)std::string
std::string createVariablesGroup(int stateId, int geometryId)std::string
void writePointsBlock(const std::string & groupName, const sPointsBlock & points)void
void readPointsBlock(const std::string & groupName, sPointsBlock & points)void
void writeElementsBlock(const std::string & groupName, const sElementBlock & elements)void
void writeVariablesBlock(const std::string & groupName, const std::vector<sStateVariable> & data)void
void writeMaterialBlock(const std::vector<sMaterial> & data)void
void writeInitialConditionsBlock(const std::vector<sInitialCondition> & conditions)void
void writeBoundaryConditionsBlock(const std::vector<sBoundaryCondition> & conditions)void
void writeMeasurementDevice(const std::string & groupName, const sMeasurementDevice & device)void
void writeMeasurandValuesBlock(const std::string & groupName, const std::vector<sMeasurandValues> & data)void
H5::H5File* getFileHandle()H5::H5File*
class VMAPElementTypeFactory
MemberC++ type
instance datanone; static factory interface
Public signatureReturn type
static sElementType createVMAPElementType(int elementDimension, int elementShape, int interpolationType = sElementType::CONSTANT, int integrationType = -1)sElementType
static int getNodeCount(int elementShape)int
static std::vector<int> getConnectivityTemplate(int elementShape)std::vector<int>
class VMAPIntegrationTypeFactory
MemberC++ type
instance datanone; static factory interface
Public signatureReturn type
static sIntegrationType createVMAPIntegrationType(int typeId, double offset = 0.0)sIntegrationType
static sIntegrationType createVMAPCompositeIntegrationType(int nLayers, const std::vector<int> & types, const std::vector<double> & thicknesses)sIntegrationType
static sIntegrationType createCombinedVMAPIntegrationType(const sIntegrationType & first, const sIntegrationType & second)sIntegrationType

Notes

This manual is styled to read like a Doxygen reference while remaining hand-maintained. Keep it aligned with src/VMAP.h, src/VMAPFile.h, src/VMAPFile.cxx, and the round-trip C++ examples in test/.