structuralBodyLoad

Specify body load for structural model

Syntax

structuralBodyLoad(structuralmodel,'GravitationalAcceleration',GAval)
structuralBodyLoad(structuralmodel,'Temperature',Tval)
structuralBodyLoad(structuralmodel,'Temperature',Tresults)
structuralBodyLoad(structuralmodel,'Temperature',Tresults,'TimeStep',iT)
bodyLoad = structuralBodyLoad(___)

Description

example

structuralBodyLoad(structuralmodel,'GravitationalAcceleration',GAval) specifies acceleration due to gravity as a body load for a static or transient structural model. Structural models for modal analysis cannot have body loads.

example

structuralBodyLoad(structuralmodel,'Temperature',Tval) specifies a thermal load on a static structural analysis model.

Tip

If Tval is the temperature itself, and not a change in temperature, you also must specify a reference temperature. To specify it, assign the reference temperature value to structuralmodel.ReferenceTemperature. For details, see StructuralModel.

example

structuralBodyLoad(structuralmodel,'Temperature',Tresults) uses the steady-state or transient thermal analysis results Tresults to specify a thermal load on a static structural analysis model. If Tresults is the solution of a transient thermal problem, then this syntax uses the temperature and its gradients from the last time step.

example

structuralBodyLoad(structuralmodel,'Temperature',Tresults,'TimeStep',iT) uses the transient thermal analysis results Tresults and the time step index iT to specify a thermal load on a static structural analysis model.

bodyLoad = structuralBodyLoad(___) returns the body load object, using the input arguments from any of the previous syntaxes.

Examples

collapse all

Create a structural model.

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

Create and plot the geometry.

gm = multicuboid(0.5,0.1,0.1);
structuralModel.Geometry = gm;
pdegplot(structuralModel,'FaceAlpha',0.5)

Specify the Young's modulus, Poisson's ratio, and mass density. The mass density value is required for modeling gravitational effects.

structuralProperties(structuralModel,'YoungsModulus',210E3, ...
                                     'PoissonsRatio',0.3, ...
                                     'MassDensity',2.7E-6);

Specify the gravity load on the beam.

structuralBodyLoad(structuralModel,'GravitationalAcceleration',[0;0;-9.8])
ans = 
  BodyLoadAssignment with properties:

                   RegionType: 'Cell'
                     RegionID: 1
    GravitationalAcceleration: [3x1 double]
                  Temperature: []
                     TimeStep: []

Specify a constant temperature rise for a thermal stress analysis of a bimetallic cantilever beam.

Create a static structural model.

structuralmodel = createpde('structural','static-solid');

Create and plot the geometry.

gm = multicuboid(0.5,0.04,[0.03,0.03],'Zoffset',[0,0.03]);
structuralmodel.Geometry = gm;
pdegplot(structuralmodel,'CellLabels','on')

Set the reference temperature. This temperature corresponds to the state of zero thermal stress of the model.

structuralmodel.ReferenceTemperature = 20
structuralmodel = 
  StructuralModel with properties:

            AnalysisType: 'static-solid'
                Geometry: [1x1 DiscreteGeometry]
      MaterialProperties: []
               BodyLoads: []
      BoundaryConditions: []
    ReferenceTemperature: 20
                    Mesh: []

Apply the constant temperature as a structural body load.

structuralBodyLoad(structuralmodel,'Temperature',300)
ans = 
  BodyLoadAssignment with properties:

                   RegionType: 'Cell'
                     RegionID: [1 2]
    GravitationalAcceleration: []
                  Temperature: 300
                     TimeStep: []

Specify a thermal load using the solution from a steady-state thermal analysis on the same geometry and mesh.

Steady-State Thermal Model Analysis

Create a steady-state thermal model.

thermalmodel = createpde('thermal','steadystate');

Create and plot the geometry.

gm = multicuboid(0.5,0.1,0.05);
thermalmodel.Geometry = gm;
pdegplot(thermalmodel,'FaceLabels','on','FaceAlpha',0.5)

Generate a mesh.

generateMesh(thermalmodel);

Specify the thermal conductivity of the material.

thermalProperties(thermalmodel,'ThermalConductivity',5e-3);

Specify constant temperatures on the left and right ends on the beam.

thermalBC(thermalmodel,'Face',3,'Temperature',100);
thermalBC(thermalmodel,'Face',5,'Temperature',0);

Specify the heat source over the entire geometry.

internalHeatSource(thermalmodel,10);

Solve the model.

thermalresults = solve(thermalmodel)
thermalresults = 
  SteadyStateThermalResults with properties:

    Temperature: [3870x1 double]
     XGradients: [3870x1 double]
     YGradients: [3870x1 double]
     ZGradients: [3870x1 double]
           Mesh: [1x1 FEMesh]

Plot the temperature distribution.

pdeplot3D(thermalmodel,'ColorMapData',thermalresults.Temperature)

Static Structural Analysis with Thermal Load

Create a static structural model.

structuralmodel = createpde('structural','static-solid');

Include the same geometry as for the thermal model.

structuralmodel.Geometry = gm;

Apply the solution of the thermal model analysis as a body load for the structural model.

structuralBodyLoad(structuralmodel,'Temperature',thermalresults)
ans = 
  BodyLoadAssignment with properties:

                   RegionType: 'Cell'
                     RegionID: 1
    GravitationalAcceleration: []
                  Temperature: [1x1 pde.SteadyStateThermalResults]
                     TimeStep: []

Specify a thermal load using the solution from a transient thermal analysis on the same geometry and mesh.

Transient Thermal Model Analysis

Create a transient thermal model.

thermalmodel = createpde('thermal','transient');

Create and plot the geometry.

gm = multicuboid(0.5,0.1,0.05);
thermalmodel.Geometry = gm;
pdegplot(thermalmodel,'FaceLabels','on','FaceAlpha',0.5)

Generate a mesh.

generateMesh(thermalmodel);

Specify the thermal properties of the material.

thermalProperties(thermalmodel,'ThermalConductivity',5e-3, ...
                               'MassDensity',2.7*10^(-6), ...
                               'SpecificHeat',10);

Specify the constant temperatures on the left and right ends on the beam.

thermalBC(thermalmodel,'Face',3,'Temperature',100);
thermalBC(thermalmodel,'Face',5,'Temperature',0);

Specify the heat source over the entire geometry.

internalHeatSource(thermalmodel,10);

Set the initial temperature.

thermalIC(thermalmodel,0);

Solve the model.

tlist = [0:1e-4:2e-4];
thermalresults = solve(thermalmodel,tlist)
thermalresults = 
  TransientThermalResults with properties:

      Temperature: [3870x3 double]
    SolutionTimes: [0 1.0000e-04 2.0000e-04]
       XGradients: [3870x3 double]
       YGradients: [3870x3 double]
       ZGradients: [3870x3 double]
             Mesh: [1x1 FEMesh]

Plot the temperature distribution for each time step.

for n = 1:numel(thermalresults.SolutionTimes)
    figure
    pdeplot3D(thermalmodel,'ColorMapData',thermalresults.Temperature(:,n))
    title(['Time = ' num2str(tlist(n))])
    caxis([0 100])
end

Static Structural Analysis with Thermal Load

Create a static structural model.

structuralmodel = createpde('structural','static-solid');

Include the same geometry as for the thermal model.

structuralmodel.Geometry = gm;

Apply the solution of the thermal model analysis as a body load for the structural model. By default, structuralBodyLoad uses the thermal model solution for the last time step.

structuralBodyLoad(structuralmodel,'Temperature',thermalresults);

You also can specify the time step you want to use. For example, apply the thermal model solution for the second time step as a body load for the structural model.

structuralBodyLoad(structuralmodel,'Temperature',thermalresults, ...
                                   'TimeStep',2);

Input Arguments

collapse all

Static or transient 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')

Acceleration due to gravity, specified as a numeric vector. GAval must be specified in units consistent with the geometry and material properties units.

Example: structuralBodyLoad(structuralmodel,'GravitationalAcceleration',[0;0;-9.8])

Data Types: double

Constant thermal load on a static structural model, specified as a real number. Tval must be specified in units consistent with the geometry and material properties units.

Example: structuralBodyLoad(structuralmodel,'Temperature',300)

Data Types: double

Thermal model solution applied as a body load on a static structural model, specified as a StaticThermalResults or TransientThermalResults object. Create Tresults by using solve.

Example: Tresults = solve(thermalmodel); structuralBodyLoad(structuralmodel,'Temperature',Tresults)

Time index, specified as a positive integer.

Example: structuralBodyLoad(structuralmodel,'Temperature',Tresults,'TimeStep',21)

Data Types: double

Output Arguments

collapse all

Handle to body load, returned as a BodyLoadAssignment object.

Introduced in R2017b