Main Content

structuralBC

(To be removed) Specify boundary conditions for structural model

structuralBC will be removed. Use edgeBC and faceBC instead. (since R2023a) For more information on updating your code, see Version History.

Description

Standard Boundary Constraints and Displacements

structuralBC(structuralmodel,RegionType,RegionID,"Constraint",Cval) specifies one of the standard structural boundary constraints. Here, Cval can be "fixed", "free", "roller", or "symmetric". The default value is "free".

Avoid using "symmetric" for transient and modal analysis, since the symmetric constraint can prevent the participation of some structural modes.

example

structuralBC(structuralmodel,RegionType,RegionID,"Displacement",Dval) enforces displacement on the boundary of type RegionType with RegionID ID numbers.

structuralBC(structuralmodel,RegionType,RegionID,"XDisplacement",XDval,"YDisplacement",YDval,"ZDisplacement",ZDval) specifies the x-, y-, and z-components of the enforced displacement.

structuralBC does not require you to specify all three components. Depending on your structural analysis problem, you can specify one or more components by picking the corresponding arguments and omitting others.

structuralBC(structuralmodel,RegionType,RegionID,"RDisplacement",RDval,"ZDisplacement",ZDval) specifies the r- and z-components of the enforced displacement for an axisymmetric model. The radial component (r-component) must be zero on the axis of rotation.

structuralBC does not require you to specify both components.

Harmonic, Rectangular, Triangular, and Trapezoidal Displacement Pulses

structuralBC(structuralmodel,RegionType,RegionID,"XDisplacement",XDval,Name,Value)specifies the form and duration of the time-varying value of the x-component of the enforced displacement. You can also specify the form and duration of the other components of the displacement as follows:

  • structuralBC(...,"YDisplacement",YDval,Name,Value) for the y-component.

  • structuralBC(...,"ZDisplacement",ZDval,Name,Value) for the z-component. Use this syntax for a 3-D or axisymmetric model.

  • structuralBC(...,"RDisplacement",RDval,Name,Value) for the radial component in an axisymmetric model.

Multipoint Constraint

structuralBC(structuralmodel,RegionType,RegionID,"Constraint","multipoint") sets the multipoint constraint using all degrees of freedom on the combination of geometric regions specified by RegionType and RegionID. The reference location for the constraint is the geometric center of all nodes on the combination of all specified geometric regions.

This syntax is required if you intend to use results obtained with the model order reduction technique in the Simscape™ Multibody™ Reduced Order Flexible Solid block. Simscape models expect the connections at all joints to have six degrees of freedom, while Partial Differential Equation Toolbox™ uses two or three degrees of freedom at each node. Setting a multipoint constraint ensures that all nodes and all degrees of freedom for the specified geometric regions have a rigid constraint with the geometric center of all specified geometric regions altogether as the reference point. The reference location has six degrees of freedom.

For better performance, specify geometric regions with a minimal number of nodes. For example, use a set of edges instead of using a face, and a set of vertices instead of using an edge.

structuralBC(___,"Reference",Coords) specifies the reference point for the multipoint constraint instead of using the geometric center of all specified regions as a reference point.

Use this syntax with the input arguments from the previous syntax.

structuralBC(___,"Reference",Coords,"Radius",R) restricts the region for multipoint constraint to nodes within the circle (for a 2-D geometry) or sphere (for a 3-D geometry) of radius R around the reference point.

Sparse Linear Models for Use with Control System Toolbox

structuralBC(___,"Label",labeltext) adds a label for the structural boundary condition to be used by the linearizeInput function. This function lets you pass boundary conditions to the linearize function that extracts sparse linear models for use with Control System Toolbox™.

Vectorized Evaluation for Function Handles

structuralBC(___,"Vectorized","on") uses vectorized function evaluation when you pass a function handle as an argument. If your function handle computes in a vectorized fashion, then using this argument saves time. See Vectorization. For details on this evaluation, see Nonconstant Boundary Conditions.

Use this syntax with any of the input arguments from previous syntaxes.

Structural Boundary Condition Object

bc = structuralBC(___) returns the structural boundary condition object using any of the input arguments from previous syntaxes.

Examples

collapse all

Apply fixed boundaries and traction on two ends of a bimetallic cable.

Create a structural model.

structuralModel = createpde("structural","static-solid");

Create nested cylinders to model a bimetallic cable.

gm = multicylinder([0.01,0.015],0.05);

Assign the geometry to the structural model and plot the geometry.

structuralModel.Geometry = gm;
pdegplot(structuralModel,"CellLabels","on", ...
                         "FaceLabels","on", ...
                         "FaceAlpha",0.4)

Figure contains an axes object. The axes object contains 6 objects of type quiver, text, patch, line.

For each metal, specify Young's modulus and Poisson's ratio.

structuralProperties(structuralModel,"Cell",1,"YoungsModulus",110E9, ...
                                              "PoissonsRatio",0.28);
structuralProperties(structuralModel,"Cell",2,"YoungsModulus",210E9, ...
                                              "PoissonsRatio",0.3);

Specify that faces 1 and 4 are fixed boundaries.

structuralBC(structuralModel,"Face",[1,4],"Constraint","fixed")
ans = 
  StructuralBC with properties:

                RegionType: 'Face'
                  RegionID: [1 4]
                Vectorized: 'off'

   Boundary Constraints and Enforced Displacements
              Displacement: []
             XDisplacement: []
             YDisplacement: []
             ZDisplacement: []
                Constraint: "fixed"
                    Radius: []
                 Reference: []
                     Label: []

   Boundary Loads
                     Force: []
           SurfaceTraction: []
                  Pressure: []
    TranslationalStiffness: []
                     Label: []

Specify the surface traction for faces 2 and 5.

structuralBoundaryLoad(structuralModel, ...
                          "Face",[2,5], ...
                          "SurfaceTraction",[0;0;100])
ans = 
  StructuralBC with properties:

                RegionType: 'Face'
                  RegionID: [2 5]
                Vectorized: 'off'

   Boundary Constraints and Enforced Displacements
              Displacement: []
             XDisplacement: []
             YDisplacement: []
             ZDisplacement: []
                Constraint: []
                    Radius: []
                 Reference: []
                     Label: []

   Boundary Loads
                     Force: []
           SurfaceTraction: [3×1 double]
                  Pressure: []
    TranslationalStiffness: []
                     Label: []

Input Arguments

collapse all

Structural model, specified as a StructuralModel object. The model contains the geometry, mesh, structural properties of the material, body loads, boundary loads, and boundary conditions.

Example: structuralmodel = createpde("structural","transient-solid")

Geometric region type, specified as "Vertex", "Edge", or, for a 3-D model, "Face".

You cannot use the following geometric region types if you specify the "roller" or "symmetric" value for the boundary constraint Cval:

  • "Edge" for a 3-D model

  • "Vertex" for a 2-D or 3-D model

Example: structuralBC(structuralmodel,"Face",[2,5],"XDisplacement",0.1)

Data Types: char | string

Geometric region ID, specified as a vector of positive integers. Find the region IDs by using pdegplot.

Example: structuralBC(structuralmodel,"Face",[2,5],"XDisplacement",0.01)

Data Types: double

Displacement

Enforced displacement, specified as a numeric vector or function handle. A numeric vector must contain two elements for a 2-D model (including axisymmetric models) and three elements for a 3-D model. The function must return a two-row matrix for a 2-D model and a three-row matrix for a 3-D model. Each column of the matrix must correspond to an enforced displacement vector at the boundary coordinates provided by the solver. In case of a transient or frequency response analysis, Dval also can be a function of time or frequency, respectively. For details, see More About.

Note that when you specify Dval for an axisymmetric model, the radial displacement on the axis of rotation must always be zero.

Example: structuralBC(structuralmodel,"Face",[2,5],"Displacement",[0;0;0.01])

Data Types: double | function_handle

x-component of enforced displacement, specified as a number or function handle. The function must return a row vector. Each element of this vector corresponds to the x-component value of the enforced displacement at the boundary coordinates provided by the solver. In case of a transient or frequency response analysis, XDval also can be a function of time or frequency, respectively. For details, see More About.

Example: structuralBC(structuralmodel,"Face",[2,5],"XDisplacement",0.01)

Data Types: double | function_handle

y-component of enforced displacement, specified as a number or function handle. The function must return a row vector. Each element of this vector corresponds to the y-component value of the enforced displacement at the boundary coordinates provided by the solver. In case of a transient or frequency response analysis, YDval also can be a function of time or frequency, respectively. For details, see More About.

Example: structuralBC(structuralmodel,"Face",[2,5],"YDisplacement",0.01)

Data Types: double | function_handle

z-component of enforced displacement, specified as a number or function handle. The function must return a row vector. Each element of this vector corresponds to the z-component value of the enforced displacement at the boundary coordinates provided by the solver. For a transient or frequency response analysis, ZDval also can be a function of time or frequency, respectively. For details, see More About.

You can specify ZDval for a 3-D or axisymmetric model.

Example: structuralBC(structuralmodel,"Face",[2,5],"ZDisplacement",0.01)

Data Types: double | function_handle

r-component of enforced displacement, specified as a number or function handle. The function must return a row vector. Each element of this vector corresponds to the r-component value of the enforced displacement at the boundary coordinates provided by the solver. For a transient or frequency response analysis, RDval also can be a function of time or frequency, respectively. For details, see More About.

You can specify RDval only for an axisymmetric model. RDval must be zero on the axis of rotation.

Example: structuralBC(structuralmodel,"Face",[2,5],"RDisplacement",0.01)

Data Types: double | function_handle

Standard structural boundary constraints, specified as "free","fixed","roller", "symmetric", or "multipoint".

You cannot use the "roller" and "symmetric" values with the following geometric region types:

  • "Edge" for a 3-D model

  • "Vertex" for a 2-D or 3-D model

Example: structuralBC(structuralmodel,"Face",[2,5],"Constraint","fixed")

Data Types: char | string

Reference point location for the multipoint constraint, specified as a 2-by-1 (for a 2-D geometry) or 3-by-1 (for a 3-D geometry) numeric vector.

Example: structuralBC(structuralmodel,"Vertex",[1,3,5:10],"Constraint","multipoint","Reference",[0;0;1])

Data Types: double

Radius of a circle (for a 2-D geometry) or a sphere (for a 3-D geometry) around the reference point location for the multipoint constraint, specified as a positive number.

Example: structuralBC(structuralmodel,"Vertex",[1,3,5:10],"Constraint","multipoint","Reference",[0;0;1],"Radius",0.2)

Data Types: double

Label for the structural boundary condition, specified as a character vector or a string.

Data Types: char | string

Name-Value Arguments

expand all

Example: structuralBC(structuralmodel,"Face",[2,5],"XDisplacement",0.01,"RiseTime",0.5,"FallTime",0.5,"EndTime",3)

Use one or more name-value pair arguments to specify the form and duration of the time-varying value of a component of displacement. Specify the displacement value using one of the following arguments: XDval, YDval, ZDval, or RDval. You cannot use these name-value pair arguments to specify more than one time-varying component or to specify the Dval value.

You can model rectangular, triangular, and trapezoidal displacement pulses. If the start time is 0, you do not need to specify it.

  • For a rectangular pulse, specify the start and end times.

  • For a triangular pulse, specify the start time and any two of the following times: rise time, fall time, and end time. You also can specify all three times, but they must be consistent.

  • For a trapezoidal pulse, specify all four times.

Trapezoidal pulse showing the start, rise, fall, and end times

You can model a harmonic displacement by specifying its frequency and initial phase. If the initial phase is 0, you do not need to specify it.

Harmonic displacement showing the frequency and the initial phase

Rectangular, Triangular, or Trapezoidal Pulse

expand all

Start time for the displacement component, specified as 0 or a positive number. Specify this argument only for transient structural models.

Example: structuralBC(structuralmodel,"Face",[2,5],"XDisplacement",0.01,"StartTime",1,"EndTime",3)

Data Types: double

End time for the displacement component, specified as a positive number equal or greater than the start time value. Specify this argument only for transient structural models.

Example: structuralBC(structuralmodel,"Face",[2,5],"XDisplacement",0.01,"StartTime",1,"EndTime",3)

Data Types: double

Rise time for the displacement component, specified as a positive number. Specify this argument only for transient structural models.

Example: structuralBC(structuralmodel,"Face",[2,5],"XDisplacement",0.01,"RiseTime",0.5,"FallTime",0.5,"EndTime",3)

Data Types: double

Fall time for the displacement component, specified as a positive number. Specify this argument only for transient structural models.

Example: structuralBC(structuralmodel,"Face",[2,5],"XDisplacement",0.01,"RiseTime",0.5,"FallTime",0.5,"EndTime",3)

Data Types: double

Harmonic Displacement

expand all

Frequency of a sinusoidal displacement component value, specified as a positive number in radians per unit of time. Specify this argument only for transient structural models.

Example: structuralBC(structuralmodel,"Face","XDisplacement",0.01,"Frequency",25)

Data Types: double

Phase of a sinusoidal displacement component value, specified as a positive number in radians. Specify this argument only for transient structural models.

Example: structuralBC(structuralmodel,"Face",[2,5],"XDisplacement",0.01,"Frequency",25,"Phase",pi/6)

Data Types: double

Output Arguments

collapse all

Handle to the boundary condition, returned as a StructuralBC object. See StructuralBC Properties.

More About

collapse all

Tips

  • Restrain all rigid body motions by specifying as many boundary conditions as needed. If you do not restrain all rigid body motions, the entire geometry can freely rotate or move. The resulting linear system of equations is singular. The system can take a long time to converge, or it might not converge at all. If the system converges, the solution includes a large rigid body motion in addition to deformation.

Version History

Introduced in R2017b

expand all