ForwardModel

Models the surface thermal response induced by a laser heat source with Gaussian spatial distribution and harmonic temporal modulation.

Description

The ForwardModel class predicts the surface thermal response induced by a pump laser heat source with Gaussian spatial distribution and harmonic temporal modulation. Specifically, it returns the phase lag \(\mathbf{\upphi}\) and amplitude \(\mathbf{A}\) given material and experimental parameters, within some degree of error \(\mathbf{\upepsilon}_T\).

\({\left\{\mathbf{\upphi}, \mathbf{A}\right\}} = {G\left(\mathbf{M}, \mathbf{O}, \chi, \mathbf{f}_0, \mathbf{X}_\mathrm{probe}\right) + \mathbf{\upepsilon}_T}\)

Where

  • \(G\left(...\right)\) represents the forward model function.
  • \(\mathbf{M}\) is an array of material parameters
  • \(\mathbf{O}\) is an array of orientation parameters
  • \(\chi\) is an array of experimental parameters
  • \(\mathbf{f}_0\) is an array of pump laser frequencies
  • \(\mathbf{X}_\mathrm{probe}\) is an array of probe offsets

See ForwardModel.solve for more details.

The sample is expected to consist of a substrate layer and a thin film layer, modeled as semi-infinite in the \(x\)- and \(y\)-directions. Furthermore, the top surface of the sample \(\left(z=0\right)\) is modeled as insulated.

Creation

Syntax

fm = ForwardModel(film,substrate,ift_solver,Name,Value)

Description

fm = ForwardModel(film,substrate,ift_solver,Name,Value) creates a ForwardModel object according to user specifications. film and substrate are Layer objects that specify how thermal conductivity will be represented in their respective layers. ift_solver is an IFTSolver object with specifications for solving the inverse Fourier transform. Name-value arguments specify additional ForwardModel options.

Input Arguments

film - Film layer specifications Layer object

The film arguments is a Layer object that specifies how thermal conductivity is represented for the thin film layer of the sample.

Data Types: Layer

substrate - Substrate layer specifications Layer object

The substrate arguments is a Layer object that specifies how thermal conductivity is represented for the substrate layer of the sample.

Data Types: Layer

ift_solver - Inverse Fourier transform solver IFTSolver object

The ift_solver arguments is an IFTSolver object containing specifications for solving the inverse Fourier transform.

Data Types: IFTSolver

Name-Value Arguments

Specify name–value pairs as Name1=Value1, ..., NameN=ValueN, where each Name is an argument name and each Value is the corresponding value. The order of the pairs does not matter.

Argument names are case-insensitive, and you can use any unique leading substring of the name. For example, the name "Inf" matches the option "inf_sub_thick".

Before R2021a, separate each name and value with commas and enclose Name in quotes.

scale - Input scale factor 1 (default) | positive real scalar

The input scale factor defines the units of certain forward model inputs by scaling their base SI units as follows:

  • \( {\left[ h_f \right]} = {\left[ h_s \right]} = {\left[ s_x \right]} = {\left[ s_y \right]} = {\left[ x_\mathrm{probe} \right]} = {\mathrm{scale} \cdot \mathrm{m}} \)
  • \( {\left[ \alpha_f \right]} = {\left[ \alpha_s \right]} = {\left[ u \right]} = {\left[ v \right]} = {\left[\frac{1}{ x_\mathrm{probe}} \right]} = {\frac{1}{\mathrm{scale} \cdot \mathrm{m}}} \)
  • \( {\left[C_f\right]} = {\left[C_s\right]} = {\frac{\mathrm{W}}{\mathrm{scale} \cdot \mathrm{m}^3 \cdot \mathrm{K}}} \)
  • \( {\left[ P \right]} = {\mathrm{scale} \cdot \mathrm{W}} \)
  • \( {\left[ f_0 \right]} = {\frac{\mathrm{Hz}}{\mathrm{scale}}} \)

Example: If scale = 1e-6 forward model inputs are considered to be in the following units:

  • \( {\left[ h_f \right]} = {\left[ h_s \right]} = {\left[ s_x \right]} = {\left[ s_y \right]} = {\left[ x_\mathrm{probe} \right]} = {\mathrm{scale} \cdot \mathrm{m}} = {10^{-6} \cdot \mathrm{m}} = {\mathrm{\upmu m}} \)
  • \( {\left[ \alpha_f \right]} = {\left[ \alpha_s \right]} = {\left[ u \right]} = {\left[ v \right]} = {\left[\frac{1}{ x_\mathrm{probe}} \right]} = {\frac{1}{\mathrm{scale} \cdot \mathrm{m}}} = {\frac{1}{10^{-6} \cdot \mathrm{m}}} = {\frac{1}{\mathrm{\upmu m}}} \)
  • \( {\left[C_f\right]} = {\left[C_s\right]} = {\frac{\mathrm{W}}{\mathrm{scale} \cdot \mathrm{m}^3 \cdot \mathrm{K}}} = {\frac{\mathrm{W}}{10^{-6} \cdot \mathrm{m}^3 \cdot \mathrm{K}}} = {\frac{\mathrm{W}}{\mathrm{cm}^3 \cdot \mathrm{K}}} \)
  • \( {\left[ P \right]} = {\mathrm{scale} \cdot \mathrm{W}} = {10^{-6} \cdot \mathrm{W}} = {\mathrm{\upmu W}} \)
  • \( {\left[ f_0 \right]} = {\frac{\mathrm{Hz}}{\mathrm{scale}}} = {\frac{\mathrm{Hz}}{10^{-6}}} = {10^6 \cdot \mathrm{Hz}} = {\mathrm{MHz}} \)

Data Types: double | single

inf_sub_thick - Use infinite substrate thickness approximation true (default) | false

When set to true, approximates the thickness of the substrate as infinite in the z-direction, which is more numerically stable than using a finite substrate thickness.

Data Types: logical

phase_only - Return phase only false (default) | true

When set to true, tells the solver that the user is only interested in phase; not amplitude nor DC temperature change.

Data Types: logical

log_args - Use log arguments false (default) | true

When set to true, the solver expects the natural log of thermal conductivity, volumetric heat capacity, optical absorption coefficient, z-direction thickness, pump laser deviation, and power as inputs.

Data Types: logical

force_sym_solve - Force reexecution of symbolic solution false (default) | true

When set to true, forces the reexecution of the symbolic solutions even if the files already exist.

Data Types: logical

Examples

Properties

c_args - Constructor arguments struct

c_args is a struct of validated constructor arguments (input and default) populated by validate_c_args, a private ForwardModel method.

fun_inputs - Function input format specifications struct

Struct of format specifications for method inputs M, O, chi, f0, and X_probe (used in ForwardModel.plot and ForwardModel.solve).

Each field value is another struct with the following fields:

  • ncols: Number of columns
  • cols: 1-by-ncols string array; Specifies the variable name associated with each column of M.
  • units: 1-by-ncols string array; Specifies the units of each column of M. If c_args.log_args is true, these units refer to the values before log-transformation, since the transformation implicitly normalizes by the base unit, yielding a unitless quantity.
  • msg: A formatted string message for displaying the values of ncols, cols, and units to the screen.
  • vld: Input validation function handle.

fun_inputs is populated by get_input_structure, a private ForwardModel method.

Function Inputs Nomenclature

  • M: Material parameters.
    • kf, ks: Isotropic thermal conductivity of the film and substrate.
    • kf⊥, ks⊥: Transverse (radial) thermal conductivity of the film and substrate (simple anisotropy).
    • kf∥, ks∥: Axial (longitudinal) thermal conductivity of the film and substrate (simple anisotropy).
    • kpfi, kpsi: \(i\)-th principal thermal conductivity of the film and substrate (complex anisotropy), with \(i \in \{1,2,3\}\).
    • kfij, ksij: \((i,j)\)-th component of the thermal conductivity tensor of the film and substrate, with \(i,j \in \{1,2,3\}\).
    • Cf, Cs: Volumetric heat capacity of the film and substrate.
    • αf, αs: Optical absorption coefficient of the film and substrate.
    • Rf, Rs: Optical reflectivity of the film and substrate.
    • hf, hs: Thickness of the film and substrate in the \(z\)-direction.
    • Rth: Thermal contact resistance between film and substrate.
  • O: Orientation parameters.
    • θf_az, θs_az: Azimuthal angle of the thermal conductivity axis of rotation for the film and substrate (simple anisotropy).
    • θf_pol, θs_pol: Polar angle of the thermal conductivity axis of rotation for the film and substrate (simple anisotropy).
    • θfai, θsai: \(i\)-th Euler rotation angle about the \(a\)-axis, defining the orientation of the principal thermal condcutivity axes of the film and substrate, with \(i \in \{1,2,3\}\), \(a \in \{X,Y,Z\}\).
    • vfi, vsi: \(i\)-th component of the unit vector along the thermal conductivity axis of rotation for the film and substrate (simple anisotropy), with \(i \in \{1,2,3\}\).
    • qfi, qsi: \(i\)-th component of the unit quaternion defining the orientation of the principal thermal condcutivity axes of the film and substrate, with \(i \in \{1,2,3,4\}\).
    • Rfij, Rsij: \((i,j)\)-th component of the rotation matrix defining the orientation of the principal thermal condcutivity axes of the film and substrate, with \(i,j \in \{1,2,3\}\).
  • chi: Experimental parameters.
    • sx, sy: Standard deviations of the pump laser's distribution in the \(x\)- and \(y\)-directions.
    • P: Pump laser power.
  • f0: Pump laser temporal frequency.
  • X_probe: Probe laser offsets, with each row being the \(x,y\)-coordinate of the probe wrt. the pump.
xu - FFT spatial and spatial-frequency domains real 2-column matrix

2-column matrix where the 1st column is the descretized spatial vector, and the 2nd column is the descretized spatial-frequency vector referenced when ift_method="ifft2".

Object Functions

plot Plots the surface thermal response
solve Solves the forward model

Examples

See Also

ForwardModel methods

ForwardModel.plot | ForwardModel.solve

Companion Classes and Functions

MATLAB built-ins

ifft2 | integral2 | ndgrid | validatestring