program earth_energy_blackbody
implicit none
real::t,tmax,dt,E_R,E_CS,E_SA,W_depth,W_density,W_SH,W_HC,SPY,SC,SB,Solar_to_Earth
real,dimension(700)::EarthEnergy,TempK,TempC,Surfheat_to_Space
integer::i,imax
! Program to calculate the temperature of the surface of the Earth under blackbody conditions.
! Written by Joel Dashnaw and Kirsten Menking, Dept. of Geology and Geography, Vassar College,
! Poughkeepsie, NY 12604, July 7, 2003. Based on the following readings:
! Few, A.A., 1996, System Behavior and System Modeling, Sausalito, CA: University Science
! Books, p. 27-37.
! Graedel, T.E., and Crutzen, P.J., 1993, Atmospheric Change: An Earth System Perspective,
! New York: W.H. Freeman and Company, 446 p.
! Harte, J., 1988, Consider a Spherical Cow, Sausalito, CA: University Science Books,
! p. 69-72, p. 160-167.
! The variables used in this model are as follows:
! RESERVOIRS:
! EarthEnergy = This model is a "swamp model", which assumes that the whole of the Earth's
! surface is covered by a layer of water of a certain depth (in this case 1 meter). This
! is done to simplify the model, as the Earth's surface can then be considered to have uniform
! conditions. Earth Energy reservoir is the amount of joules stored in the Earth's swamp
! surface.
! FLUXES:
! Solar_to_Earth = Incoming short-wave radiation emitted from the Sun to the surface of the
! Earth over time.
! Surfheat_to_Space = Outgoing long-wave radiation emitted from the surface of the Earth to
! Space over time.
! CONVERTERS:
! E_R = Radius of the Earth
! E_CS = Cross section of the Earth
! E_SA = Surface Area of the Earth
! W_depth = Water depth. The initial assumption of depth of the layer of water ("swamp")
! covering the Earth is 1.0 meter. This may be changed for experimentation.
! W_density = Density of water
! W_SH = Specific Heat of water
! W_HC = Heat Capacity of water
! SPY = Seconds per year
! SC = The solar constant, which is the incoming solar flux multiplied by seconds per year.
! SB = The Stefan Boltzmann constant multiplied by seconds per year.
! TempK = The temperature of the Earth's surface in degrees Kelvin.
! TempC = The temperature of the Earth's surface in degrees Celsius.
! OTHER VARIABLES:
! i = Counting loop incremental
! imax =
! t = Time in years.
! tmax =
! dt = Time step in years.
dt=(1./128.)
t=0.
!Initial values of reservoirs**************************************
EarthEnergy(1)=0. !Joules
TempK(1)=0. !degrees K: At time=1 initial value=0
TempC(1)=0. !degrees K: At time=1 initial value=0
!Initial Values of Flows*******************************************
Surfheat_to_Space(1)=0. !Joules/years: At time=1 initial value=0
!Equations and values of Program Variables************************
E_R=6371.0e3 !meters
E_CS=3.1415*(E_R**2) !meters^2
E_SA=4.0*3.1415*(E_R**2) !meters^2
W_depth=1.0 !meters
W_density=1000.0 !Kilograms/meters^3
W_SH=4218.0 !Joules/Kilograms*degrees K
W_HC=W_depth*E_SA*W_density*W_SH !Joules/degrees K
SPY=3.15576e7 !seconds/years
SC=1368.0*SPY !Joules/meters^2*years
SB=5.67e-8*SPY !Joules/meters^2*years*degrees K^4
Solar_to_Earth=SC*E_CS !Joules/years
tmax=5.
imax=int((tmax+dt)/dt)
do i=2,imax
! Quantity in reservoir = quantity at previous timestep + (inflows - outflows)*dt
EarthEnergy(i)=EarthEnergy(i-1)+(Solar_to_Earth-Surfheat_to_Space(i-1))*dt
TempK(i)=EarthEnergy(i-1)/W_HC
TempC(i)=TempK(i)-273.15
Surfheat_to_Space(i)=E_SA*SB*(TempK(i)**4)
t=t+dt
write(*,*)i,t,TempK(i),TempC(i) !Write output file
enddo
end