# Gravity Balloon pressure, radius, and mass relations

Nov 3rd, 2013
90
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. Function Gval()
2.   Gval = 6.67384E-11
3. End Function
4. Function Pi()
5.   Pi = 3.14159265358979
6. End Function
7. ' Functions based on (M,R,t) triple
8. Function M_Rt(R As Double, t As Double, rho As Double) As Double
9.   M_Rt = (4# / 3#) * Pi() * rho * ((R + t) ^ 3 - R ^ 3)
10. End Function
11. Function R_Mt(M As Double, t As Double, rho As Double) As Double
12.   R_Mt = (-t + (t ^ 2 - 4 * ((t ^ 2) / 3 - M / (4 * Pi() * rho * t))) ^ (1 / 2)) / (2)
13. End Function
14. Function t_RM(R As Double, M As Double, rho As Double) As Double
15.   t_RM = (M / ((4 / 3) * Pi() * rho) + R ^ 3) ^ (1 / 3) - R
16. End Function
17. Function dtdR_RM(R As Double, M As Double, rho As Double) As Double
18.   dtdR_RM = R ^ 2 / (3 * M / (4 * Pi() * rho) + R ^ 3) ^ (2 / 3) - 1
19. End Function
20. ' Composite function
21. Function dPdR_RM(R As Double, M As Double, rho As Double) As Double
22.   dPdR_RM = dPdR_Rt(R, t_RM(R, M, rho), rho) + dPdt_Rt(R, t_RM(R, M, rho), rho) * dtdR_RM(R, M, rho)
23. End Function
24. ' Functions based on (P,R,t) triple
25. Function P_Rt(R As Double, t As Double, rho As Double) As Double
26.   P_Rt = (2# / 3) * Pi() * Gval() * (t * rho) ^ 2 * (3 * R + t) / (R + t)
27. End Function
28. Function dPdt_Rt(R As Double, t As Double, rho As Double) As Double
29.   dPdt_Rt = (4# / 3) * rho ^ 2 * Pi() * Gval() * t * (3 * R ^ 2 + 3 * R * t + t ^ 2) / (R + t) ^ 2
30. End Function
31. Function dPdR_Rt(R As Double, t As Double, rho As Double) As Double
32.   dPdR_Rt = 4 * t ^ 3 * Gval() * Pi() * rho ^ 2 / (3 * (R + t) ^ 2)
33. End Function
34. Function R_Pt(P As Double, t As Double, rho As Double) As Double
35.   R_Pt = (1# / 3) * t * (3 * P - 2 * rho ^ 2 * Pi() * Gval() * t ^ 2) / (-P + 2 * rho ^ 2 * Pi() * Gval() * t ^ 2)
36. End Function
37. Function t_RP(R As Double, P As Double, rho As Double) As Double
38.   Dim n As Integer, delta As Double
39.   t_RP = 1.366 * (P / (2 * Gval() * Pi())) ^ (1# / 2) / rho
40.   n = 1
41.   Do
42.     delta = -(P_Rt(R, t_RP, rho) - P) / dPdt_Rt(R, t_RP, rho)
43.     t_RP = t_RP + delta
44.     n = n + 1
45.     If (Math.Abs(delta / t_RP) < 0.000001) Then
46.       Exit Do
47.     ElseIf (n > 20) Then
48.       t_RP = -2
49.       Exit Do
50.     End If
51.   Loop
52. End Function
53. ' Functions based on the (P,R,M) triple
54. Function M_RP(R As Double, P As Double, rho As Double) As Double
55.   M_RP = M_Rt(R, t_RP(R, P, rho), rho)
56. End Function
57. Function P_RM(R As Double, M As Double, rho As Double) As Double
58.   P_RM = P_Rt(R, t_RM(R, M, rho), rho)
59. End Function
60. Function R_MP(M As Double, P As Double, rho As Double) As Double
61.   Dim n As Integer, delta As Double
62.   R_MP = R_Mt(M, (P / (2 * Pi() * Gval())) ^ (1 / 2) / rho, rho) - 0.5 * (P / (2 * Pi() * Gval())) ^ (1 / 2) / rho
63.   n = 1
64.   Do
65.     delta = -(P_RM(R_MP, M, rho) - P) / dPdR_RM(R_MP, M, rho)
66.     R_MP = R_MP + delta
67.     n = n + 1
68.     If (Math.Abs(delta * rho / (P / (2 * Gval() * Pi()))) ^ (1 / 2) < 0.000001) Then ' divide by est. value of t
69.      Exit Do
70.     ElseIf (n > 20) Then
71.       R_MP = -2
72.       Exit Do
73.     End If
74.   Loop
75. End Function
RAW Paste Data