To demonstrate the development of a new integration or substructure module for the UT-SIM framework, the following simulation example is used.

This is a two-dimensional cantilever column subjected to a ground motion at the base. The column has a length of 3500 mm and it is assumed to be linear elastic with a lumped mass of 10 tonnes at the top of the column. The column has a sectional area and moment of inertia of 22,500 mm2 and 42,187,500 mm4. The elastic modulus of the column is 200,000 MPa. Structural damping is neglected in this example for simplicity.

The structure is decomposed into one integration model (with no structural element but only the lumped mass and the ground motion) and one substructure model with the elastic column. The communication between the two models is enabled by DataExchange.dll.

## Integration model¶

As the main program to solve the system's equation of motion, the integration model should be implemented with a dynamic integration scheme. The system's equation of motion at the time step $n+1$ can be written as

$Ma_{n+1}+Kd_{n+1}=F_{n+1}$

where $M$ and $K$ are the structural mass and stiffness; $a_{n+1}$ and $a_{n+1}$ are the acceleration and displacement of the system; and $F_{n+1}$ is the earthquake load.

In this example, the $\alpha$ Operator-Splitting scheme (with $\alpha=0$) developed by Hughes et al. () is used. The method involves a predictor step followed by a corrector step for displacement and velocity with the solved acceleration:

Predictor step

$\tilde{d}_{n+1}=d_n+\Delta t v_n + \frac{\Delta t^{2}}{2}(1-2\beta)a_n $

$\tilde{v}_{n+1}=v_n+\Delta t (1-\gamma)a_n$

where $\tilde{d}_{n+1}$ and $\tilde{v}_{n+1}$ are predicted displacement and velocity; $\Delta t$ is the time increment; $\beta$ and $\gamma$ are integration coefficients that are equal to 0.25 and 0.5, respectively, in this example.

Corrector step

$d_{n+1} = \tilde{d}_{n+1} + \Delta t^{2} \beta a_{n+1} $

$v_{n+1} = \tilde{v}_{n+1} + \Delta t a_{n+1}$

After substituting the above to the equation of motion, the acceleration at time step $a_{n+1}$ can be obtained

$ a_{n+1} = (M + \beta \Delta t^2K)^{-1} (F_{n+1} - R(\tilde{d}_{n+1}))$

where $R(\tilde{d}_{n+1})$ is the restoring force with respect to the predicted displacement $\tilde{d}_{n+1}$. In this example, the restoring force is obtained from the substructure model to solve the above equation for $a_{n+1}$.

In each analysis step, the integration module computes tje displacement $\tilde{d}_{n+1}$ and sends it to the substructure model for $R(\tilde{d}_{n+1})$. Once the force is received, it computes $a_{n+1}$ and uses it to update the displacement and velocity at the time step $n+1$ in the corrector step. After that, a new displacement is predicted and the above steps are repeated until the end of the simulation. The dataflow of the simulation is shown below:

## Substructure model¶

The substructure model acts as a server to wait for the connection to the integration model (as a client). The purpose of the substructure model is to compute the restoring force $R(\tilde{d}_{n+1})$ with respect to the displacement $\tilde{d}_{n+1}$ sent from the integration model. As the column included in the substructure model is assumed to be linear-elastic, the restoring force $R(\tilde{d}_{n+1})$ is directly computed by multiplying the stiffness of the column $K$ by the predicted displacement $\tilde{d}_{n+1}$.

## Examples¶

To illustrate the compatibility of the DataExchange library with programs written in different programming languages, the integration and substructure models for the above example are developed in the following languages: C/C++, Fortran, Matlab, and Python.