The field manager reads entries from a field table and stores this information along with the type of field it belongs to. This allows the component models to query the field manager to see if non-default methods of operation are desired. In essence the field table is a powerful type of namelist. Default values can be provided for all the fields through a namelist, individual fields can be modified through the field table however.
"tracer","atmos_mod","sphum"/ "tracer","atmos_mod","sf6" "longname","sulf_hex" "advection_scheme_horiz","2nd_order" "Profile_type","Fixed","surface_value = 0.0E+00"/In this example we have two field entries.
mpp_mod
mpp_io_mod
fms_mod
use field_manager_mod [, only: field_manager_init,
field_manager_end,
find_field_index,
get_field_info,
get_field_method,
get_field_methods,
parse ]
| Name | Type | Value | Units | Description |
|---|---|---|---|---|
| NUM_MODELS | integer, parameter | 5 | --- | Number of models. |
| module_is_initialized | logical | .false. | --- | Field manager is initialized. |
| MODEL_ATMOS | integer, parameter | 1 | --- | Atmospheric model. |
| MODEL_OCEAN | integer, parameter | 2 | --- | Ocean model. |
| MODEL_LAND | integer, parameter | 3 | --- | Land model. |
| MODEL_ICE | integer, parameter | 4 | --- | Ice model. |
call field_manager_init (nfields, table_name)
| table_name | The name of the field table. The default name is field_table. [character, optional, dimension(len=128)] |
| nfields | The number of fields. [integer] |
call field_manager_end
value= find_field_index ( model, field_name )
| model | The number indicating which model is used. [integer] |
call get_field_info ( n,fld_type,fld_name,model,num_methods )
| n | The field index. [integer] |
| fld_type | The field type. [character, dimension(*)] |
| fld_name | The name of the field. [character, dimension(*)] |
| model | The number indicating which model is used. [integer] |
| num_methods | The number of methods. [integer] |
call get_field_method ( n,m,method )
| n | The field index. [integer] |
| m | The method index. [integer] |
call get_field_methods ( n,methods )
| n | The field index. [integer] |
number = parse (text, label, value)
| text | The text string from which the values will be parsed. [character(len=*)] |
| label | A label which describes the values being decoded. [character(len=*)] |
| value | The value or values that have been decoded. [integer, real, character(len=*)] |
| parse | The number of values that have been decoded. This allows
a user to define a large array and fill it partially with
values from a list. This should be the size of the value array. [integer] |