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 - Name

  • T - Always "Group"

  • Extends - Optional, inherit from another component

  • Scoped - 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 value

  • E - End value

  • I - Increment

  • CTRL - Control parameter name

  • Control 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:

  1. xvals and yvals are arrays defining grid coordinates

  2. XRep iterates through X coordinates (control: xi)

  3. YRep (nested) iterates through Y coordinates (control: yi)

  4. Each iteration creates a DeckNode at position (xvals[xi], yvals[yi])

  5. When xi > 0 and yi > 0, create FESurface connecting:

    • XRep[xi-1].YRep[yi-1].DeckNode - Previous X, previous Y

    • XRep[xi].YRep[yi-1].DeckNode - Current X, previous Y

    • XRep[xi].YRep[yi].DeckNode - Current X, current Y

    • XRep[xi-1].YRep[yi].DeckNode - Previous X, current Y

Key Points:

  • Use [index] to reference specific iteration of Repeat

  • Can reference previous iterations: [xi-1], [yi-1]

  • Guard prevents accessing non-existent indices (e.g., xi-1 when xi=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:

  1. Only Repeat objects can be indexed with [index]

  2. Name your Repeat objects (use N="RepeatName")

  3. Path to objects must go through Repeat names: RepeatName[i].RepeatName[j].ObjectName

  4. Cannot index regular objects - Object[index] only works if Object is 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 elasticity

  • G - Shear modulus

  • d - Density

  • a - 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 - Name

  • T - Always "Alignment"

  • Station - Station number at start of alignment

  • Azimuth - 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 coordinate

  • Y - Y coordinate

  • Z - Z coordinate

  • T - 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 definition

  • PolyLine - 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 - Position

  • RX, 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 - Name

  • T - 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 - Name

  • T - Always "Node"

  • X, Y, Z - Location coordinates

  • Tx, Ty, Tz - Translational stiffness/restraint

  • Rx, 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 - Name

  • T - Always "FESpring"

  • Node1 - First node

  • Node2 - Second node

  • Tx, Ty, Tz - Translational stiffness

  • Rx, Ry, Rz - Rotational stiffness

  • Group - 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 - Name

  • T - Always "FELine"

  • Type - Element type [@Beam/@Truss/@CompressionTruss/@TensionTruss/@Cable/@Inelastic]

  • Node1, Node2 - End nodes

  • Section - Cross-section at start

  • Section2 - Cross-section at end (optional)

  • BetaAngle - Orientation angle

  • Node1OffX/Y/Z, Node2OffX/Y/Z - Global offsets

  • Node1LocalOffX/Y/Z, Node2LocalOffX/Y/Z - Local offsets

  • Node1Tx/Ty/Tz/Rx/Ry/Rz - Node 1 releases

  • Node2Tx/Ty/Tz/Rx/Ry/Rz - Node 2 releases

  • Group - FEGroup assignment

  • CastingDay - 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 - Name

  • T - Always "FESurface"

  • Node1, Node2, Node3, Node4 - Corner nodes

  • Thickness - Element thickness

  • Material - Material properties

  • Node1/2/3/4OffX/Y/Z - Global offsets

  • Node1/2/3/4LocalOffX/Y/Z - Local offsets

  • Node1/2/3/4Tx/Ty/Tz/Rx/Ry/Rz - Node releases

  • Group - FEGroup assignment

  • CastingDay - 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 spacing

  • Segments - Number of segments

  • Pos - Individual stations

  • PosRel - 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 - Name

  • T - Always "FEComposite"

  • Filter - Lambda expression to filter elements (e.g., x.type .EQ. 'Girder')

  • Path - Path along which forces are calculated

  • BetaAngle - Orientation angle for local axes

  • Spacing - Slicing interval

  • Segments - Number of segments

  • Pos - List of stations for results

  • PosRel - List of relative positions

  • Group - 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 - Name

  • T - Always "FEGroup"

  • ParentGroup - Parent FEGroup

  • Filter - 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 - Name

  • T - Always "FEGroupItem"

  • Group - Parent FEGroup

  • Obj - 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 - Name

  • T - Always "AnalysisCase"

  • WeightFactorZ/Y/X - Self-weight factors

  • LoadType - Type of loading (Dead, Live, Wind, etc.)

  • Nonlinear - Enable nonlinear analysis [0/1]

  • Steps - Number of nonlinear steps

  • Iterations - Max iterations

  • Active - Is case active [0/1]

  • Group - Active structure part

  • Parent - 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 - Name

  • T - Always "AnalysisCaseLive"

  • Surface - Group containing loading surface shell elements

  • Fx, Fy, Fz - Unit force magnitudes

  • Mx, My, Mz - Unit moment magnitudes

  • IncX, IncY - Spacing between unit loads

  • LLCoefTol - Tolerance for storing results

  • MPF - Multiple Presence Factor array

  • Lane1-5 - Design lane types

  • Path1-4 - Loading surface definitions

  • Active - Is case active [0/1]

  • Group - Active structure part

  • Parent - Previous case in sequence

  • MaxStressRange - 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 - Name

  • T - Always "StructureState"

  • LC - Analysis case

  • Obj - Object to modify

  • Group - FEGroup

  • WeightFactorZ/Y/X - Self-weight factors

  • Stiffness - 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 - Name

  • T - Always "ConstructionStage"

  • Day - Day number

  • ParentStage - Parent construction stage

  • LoadType - Type of loading

  • Temperature - Temperature

  • Humidity - Humidity percentage

  • ConstMethod - 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 steps

  • Iterations - Max iterations

  • Active - 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 - Name

  • T - Always "ConstructionStageLoading"

  • ConstructionStage - Associated construction stage

  • Case - Analysis case

  • Factor - Load factor

Example:


Last updated