The following example is used to illustrate the way to configure the Abaqus IntSub and SubSub subroutines for multi-platform simulations.
The example is a two-dimensional one-story one-bay steel frame with a single concentric buckling-restrained brace (BRB) to resist lateral loading. The columns are simply supported at their base and the beam is connected to the columns using simple connections without flexural rigidity. Both columns are 254x254x8.0 HSS members of Class C 350W structural steel. The beam element can be assumed to be an axially rigid element. The core of the BRB consists of a 160mm x 6.4mm steel plate of 300W structural steel. The whole system is supported by a raft foundation founded on dense soil where the soil settlements are negligible. The seismic weight of the system is 2000 KN (equivalent to a seismic mass of 204 tons) and is lumped at the first story.
The structure is decomposed into one Abaqus integration model and one Abaqus substructure model for pushover analysis. Specifically, the beam and columns are modelled with a truss (T2D2) element and two Beam (B21) elements, respectively, in the integration model. The substructure model only includes the BRB modelled with C3D8R 8-node linear brick elements. Communication between the two models is endabled through the user-defined elements (UEL) IntSub and SubSub in the Abaqus integration and substructure models, respectively.
Abaqus Integration Model (UEL IntSub )¶
Compared with the standalone Abaqus model where the complete frame structure with the BRB is modelled, the Abaqus integration model is the same as the standalone model except that the truss (T2D2) element for the BRB in the standalone model are replaced with the UEL (IntSub) as shown below:
*Element, type=B21 1, 1, 2 # right column 4, 4, 3 # left column *Element, type=T2D2 2, 3, 1 # beam 3, 4, 1 # BRB
*Element, type=B21, elset=column 1, 1, 2 # right column 3, 4, 3 # left column *Element, type=T2D2, elset=beam 2, 3, 1 # beam ******************** *** UEL (IntSub) *** ******************** *USER ELEMENT, TYPE=U1, NODES=2, COORDINATES=2, PROPERTIES = 6, VARIABLES = 12 1, 2, 6 *ELEMENT, TYPE=U1, ELSET=user 999,4,1 *UEL PROPERTY, ELSET=user 8090, 1, 3, 4, 2, 1, 22962.467, 12628.942, 0, -22962.467, -12628.942, 0, 12628.942, 6945.690, 0, -12628.942, -6945.690, 0, 0, 0, 0, 0, 0, 0, -22962.467, -12628.942, 0, 22962.467, 12628.942, 0, -12628.942, -6945.690, 0, 12628.942, 6945.690, 0, 0, 0, 0, 0, 0, 0
The UEL properties are explained below:
*ELEMENT, TYPE=U1, ELSET=user
- TYPE - Set this parameter equal to the element type, as defined in *USER ELEMENT
- ELSET - Set this parameter equal to the name of the element set to which these elements will be assigned
- The data line next to the keyword *ELEMENT defines
- Element number, e.g. 999
- First node number forming the element, e.g. 4
- Second node number forming the element, e.g. 1
- Etc., up to 15 node numbers on this line
*USER ELEMENT, TYPE=U1, NODES=2, COORDINATES=2, PROPERTIES = 6, VARIABLES = 12
1, 2, 6
- The data line(s) after the keyword *USER ELEMENT defines the list of active degrees of freedom (DOFs) of the element
- The first line is used for the active DOFs at the first node of the element. The DOFs are always referred to as follows:
- 1 - x-displacement
- 2 - y-displacement
- 3 - z-displacement
- 4 - Rotation about the x-axis, in radians
- 5 - Rotation about the y-axis, in radians
- 6 - Rotation about the z-axis, in radians
- The second line if the active DOFs are different at subsequent interface nodes
- NODES - This parameter defines the number of interface nodes enabled for communication. In this example, there are two interface nodes, i.e. Node 4 and Node 1 as specified in *ELEMENT.
- COORDINATES - This parameter defines the number of coordinate values. Since the example is a two-dimensional problem, the number of coordinates is two.
- PROPERTIES - This is the parameter to define the number of property values (in addition to the stiffness values) needed as data in user subroutine UEL as defined in *UEL PROPERTY command.
- VARIABLES - This parameter indicates the maximum size of data to be transmitted between the integration and substructure models. Once the predicted displacements are sent from the Abaqus integration model to the substructure model, the substructure module computes the restoring forces of the BRB. And then both the received displacements and computed forces will be sent back to the integration model. The number of the total enabled DOFs of the interface nodes in this example is 6 (3 DOFs per interface node). Therefore, the VARIABLES parameter is equal to 12 for a $6\times1$ displacement vector and a $6\times1$ force vector as shown below
*UEL PROPERTY, ELSET=user
8090, 1, 3, 4, 2, 1, 22962.467, 12628.942,
0, -22962.467, -12628.942, 0, 12628.942, 6945.690, 0, -12628.942,
-6945.690, 0, 0, 0, 0, 0, 0, 0,
-22962.467, -12628.942, 0, 22962.467, 12628.942, 0, -12628.942, -6945.690,
0, 12628.942, 6945.690, 0, 0, 0, 0, 0,
- The first VARIABLE (as specified in *USER ELEMENT) number of values defines the following
- Port number, e.g. 8090
- Communication protocol
- 1 - TCP/IP and
- 2 - UDP
- Substructure module (for information only)
- 1 - OpenSees
- 2 - Zeus-NL
- 3 - Abaqus
- 4 - VecTor2
- 5 - Physical specimen
- 6 -
- Simulation mode (for information only)
- 1 - ramp and hold
- 2 - continuous
- 3 - real-time
- 4 - numerical multi-platform
- Data precision
- 1 - single precision
- 2 - double precision
- Initial stiffness flag
- 0 - No predefined initial stiffness of the substructure model in the Abaqus integration model. The initial stiffness is retrieved from the substructure model directly through the network.
- 1 - The initial stiffness of the substructure model is predefined in the Abaqus integration model and the stiffness values are included hereafter. It should be noted each data line allows no more than eight values.
Abaqus Substructure Model (UEL SubSub )¶
In addition to the C3D8R element to model the BRB, a UEL (SubSub) element is included in the Abaqus substructure model as shown below. This element works as IntSub in the Abaqus integration model to transfer data at the interface nodes.
The command to define the UEL (SubSub) for the example frame structure is shown below:
******************** *** UEL (SubSub) *** ******************** *USER ELEMENT, TYPE=U1, NODES=2, COORDINATES=6, PROPERTIES = 3, VARIABLES = 12 1, 2, 6 *ELEMENT, TYPE=U1, ELSET=Adapter 999, 9998,9999 *UEL PROPERTY, ELSET=Adapter 8090, 1, 10000000.
Similar to IntSub, SubSub uses the same *USER ELEMENT and *ELEMENT commands to define the interface nodes and effective/active DOFs for communication. However, it only has three elemental properties (e.g. 8090, 1, 10000000) compared with six in IntSub. The three properties include:
- Port number, e.g. 8090
- Communication protocol
- 1 - TCP/IP and
- 2 - UDP
- Penalty factor - this parameter is required for imposing the received displacement from the integration model on the interface nodes in the substructure model. The penalty value should be large enough to ensure that the interface nodes of both integration and substructure models have consistent displacements. However, a too large value could lead to convergence issues.
As a slave program, the Abaqus substructure model runs static analysis based on the displacement commands sent from the integration model. The Abaqus analysis commands for computing the restoring forces of the BRB are shown below
******************** *** Analysis *** ******************** *Step, name=LatLoad, nlgeom=no, inc=100000000 *Static 1.0,100000000,1,1 *NODE PRINT U1,U2,RF1,RF2 *END STEP
Theoretically, the total number of analysis steps defined in the Abaqus substructure model should be consistent with the number of times that the integration model sends the displacement data to the substructure model. However, due to the potential iterations involved in the integration model, the total number of the analysis is unknown before the simulation. Therefore, a large number of analysis steps (e.g. 100000000 in this example) should be used in the substructure model to cover the possible number of iterations in the integration model.
Upon completion of the above configurations, the simulation can be performed by first running the Abaqus substructure model followed by starting the OpenSees integration model.
- To run Abaqus substructure model, execute the following command in the command window
C:\Users\YOUR_USERNAME> abaqus job=AbqSub user=SubSub -interactive
- To run Abaqus integration model, execute the following command in the command window
C:\Users\YOUR_USERNAME> abaqus job=AbqInt user=IntSub -interactive
The multi-platform/hybrid simulation result compared with the standalone/complete OpenSees model is shown below:
The above simulation example can be downloaded from here.