Core Objects
Overview
Core objects are the built-in building blocks of ParamML. Unlike library components (user-created), core objects are fundamental types provided by the ParamML system.
What you'll learn:
Most commonly used core objects organized by category
Purpose and usage of each object type
Common attributes and examples
When to use each object
Complete reference: See ObjectTypes.xml - search between <!-- ObjectType Starts --> and <!-- ObjectType Ends --> for complete object definitions including all attributes and parameters.
Core
Project
Purpose: Top-level container for all ParamML components
Description:
T="Project" is the top level object for each component. Each component should start with a Project object and there can only be 1 Project per component.
Common Attributes:
N- Name (required)T- Always "Project"Extends- Optional, inherit from another component
Example:
When to use:
Creating any new library component
Top-level container for all work
Defining reusable components
Basic
Group
Purpose: Main object for organization and grouping
Description:
T="Group" is the main object for organization. We group similar logics, parameters, and objects. It is also widely used with Extends and Guards.
Common Attributes:
N- NameT- Always "Group"Extends- Optional, inherit from another componentScoped- Optional, namespace isolation
Example:
When to use:
Organizing related parameters and calculations
Extending library components at group level
Creating logical sections in your component
Repeat
Purpose: Clone a set of objects multiple times based on iteration parameters
Description: Sometimes certain parts of a ParamML document need to be repeated multiple times. The number of repetitions may be user-defined. Repeat objects are used to clone a set of objects multiple times.
Many structures are composed of repetitions of structural components:
Multiple girders in a bridge at different transverse locations
Multiple web stiffeners along a girder
Multiple panels of a tower
Multiple floors of a building
A component can be defined once and placed inside a Repeat object to clone and position at certain geometric intervals.
Required Parameters:
S- Start valueE- End valueI- IncrementCTRL- Control parameter nameControl parameter definition (e.g.,
index="0")StaticParams- Optional, list of parameters to cache
Important Concepts:
Not a procedural loop - Think of Repeat as a powerful array/list generator
Lazy evaluation - Parameters execute on as-needed basis
StaticParams - Repeat breaks precomputed cache at every iteration, so heavy calculations should be in StaticParams for caching
Can be nested - Repeat elements can contain other Repeat elements
Example:
When to use:
Creating multiple similar components at intervals
Generating arrays of structural elements
Repetitive geometric patterns
Referencing Objects Inside Repeat
Objects created inside Repeat can be referenced using array notation with the control parameter index.
Syntax:
Nested Repeat Reference:
Example: Creating FE Mesh with Nested Repeats
How it works:
xvalsandyvalsare arrays defining grid coordinatesXRepiterates through X coordinates (control:xi)YRep(nested) iterates through Y coordinates (control:yi)Each iteration creates a
DeckNodeat position(xvals[xi], yvals[yi])When
xi > 0andyi > 0, createFESurfaceconnecting:XRep[xi-1].YRep[yi-1].DeckNode- Previous X, previous YXRep[xi].YRep[yi-1].DeckNode- Current X, previous YXRep[xi].YRep[yi].DeckNode- Current X, current YXRep[xi-1].YRep[yi].DeckNode- Previous X, current Y
Key Points:
Use
[index]to reference specific iteration of RepeatCan reference previous iterations:
[xi-1],[yi-1]Guard prevents accessing non-existent indices (e.g.,
xi-1whenxi=0)Nested repeats use dot notation:
Outer[i].Inner[j].Object
You can ONLY index Repeat objects, not objects inside them.
Wrong Approach:
Correct Approach:
Rules:
Only Repeat objects can be indexed with
[index]Name your Repeat objects (use
N="RepeatName")Path to objects must go through Repeat names:
RepeatName[i].RepeatName[j].ObjectNameCannot index regular objects -
Object[index]only works ifObjectis a Repeat
Example - Creating FE Mesh:
Material
Purpose: Define material properties for structural elements
Description:
T="Material" is an element material object, assigned to Sections, FESurfaces, Rebars, and library components.
Common Parameters:
E- Modulus of elasticityG- Shear modulusd- Densitya- Coefficient of thermal expansion (alpha)Type- Material type [Steel/Concrete/Reinforcement Bar/Prestressing Tendon]Fc28- 28-day compressive strength (concrete)f_cm- Mean compressive strength (concrete)
Example:
When to use:
Defining material properties for FEA elements
Creating reusable material definitions
Assigning properties to sections
See also: Section, FELine, FESurface
Export
Purpose: Make parameters and objects accessible to external components
Description:
T="Export" makes objects and parameters under it accessible for other objects when creating instances of components.
Common Attributes:
T- Always "Export"
Example:
When to use:
Defining public interface of components
Controlling what's accessible when creating instances
Hiding implementation details
See also: AI-Component-Instances.md, AI-Export.md
Roadway Alignment
Alignment
Purpose: Define horizontal and vertical alignment paths for positioning objects
Description:
T="Alignment" is used in Roadway Alignment. It has 3 main components: Horizontal Alignment, Vertical Alignment, and Cross-Slope. It helps place objects along a path without authors needing to make complex calculations.
Normally, it must be imported from an LandXML file. You won't need to modify/create alignments. Your main job related to it is to place objects in the correct way on the alignment.
Important Parameters:
N- NameT- Always "Alignment"Station- Station number at start of alignmentAzimuth- Heading at start of alignment (North, clockwise)Lat- Latitude at start (optional)Lng- Longitude at start (optional)
Example:
Note: For Horizontal/Vertical/Transverse segments, there are other objects defined inside T="Alignment" object. You won't probably need them, but you can check the Roadway Alignment category in ObjectTypes.xml.
When to use:
Placing objects along curved paths
Bridge and road geometry
Complex geometric positioning
Working with imported LandXML alignments
See also: AI-3D-Visualization-Guide.md for detailed usage
Geometry
Point
Purpose: Building block of all geometry
Description:
T="Point" is the building block of geometry. Every Line, Surface, Volume, and Shape is made out of points.
Common Attributes:
X- X coordinateY- Y coordinateZ- Z coordinateT- Always "Point"
Example:
When to use:
Defining vertices of geometric objects
Creating lines, surfaces, and volumes
Specifying locations in 3D space
Line
Purpose: Create linear geometric objects
Description:
T="Line" creates a line object from 2 or more points. If number of points is larger than 2, it should have PolyLine="1" attribute. To create 3D geometry, assign a Section to it.
Common Attributes:
T- Always "Line"Section- Cross-section definitionPolyLine- Set to "1" for polylines (3+ points)
Example:
When to use:
Creating beams, cables, or linear elements
Defining paths in 3D space
Creating polyline geometries
Surface
Purpose: Create 2D planar surfaces
Description:
T="Surface" is made out of at least 3 T="Point" objects. All points of the surface must be in the same plane. You can also assign a thickness to make it 3D.
Common Attributes:
T- Always "Surface"Thickness- Optional, for 3D surfaces
Example:
When to use:
Creating deck surfaces, walls, or panels
Defining planar geometric regions
Building volume geometries
Important: All points must be coplanar (in same plane)
Volume
Purpose: Create 3D solid geometry
Description:
T="Volume" is made out of at least 2 T="Surface" objects. It creates a lofted body between surfaces.
Common Attributes:
T- Always "Volume"X,Y,Z- PositionRX,RY,RZ- Rotation
Important: The order of Surface points should match in order to create correct geometry.
Example:
When to use:
Creating solid 3D geometries
Modeling structural components
Lofted shapes between surfaces
Cross-Section
Section
Purpose: Define cross-sections for Line and FELine objects
Description:
T="Section" defines a cross-section used for Line and FELine objects. It should have at least 1 Shape object. If used for FELine, it must be assigned a material.
Common Attributes:
N- NameT- Always "Section"Material- Required for FELine usage
Example:
When to use:
Defining beam/column cross-sections
Creating parametric section properties
Assigning to Line or FELine elements
Shape
Purpose: Define 2D cross-section shape within a Section
Description:
T="Shape" is a 2D object that must be defined under Section. It is useless otherwise.
Common Attributes:
T- Always "Shape"
Example:
When to use:
Defining cross-section geometry
Always used within Section objects
Creating complex section shapes
FEA
Node
Purpose: Point element for finite element analysis
Description:
Node object represents a point on which finite element analysis can be performed. OpenBrIM supports 3D finite element analysis. Node object supports 6 degrees of freedom (DOFs): translation X, Y, Z and rotation X, Y, Z.
All DOFs are by default free (nodes can translate and rotate as connected elements allow). Each DOF can be supported independently using Tx, Ty, Tz, Rx, Ry, Rz parameters:
0= Free (default)-1= Fully fixed (restrained)Other value = Stiffness (K) for partial fixity
OpenBrIM automatically merges nodes at the same location before analysis.
Common Attributes:
N- NameT- Always "Node"X,Y,Z- Location coordinatesTx,Ty,Tz- Translational stiffness/restraintRx,Ry,Rz- Rotational stiffness/restraint
Example:
FESpring
Purpose: General stiffness connection between two nodes
Description:
FESpring object represents general stiffness between two nodes. The stiffness may be fixed, custom stiffness value (compression, tension or both), or a nonlinear stiffness curve.
Common Attributes:
N- NameT- Always "FESpring"Node1- First nodeNode2- Second nodeTx,Ty,Tz- Translational stiffnessRx,Ry,Rz- Rotational stiffnessGroup- FEGroup assignment
Example:
FELine
Purpose: Two-noded beam/truss finite element
Description:
FELine object represents a two-noded element in a finite element model. OpenBrIM supports:
Beam
Truss
Compression Truss
Tension Truss
Cable
Inelastic Line
Common Attributes:
N- NameT- Always "FELine"Type- Element type [@Beam/@Truss/@CompressionTruss/@TensionTruss/@Cable/@Inelastic]Node1,Node2- End nodesSection- Cross-section at startSection2- Cross-section at end (optional)BetaAngle- Orientation angleNode1OffX/Y/Z,Node2OffX/Y/Z- Global offsetsNode1LocalOffX/Y/Z,Node2LocalOffX/Y/Z- Local offsetsNode1Tx/Ty/Tz/Rx/Ry/Rz- Node 1 releasesNode2Tx/Ty/Tz/Rx/Ry/Rz- Node 2 releasesGroup- FEGroup assignmentCastingDay- For time-dependent analysis
Example:
FESurface
Purpose: 3/4-noded shell finite element
Description:
FESurface object represents a 3/4 noded element in a finite element model, supporting both membrane (including drilling) and bending action.
Common Attributes:
N- NameT- Always "FESurface"Node1,Node2,Node3,Node4- Corner nodesThickness- Element thicknessMaterial- Material propertiesNode1/2/3/4OffX/Y/Z- Global offsetsNode1/2/3/4LocalOffX/Y/Z- Local offsetsNode1/2/3/4Tx/Ty/Tz/Rx/Ry/Rz- Node releasesGroup- FEGroup assignmentCastingDay- For time-dependent analysis
Example:
FEComposite
Purpose: Composite geometry for combined force results
Description:
FEComposite object represents a composite geometry made up of multiple FELine and FESurface objects. While finite element results are by default displayed for individual elements, FEComposite can show combined forces together. This is especially useful when a bridge component is modeled using multiple finite elements and force results are needed on the overall component.
FEComposite slices specified finite elements at intervals along its path. Intervals can be specified using:
Spacing- Equal spacingSegments- Number of segmentsPos- Individual stationsPosRel- Relative positions along path
These parameters can be mixed. BetaAngle controls local Y and Z axis orientation.
The object determines which elements to include using the Filter parameter - a lambda operation on elements in the FEGroup.
Common Attributes:
N- NameT- Always "FEComposite"Filter- Lambda expression to filter elements (e.g.,x.type .EQ. 'Girder')Path- Path along which forces are calculatedBetaAngle- Orientation angle for local axesSpacing- Slicing intervalSegments- Number of segmentsPos- List of stations for resultsPosRel- List of relative positionsGroup- Active structure part
Example:
FEGroup
Purpose: Group finite elements for loading or organization
Description:
FEGroup objects are used for grouping finite elements - usually for loading or organizational purposes.
Common use with Filter: Every element (FELine, FESurface) can be tagged with custom attributes (e.g., GirderIndex). FEGroups can then use Filter parameter to organize elements based on these attributes. The Filter is a lambda operation on the elements.
Common Attributes:
N- NameT- Always "FEGroup"ParentGroup- Parent FEGroupFilter- Lambda expression to filter elements (e.g.,x.GirderIndex .EQ. 1)Alignment- Alignment assignment
Example - Basic group:
Example - Using Filter for organization:
FEGroupItem
Purpose: Represent an item in an FEGroup
Description:
FEGroupItem object represents an item in an FEGroup object.
Common Attributes:
N- NameT- Always "FEGroupItem"Group- Parent FEGroupObj- Object to include in group
Example:
AnalysisCase
Purpose: Container for static loads representing a loading condition
Description:
AnalysisCase object is a container for a set of static loads representing a loading condition on the finite element model. You can specify WeightFactorZ/Y/X attributes to automatically account for the weight of the structure in the load case.
Common Attributes:
N- NameT- Always "AnalysisCase"WeightFactorZ/Y/X- Self-weight factorsLoadType- Type of loading (Dead, Live, Wind, etc.)Nonlinear- Enable nonlinear analysis [0/1]Steps- Number of nonlinear stepsIterations- Max iterationsActive- Is case active [0/1]Group- Active structure partParent- Previous case in sequence
Example:
AnalysisCaseLive
Purpose: Container for influence surface-based live load analysis
Description:
AnalysisCaseLive object is a container for a set of static cases representing all possible positions of a vehicle on a surface.
Common Attributes:
N- NameT- Always "AnalysisCaseLive"Surface- Group containing loading surface shell elementsFx,Fy,Fz- Unit force magnitudesMx,My,Mz- Unit moment magnitudesIncX,IncY- Spacing between unit loadsLLCoefTol- Tolerance for storing resultsMPF- Multiple Presence Factor arrayLane1-5- Design lane typesPath1-4- Loading surface definitionsActive- Is case active [0/1]Group- Active structure partParent- Previous case in sequenceMaxStressRange- Maximize for stress range [0/1]MaxNumOfLanes- Maximum number of lanes [-1 to 5]
Example:
StructureState
Purpose: Modify analysis state of structural objects for specific loading cases
Description:
StructureState allows modification of analysis state of a structural object for a particular loading case.
Common Attributes:
N- NameT- Always "StructureState"LC- Analysis caseObj- Object to modifyGroup- FEGroupWeightFactorZ/Y/X- Self-weight factorsStiffness- Has stiffness [0/1]
Example:
ConstructionStage
Purpose: Represent a step in construction simulation sequence
Description:
ConstructionStage object represents a step in a construction simulation sequence.
Common Attributes:
N- NameT- Always "ConstructionStage"Day- Day numberParentStage- Parent construction stageLoadType- Type of loadingTemperature- TemperatureHumidity- Humidity percentageConstMethod- Construction method [none/equal/match]Creep- Include concrete creep [0/1]Shrinkage- Include concrete shrinkage [0/1]Relaxation- Include steel relaxation [0/1]PTLoss- Include PT losses [0/1]TimeDepE- Time dependent modulus [0/1]CreepTens- Creep of tensile axial force [0/1]Nonlinear- Nonlinear analysis [0/1]Steps- Number of nonlinear stepsIterations- Max iterationsActive- Is stage active [0/1]
Example:
ConstructionStageLoading
Purpose: Represent an analysis case within a construction stage
Description:
ConstructionStageLoading object represents an analysis case of a construction stage.
Common Attributes:
N- NameT- Always "ConstructionStageLoading"ConstructionStage- Associated construction stageCase- Analysis caseFactor- Load factor
Example:
Last updated