Main Content

ReducedThermalModel

Reduced-order thermal model

Since R2022a

Description

A 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 (POD).

To expand this data to a full transient thermal solution, use reconstructSolution.

Creation

Reduce a thermal model by using the reduce function. This function returns a reduced-order thermal model as a ReducedThermalModel object.

Properties

expand all

Reduced stiffness matrix, specified as a matrix.

Data Types: double

Reduced mass matrix, specified as a matrix.

Data Types: double

Reduced load vector, specified as a column vector.

Data Types: double

Initial conditions in modal coordinates, specified as a column vector.

Data Types: double

Modes used to obtain a reduced-order model, specified as a matrix.

Data Types: double

Finite element mesh, specified as an FEMesh object. For details, see FEMesh Properties.

Average of snapshots used for POD, returned as a column vector.

Data Types: double

Object Functions

reconstructSolutionRecover full-model transient solution from reduced-order model (ROM)

Examples

collapse all

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.

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: [1529x6 double]
    SnapshotsAverage: [1529x1 double]
            ModeType: "PODModes"
                Mesh: [1x1 FEMesh]

Reduce the thermal model using all modes in RModal.

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: [1529x6 double]
     SnapshotsAverage: [1529x1 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: [1529x3 double]
     SnapshotsAverage: [1529x1 double]

Version History

Introduced in R2022a