Contact: B. Wyman Reviewers: Change history: WebCVS Log for bgrid_integrals.f90
Computes and prints global integrals of various quantities for the B-grid dynamical core.
Global integrals of the following quantities (except wind speed) are computed and output as ascii to either standard output or a user supplied file name: time (n) surface pressure (ps) temperature (tavg) minimum temperature (tmin) maximum wind speed (vmax) kinetic energy (ke) total energy (te) enstrophy (ens) tracers (up to 4) Notes: 1) All quantities are instantaneous global averages, EXCEPT tmin and vmax which are determined over the output interval. 2) Global averages are area and pressure weighted, then normalized by the global average pressure (see notes below). 3) A header record is output before the data, the header record names are in parentheses.
bgrid_change_grid_mod bgrid_horiz_mod bgrid_vert_mod bgrid_masks_mod bgrid_prog_var_mod time_manager_mod fms_mod constants_mod mpp_mod mpp_io_mod mpp_domains_mod field_manager_mod tracer_manager_mod
use bgrid_integrals_mod [, only: bgrid_integrals_init, bgrid_integrals, bgrid_integrals_end ] bgrid_integrals_init The initialization routine that must be called once before calling bgrid_integrals. bgrid_integrals Routine that computes and writes integrals to the desired output file. It is called every time step. An internal alarm determines whether the integrals should be computed and written. bgrid_integrals_end Called outside the timeloop at the end of an integration. Closes all open IO units. Notes: 1) Namelist &bgrid_integrals_nml controls the output frequency of B-grid global integrals. 2) If integrals are written at the end of a model run, then when
call bgrid_integrals_init ( Time_init, Time ) INPUT Time_init Base time for the experiment. The base time will be subtracted from any given time before that time is output/written. [time_type] Time The current time, must always be greater or equal to Time_init. [time_type] NOTES Time_init is saved internally by this module as the base time. The base time will be subtracted from all input Time values. ------------------------------------------------------------------------ call bgrid_integrals ( Time, Hgrid, Vgrid, Var, Masks ) INPUT Time The current time, must always be greater or equal to Time_init. [time_type] Hgrid Data structure containing horizontal grid constants for the B-grid dynamical core. [horiz_grid_type] Vgrid Data structure containing vertical grid constants for the B-grid dynamical core. [vert_grid_type] Var Data structure containing the prognostic variables for the B-grid dynamical core. [prog_var_type] Masks Data structure containing the grid box masks for the eta coordinate. [grid_mask_type] NOTES 1) If it is not time to output integrals, bgrid_integrals will only determine minimum temperature and maximum velocity. Integrals are computed only when they will be written to standard output or the requested file name. ------------------------------------------------------------------------ call bgrid_integrals_end
&bgrid_integrals_nml file_name = optional file name for output (max length of 32 chars); if no name is specified then standard output will be used (this is the default) [character, default: filename = ' '] time_units = specifies the time units used for time, the following values are valid character strings time_units = 'seconds' = 'minutes' = 'hours' (default) = 'days' output_interval = The time interval, expressed in units of "time_units", for global b-grid integral diagnostics. If output_interval = 0, then no diagnostics will be generated. [real, default: output_interval = 0.0] chksum_file_name = Optional file name for global integral output in hexadecimal format. If this file name is set, then both the hexadecimal output and standard integral output will be computed using bit-reproducible summations. If chksum_file_name is not specified, integrals may not reproduce on multiple processors. The standard output file is written regardless of chksum_file_name. [character, default: chksum_file_name = ' '] tracer_file_name = Optional file name for global integrals of all tracers. Use this file when more than four tracer integrals are needed. Up to 99 tracer integrals can be output in this file. [character, default: tracer_file_name = ' '] trsout = Tracer names to be output in the standard integral file. Only up to 4 names can be specified. For more tracer integrals use the "tracer_file_name" option above. A default has been set for the standard atmospheric model runs. [character, dimension(4), default: 'sphum ','liq_wat','ice_wat','cld_amt']
FATAL Errors in bgrid_integrals_mod must call bgrid_integrals_init The initialization routine must be called before calling bgrid_integrals. wsum=0 A global weighted average has a weight sum of zero. This version of the code should not produce this error. NOTES in bgrid_integrals_mod checksum integrals of zonal and eddy KE will not be exact with x-axis decomposition These quantities are not computed correctly for 2D domain decomposition. See the bugs section. end of the output period did not coincide with the end of the model run You will not see integral output at the end of model run. Similarly, when you restart the model, integrals will not be output at the start of the run, but rather at the interval specified in the namelist.
The minimum temperature (tmin) and maximum wind speed (vmax) are determined over the output interval. Since there is no restart information saved by this module, when the model restart the first integrals printed will have incomplete values for tmin and vmax. An internal option replaces minimum temperature and maximum wind speed with zonal and eddy kinetic energy (for backward compatibility). However, with domain decomposition along the x-axis these kinetic energy fields will not be computed correctly. (The zonal means are not computed correctly.) A message is printed to alert the user.
FORMULAS USED FOR COMPUTING INTEGRAL QUANTITIES 1) pressure sum { dp dA } p_avg = ------------- sum {dA} 2) temperature and tracers sum { T dp dA } t_avg = ----------------- sum {dA} p_avg 3) kinetic energy 0.5 * sum { V**2 dp dA } ke_avg = ------------------------ sum {dA} p_avg where V = u or v for total kinetic energy = [u] or [v] for zonal mean kinetic energy = u* or v* for eddy kinetic energy [ ] = zonal mean ( )* = deviation from the zonal mean 4) enstrophy sum { R**2 dp dA } ens_avg = -------------------- sum {dA} p_avg R = relative vorticity
1) Netcdf capabilities? 2) Switch to a very general diagnostics handler? (combine bgrid_integrals_mod and bgrid_diagnostics_mod)