Last active
August 29, 2015 14:21
-
-
Save vadimkantorov/2d6e8c10854166497389 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
open Microsoft.FSharp.Data.UnitSystems.SI.UnitNames | |
open Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols | |
[<Measure>] | |
type mm = | |
static member perMeter = 1e+3<mm/m> | |
let pi = System.Math.PI | |
let epsilon_0 = 8.854187817e-12<F m^-1> | |
let elementary_charge = 1.602176565e-19<coulomb> | |
let R_1 = 6.0<mm> / mm.perMeter | |
let R_2 = 18.0<mm> / mm.perMeter | |
let E_d = 427.4<volt / m> | |
let r_a = R_1 | |
let r_b = 9.0<mm> / mm.perMeter | |
let r_c = R_2 | |
let r_d = 90.0<mm> / mm.perMeter | |
let q = elementary_charge | |
let m = 1.67262177774e-27<kg> | |
let sqr (x:float<_>) = x * x | |
let sigma = E_d * epsilon_0 * (sqr r_d) / (sqr R_1 + sqr R_2) | |
let q_1 = 4.0 * pi * sqr R_1 * sigma | |
let q_2 = 4.0 * pi * sqr R_2 * sigma | |
let C = 1.0 / (4.0 * pi * epsilon_0) | |
let phi r1 r2 = C * q_1 / r1 + C * q_2 / r2 | |
let E_I r = C * 0.0<coulomb m^-2> | |
let E_II r = C * q_1 / sqr r | |
let E_III r = C * q_1 / sqr r + C * q_2 / sqr r | |
let E_a_in = E_I r_a | |
let E_a_ex = E_II r_a | |
let E_b = E_II r_b | |
let E_c_in = E_II r_c | |
let E_c_ex = E_III r_c | |
let omega_b = epsilon_0 * sqr E_b / 2.0 | |
let phi_c = phi r_c r_c | |
let phi_d = phi r_d r_d | |
let phi_b = phi r_b r_c | |
let phi_a = phi r_a r_c | |
let W_b = q*(C*q_1 / r_b) | |
let A_bd = -(phi_d - phi_b)*q | |
let V_d = sqrt (q*(C * q_1 / r_d + C * q_2 / r_d) / (m / 2.0)) | |
printfn "sigma = %A [10^-9 coulomb m^-2]" (float sigma / 1e-9) | |
let print_E s e = printfn "%s = %A [10^3 volt m^-1]" s (float e / 1e+3) | |
print_E "E_a_in" E_a_in | |
print_E "E_a_ex" E_a_ex | |
print_E "E_b" E_b | |
print_E "E_c_in" E_c_in | |
print_E "E_a_ex" E_c_ex | |
print_E "E_d" E_d | |
printfn "omega_b = %A [joule m^-3]" (float omega_b / 1e-5) | |
let print_phi s e = printfn "%s = %A [volt]" s e | |
print_phi "phi_a" phi_a | |
print_phi "phi_b" phi_b | |
print_phi "phi_c" phi_c | |
print_phi "phi_d" phi_d | |
let print_aw s e = printfn "%s = %A [10^-19 joule]" s (float e / 1e-19) | |
print_aw "W_b" W_b | |
print_aw "A_bd" A_bd | |
printfn "V_d = %A [10^6 m s^-1]" (float V_d / 1e+6) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment