Discussion > Simulation of Temperature
I think you are right - is 20 deg lat missing? I am going to ask JPL for the data.
Your emissivity may be low - try 0.98 (seems to be used by Vasavada)
Rhoda, my simulation, posted earlier reaches 396, much the same as the SoD plots. How are you calculating things (post the code perhaps)?
For what it is worth, I ran a little simulation of Earth and got an average temperature of 271°K (averaging energy, not temp). The code is here. There is no movement of heat from the equator to the poles in the model, so the real temp will be lower and 255°K would not seem an unreasonable outcome. Does anyone have a solid reason to doubt 255?
BB, "Does anyone have a solid reason to doubt 255?"
The argument goes that the Earth is similar to the Moon in terms of insolation and composition (but not rotation). However, even taking rotation into account, the grey body mean temperature of the Earth (without an atmosphere, and, obviously water) is much less than 255K. Diviner results confirm this.
If the above is correct, this invalidates IPCC physics (but this should be a subject for another thread, after we are finished here).
I guess you mean, "the grey body mean temperature of the Moon...". If not, I'm confused...
Sorry BB, I should not have mentioned the Earth and the IPCC. I think that should be an issue for another thread, after we are finished here. What I would really like to see is you, BigYin, rhoda and Paul Dennis agree on the mean greybody temperature of the Moon (my guess, for what it is worth, is 180K +/- 15K).
The best contribution I can make is to try to get the Diviner data from JPL. They probably already have the answer.
I've made some usability updates to the Model Page http://www.heatmodels.somee.com/
It's using AJAX now, which means that the bandwidth impacts are a lot less, since only the data, not all the HTML is coming back each time, so you don't have to worry about playing with it so much.
You can also mess with the specific heat and density.
Still only 1 equator point, and still only 1 layer being heated.
Have fun.
The first thing I tried was to reduce the layer depth to 1 cm (thinking of the surface layer of dust) and got a max temp of 450K, which is way above the max SB temperature possible. Can this identify a problem with the code?
Absolutely! I have noticed at some extreme values for density or specific heat (or depth), I get other odd effects. I suspect the heat capacity equation is having some problems. I will hopefully have some time to re-visit the code this week, if my current client client can leave me alone for a bit.
Roger, to agree an average Lunar temperature, we have to know some physical details that are not apparent. If you take my Earth simulation from yesterday and change some values you can simulate the Moon. As an example, with absorptivity (both) changed to 0.86, radius to 1737,100m, rotation period to 28 days, heat capacity to 200,000, the result is 231°K. Tweak the values and you'll get another result. Pick the one that suits you.
This is a whole moon average. It may be wrong of course. Whether it is meaningful is another matter. The equator swings from 100°K at night to 390°K at (lunar) midday. The poles are much colder. What value is the average? It is like having your head in a sauna and your feet in cold water. On average you might be at quite a comfortable temperature, but so what?
BTW, if you run a Mac or Linux, you have gcc, the C compiler already; on Windows, you are on your own.
Yin, I'd say you have too many parameters. The heat capacity value in my simulation (as per SoD) serves in place of your last 3 and is no worse. After all, for your three values to have any individual use, you have to know things like the conductivity of the surface material. Is your code available, out of interest?
BB, I'll post my code this week, it uses object programming, so it's a little bit spread around.
I assume that my slab of sand heats uniformly through the surface (which is crapola) but at least it provides a drag on heating and cooling, which your massless one doesn't seem to. The whole idea of having a heat capacity is that some of the energy coming in has to go heating this sink so the surface temp doesn't rise as fast as it should, and when the insolation is removed, the temperature cools at a lower rate because the sink provides some heat.
Once I've had a look at where I've broken the code moving it to async, I'm going to add another latyer and use conductivity calculations to let them heat and cool one another.
Yin, "...it provides a drag on heating and cooling, which your massless one doesn't seem to." Of course it does (that is why it is unstable when I set heat capacity too low; no damping), it is just that the actual mass/density/thickness don't matter.
My watery-Earth sim uses 4.2e6 Joules per Kelvin. There is no explicit mention of mass, but it is still there. Water has a specific heat of 4.2J/g.K so one cubic meter (1e6 litres) will have a heat capacity of 4.2e6 J/K. So the simulation is of a 1 meter deep ocean of water.
My moon sim used a heat capacity of 200,000 J/K. You can make up your own components from that. We know it is a sim of 1 square meter of surface, but is it 2e5 grams of material with a specific heat of 1J/g.K or 4e5 grams at 0.5J/g.K. Do we care? And was it 1cm think with a density of x or 10 cm thick with a density of x/10 ? These details are not relevant which is why the single figure is used by SoD.
BB, I am looking at it from a different perspective. I am one of those annoying people who writes software requirements specifications, which always include test procedures. In this case two of those would be that the maximum lunar temparature must not exceed (say) 400K, as this is the maximum theoretical SB equilibrium temperature, and the equatorial mean temperature must not exceed (say) 215K (Diviner measurement), Therefore, the mean temperature for the whole surface can not exceed 215K, as the equator receives the most insolation. Is this correct?
But, as I have said before, respect to you, BigYin and others who are doing the coding!
I understand you can remove mass/volume by assuming unity values (although doesn't that mean you are modelling a solid where 1 cubic meter has a mass of 1kg, or does your specific heat value take that into account?) but the main reason I wanted to include actual mass/thickness elements was because I was originally intending to model the surface as 5 or 10 thin slabs of different conductivity and specific heats.
One of Roger's original points was the moon seems to comprise of a thin regolithic dust/soil layer on top of a denser rock base, and this combination can make a difference, especially to the night-time values, a larger underground mass can retain heat better with a thin insulating layer on top.
I need to fix the equations first, I've obviously broken something.
Oops! I said (2:01PM) 1 cubic meter of water was 1e6 litres; the real value is of course 1000 litres. What I should have said was that it weighs 1e6 grams. Otherwise it is correct. So my watery Earth model considers a surface 1 meter deep, where each cubic meter has a mass of 1 tonne (1000kg).
I expect that some of you will have already seen this:
http://climatewiki.org.uk/Nexus:Unified_Theory_of_Climate_(Primer)
It claims that: "The moon's mean temperature as measured by Diviner is in the range 192K - 197K"
The rest of the reference is interesting too.
Apologies for not doing anything on here this week, I do have to get on with some of my real company work sometimes, which at the moment is doing a project for a large university in East Anglia... (no, not them)
I can see a quieter phase coming up, so it will be interesting to continue.
Hi All,
I have arrived late and only read quickly. Have you put all code and links in one single page?
From the previous thread and model web page I see some unconventional quantities and values.
The intercepted solar radiation is proportional to the cosine of the angle between sun and the vector normal to surface, for a flat horizontal surface that would be cos(zenith)
A conventional, acceptable resolution calculation is:
cos(zenith) = sin(lat) sin(decl) + cos(lat) cos(decl) cos(ha) (see e.g. http://www.esrl.noaa.gov/gmd/grad/solcalc/sollinks.html )
If you assume no tilt then decl=0 and it simplifies to cos(zenith) = cos(lat) cos(ha), where ha is the hour angle. If you integrate from sunrise to sunset, you don't need to bother with latitude, but I think it should be Math.cos(lat) and from -pi/2 to +pi/2
To get a meaningful temperature, the body in question should be in near equilibrium (let's say incoming daily radiation similar to daily emitted radiation), a good idea is to do many iterations until changes are small. I also think it is a good idea to heat up a thicker slab than 0.5 m
Density of water is 1000 kg/m^3, so anything that sinks in water (sand) should be denser.
Of course with tilt the southern hemisphere gets more radiation in summer, and it is mostly water, with lower albedo and higher emissivity, so it should have an effect.
Cooling rates follow an exponential decay, so rotation speed should have an impact.
For simple solar radiation calculations I use R package insol (check CRAN but download the developer page, which has an updated bug-corrected version). It works for a planet with or without atmosphere.
An example for 1 deg latitude intervals daily radiation values in 1 minute time steps would be:
require(insol)
lat=0# 1 minute intervals on the spring equinox
jd=JD(seq(ISOdate(2012,3,20,0),ISOdate(2012,3,20,23),by="1 min"))## sun position
sp=sunpos(sunvector(jd,lat,0,0))## select only daylight: zenith<=90
sp=sp[which(sp[,2]<=90),]rad=1366*cos(radians(sp[,2]))
plot(rad)for (lat in seq(1,90,1)) {
sp=sunpos(sunvector(jd,lat,0,0))
sp=sp[which(sp[,2]<=90),]
rad=1366*cos(radians(sp[,2]))
lines(rad,col=sample(colours(),1))
}
I hope it might be useful.
Hi Patagon,
Good to have another programmer here (with my medieval programming skills I'd have to do it in Fortran, and it would take me forever).
For what it is worth, your maths looks OK to me.
The background goes back several threads, and originated with discussions about the average greybody temperature of the Moon. The hope was to get three different sources to agree - analytical models, numerical models and empirical data from NASA's Diviner instrument. If / when this is achieved it may have implications for GHE calculations of the Earth - but that will be a subject for a different thread.
Good luck!
If I ever get time to get back to it....
I'm doing a little bit of work on this now, and I've found where my spurious errors were coming from.
Basically, I had an energy imbalanace in my equation. I was using a binary cutoff - when the surface was under the SB temperature for that level of insolation, I was using all of the available incoming photons in that time span to further heat the surface. Even if the surface temp was only 0.1 degrees below SB temps, so it would heat spuriously by about 50 Kelvin, then in the next time period decay away quickly, so it looked like 'hairy spikes' on top of the graph near midday,
I fixed it by subtracting current outgoing emission from incoming insolation to give a delta, and used those photons to warm the surface. The upshot is the corners that BB disliked have gone, the thermal changeover point is now curved instead of pointed, and the hairy spikes have gone, which means we don't get spurious max temp figures way above SB.
I only have the developer login for the website at home, so I will put up the new code later, and also the code I have used for people to have a look at.
I lost the login details for the old page, so set up a new one:
http://blackbodymodel.somee.com
Selected (important) bits of the code are now on the site for your perusal. The main part of the calculation is in Ajax.aspx.cs (the iteration) and Point.cs (the heat calcs)
Note the moon comes out at average of 258K for 1m warming depth.
Have fun.
Thanks James (and for the email reminder).
I have had a quick play, with my first goal to try to reproduce Diviner data for the Moon. In order to get close I had to reduce the specific heat (from your nominal value) by an order of magnitude. From some old notes I made I have found that a two layer model seemed to fit, with an increase in density from 1300 to 1800 kg/m^3 at 2 cm, and an increase in temperature dependent thermal conductivity from 0.0011 to 0.0094 W/m/K at 200K. Perhaps a 2 layer model is necessary?
I will continue to play.
Question - is this for the equator, or the whole surface?
Yes, this is still for one point on the equator.
I think there's a mistake in that graph. It doesn't match my temps...yeah, OK, I know. Two things. I am using 1366 insolation, 0.12 albedo, 0.95 emissivity. I can't get to 390K with this. Plainly I need more insolation. Second, I can't match the latitude lines to the graph, specifically I can only see nine lines but there ought to be ten. Just me, or an omission?