Your question seems straightforward enough, until you start to think about
what you mean by absorbing heat "efficiently". This can mean either of two
things:
1. The amount of heat absorbed during a given rise in the
temperature of the material.
2. The rate at which heat is absorbed.
The first is a matter of heat capacity, and to answer this you must either
measure or look up the heat capacity of the materials in question. The
second, however, is much more complex. It depends not only on the heat
capacity, but the the heat transfer coefficient and whether or not the
material is porous.
There's something of a further difficulty in that "rock", "sand" and "soil"
are not precise terms, and each can be made of quite a large variety of
materials.
I am going to guess (and it is that, so you may have to resubmit another
question after reading this answer) that what you are concerned about is the
differences in heat absorbtion due to porosity. In the most common case,
rocks, sands, and soils are mostly silicates that differ in the size of the
constituent particles. We will take it that we are absorbing the heat from a
fluid (either gas or liquid). The governing equation is
Q = U * A * delta-T where Q is the heat transferred
U is a constant dependent on
the materials used, called the
heat transfer coefficient
A is the area in contact between
the sand/soil/rock and fluid
delta-T is the temperature dif-
ference between fluid and the
rock/soil/sand.
Now, it is true that rock will have far less area of contact than will
sand, which in turn will have far less area of contact than soil. We will
take it as given that U is about the same for all 3 materials and that the
initial delta-T (which changes as heat is absorbed, of course) is the same.
So it'd seem at first glance that soil would be best. Unfortunately, since
the pore sizes of soil are quite small, pushing the fluid through it is a
good deal harder than with sand. Thus the ability to provide enough hot
fluid may be the limiting factor, not the heat transfer coefficient at the
fluid/silicate interface, or the internal thermal conductivity of the
silicates themselves.
This Mad Scientist went through this exercise when thinking about adding
a solar heat reservoir to his house. It turns out that fairly small rocks or
large gravel was the material of choice for that application, and this was
due to the need to be able to circulate the air through the heat absorbing
bed fast enough to capture the heat while the sun was shining, but not
dissipate a lot of power running the fan. However, it is quite possible that
with a smaller souce of fluid (say a small supply of superheated steam into
a large bed of silicate) that you might find the fluid circulation to not be
an issue and soil may be better than sand. In applications where very slow
heat transfer rates are required, but as much heat must be stored in a given
volume as possible, even non-porous rock could be the best choice.
At the risk of complicating the matter more, let me mention that there are
far better heat-absorbing materials than any of rock, sand or soil. These
are generally materials associated with a phase change. For solar heating,
for example, there are certain salts that change phase at temperatures close
to those we nomally like to keep inside our houses. The heat capacity
becomes essentially infinite until the phase change is completed (that is,
you can absorb heat without having to raise the temperature) and this makes
for a very efficient system that can absorb a lot of heat. It also turns out
that the amount of heat that can be taken up by a phase change is generally
large with respect to the simple warming of a material.
Where to go for additional information? You can look up heat capacities of
quite a number of materials in handbooks such as the "Handbook of Chemistry
and Physics". For the mathematics of heat transfer (a complicated subject
that is likely to get into differential equations quite quickly) I can refer
you to "Transport Phenomena" by Bird, Stewart, and Lightfoot. For some real
data on solar heating, you will need to contact people more active in the
field that I am. I'd suggest seeing if there are any civil engineers or
architects in your area that specialize in solar heating applications. They
may well be willing to help out on a science project by being interviewed,
or providing specific data on materials presently in use for the heat
storage beds. The U.S. Dept. of Energy has a set of web pages:
http://www.er
en.doe.gov/buildings/case_study/casestudy.html
that includes examples of solar designs, some of which use concrete slabs
for heat reservoirs (pretty close to rock), some use pipes through the soil
beneath the basement, and some use pea gravel (pretty close to sand). There
are a number of different approaches to look at. You might also wish to
go to the more general DOE site http://www.eren.doe.gov and browse around.