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-
ncols
string array; Specifies the variable name associated with each column ofM
. -
units: 1-by-
ncols
string array; Specifies the units of each column ofM
. Ifc_args.log_args
istrue
, 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
, andunits
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