...
In the main surface routine, surface/sfc_main.F90, all fields needed by the surface schemes get copied from the three busses (dynamic, permanent and volatile) to the surface bus in calls to the routine 'copybus'. The routine 'copybus' gets called for all surface schemes separately. It copies only points from the three busses to the surface bus for there is a fraction greater than a critical value of the respective surface scheme. For example, before the soil routine (ISBA/SVS/CLASS) gets called, 'copybus' will copy all points of the needed fields that contain a soil fraction greater equal 'critmask' to the surface bus. The starting address parameters (the ones declared in sfc_businit.F90 resp. phyvar.hf), will get new values assigned, matching now the start of the variable in the surface bus.
This means that fields in the surface routines are usually shorter than in the rest of the physics and they are usually different in the different surface schemes!
In the surface one passes the surface bus, its size, the list of variable and its size to the surface routine.
When called from the main surface routine, surface/sfc_main.F90, the main routines of the different surface schemes then get called, passing to them:
- the surface bus itself
- the size of the surface bus
- the new starting addresses of the variable in the surface bus and
- the number of variables
Explain what a bus is: slab with just land points etc.
...