In [9]:
#Pkg.clone("https://github.com/jhlq/Equations.jl")
#Pkg.update()
using Equations
#=
λD is the Debye length,
ε0 is the permittivity of free space,
kB is Boltzmann's constant,
qe is the charge on an electron,
Te and Ti are the temperatures of the electrons and ions, respectively, multiplied by the Boltzmann's constant,
ne is the density of electrons
=#
constants=[:me≖9.1094e-31,:qe≖1.6022e-19,:kB≖1.3807e-23,:ε0≖8.8542e-12]
# Solar wind
ne=:ne≖10.0^7
Te=:Te≖10.0*:qe
variables=[ne,Te]
# Debye length lD
lD=:λD≖sqrt(:ε0*:Te/(:ne*:qe^2)) #valid when Te>>Ti
# plasma frequency wp
wp=:ωp≖sqrt(:ne*:qe^2/(:ε0*:me))
# particles in a debye cube ND
ND=:ND≖:ne*:λD^3
println(lD&variables&constants)
println(wp&lD&variables&constants)
println(ND&lD&variables&constants)
In [10]:
println("Lightning")
ne.rhs=10.0^23
println(lD&variables&constants)
println(wp&lD&variables&constants)
println(ND&lD&variables&constants)
println("Magnetic fusion plasma")
ne.rhs=10.0^20
Te.rhs=10.0^4*:qe
println(lD&variables&constants)
println(wp&lD&variables&constants)
println(ND&lD&variables&constants)
println("Magnetic fusion plasma")
ne.rhs=10.0^17
Te.rhs=10.0^4*:kB
println(lD&variables&constants)
println(wp&lD&variables&constants)
println(ND&lD&variables&constants)
In [11]:
#parameters for solar core: ne=10^32, Te=10^7 => λD ~ 10^−11
ne.rhs=10.0^32
Te.rhs=10.0^7*:kB
println(lD&variables&constants)
println(wp&lD&variables&constants)
println(ND&lD&variables&constants)
In [12]:
# Drifts
ve=:ve≖Cross(:E⊥,:B)/norm(:B)^2
ex=[1,0,0];ey=[0,1,0];ez=[0,0,1]
B=:B≖:Bt*Vec(ez)
Bt=:Bt≖1.5
r=:r≖1
dBt=:dBt≖0.3
Eperp=:E⊥≖-:r/2*:dBt*Vec(ey)
vars=[B,Bt,Eperp,r,dBt]
println(ve&vars)
println(ve&Eperp&B)
In [13]:
equ=Equation
# Compression factor
op1=equ(:rt,:r0*sqrt(:Bz0/:Bzt))
op3=equ(:rt,:r0*:Bzt/:Bz0)
Bpz=equ(:Ḃz,0.1)
Bz0=equ(:Bz0,5)
r0=equ(:r0,3)
rp=equ(:ṙ,-0.5*:r/:Bz*:Ḃz)
rp0=equ(:ṙ0,-0.5*:r0/:Bz0*:Ḃz)
vars=[rp0,Bpz,Bz0,r0]
rd=equ(:rΔ,:r0+:ṙ0)
Bzd=equ(:BzΔ,:Bz0+:Ḃz)
Bzds=Bzd&vars
rds=rd&rp0&vars
rdn=(op1&equ(:Bzt,:BzΔ)&vars&Bzds).rhs #n=numeric
nsteps=9
rq=rd
rqn=rds.rhs
op1s=rdn
Bqn=Bzds.rhs
for step in 1:nsteps #q=r-1
rqp=-0.5/Bqn*rq.rhs*:Ḃz
rr=equ(symbol("r$(step)Δ"),rqn+rqp)
rrs=rr&vars
print(rrs," \t")
Br=equ(symbol("Bz$(step)Δ"),Bqn+:Ḃz)
Brs=Br&vars
println((op1&equ(:Bzt,symbol("Bz$(step)Δ"))&vars&Brs))
Bqn=Brs.rhs
rqn=rrs.rhs
end
In [14]:
# Temperatures
Ekin=equ(:Ekin,0.5*:Tpa+:Tpe)
parfac=1
Tpa1=equ(:Tpa1,parfac*:T0) #is parallel temperature affected?
Tpe1=equ(:Tpe1,2*:T0)
println(Tpa1,", ",Tpe1)
Ek1=equ(:Ek1,0.5*:Tpa1+:Tpe1)
Ek2=equ(:Ek1,0.5*:T2+:T2)
Ek1s=Ek1&Tpa1&Tpe1 #s=solved
T2=(Ek2&Ek1s)/1.5
T2=equ(T2.rhs,T2.lhs)
println(T2)
Tpa3=equ(:Tpa3,1/parfac*:T2) #is it?
Tpe3=equ(:Tpe3,:T2/2)
Ek3=equ(:Ek3,0.5*:Tpa3+:Tpe3)
Ekf=[equ(:Ekf,0.5*:Tf+:Tf),equ(:Ekf,:Ek3)]
Tf=(Ekf[1]&Ekf[2]&Ek3&Tpa3&Tpe3&T2)/1.5
println(Tf) #nope