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
substrate - Substrate layer specifications
Layer object
ift_solver - Inverse Fourier transform solver
IFTSolver object
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-
ncolsstring array; Specifies the variable name associated with each column ofM. -
units: 1-by-
ncolsstring array; Specifies the units of each column ofM. Ifc_args.log_argsistrue, 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, andunitsto 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