# Cross Project - Soil Structure Interaction

{% hint style="info" %}
This guide walks through performing a soil-structure interaction (SSI) analysis on an isolated substructure model that stays linked to your global bridge model.
{% endhint %}

Once your global model is ready, you can use the following workflow for two purposes:

1. **Nonlinear analysis of substructures** — useful for analyzing slender columns independently.
2. **Soil-Structure Interaction analysis** — incorporate nonlinear springs to evaluate the interaction between the soil and the structure.

The main benefit is that any change to the global model (or any modification that affects analysis results) can be pushed to the substructure model with a single sync. Change management stays simple.

Throughout this article, your existing model (superstructure + substructure) is the **Parent Project**, and the isolated substructure model is the **Child Project**.

## 1. Transfer Model

1. In the Parent Project, navigate to **Organization > Cross-Project Data > Shared Substructure**. Select the support line above the substructure you want to model.

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250324-145548.png?api=v2)
2. Open a new project using the same workflow type as the Parent Project (Steel I-Girder is used in this example). This is the Child Project — it will hold the substructure, soil layers, soil set, etc.

   ![](/files/rVZ77DPI8L6kqwMHDilb)
3. Import the **External References** workflow so the Child Project can reference the parent model. Switch to the External References workflow, select **Project Objects**, then:

   1. Open the three-dot menu and choose **Add Projects…**. In the dialog, select the Parent Project.
   2. Open the three-dot menu again and choose **Select Shared Objects…**. In the dialog, select the **Shared Substructure** object created in step 1.

   ![](/files/S6fn6ke2FOBytw4s3uQE)

   ![](/files/zlHcoT4Ci61ndl5Fe0XM)

   ![](/files/wSyoAM6o3hoJIUDiSA97)
4. Create the Child Model.

   1. Open the three-dot menu and choose **Sync Shared Object…**.
   2. Click **Zoom Extent**. The substructure beneath the selected support line should now be visible.

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250324-152134.png?api=v2)

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-135638.png?api=v2)

{% hint style="info" %}
This method copies the project and also establishes a reference to the Parent Project. Any later change to the Parent Project's substructure is pulled into the Child Project by repeating step 4.
{% endhint %}

## 2. Transfer Results

{% hint style="info" %}
Follow the steps below to transfer analysis results from the Parent Project to the Child Project.
{% endhint %}

1. In the Parent Project, navigate to **Organization > Cross-Project Data > Analysis Results > Bottom of Column Forces**. (See [Bottom of Column Forces](/templates/steel-i-girder-bridge-workflow/organization-sig/cross-project-data-sig/analysis-results-sig/bottom-of-column-forces-sig.md) for details.) Select the column(s) belonging to the substructure, open the three-dot menu, and choose **Extract Results** to extract the forces.

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-132533.png?api=v2)

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-132544.png?api=v2)
2. In the Parent Project, navigate to **Organization > Cross-Project Data > Shared Substructure** and set **Transfer Result Extractions** to **YES**. Results are now ready to sync into the Child Project.

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-135924.png?api=v2)
3. In the Child Project, switch to the **External References** workflow and open **Project Objects**.

   1. Open the three-dot menu and choose **Sync Project…**.
   2. The extracted results now appear under **Project Analysis Results**.

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-140014.png?api=v2)

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-140025.png?api=v2)

{% hint style="info" %}
Results are referenced (not copied), so any change in the Parent Project's results can be pushed to the Child Project by repeating steps 1 and 3 — no manual copy/paste is needed.
{% endhint %}

{% hint style="info" %}
The remaining sections describe the pre/post processes for SSI in OpenBrIM. All changes are made in the Child Project.
{% endhint %}

## 3. Introduce Soil-Structure Interaction Definitions

{% hint style="info" %}
Follow the steps below to define SSI in the Child Project.
{% endhint %}

1. In the Child Project, switch back to your bridge workflow (e.g. Steel I-Girder).

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-132725.png?api=v2)
2. Navigate to **Substructure > Soil-Structure Interaction**. Define the **Soil Layer** and **Soil Set**. (See [Soil Structure Interaction](/templates/steel-i-girder-bridge-workflow/substructure-sig/soil-structure-interaction-sig.md) for details.) The soil definitions are now ready to assign to the Pile / Pile Group.

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-130943.png?api=v2)

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-131004.png?api=v2)
3. Navigate to **Substructure > Pile > Single Pile / Pile Group**. On the **FEA** tab, set **Soil Spring Type** to **Nonlinear Spring from the Soil Set** and choose the Soil Set you just created. Make sure the real pile length is assigned to **Pile Length / Section**. (See [Single Pile](/templates/steel-i-girder-bridge-workflow/substructure-sig/pile-sig/single-pile-sig.md) and [Pile Layout](/templates/steel-i-girder-bridge-workflow/substructure-sig/pile-sig/pile-layout-sig.md).)

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-133030.png?api=v2)

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-133114.png?api=v2)
4. Disable sync on the Pile objects. Because soil definitions need to be assigned in the Pile / Pile Group, open the three-dot menu on each pile object and click **Disable Sync**. Otherwise, the next sync from the Parent Project would overwrite your local changes. Disabled-sync objects show a lock icon at the bottom-right of the name cell and a purple badge in the workflow tree.

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-133429.png?api=v2)

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-133439.png?api=v2)
5. Create the Construction Stages and set the **Nonlinear** option to **YES**. In this example only the piles and footing need to be constructed, since the Bottom of Column force has already been extracted.

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-105942.png?api=v2)

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-110410.png?api=v2)

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-140257.png?api=v2)
6. Navigate to **Loading > Loads > Water Load > Buoyancy**. Buoyancy is applied through this library component. Create it and assign it to its own construction stage.

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-110042.png?api=v2)
7. Assign the Bottom of Column force. Using OpenBrIM's parametric features avoids manual copy/paste later when the model changes:

   1. Navigate to **External References > Project Analysis Results**, select all six forces, open the three-dot menu, and click **Copy Parameter**.
   2. Switch back to the original workflow: **Loading > Loads > Element Loads > Footing Point Load**. Select all six forces, open the three-dot menu, and click **Paste**. An **f(x)** icon appears in the bottom-left of each cell.

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-134127.png?api=v2)

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-212731.png?api=v2)

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-212916.png?api=v2)

## 4. Load Factors and Depth of Fixity

{% hint style="info" %}
The sub-sections below cover Result Combinations and Depth of Fixity in SSI analysis.
{% endhint %}

### 4.1 Load Factors

It is common practice to extract Bottom of Column Forces from a Load Combination Table. When that combined force is used in another model, the model's other loads (footing/pile dead load, water load, earth pressure on a buried footing, etc.) are still unfactored. Engineers must apply the appropriate factors when post-processing.

In practice, apply the self-weight factors and input the loads as factored values.

### 4.2 Depth of Fixity

In the Parent Model, when SSI is not the governing factor, pile foundations can be modeled with the simplified **depth of fixity** approach.

The pile is treated as a beam-column with no support along its length and a fully fixed support at the depth of fixity (the effective length). In OpenBrIM, set **Soil Spring Type** to **Linear Spring** in the Parent Model, then identify the node locations and free all of them except the bottom one.

To find the bottom node location, look at the **Soil-Structure Interaction** model and pick the **second inflection point** of the bending diagram (the second location where the bending moment changes sign along the pile, counted from the pile head). An example is shown below.

![image-20250325-140931.png](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250325-140931.png?api=v2)

#### Which pile should be used to read the results?

Bending diagrams are typically similar across all piles, so any single pile is sufficient for determining the depth of fixity.

#### How to find the bottom node location

Two of several possible methods are shown here. For more details on reading results in OpenBrIM, see [FEA Results \[QG-3\]](/quick-guides/fea-results.md).

**Method 1 — Read the inflection point from the spreadsheet**

1. Open **Composite Element Force > Stage > Composite Object**, click the three-dot menu, and choose **Filter**. Filter to a single pile.
2. Read the second inflection point from the table by interpolating between moment values and global Z values.

![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250414-124628.png?api=v2)

![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250414-124649.png?api=v2)

**Method 2 — Read node coordinates from the FEA view**

Hover over the nodes immediately above and below the second inflection point and read their global (X, Y, Z) locations. Interpolate between the Z values.

![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250414-123054.png?api=v2)

### 4.3 Determine TZ Stiffness for the Parent Model

Instead of a fully fixed support at the pile bottom, you can determine a **TZ stiffness** value from the Child Model and assign it to the bottom node of the piles in the Parent Model.

TZ stiffness is computed as $$TZ = \frac{force}{displacement}$$ at the depth of fixity. Determine the depth of fixity from §4.2, then identify the axial force and displacement at that elevation.

**Read the displacement**

1. Open **Node Displacements (Local) > Stage**.

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250414-124952.png?api=v2)
2. To filter the spreadsheet to the relevant nodes, right-click the nodes above and below the second inflection point in the FEA view. Two rows should appear. (Alternatively, filter by node name from the three-dot menu.)
3. Read the Z displacement values and interpolate to the depth of fixity elevation.

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250414-124908.png?api=v2)

**Read the axial force**

1. Open **FELine Force (Internal) > Stage**.

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250414-133114.png?api=v2)
2. To filter the spreadsheet to the relevant element, right-click the line element at the second inflection point in the FEA view. Two rows should appear. (Alternatively, filter by node name from the three-dot menu.)
3. Read the Fx force values and interpolate to the depth of fixity elevation.

   ![](https://openbrim.atlassian.net/wiki/download/attachments/3030712340/image-20250414-133154.png?api=v2)

Compute $$TZ = \frac{force}{displacement}$$ from the values obtained above.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.openbrim.org/quick-guides/cross-project-soil-structure-interaction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
