https://github.com/lnacquaroli/threeomegamethod.jl
Implementation of the three omega technique for the thermal properties of thin films multilayers
https://github.com/lnacquaroli/threeomegamethod.jl
3omega-method matrix-method multilayers physics thermal-conductivity thermal-diffusivity thin-films
Last synced: 4 months ago
JSON representation
Implementation of the three omega technique for the thermal properties of thin films multilayers
- Host: GitHub
- URL: https://github.com/lnacquaroli/threeomegamethod.jl
- Owner: lnacquaroli
- License: mit
- Created: 2018-11-01T16:56:50.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-08-15T15:09:33.000Z (almost 7 years ago)
- Last Synced: 2025-07-01T15:13:29.229Z (11 months ago)
- Topics: 3omega-method, matrix-method, multilayers, physics, thermal-conductivity, thermal-diffusivity, thin-films
- Language: Julia
- Size: 77.1 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# DEPRECATED
This package is no longer supported, please consider using [ThinFilmsTools.jl](https://github.com/lnacquaroli/ThinFilmsTools.jl) instead.
# ThreeOmegaMethod.jl
[](http://opensource.org/licenses/MIT)
[](https://travis-ci.com/lnacquaroli/ThreeOmegaMethod.jl)
Simulation of the temperature rise response to the sinusoidal heating excitation through a metallic heater atop a system of thin films multilayer using a matrix formalism. The thermal response is given for a range of frequency which is determined by the electrical current excitation source. We consider a heater placed at the top of the system and a semi-infinite boundary condition on the substrate. For further details see [https://arxiv.org/abs/1811.00571](https://arxiv.org/abs/1811.00571).
## Installation
This package is not yet registered. It can be installed in Julia with the following ([see further](https://docs.julialang.org/en/v1/stdlib/Pkg/index.html#Adding-unregistered-packages-1)):
```julia
julia> ]
(v1.0) pkg> add https://github.com/lnacquaroli/ThreeOmegaMethod.jl
```
`ThreeOmegaMethod.jl` is compatible with Julia version 1.0 or later, and uses [`QuadGK.jl`](https://github.com/JuliaMath/QuadGK.jl) to perform numerical integration.
See the examples folder to start using the script.
## Usage
To call the main program we can do as follow:
```julia
ΔT, int_error = ThreeOmegaMatrix(layers, hgeometry, source, thresistances, int_limit=1.0e6)
```
Where `ThreeOmegaMatrix` is the main function exported from the module `ThreeOmegaMethod.jl`.
## Input arguments
### LayerInformation type
`layers::Array{Layer}` is an array that contains the sequence of layers that compose the thin film multilayer system. Each layer is constructed using the `Layer <: LayerInformation` subtype exported from the main module using the required information. For instance, we can construct different layers as follow calling `layer1 = Layer(ky, kxy, d, ρC)`, where the parameters required to calculate the thermal response are explained below.
```julia
heater = Layer(ky_1, kxy_1, d_1, ρC_1)
substrate = Layer(ky_2, kxy_2, d_2, ρC_2)
specimen = Layer(ky_3, kxy_3, d_3, ρC_3)
layers = [heater specimen substrate]
```
#### Cross-plane thermal conductivity
`ky::Float64` is the thermal conductivity of the layer, in units of Watt/meter/Kelvin.
#### In-plane/Cross-plane thermal conductivities ratio
`kxy::Float64` is the ratio between the in-plane to cross-plane thermal conductivities. It is a dimenionless number. This is the parameter that accounts for the 2D heat conduction.
#### Thickness
`d::Float64` defines the physical thickness of the layer in units of meter.
#### Heat capacitance
`ρC::Float64` is the product of the material density (kg per cubic meter) times the heat capacity (calories per degree).
### HeaterInformation type
This type contains the information about the geometry of the heater use to excite the films. The calling structure is `hgeometry = HeaterGeometry(b, l, ρh)`, where `HeaterGeometry <: HeaterInformation`. The method considers a planar geometry of the heater with defined width and length. The parameters are defined below.
#### Heater half-width
`b::Float64` is the heater half-width, in units of meter. The half-width appears naturally in the theory so it is a characteristic parameter instead of the width itself.
#### Heater length
`l::Float64` is the length of the heater, in units of meter. The length is defined, independently of the number of probes in the system, the distance between the pads used to measure the voltage drop, not those to drive the electrical current.
#### Heat capacitance of the heater
`ρh::Float64` is the product of the heater density (kg per cubic meter) times the heat capacity (calories per degree).
### HeaterSource type
This type wraps the electrical source power and the linear frequency range of the simulation. `source = Source(p, f)`, where `Source <: HeaterSource`. The parameters are defined below.
#### Electrical power
`p::Float64` is the peak power applied to the heater, in units of Watt. The power is defined as the product of the resistance at the temperature the measurements are taken times the squared electrical current that flows through the pads.
#### Frequency range
`f` is the frequency range in units of Hertz. The recommended way to define this parameters is in log-space. An easy way to do this is `f = exp10.(LinRange(f_initial, f_final, f_length))`. Notice that if you set the range in linear-space and then take a log-plot, results in a less convenient look of the simulation.
### Interface resistance
The method implemented here allows to input the resistances given by the interfaces between layers. `thresistances::Array{Float64,1}` sets the resistance for each interface in units of Kelvin*meter/Watt. The parameter is an `Array` where `lastindex(thresistances) == size(layers,2) - 1`.
### Integration limit
`int_limit::Float64` sets the upper integration limit for the numerical integration with `QuadGK` package. This is an optional parameter with default value of `1.0e6`.
## Output arguments
`ΔT::Array{ComplexF64,1}` is the temperature rise response calculated in the 2-omega mode.
`int_error::Array{Float64,1}` is the error returned from `QuadGK` process at each frequency.
## We welcome suggestions
If you have ideas and suggestions to improve `ThreeOmegaMethod.jl` in Julia, PRs and issues are welcomed.