Hi Junqi,
Good question. This part of the model relates to the complex topic of boundary layer dynamics - how the objects in the landscape alter the turbulence and the way this affects convection and wind speed/air temperature profiles.
The calculation of the air temperature profile requires knowledge of the ground (surface) temperature and predicts the profile from the roughness height/zero plane displacement height up to the reference height, but not below.
The soil surface temperature D0cm is indeed the ground temperature. Have a read of Campbell and Norman 1998 Ch. 2 and 5 for the theory. NicheMapR's microclimate model isn't really set up at present for modelling conditions under a forest canopy (see Ilya Maclean's microclimc for what's involved).
If your habitat is relatively open, I would suggest you either don't use the D0/ZH parameters and set the roughness height to what is most relevant from the help in the model (smooth desert is 0.0003, closely mowed grass may be 0.001, bare tilled soil 0.002-0.006, current allowed range: 0.00001 (snow) - 0.02 m) or set D0/ZH based on the height of the sub-layer of vegetation (grass/shrubs).
You will need to do some kind of interpolation between the surface temperature (soil$D0cm) and the temperature just above the roughness/zero plane displacement height if you want temperatures below D0/RUF. Overall you should be aware that the microclimate model is not specifically designed to be able to answer the detailed question of how a single tree or sparse trees in a habitat would alter air temp/wind profiles in the trees. In such cases I would use D0/ZH or RUF based on the general landscape and simulate the tree environment as shaded conditions (based on the canopy cover) with Usrhyt set to <= Refhyt.
Hope that helps.
All the best,
Mike