# structuralIC

Set initial conditions for a transient structural model

## Syntax

``structuralIC(structuralmodel,'Displacement',u0,'Velocity',v0)``
``structuralIC(___RegionType,RegionID)``
``structuralIC(structuralmodel,Sresults)``
``structuralIC(structuralmodel,Sresults,iT)``
``struct_ic = structuralIC(___)``

## Description

example

````structuralIC(structuralmodel,'Displacement',u0,'Velocity',v0)` sets initial displacement and velocity for the entire geometry.```

example

````structuralIC(___RegionType,RegionID)` sets initial displacement and velocity for a particular geometry region using the arguments from the previous syntax.```

example

````structuralIC(structuralmodel,Sresults)` sets initial displacement and velocity using the solution `Sresults` from a previous structural analysis on the same geometry. If `Sresults` is obtained by solving a transient structural problem, then `structuralIC` uses the solution `Sresults` for the last time-step.```
````structuralIC(structuralmodel,Sresults,iT)` uses the solution `Sresults` for the time-step `iT` from a previous structural analysis on the same geometry.```
````struct_ic = structuralIC(___)` returns a handle to the structural initial conditions object.```

## Examples

collapse all

Specify initial velocity values for the entire geometry and for a particular face.

Create a transient dynamic model for a 3-D problem.

`structuralmodel = createpde('structural','transient-solid');`

Create a geometry and include it into the model. Plot the geometry.

```gm = multicuboid(0.06,0.005,0.01); structuralmodel.Geometry = gm; pdegplot(structuralmodel,'FaceLabels','on','FaceAlpha',0.5) view(50,20)``` Specify the zero initial velocity on the entire geometry. When you specify only the initial velocity or initial displacement, `structuralIC` assumes that the omitted parameter is zero. For example, here the initial displacement is also zero.

`structuralIC(structuralmodel,'Velocity',[0;0;0])`
```ans = GeometricStructuralICs with properties: RegionType: 'Cell' RegionID: 1 InitialDisplacement: [] InitialVelocity: [3x1 double] ```

Update the initial velocity on face 2 to model impulsive excitation.

`structuralIC(structuralmodel,'Face',2,'Velocity',[0;60;0])`
```ans = GeometricStructuralICs with properties: RegionType: 'Face' RegionID: 2 InitialDisplacement: [] InitialVelocity: [3x1 double] ```

Specify initial z-displacement to be dependent on the coordinates x and y.

Create a transient dynamic model for a 3-D problem.

`structuralmodel = createpde('structural','transient-solid');`

Create the geometry and include it into the model. Plot the geometry.

```gm = multicuboid(0.06,0.005,0.01); structuralmodel.Geometry = gm; pdegplot(structuralmodel,'FaceLabels','on','FaceAlpha',0.5) view(50,20)``` Specify the zero initial displacement on the entire geometry.

`structuralIC(structuralmodel,'Displacement',[0;0;0])`
```ans = GeometricStructuralICs with properties: RegionType: 'Cell' RegionID: 1 InitialDisplacement: [3x1 double] InitialVelocity: [] ```

Now change the initial displacement in the z-direction on face 2 to a function of the coordinates x and y:

`$\mathit{u}\left(0\right)=\left[\begin{array}{c}0\\ 0\\ {\mathit{x}}^{2}+{\mathit{y}}^{2}\end{array}\right]$`

Write the following function file. Save it to a location on your MATLAB® path.

`function uinit = initdisp(location)`

` M = length(location.x);`

` uinit = zeros(3,M);`

` uinit(3,:) = location.x.^2 + location.y.^2;`

Pass the initial displacement to your structural model.

`structuralIC(structuralmodel,'Face',2,'Displacement',@initdisp)`
```ans = GeometricStructuralICs with properties: RegionType: 'Face' RegionID: 2 InitialDisplacement: @initdisp InitialVelocity: [] ```

Use a static solution as an initial condition for a dynamic structural model.

Create a static model.

`staticmodel = createpde('structural','static-solid');`

Create the geometry and include it in the model. Plot the geometry.

```gm = multicuboid(0.06,0.005,0.01); staticmodel.Geometry = gm; pdegplot(staticmodel,'FaceLabels','on','FaceAlpha',0.5) view(50,20)``` Specify the Young's modulus, Poisson's ratio, and mass density.

```structuralProperties(staticmodel,'YoungsModulus',210E9, ... 'PoissonsRatio',0.3,... 'MassDensity',7800);```

Apply the boundary condition and static load.

```structuralBC(staticmodel,'Face',5,'Constraint','fixed'); structuralBoundaryLoad(staticmodel,'Face',3,'SurfaceTraction',[0;1E6;0]);```

Generate a mesh and solve the model.

```generateMesh(staticmodel,'Hmax',0.02); Rstatic = solve(staticmodel);```

Create a dynamic model and assign geometry.

```dynamicmodel = createpde('structural','transient-solid'); gm = multicuboid(0.06,0.005,0.01); dynamicmodel.Geometry = gm;```

Apply the boundary condition.

`structuralBC(dynamicmodel,'Face',5,'Constraint','fixed');`

Generate a mesh.

`generateMesh(dynamicmodel,'Hmax',0.02);`

Specify the initial condition using the static solution.

`structuralIC(dynamicmodel,Rstatic)`
```ans = NodalStructuralICs with properties: InitialDisplacement: [113x3 double] InitialVelocity: [113x3 double] ```

## Input Arguments

collapse all

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

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

Initial displacement, specified as a numeric vector or function handle. A numeric vector must contain two elements for a 2-D model and three elements for a 3-D model. The elements represent the components of initial displacement.

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 corresponds to the initial displacement at the coordinates provided by the solver. For details, see More About.

Example: `structuralIC(structuralmodel,'Face',[2,5],'Displacement',[0;0;0.01])`

Data Types: `double` | `function_handle`

Initial velocity, specified as a numeric vector or function handle. A numeric vector must contain two elements for a 2-D model and three elements for a 3-D model. The elements represent the components of initial velocity.

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 corresponds to the initial velocity at the coordinates provided by the solver. For details, see More About.

Example: `structuralIC(structuralmodel,'Face',[2,5],'Displacement',[0;0;0.01],'Velocity',[0;60;0])`

Data Types: `double` | `function_handle`

Geometric region type, specified as `'Face'`, `'Edge'`, `'Vertex'`, or `'Cell'`.

When you apply multiple initial condition assignments, the solver uses these precedence rules for determining the initial condition.

• For multiple assignments to the same geometric region, the solver uses the last applied setting.

• For separate assignments to a geometric region and the boundaries of that region, the solver uses the specified assignment on the region and chooses the assignment on the boundary as follows. The solver gives an `'Edge'` assignment precedence over a `'Face'` assignment, even if you specify a `'Face'` assignment after an `'Edge'` assignment. The precedence levels are `'Vertex` (highest precedence), `'Edge'`, `'Face'`, `'Cell'` (lowest precedence).

• For an assignment made with the `results` object, the solver uses that assignment instead of all previous assignments.

Example: `structuralIC(structuralmodel,'Face',[2,5],'Displacement',[0;0;0.01],'Velocity',[0;60;0])`

Data Types: `char`

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

Example: `structuralIC(structuralmodel,'Face',[2,5],'Displacement',[0;0;0.01],'Velocity',[0;60;0])`

Data Types: `double`

Structural model solution, specified as a `StaticStructuralResults` or `TransientStructuralResults` object. Create `Sresults` by using `solve`.

Time index, specified as a positive integer.

Example: `structuralIC(structuralmodel,Sresults,21)`

Data Types: `double`

## Output Arguments

collapse all

Handle to initial conditions, returned as a `GeometricStructuralICs` or `NodalStructuralICs` object. See GeometricStructuralICs Properties and NodalStructuralICs Properties.

`structuralIC` associates the structural initial condition with the geometric region in the case of a geometric assignment, or the nodes in the case of a results-based assignment.

collapse all

### Specifying Nonconstant Parameters of a Structural Model

Use a function handle to specify the following structural parameters when they depend on space and, depending of the type of structural analysis, either time or frequency:

• Surface traction on the boundary

• Pressure normal to the boundary

• Concentrated force at a vertex

• Distributed spring stiffness for each translational direction used to model elastic foundation

• Enforced displacement and its components

• Initial displacement and velocity

For example, use function handles to specify the pressure load, x-component of the enforced displacement, and the initial displacement for this model.

```structuralBoundaryLoad(model,'Face',12,'Pressure',@myfun) structuralBC(model,'Face',2,'XDisplacement',@myfun) structuralIC(model,'Face',12,'Displacement',@myfun)```

The function must be of the form:

`function structuralVal = myfun(location,state)`

The solver passes the `location` and `state` data to your function.

• `location` — A structure containing these fields:

• `location.x` — The x-coordinate of the point or points

• `location.y` — The y-coordinate of the point or points

• `location.z` — For a 3-D or an axisymmetric geometry, the z-coordinate of the point or points

• `location.r` — For an axisymmetric geometry, the r-coordinate of the point or points

Furthermore, for boundary conditions, the solver passes these data in the `location` structure:

• `location.nx`x-component of the normal vector at the evaluation point or points

• `location.ny`y-component of the normal vector at the evaluation point or points

• `location.nz` — For a 3-D or an axisymmetric geometry, z-component of the normal vector at the evaluation point or points

• `location.nz` — For an axisymmetric geometry, z-component of the normal vector at the evaluation point or points

• `state` — A structure containing these fields for dynamic structural problems:

• `state.time` contains the time at evaluation points.

• `state.frequency` contains the frequency at evaluation points.

`state.time` and `state.frequency` are scalars.

Boundary constraints and loads get these data from the solver:

• `location.x`, `location.y`, `location.z`, `location.r`

• `location.nx`, `location.ny`, `location.nz`, `location.nr`

• `state.time` or `state.frequency` (depending of the type of structural analysis)

Initial conditions get these data from the solver:

• `location.x`, `location.y`, `location.z`, `location.r`

• Subdomain ID

If a parameter represents a vector value, such as surface traction, spring stiffness, force, or displacement, your 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 corresponds to the parameter value (a vector) at the boundary coordinates provided by the solver.

If a parameter represents a scalar value, such as pressure or a displacement component, your function must return a row vector where each element corresponds to the parameter value (a scalar) at the boundary coordinates provided by the solver.

If boundary conditions depend on `state.time` or `state.frequency`, ensure that your function returns a matrix of `NaN` of the correct size when `state.frequency` or `state.time` are `NaN`. Solvers check whether a problem is nonlinear or time dependent by passing `NaN` state values and looking for returned `NaN` values.

Introduced in R2018a

## Support Get trial now