Reduced-order thermal model
ReducedThermalModel object contains the
reduced stiffness matrix K, reduced mass matrix M, reduced load vector F, initial conditions,
mode shapes, mesh, and the average of snapshots used for proper orthogonal decomposition
To expand this data to a full transient thermal solution, use
Reduce a thermal model by using the
reduce function. This
function returns a reduced-order thermal model as a
K — Reduced stiffness matrix
Reduced stiffness matrix, returned as a matrix.
M — Reduced mass matrix
Reduced mass matrix, returned as a matrix.
F — Reduced load vector
Reduced load vector, returned as a column vector.
InitialConditions — Initial conditions in modal coordinates
Initial conditions in modal coordinates, returned as a column vector.
ModeShapes — Modes used to obtain reduced-order model
Modes used to obtain a reduced-order model, returned as a matrix.
Mesh — Finite element mesh
Finite element mesh, returned as an
FEMesh object. For details,
see FEMesh Properties.
SnapshotsAverage — Average of snapshots used for POD
Average of snapshots used for POD, returned as a column vector.
|Recover full-model transient solution from reduced-order model (ROM)|
Reduce Thermal Model
Reduce a thermal model using all modes or the specified number of modes from the modal solution.
Create a transient thermal model.
thermalmodel = createpde("thermal","transient");
Create a unit square geometry and include it in the model.
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
Set an initial value of
0 for the temperature.
Generate a mesh.
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]
Reduce the thermal model using all modes in
Rtherm = reduce(thermalmodel,"ModalResults",RModal)
Rtherm = ReducedThermalModel with properties: K: [7x7 double] M: [7x7 double] F: [7x1 double] InitialConditions: [7x1 double] Mesh: [1x1 FEMesh] ModeShapes: [1541x6 double] SnapshotsAverage: [1541x1 double]
Reduce the thermal model using only three modes.
Rtherm3 = reduce(thermalmodel,"ModalResults",RModal, ... "NumModes",3)
Rtherm3 = ReducedThermalModel with properties: K: [4x4 double] M: [4x4 double] F: [4x1 double] InitialConditions: [4x1 double] Mesh: [1x1 FEMesh] ModeShapes: [1541x3 double] SnapshotsAverage: [1541x1 double]