holeearthgradient.frink

Download or view holeearthgradient.frink in plain text format


// Program to find the time spent falling through a hole in the earth assuming
// a non-uniform earth.  The density of the earth is modeled using a linear
// range of densities starting from 2.2 g/cm^3 at the surface and going to
// 13.0 g/cm^3 at the core.  There is a small "fudge-factor" to make this
// integrated density equal the known mass of the earth.

// This program is written in Frink:
//  https://frinklang.org/
//
// Alan Eliasen, eliasen@mindspring.com

earthdensity := earthmass / (4/3 pi earthradius^3)

// This finds the mass that's still below you at a given distance from the
// earth's center.
mass[dist is length] := dist^3 21.4938 1.0748347372 ((2.2-13.0) dist/earthradius  + 13.0) g/cm^3 / 2.2 

// Find the acceleration at a given distance from the core.
a[dist is length] := G mass[dist]/dist^2

println[mass[earthradius]]

var v is velocity = 0 m/s         // Velocity at end of timestep
var stepsize is time = 1/100 s
var d is length = earthradius
var t is time = 0 s
var a is acceleration = 0 gravity

while (d > 0 m)
{
   t = t + stepsize
   a = a[d]
   v = v + a stepsize
   d = d - v stepsize

   // Print results every second
   if (t mod sec == 0 s)
     println[(t -> sec) + "\t" + (d->km) + "\t" + (v->mph) + "\t" + (a->m/s^2)]
}

// Print final times
println[(1. t -> ["min", "sec"]) + "\t, " + (v->"mph")]


Download or view holeearthgradient.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 19967 days, 6 hours, 46 minutes ago.