feat: notes and CT reconstruction data from latest weeks

The CT data is super interesting; most definitely worth going through.
main
Sofus Albert Høgsbro Rose 2025-04-10 08:14:13 +02:00
parent 82000b9171
commit 3aff8fbe3c
Signed by: so-rose
GPG Key ID: AD901CB0F3701434
704 changed files with 4050 additions and 0 deletions

View File

@ -7,5 +7,9 @@ indent_style = tab
indent_size = 4
trim_trailing_whitespace = false
[*.typ]
indent_style = space
indent_size = 2
[*.yml]
indent_style = space

7
.gitattributes vendored
View File

@ -2,8 +2,10 @@
*.pdf filter=lfs diff=lfs merge=lfs -text
*.odt filter=lfs diff=lfs merge=lfs -text
*.doc filter=lfs diff=lfs merge=lfs -text
*.ppt filter=lfs diff=lfs merge=lfs -text
*.pptx filter=lfs diff=lfs merge=lfs -text
*.docx filter=lfs diff=lfs merge=lfs -text
*.xlsx filter=lfs diff=lfs merge=lfs -text
# Image
*.jpg filter=lfs diff=lfs merge=lfs -text
@ -17,6 +19,8 @@
*.tga filter=lfs diff=lfs merge=lfs -text
*.aif filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.tif filter=lfs diff=lfs merge=lfs -text
*.tiff filter=lfs diff=lfs merge=lfs -text
# Audio
*.mp3 filter=lfs diff=lfs merge=lfs -text
@ -39,3 +43,6 @@
*.a filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.mat filter=lfs diff=lfs merge=lfs -text
*.raw filter=lfs diff=lfs merge=lfs -text
*.vvi filter=lfs diff=lfs merge=lfs -text

1
.python-version 100644
View File

@ -0,0 +1 @@
3.13

0
README.md 100644
View File

6
main.py 100644
View File

@ -0,0 +1,6 @@
def main():
print("Hello from materials-characterization!")
if __name__ == "__main__":
main()

17
pyproject.toml 100644
View File

@ -0,0 +1,17 @@
[project]
name = "materials-characterization"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = [
"fastexcel>=0.13.0",
"hvplot>=0.11.2",
"ipykernel>=6.29.5",
"jupyter-bokeh>=4.0.5",
"matplotlib>=3.10.1",
"numpy>=2.2.4",
"polars>=1.26.0",
"pyarrow>=19.0.1",
"sympy>=1.13.3",
]

13
ref/bookmarks.md 100644
View File

@ -0,0 +1,13 @@
- https://materialhub.org/
- https://github.com/ncfrey/resources
- https://fair-chem.github.io/core/datasets/odac.html
- https://mattermodeling.stackexchange.com/questions/340/is-there-any-complete-list-of-open-source-hubs-specifically-designed-for-materia
- https://materials.registry.nist.gov/
- https://tpsx.arc.nasa.gov/
- https://pypi.org/project/steelpy/
- https://openmaterialsdb.se
# Continuum Modelling
- https://www.nature.com/articles/nmat3874
- https://www.nature.com/articles/nmat3825

1166
uv.lock 100644

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,199 @@
#import "@preview/theorion:0.3.2": *
#import "@preview/lovelace:0.3.0": *
#import "@preview/physica:0.9.4": *
#import "@preview/unify:0.7.1": num, qty, numrange, qtyrange
#import "@preview/cetz:0.3.1": *
#import "@preview/typsium:0.2.0": ce
#import "@local/rosetypst:0.1.0": *
#import cosmos.rainbow: *
#show: show-theorion
#set math.vec(delim: "[")
#set math.mat(delim: "[")
#set-inherited-levels(1)
#set-theorion-numbering("1.1")
#set page(
paper: "a4",
columns: 2,
margin: 1.5cm,
)
#set par(leading: 0.55em, justify: true)
#set text(10pt, font: "New Computer Modern")
#set heading(numbering: "1.1")
#show heading: set block(above: 1.4em, below: 1em)
#let first_heading = state("first_heading", true)
#show heading.where(level: 1): it => [
#if not first_heading.get() {
pagebreak()
} else {
first_heading.update(false)
}
#place(
top + center,
scope: "parent",
float: true,
text()[
#smallcaps(it)
],
)
]
= X-Ray Imaging
== Multiscale Characterization
Diffraction with X-Rays is very good at looking into things like:
- Batteries
- Layered Things
- Polycrystalline Structures
- Grains
- Dislocations in Materials
- Inside of Molecules
For instance, it is possible to image a sample of cast aluminum alloy and deduce where the void defects are.
_This can then be compared to models of stresses and strains!_
#example[
It's important to be able to characterize the evolution of cracks in wind turbines.
Using X-Ray tomography, this can be directly examined in 3D.
]
== X-Ray Radiology
The classical thing about radiography is that depth is difficult
#definition[
The #term[linear attenuation coefficient] is termned as
$ dv(I, x) = -mu(x) I(x) $
which solves to:
$ -ln(I_"det" / I_0) = integral_"path" mu(x) d x $
#[
#set align(center)
#canvas({
import draw: *
let pnt_source = (0,0)
let pnt_sample = (2.5,0)
let pnt_detector = (5,0)
circle(pnt_source, radius: (0.25, 0.5), fill: blue.transparentize(50%), stroke: (dash: "dashed"))
circle(pnt_sample, radius: (0.25, 0.5), fill: none, stroke: gray)
circle(pnt_detector, radius: (0.25, 0.5), fill: green, stroke: green)
line(pnt_source, pnt_detector, mark: (end: ">"))
content(pnt_source, anchor: "north", padding: 0.6, $"Source"$)
content(pnt_sample, anchor: "north", padding: 0.6, $"Sample"$)
content(pnt_detector, anchor: "north", padding: 0.6, $"Detector"$)
})
]
]
#definition[
The #term[attenuation coefficient]
$ mu prop sum_i (Z_i^4 rho_i) / E^3 $
]
== Radiography Setup
The principle is to sweep, then record angular deviations.
#todo[More detail]
== Algebraic Reconstruction
Consider a 2D slice of a voxel grid:
#[
#set align(center)
#canvas(length: 0.5cm, {
import draw: *
draw_xy_axes(x: 11, y: 11)
grid((0,0), (10,10), step: 1)
})
]
$ mb(M) vb(f) = vb(p) $
...
== Filtered Backprojection
In most commercial instruments, a Fourier Transform-based approach is used.
1. A sample is recorded as $P_theta (t)$.
2. This is "projected" to $vecrow(t, theta)$ chart is recorded.
3. The fourier transform of the $vecrow(t, theta)$ is computed, producing a $vecrow(omega, theta)$ diagram.
4. This is reconstructed back to a $vecrow(u, v)$ fourier space.
== Discrete Tomography
#todo[??]
== Synchrotrons
You build a large circle, and accelerate electrons to near the speed of light with large electromagnets.
They become pulsed, naturally.
When they travel sufficienly fast, the bending of the electrons cause the emission of very powerful, very parallel X-Rays.
=== Brilliance
How many useful X-Rays are there?
$ "brilliance" = "photons" / ("mrad"^2 dot "mm"^2 dot 0.1% dot "sec") $
These days, modern synchrotrons can reach a brilliance of $10^21$.
What can be done with more x-rays?
/ Speed: Hard things can be imaged faster - even to the point of real-time.
/ Materials: Very dense things can be imaged faster.
#example[
*Speed*: They were able to make a 3D movie of a fly, where it barely manages to flap its wings between frames.
Aka. they can see inside of the fly, including colors of ex. the muscles, the moving organs, etc. .
]
#example[
*Resolution*. They can image down to #qty("5", "nm") now!
_Electrons are still, with their theoretical resolution of #qty("5", "angstrom")._
]
== Phase Contrast Tomography
Consider the incoming wave.
Not only the "shadow" aka. absorption can be used; the phase, too, is available.
As it turns out.
#example[
Smallest detectable hole at #qty("25", "keV") is:
/ Absorption: #qty("20", "um")
/ Phase: #qty("0.05", "um")
]
== Diffraction Contrast Tomography
Finally, when studying crystals, the diffraction can also be measured to reconstruct the internal structure.

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,6 @@
[Data]
Experiment name: = "2025-03-13-test-4"
Author = "Sofus"
Institute = "Fysik"
Lecture ID = "10031"
Protected = FALSE

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More