Skip to content

Commit 0bbfd7c

Browse files
committed
refactor: add type and doc
1 parent c891169 commit 0bbfd7c

File tree

1 file changed

+52
-10
lines changed

1 file changed

+52
-10
lines changed

src/speeds.jl

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,67 @@
11
# TODO: Sound speed
22

3-
function Alfven_velocity(B::BField, ρ::Density)
4-
return B / sqrt(μ0 * ρ) |> upreferred
3+
const BFields = Union{BField,AbstractVector{<:BField}}
4+
5+
"""
6+
Alfven_velocity(B::BFields, ρ::Density)
7+
Alfven_velocity(B::BFields, n::NumberDensity; mass_numb = 1, z = 1)
8+
9+
Calculate the Alfvén velocity (v_A = B/√(μ₀ρ)) in a magnetized plasma.
10+
11+
# Arguments
12+
- `B`: Magnetic field strength (scalar or vector)
13+
- `ρ`: Mass density
14+
- `n`: Number density
15+
- `mass_numb=1`: Mass number of the ion species
16+
- `z=1`: Ion charge number
17+
18+
# Examples
19+
```julia
20+
# Using mass density
21+
B = 1.0u"T"
22+
ρ = 1.0u"kg/m^3"
23+
va = Alfven_velocity(B, ρ)
24+
25+
# Using number density
26+
n = 1.0e19u"m^-3"
27+
va = Alfven_velocity(B, n, mass_numb=1, z=1)
28+
29+
# Vector input
30+
B = [1.0, 2.0, 3.0]u"T"
31+
va = Alfven_velocity(B, n)
32+
```
33+
34+
See also: [`Alfven_speed`](@ref)
35+
"""
36+
function Alfven_velocity end
37+
38+
@permutable_args function Alfven_velocity(B::BFields, ρ::Density)
39+
return B ./ sqrt(μ0 * ρ) .|> upreferred
540
end
641

7-
function Alfven_velocity(B::BField, n::NumberDensity; mass_numb = 1, Z = 1)
8-
ρ = n * (mass_numb * mp + Z * me)
42+
@permutable_args function Alfven_velocity(
43+
B::BFields,
44+
n::NumberDensity;
45+
mass_numb = 1,
46+
z = 1,
47+
)
48+
ρ = n * (mass_numb * mp + z * me)
949
return Alfven_velocity(B, ρ)
1050
end
1151

12-
Alfven_velocity(B::AbstractVector, args...; kwargs...) =
13-
[Alfven_velocity(Bi, args...; kwargs...) for Bi in B]
14-
1552
"""
16-
Alfven_speed(args...; kwargs...)
53+
Alfven_speed(B::BField, ρ::Density)
54+
Alfven_speed(B::BField, n::NumberDensity; mass_numb = 1, z = 1)
1755
1856
The typical propagation speed of magnetic disturbances in a quasineutral plasma.
1957
20-
References: [PlasmaPy API Documentation](https://docs.plasmapy.org/en/stable/api/plasmapy.formulary.speeds.Alfven_speed.html)
58+
References: [Wikipedia](https://en.wikipedia.org/wiki/Alfven_wave), [PlasmaPy API](https://docs.plasmapy.org/en/latest/api/plasmapy.formulary.speeds.Alfven_speed.html)
2159
"""
22-
Alfven_speed(args...; kwargs...) = norm(Alfven_velocity(args...; kwargs...))
60+
function Alfven_speed end
61+
62+
@permutable_args Alfven_speed(B::BFields, n::NumberDensity; mass_numb = 1, z = 1) =
63+
norm(Alfven_velocity(B, n; mass_numb, z))
64+
@permutable_args Alfven_speed(B::BFields, ρ::Density) = norm(Alfven_velocity(B, ρ))
2365

2466

2567
function thermal_speed(

0 commit comments

Comments
 (0)