Plate Girder Bridge

Define the Bridge Alignment

The bridge alignment can be imported to Rhino or Grasshopper from an external file (e.g. from a SOFiSTiK database using the ReadAxisCdb component) or can be simple drawn in Rhino. To use a Rhino curve, add a Curve component to the Grasshopper canvas, right click on it and select “Set one Curve”, then pick the Rhino curve.

Note: Later on we will define stations along the bridge alignment. Use the Reparameterize Curve component to make sure stations are always at the correct location (in case the original curve has been stretched) or if you would like to map station values to a projected plane (e.g. the x-y plane).


Figure 3. GH Script: Bridge Axis

Define the Superstructure Cross Section

Cross sections can be used for both the geometric and the analytical models. As shown in Figure 4., there are different ways to define cross sections. For example, they can be imported from a SOFiSTiK database with the ReadSectionCdb component or they can be imported from a library of predefined sections using the ReadSectionLibrary component. You can also create an arbitrary section by simply drawing it in Rhino using the SectionFromBrep component.


Figure 4. gh_sofistik Section Components

Reading a Section from a JSON File

The deck section used in this example has beed defined using JSON format. The file called “Deck Slab - 5 Girders [in].json” is included in the project files. Bring it into the project by using the ReadSectionJSON component.


Figure 5. GH Script: Cross Section Definition

Use the Modify Section component to change any of the cross section dimensions. The Section Attributes component adds important cross section properties needed for the analytical model, like the section id, section name, and material number. The section can be visualized in Rhino using View Section.


Figure 6. GH Script: Deck Cross Section


Figure 7. Deck Cross Section Visualization in Rhino


Figure 8. GH Script: Girder Cross Section


Figure 9. Girder Cross Section Visualization in Rhino

Use the Composite Section component to assemble the full superstructure section. The concrete deck is the master section and the steel plate girders are the sub-sections. To attach the girders at the right locations, a list of master section reference points G1, G2, G3 and G4 must be provided. SOFiSTiK Grasshopper components support the use of “wild cards”. As an example, it´s possible to utilize the input G* to refer to all cross-section points starting with the letter G.


Figure 10. GH Script: Composite Section


Figure 11. Composite Cross Section Visualization in Rhino

Axis Placements

The Axis Placement component defines important planes or stations along the bridge alignment. In SOFiSTiK, these stations are called “Placements”. Placements of Type “S” indicate the location of supports. This information is used by the program to define the span-layout of the bridge.

Note: Later in the workflow, other SOFiSTiK components will require the input of “stations”. They can be provided as numerical station values, station names or span-stations.

Placements can be rotated around the bridge alignment’s local x-axis, resulting in a rotation of the superstructure or superelevation. Similarly, placements can be rotated around the alignment’s local z-axis, resulting in a skew. If the alignment has a vertical inclination, users can specify whether placements should remain vertical or perpendicual to the bridge axis.


Figure 12. GH Script: Axis Placements

Axis Definition

The Axis Definition component collects the road alignment, the composite section and the placements, and builds the basis for the bridge geometric and analytical models. Clicking on the component will preview the placements in Rhino. The Interpolate Solid component creates a solid volume object of the bridge superstructure. By default, the solid is split at the placements. From a data structure perspective, every segment is stored in a separate tree branch. Right clicking on the Interpolate Solid component and pressing “Bake” will bring the 3d objects of the bridge superstructure into Rhino.


Figure 13. GH Script: Axis Definition and Superstructure Geometric Model


Figure 14. Baked Superstructure and Placements

Superstructure Analytical Model

Deck Structural Areas

In the previous tutorial, The Interpolate Curve component was used to define the analytical curves of the superstructure spine model. Interpolate Surface works similarly but goes one step further. It uses curves of interpolated points to create surfaces between placements. The component organizes the areas between any 2 placements (transversally) in lists, and the groups of areas (longitudinally) in separate tree branches. The Interpolate Surface component can be used directly as input for the Structural Area component.


Figure 15. GH Script: Deck Structural Areas


Figure 16. Rhino Preview of the Deck Analytical Areas and their Structural Properties

Plate Girder Structural Lines (Flanges) and Structural Areas (Webs)

In this example, the analytical model of the plate girders is defined using structural lines for the flanges and structural areas for the webs. This is achieved by using Interpolate Curve components to define top and bottom flanges, then Ruled Surface to define the webs.


Figure 17. GH Script: Plate Girder Structural Lines (Flanges) and Structural Areas (Webs)


Figure 18. Rhino Preview of the Plate Girder Analytical Lines and Areas and their Structural Properties


Couplings are needed to connect the deck with the girder top flanges. Use Interpolate Curve components to define the locations for the couplings.


Figure 19. GH Script: Couplings


Figure 20. Rhino Preview of the Superstructure including the Couplings linking the Deck and the Girders

Secondary Axes

Use the Geometric Axis component to define secondary axes at the location of the girders. These will be needed for force integration using Design Elements later down the road.

Note: The FE-model of this bridge will contain both beam and shell elements. In SOFiSTiK, you can use Design Elements to get integrated (non-composite and composite) beam-forces, which are typically required by design standards.


Figure 21. GH Script: Secondary Axes

Superstructure Support Conditions

The Evaluate Section component is used to retrieve cross section points at a given station or list of stations. This can be used to define the superstructure´s analytical supports (Structural Points). To define all support conditions in one step, you can use the Entwine component. Input data will be organzed in 4 sepparate tree branches. Remember: SOFiSTiK components organize data belonging to each placement in lists, and separates data between the placements in tree branches.


Figure 22. GH Script: Superstructure Support Conditions


Figure 23. Rhino Preview of the Superstructure Analytical Supports

Additional Superstructure Components

Cross frames and stiffeners have been defined using Clusters. Clusters summarize and hide part of the script. They help keep the canvas clean and organized. Also, clusters can be saved and reused on other projects.


Figure 24. GH Script: Cross Frames


Figure 25. GH Script: Vertical Stiffeners


Figure 26. Rhino Preview of Cross Frames and Stiffeners

Substructure Geometric Model

In this example, predefined clusters are used to define piers and abutments.


Figure 27. GH Script: Bent definition using Clusters


Figure 28. Preview of the Superstructure with Bents


Figure 29. GH Script: Abutment definition using Clusters


Figure 30. Preview of the Superstructure with Abutments

Generating a SOFiSTiK Model

Structural Elements

Use the SOFiMSHC component to automatically generate the code needed to run the structural model and create a finite element model in SOFiSTiK. Use the Text File component to stream the generated data into your project folder. Save the file as “geometry.dat”.


Figure 31. GH Script: Data for SOFiSTiK - Structural Elements


Use the SOFiLOAD component to automatically generate the code needed to run loads in SOFiSTiK. Use the Text File component to stream the generated data into your project folder. Save the file as “loads.dat”.


Figure 32. GH Script: Data for SOFiSTiK - Loads

Reading the Data in SSD

In SSD, use a Text Editor Task to read in the data coming from Grasshopper using “#include”. After running the task, the updated model will appear in SSD.


Figure 33. Reading the .dat Files in SSD


Figure 34. Model View in System Visualization