# femodel

## Description

An `femodel`

object contains information about a
finite element problem: analysis type, geometry, material properties, boundary conditions,
loads, initial conditions, and other parameters.

## Creation

### Syntax

### Description

creates a finite element
analysis model.`model`

= femodel

creates a finite element analysis model for the specified analysis type.`model`

= femodel(AnalysisType=`analysistype`

)

assigns the specified geometry object to its `model`

= femodel(Geometry=`geometry`

)`Geometry`

property.

creates a finite element analysis model for the specified analysis type and assigns the
specified geometry object to its `model`

= femodel(AnalysisType=`analysistype`

,Geometry=`geometry`

)`Geometry`

property.

### Input Arguments

`analysistype`

— Type of problem

`"structuralStatic"`

| `"structuralModal"`

| `"structuralTransient"`

| `"structuralFrequency"`

| `"thermalSteady"`

| `"thermalModal"`

| `"thermalTransient"`

| `"electrostatic"`

| `"magnetostatic"`

| `"electricHarmonic"`

| `"magneticHarmonic"`

| `"dcConduction"`

Type of problem, specified as one of these values:

`"structuralStatic"`

creates a model for static structural analysis.`"structuralModal"`

creates a model for modal structural analysis.`"structuralTransient"`

creates a model for transient structural analysis.`"structuralFrequency"`

creates a model for frequency response structural analysis.`"thermalSteady"`

creates a model for steady-state thermal analysis.`"thermalModal"`

creates a model for modal thermal analysis.`"thermalTransient"`

creates a model for transient thermal analysis.`"electrostatic"`

creates a model for electrostatic analysis.`"magnetostatic"`

creates a model for magnetostatic analysis.`"electricHarmonic"`

creates a model for harmonic electromagnetic analysis with an electric field type.`"magneticHarmonic"`

creates a model for harmonic electromagnetic analysis with a magnetic field type.`"dcConduction"`

creates a model for DC conduction analysis.

This argument sets the AnalysisType property.

**Data Types: **`char`

| `string`

`geometry`

— Geometry description

`fegeometry`

object

Geometry description, specified as an `fegeometry`

object. This argument sets the Geometry property.

## Properties

`AnalysisType`

— Type of problem

`"structuralStatic"`

| `"structuralModal"`

| `"structuralTransient"`

| `"structuralFrequency"`

| `"thermalSteady"`

| `"thermalModal"`

| `"thermalTransient"`

| `"electrostatic"`

| `"magnetostatic"`

| `"electricHarmonic"`

| `"magneticHarmonic"`

| `"dcConduction"`

Type of problem, specified as `"structuralStatic"`

,
`"structuralModal"`

, `"structuralTransient"`

,
`"structuralFrequency"`

, `"thermalSteady"`

,
`"thermalModal"`

, `"thermalTransient"`

,
`"electrostatic"`

, `"magnetostatic"`

,
`"electricHarmonic"`

, `"magneticHarmonic"`

, or
`"dcConduction"`

.

This property is set by the analysistype input argument.

**Data Types: **`string`

`Geometry`

— Geometry description

`fegeometry`

object

Geometry description, specified as an `fegeometry`

object. This property is set by the geometry input
argument.

`PlanarType`

— Type of two-dimensional problem

`"planeStress"`

| `"planeStrain"`

| `"axisymmetric"`

Type of two-dimensional problem, specified as `"planeStress"`

,
`"planeStrain"`

, or `"axisymmetric"`

. This property
does not apply to models with 3-D geometries.

**Data Types: **`string`

`MaterialProperties`

— Material properties

array of `materialProperties`

objects

Material properties, specified as a `1`

-by-`N`

array of `materialProperties`

objects. Here, `N`

is the number of
faces in a 2-D geometry or number of cells in a 3-D geometry. Each
`materialProperties`

object contains material properties for one face
or cell of the geometry.

## Boundary Conditions

`FaceBC`

— Boundary conditions on geometry faces

array of `faceBC`

objects

Boundary conditions on geometry faces, specified as a
`1`

-by-`N`

array of `faceBC`

objects.
Here, `N`

is the number of faces in a geometry. Each
`faceBC`

object contains boundary conditions for one face of the
geometry.

`EdgeBC`

— Boundary conditions on geometry edges

array of `edgeBC`

objects

Boundary conditions on geometry edges, specified as a
`1`

-by-`N`

array of `edgeBC`

objects.
Here, `N`

is the number of edges in a geometry. Each
`edgeBC`

object contains boundary conditions for one edge of the
geometry.

`VertexBC`

— Boundary conditions on geometry vertices

array of `vertexBC`

objects

Boundary conditions on geometry vertices, specified as a
`1`

-by-`N`

array of `vertexBC`

objects.
Here, `N`

is the number of vertices in a geometry. Each
`vertexBC`

object contains boundary conditions for one vertex of the
geometry.

`ROMInterfaces`

— Reduced-order model (ROM) interfaces

`[]`

(default) | vector of `romInterface`

objects

Reduced-order model interfaces, specified as a vector of `romInterface`

objects. Here all `romInterface`

objects must have the same
`RigidInterface`

value.

You can use a combination of vertices, edges, and faces to create each
`romInterface`

object.

`ThermalRadiation`

— Settings for modeling thermal radiation between surfaces

`[]`

(default) | `surfaceToSurfaceSettings`

object

Settings for modeling thermal radiation between surfaces without conductive media,
specified as a `surfaceToSurfaceSettings`

object. The default empty value results in the
surface-to-ambient solution.

## Loads

`CellLoad`

— Loads on geometry cells

array of `cellLoad`

objects

Loads on geometry cells, specified as a `1`

-by-`N`

array of `cellLoad`

objects.
Here, `N`

is the number of cells in a geometry. Each
`cellLoad`

object contains loads for one cell of the geometry.

`FaceLoad`

— Loads on geometry faces

array of `faceLoad`

objects

Loads on geometry faces, specified as a `1`

-by-`N`

array of `faceLoad`

objects.
Here, `N`

is the number of faces in a geometry. Each
`faceLoad`

object contains loads for one face of the geometry.

`EdgeLoad`

— Loads on geometry edges

array of `edgeLoad`

objects

Loads on geometry edges, specified as a `1`

-by-`N`

array of `edgeLoad`

objects.
Here, `N`

is the number of edges in a geometry. Each
`edgeLoad`

object contains loads for one edge of the geometry.

`VertexLoad`

— Loads on geometry vertices

array of `vertexLoad`

objects

Loads on geometry vertices, specified as a
`1`

-by-`N`

array of `vertexLoad`

objects. Here, `N`

is the number of vertices in a geometry. Each
`vertexLoad`

object contains loads for one vertex of the
geometry.

## Initial Conditions

`CellIC`

— Initial conditions on geometry cells

array of `cellIC`

objects

Initial conditions on geometry cells, specified as a
`1`

-by-`N`

array of `cellIC`

objects.
Here, `N`

is the number of cells in a geometry. Each
`cellIC`

object contains initial conditions for one cell of the
geometry.

`FaceIC`

— Initial conditions on geometry faces

array of `faceIC`

objects

Initial conditions on geometry faces, specified as a
`1`

-by-`N`

array of `faceIC`

objects.
Here, `N`

is the number of faces in a geometry. Each
`faceIC`

object contains initial conditions for one face of the
geometry.

`EdgeIC`

— Initial conditions on geometry edges

array of `edgeIC`

objects

Initial conditions on geometry edges, specified as a
`1`

-by-`N`

array of `edgeIC`

objects.
Here, `N`

is the number of edges in a geometry. Each
`edgeIC`

object contains initial conditions for one edge of the
geometry.

`VertexIC`

— Initial conditions on geometry vertices

array of `vertexIC`

objects

Initial conditions on geometry vertices, specified as a
`1`

-by-`N`

array of `vertexIC`

objects.
Here, `N`

is the number of vertices in a geometry. Each
`vertexIC`

object contains initial conditions for one vertex of the
geometry.

## Other Parameters

`DampingAlpha`

— Mass proportional damping

nonnegative number

Mass proportional damping, specified as a nonnegative number.

**Data Types: **`double`

`DampingBeta`

— Stiffness proportional damping

nonnegative number

Stiffness proportional damping, specified as a nonnegative number.

**Data Types: **`double`

`ReferenceTemperature`

— Reference temperature for thermal load

real number

Reference temperature for a thermal load, specified as a real number. The reference temperature corresponds to the state of zero thermal stress of the model. The value 0 implies that the thermal load is specified in terms of the temperature change and its derivatives.

To specify the reference temperature for a thermal load in your model, assign the
property value directly, for example, ```
model.ReferenceTemperature =
10
```

. To specify the thermal load itself, use `cellLoad`

.

**Data Types: **`double`

`SolverOptions`

— Algorithm options for PDE solvers

`PDESolverOptions`

object

Algorithm options for the PDE solvers, specified as a
`PDESolverOptions`

object. The properties of
`PDESolverOptions`

include absolute and relative tolerances for
internal ODE solvers, maximum solver iterations, and so on. For a complete list of
properties, see PDESolverOptions Properties.

## Constants

`VacuumPermittivity`

— Permittivity of vacuum for entire model

positive number

Permittivity of vacuum for the entire model, specified as a positive number. This
value must be consistent with the units of the model. If the model parameters are in the
SI system of units, then the permittivity of vacuum must be
`8.8541878128e-12`

.

**Data Types: **`double`

`VacuumPermeability`

— Permeability of vacuum for entire model

positive number

Permeability of vacuum for the entire model, specified as a positive number. This
value must be consistent with the units of the model. If the model parameters are in the
SI system of units, then the permeability of vacuum must be
`1.2566370614e-6`

.

`StefanBoltzmann`

— Constant of proportionality in Stefan-Boltzmann law governing radiation heat transfer

positive number

Constant of proportionality in Stefan-Boltzmann law governing radiation heat transfer, specified as a positive number. This value must be consistent with the units of the model. Values of the Stefan-Boltzmann constant in commonly used systems of units are:

SI —

`5.670367e-8`

W/(m^{2}·K^{4})CGS—

`5.6704e-5`

erg/(cm^{2}·s·K^{4})US customary —

`1.714e-9`

BTU/(hr·ft^{2}·R^{4})

**Data Types: **`double`

## Object Functions

`generateMesh` | Create triangular or tetrahedral mesh |

`pdegplot` | Plot PDE geometry |

`pdemesh` | Plot PDE mesh |

`solve` | Solve structural analysis, heat transfer, or electromagnetic analysis problem |

## Examples

### Finite Element Model for Thermal Transient Analysis

Create a model for solving a thermal transient problem.

`model = femodel(AnalysisType="thermalTransient")`

model = 1x1 femodel array Properties for analysis type: thermalTransient AnalysisType: "thermalTransient" Geometry: [0x0 fegeometry] PlanarType: "" MaterialProperties: [0x0 materialProperties] Boundary Conditions FaceBC: [0x0 faceBC] EdgeBC: [0x0 edgeBC] VertexBC: [0x0 vertexBC] ThermalRadiation: [] Loads CellLoad: [0x0 cellLoad] FaceLoad: [0x0 faceLoad] EdgeLoad: [0x0 edgeLoad] VertexLoad: [0x0 vertexLoad] Initial Conditions CellIC: [0x0 cellIC] FaceIC: [0x0 faceIC] EdgeIC: [0x0 edgeIC] VertexIC: [0x0 vertexIC] Other Parameters DampingAlpha: 0 DampingBeta: 0 ReferenceTemperature: [] SolverOptions: [1x1 pde.PDESolverOptions] Constants StefanBoltzmann: [] Show all properties

### Finite Element Model for Static Structural Analysis of Plane-Strain Problem

Create a model for solving a static plane-strain structural problem.

Create an `femodel`

object for solving a static structural problem, and assign a 2-D geometry to the model.

model = femodel(AnalysisType="structuralStatic", ... Geometry="PlateHolePlanar.stl")

model = 1x1 femodel array Properties for analysis type: structuralStatic AnalysisType: "structuralStatic" Geometry: [1x1 fegeometry] PlanarType: "planeStress" MaterialProperties: [0x1 materialProperties] Boundary Conditions FaceBC: [0x1 faceBC] EdgeBC: [0x5 edgeBC] VertexBC: [0x5 vertexBC] Loads FaceLoad: [0x1 faceLoad] EdgeLoad: [0x5 edgeLoad] VertexLoad: [0x5 vertexLoad] Other Parameters ReferenceTemperature: [] SolverOptions: [1x1 pde.PDESolverOptions] Show all properties

By default, `femodel`

assumes that a 2-D problem is a plane-stress problem. Specify the plane-strain problem type.

```
model.PlanarType = "planeStrain";
model.PlanarType
```

ans = "planeStrain"

### Structural Analysis of Beam

Create a geometry of a beam.

gm = multicuboid(0.5,0.1,0.1);

Plot the geometry.

pdegplot(gm,FaceAlpha=0.5, ... FaceLabels="on", ... EdgeLabels="on")

Create an `femodel`

object for solving a static structural problem, and assign the geometry to the model.

model = femodel(AnalysisType="structuralStatic", ... Geometry=gm)

model = 1x1 femodel array Properties for analysis type: structuralStatic AnalysisType: "structuralStatic" Geometry: [1x1 fegeometry] MaterialProperties: [0x1 materialProperties] Boundary Conditions FaceBC: [0x6 faceBC] EdgeBC: [0x12 edgeBC] VertexBC: [0x8 vertexBC] Loads CellLoad: [0x1 cellLoad] FaceLoad: [0x6 faceLoad] EdgeLoad: [0x12 edgeLoad] VertexLoad: [0x8 vertexLoad] Other Parameters ReferenceTemperature: [] SolverOptions: [1x1 pde.PDESolverOptions] Show all properties

Specify Young's modulus, Poisson's ratio, and the mass density.

model.MaterialProperties = materialProperties(YoungsModulus=210e3, ... PoissonsRatio=0.3, ... MassDensity=2.7e-6); model.MaterialProperties

ans = 1x1 materialProperties array Properties for analysis type: structuralStatic Index CTE PoissonsRatio YoungsModulus MassDensity ShearModulus 1 [] 0.3000 210000 2.7000e-06 [] Show all properties

Specify a gravity load on the beam.

model.CellLoad = cellLoad(Gravity=[0;0;-9.8]); model.CellLoad

ans = 1x1 cellLoad array Properties for analysis type: structuralStatic Index Gravity AngularVelocity Temperature 1 [0 0 -9.8000] [] [] Show all properties

Specify that face 5 is a fixed boundary.

```
model.FaceBC(5) = faceBC(Constraint="fixed");
model.FaceBC
```

ans = 1x6 faceBC array Properties for analysis type: structuralStatic Index Constraint XDisplacement YDisplacement ZDisplacement 1 [] [] [] [] 2 [] [] [] [] 3 [] [] [] [] 4 [] [] [] [] 5 fixed [] [] [] 6 [] [] [] [] Show all properties

Generate a mesh and assign the result to the model. This assignment updates the mesh stored in the `Geometry`

property of the model.

model = generateMesh(model);

Solve the model.

R = solve(model)

R = StaticStructuralResults with properties: Displacement: [1x1 FEStruct] Strain: [1x1 FEStruct] Stress: [1x1 FEStruct] VonMisesStress: [7888x1 double] Mesh: [1x1 FEMesh]

Plot the von Mises stress.

pdeviz(R.Mesh,R.VonMisesStress)

ans = PDEVisualization with properties: MeshData: [1x1 FEMesh] NodalData: [7888x1 double] MeshVisible: off Transparency: 1 Position: [0.1300 0.1100 0.6733 0.8150] Units: 'normalized' Use GET to show all properties

## Version History

**Introduced in R2023a**

### R2024a: ROM support for structural and thermal analysis models

You can use the `reduce`

function to
reduce structural and thermal analysis models specified as `femodel`

objects. If
the `AnalysisType`

property of an `femodel`

is
`structuralTransient`

or `structuralModal`

, then
`reduce`

returns a `ReducedStructuralModel`

object. If
the `AnalysisType`

property is `thermalTransient`

or
`thermalModal`

, then `reduce`

returns a
`ReducedThermalModel`

object.

To support reduced-order modeling for structural analysis, the
`femodel`

object has a new `ROMInterfaces`

property that
stores `romInterface`

objects
defining superelement interfaces and multipoint constraints.

### R2023b: Specify surface-to-surface radiation settings

To support modeling thermal radiation between surfaces without conductive media, the
`femodel`

object has a new `ThermalRadiation`

property
that stores surface-to-surface radiation settings.

## See Also

### Functions

### Objects

`fegeometry`

|`materialProperties`

|`edgeBC`

|`faceBC`

|`vertexBC`

|`farFieldBC`

|`cellLoad`

|`faceLoad`

|`edgeLoad`

|`vertexLoad`

|`cellIC`

|`faceIC`

|`edgeIC`

|`vertexIC`

|`romInterface`

## MATLAB Command

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list:

## How to Get Best Site Performance

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

### Americas

- América Latina (Español)
- Canada (English)
- United States (English)

### Europe

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)