ModalThermalResults
Description
A ModalThermalResults
object contains the eigenvalues and
eigenvector matrix of a thermal model, and average of snapshots used for proper orthogonal
decomposition (POD).
Creation
Solve a modal thermal problem using the solve
function. This function returns a modal thermal solution as a ModalThermalResults
object.
Properties
DecayRates
— Eigenvalues of thermal model
column vector
This property is read-only.
Eigenvalues of a thermal model, returned as a column vector.
Data Types: double
ModeShapes
— Eigenvector matrix
matrix
This property is read-only.
Eigenvector matrix, returned as a matrix.
Data Types: double
SnapshotsAverage
— Average of snapshots used for POD
column vector
This property is read-only.
Average of snapshots used for POD, returned as a column vector.
Data Types: double
ModeType
— Type of modes
"EigenModes"
| "PODModes"
This property is read-only.
Type of modes, returned as "EigenModes"
or
"PODModes"
.
Data Types: string
Mesh
— Finite element mesh
FEMesh
object
This property is read-only.
Finite element mesh, returned as an FEMesh
object. For details,
see FEMesh Properties.
Examples
Solution to Transient Thermal Model Using Modal Superposition Method
Solve a transient thermal problem by first obtaining mode shapes for a particular decay range and then using the modal superposition method.
Modal Decomposition
First, create a modal thermal model.
thermalmodel = createpde("thermal","modal");
Create the geometry and include it in the model.
SQ1 = [3; 4; 0; 3; 3; 0; 0; 0; 3; 3]; D1 = [2; 4; 0.5; 1.5; 2.5; 1.5; 1.5; 0.5; 1.5; 2.5]; gd = [SQ1 D1]; sf = 'SQ1+D1'; ns = char('SQ1','D1'); ns = ns'; dl = decsg(gd,sf,ns); geometryFromEdges(thermalmodel,dl); pdegplot(thermalmodel,"EdgeLabels","on","FaceLabels","on") xlim([-1.5 4.5]) ylim([-0.5 3.5]) axis equal
For the square region, assign these thermal properties:
Thermal conductivity is .
Mass density is .
Specific heat is .
thermalProperties(thermalmodel,"ThermalConductivity",10, ... "MassDensity",2, ... "SpecificHeat",0.1, ... "Face",1);
For the diamond region, assign these thermal properties:
Thermal conductivity is .
Mass density is .
Specific heat is .
thermalProperties(thermalmodel,"ThermalConductivity",2, ... "MassDensity",1, ... "SpecificHeat",0.1, ... "Face",2);
Assume that the diamond-shaped region is a heat source with a density of .
internalHeatSource(thermalmodel,4,"Face",2);
Apply a constant temperature of 0 °C to the sides of the square plate.
thermalBC(thermalmodel,"Temperature",0,"Edge",[1 2 7 8]);
Set the initial temperature to 0 °C.
thermalIC(thermalmodel,0);
Generate the mesh.
generateMesh(thermalmodel);
Compute eigenmodes of the thermal model in the decay range [100,10000] .
RModal = solve(thermalmodel,"DecayRange",[100,10000])
RModal = ModalThermalResults with properties: DecayRates: [164x1 double] ModeShapes: [1481x164 double] ModeType: "EigenModes" Mesh: [1x1 FEMesh]
Transient Analysis
Knowing the mode shapes, you can now use the modal superposition method to solve the transient thermal problem. First, switch the thermal model analysis type to transient.
thermalmodel.AnalysisType = "transient";
The dynamics for this problem are very fast. The temperature reaches a steady state in about 0.1 second. To capture the most active part of the dynamics, set the solution time to logspace(-2,-1,100)
. This command returns 100 logarithmically spaced solution times between 0.01 and 0.1.
tlist = logspace(-2,-1,10);
Solve the equation.
Rtransient = solve(thermalmodel,tlist,"ModalResults",RModal);
Plot the solution with isothermal lines by using a contour plot.
T = Rtransient.Temperature; pdeplot(thermalmodel,"XYData",T(:,end), ... "Contour","on", ... "ColorMap","hot")
Snapshots for Proper Orthogonal Decomposition
Obtain POD modes of a linear thermal model using several instances of the transient solution (snapshots).
Create a transient thermal model.
thermalmodel = createpde("thermal","transient");
Create a unit square geometry and include it in the model.
geometryFromEdges(thermalmodel,@squareg);
Plot the geometry, displaying edge labels.
pdegplot(thermalmodel,"EdgeLabels","on") xlim([-1.1 1.1]) ylim([-1.1 1.1])
Specify the thermal conductivity, mass density, and specific heat of the material.
thermalProperties(thermalmodel,"ThermalConductivity",400, ... "MassDensity",1300, ... "SpecificHeat",600);
Set the temperature on the right edge to 100
.
thermalBC(thermalmodel,"Edge",2,"Temperature",100);
Set an initial value of 0
for the temperature.
thermalIC(thermalmodel,0);
Generate a mesh.
generateMesh(thermalmodel);
Solve the model for three different values of heat source and collect snapshots.
tlist = 0:10:600; snapShotIDs = [1:10 59 60 61]; Tmatrix = []; heatVariation = [10000 15000 20000]; for q = heatVariation internalHeatSource(thermalmodel,q); results = solve(thermalmodel,tlist); Tmatrix = [Tmatrix,results.Temperature(:,snapShotIDs)]; end
Switch the thermal model analysis type to modal.
thermalmodel.AnalysisType = "modal";
Compute the POD modes.
RModal = solve(thermalmodel,"Snapshots",Tmatrix)
RModal = ModalThermalResults with properties: DecayRates: [6x1 double] ModeShapes: [1541x6 double] SnapshotsAverage: [1541x1 double] ModeType: "PODModes" Mesh: [1x1 FEMesh]
Version History
Introduced in R2022a
See Also
Functions
Objects
Open Example
You have a modified version of this example. Do you want to open this example with your edits?
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)