Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

    'condition' is the condition under which the field should get declared. For example, certain fields are only needed when certain schemes are used. So they only need to get declared when the respective scheme is used. Otherwise they should not get declared so they do not use memory space unnecessarily and do not get written in the restart files.

Fields that get only(!) used by the surface schemes need to get declared in rpnphy/surface/sfc_businit.F90.
All other fields need to get declared in
rpnphy/base/phyvar.hf.

Entry, dynamic, volatile and

...

permanent bus

As mentioned above, the entry bus is almost not used anymore. It was used for fields which got read by the entry (which does not exist anymore) and then passed to the model.
Fields from the entry bus need to get declared as "VB=e1" - see above.

The dynamic bus contains fields which get passed from and to the dynamics. If possible, do not add fields to the dynamic bus as this gets quite complicated.
For both, variables need to get declared in rpnphy/base/phyvar.hf. Variables from the entry Fields from the dynamic bus need to get declared as "VB=e1", fields from the dynamic bus as "VB=d1" - see above.

Volatile and permanent bus

All pure physics fields that are NOT needed to calculate the next timestep should go in the volatile bus. These are, for example, precipitation rates or instantaneous radiation.
Fields from the volatile bus need to get declared as "VB=v1" - see above.

All fields of which the content is needed in the next timestep need to be in the permanent bus. For example, . However, their accumulators need to be in the permanent bus, since they usually get accumulated over several timesteps. The same goes for averages, minimum and maximum fields. But there are also instantaneous fields that need to be in the permanent but like snow depth or temperature fields, because they are needed for the next timestep.
Fields from the permanent bus need to get declared as "VB=p0" resp. as "VB=p1" (mandatory to get read at timestep 0) - see above.

Surface bus



If variable is in the rest of the physics
    base/phyvar.hf : variable declaration in physics bus
    surface/sfcbus_mod.F90 : copy variable from physics bus to surface bus
        SFCVAR(name_in_surface_bus, 'name_in_physics_bus')

Explain what a bus is: slab with just land points etc.

in class_main:
    declare variable as pointer with the correct dimension (1-D)
        all usually 2-D fields are 1-D because we only get one row
        all usually 3-D fields are 2-D because we only get one slab