E: id_windx = register_diag_field ( 'ocean_model' , 'windx_wave' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'zonal wind speed for waves' , 'm/s' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_windy = register_diag_field ( 'ocean_model' , 'windy_wave' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'meridional wind speed for waves' , 'm/s' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_xmom = register_diag_field ( 'ocean_model' , 'xmom' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'zonal wave momentum' , 'm^2/s' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_ymom = register_diag_field ( 'ocean_model' , 'ymom' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'meridional wave momentum' , 'm^2/s' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_height = register_diag_field ( 'ocean_model' , 'height' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'significant wave height' , 'm' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_wave_p = register_diag_field ( 'ocean_model' , 'wave_p' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'peak frequency' , '1/s' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_wave_k = register_diag_field ( 'ocean_model' , 'wave_k' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'wave number' , '1/m' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_bot_to_free = register_diag_field ( 'ocean_model' , 'bot_to_free' , time % model_time , 'blobs separating from the bottom' , 'number of blobs' ) E: id_new_blobs = register_diag_field ( 'ocean_model' , 'new_free_blobs' , time % model_time , 'new free blobs' , 'number of blobs' ) e: id_tracer_new ( n ) = register_diag_field ( 'ocean_model' , 'new_free_blob_' // trim ( myname ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( myname ) // ' transferred from the E to the L system via new free blobs' , myunit ) E: id_free_to_bot = register_diag_field ( 'ocean_model' , 'free_to_bot' , time % model_time , 'free blobs interacting with topography' , 'number of blobs' ) E: id_new_blobs = register_diag_field ( 'ocean_model' , 'new_bottom_blobs' , time % model_time , 'new bottom blobs' , 'number of blobs' ) e: id_tend_blob ( n ) = register_diag_field ( 'ocean_model' , 'heat_LtoE' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'heat transferred from the L to E systems' , 'J' ) e: id_tend_blob ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_LtoE' , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % name ) // ' transferred from the L to E systems' , 'kg' ) E: id_prop_cell_mass = register_diag_field ( 'ocean_model' , 'prop_cell_mass' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'proportion of grid cell mass taken by L system' , 'dimensionless' ) E: id_mass_in = register_diag_field ( 'ocean_model' , 'mass_in' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'blob mass entering a grid cell' , 'kg' ) E: id_mass_out = register_diag_field ( 'ocean_model' , 'mass_out' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'blob mass exiting a grid cell' , 'kg' ) E: id_dstryd = register_diag_field ( 'ocean_model' , 'dstryd_blobs' , time % model_time , 'blobs destroyed because dztL>dztT' , 'number of blobs' ) E: id_grounded = register_diag_field ( 'ocean_model' , 'grounded_blobs' , time % model_time , 'blobs destroyed due to grounding' , 'number of blobs' ) E: id_surfaced = register_diag_field ( 'ocean_model' , 'surfaced_blobs' , time % model_time , 'blobs destroyed due to surfacing' , 'number of blobs' ) E: id_detraind = register_diag_field ( 'ocean_model' , 'detrained_blobs' , time % model_time , 'blobs detrained to a small mass' , 'number of blobs' ) E: id_nblob_free = register_diag_field ( 'ocean_model' , 'nblob_free' , time % model_time , 'number of dynamic free blobs' ) E: id_nblob_bott = register_diag_field ( 'ocean_model' , 'nblob_bott' , time % model_time , 'number of dynamic bottom blobs' ) e: id_entrainment ( n ) = register_diag_field ( 'ocean_model' , 'blob_mass_ent' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Mass transferred from the E system to the L system due to entrainment by blobs' , 'kg' ) e: id_detrainment ( n ) = register_diag_field ( 'ocean_model' , 'blob_mass_det' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Mass transferred from the L system to the E system due to detrainment by blobs' , 'kg' ) e: id_new ( n ) = register_diag_field ( 'ocean_model' , 'blob_mass_new' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Mass transferred from the E system to the L system due to blob formation' , 'kg' ) e: id_dstry ( n ) = register_diag_field ( 'ocean_model' , 'blob_mass_dstry' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Mass transferred from the L system to the E system due to blob destruction' , 'kg' ) e: id_entrainment ( n ) = register_diag_field ( 'ocean_model' , 'blob_heat_ent' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Heat transferred from the E system to the L system due to entrainment by blobs' , 'J' ) e: id_detrainment ( n ) = register_diag_field ( 'ocean_model' , 'blob_heat_det' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Heat transferred from the L system to the E system due to detrainment by blobs' , 'J' ) e: id_new ( n ) = register_diag_field ( 'ocean_model' , 'blob_heat_new' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Heat transferred from the E system to the L system due to blob formation' , 'J' ) e: id_dstry ( n ) = register_diag_field ( 'ocean_model' , 'blob_heat_dstry' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Heat transferred from the L system to the E system due to blob destruction' , 'J' ) e: id_entrainment ( n ) = register_diag_field ( 'ocean_model' , 'blob_' // trim ( t_prog ( n ) % name ) // '_ent' , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % name ) // ' transferred from the E system to the L system due to entrainment by blobs' , 'kg' ) e: id_detrainment ( n ) = register_diag_field ( 'ocean_model' , 'blob_' // trim ( t_prog ( n ) % name ) // '_det' , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % name ) // ' transferred from the L system to the E system due to detrainment by blobs' , 'kg' ) e: id_new ( n ) = register_diag_field ( 'ocean_model' , 'blob_' // trim ( t_prog ( n ) % name ) // '_new' , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % name ) // ' transferred from the E system to the L system due to blob formation' , 'kg' ) e: id_dstry ( n ) = register_diag_field ( 'ocean_model' , 'blob_' // trim ( t_prog ( n ) % name ) // '_dstry' , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % name ) // ' transferred from the L system to the E system due to blob destruction' , 'kg' ) e: instance ( n ) % id_change = register_diag_field ( trim ( diag_name ) , 'residency_change' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Residency change' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: instance ( n ) % id_restore_region = register_diag_field ( trim ( diag_name ) , 'residency_in_merged_regions' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Residency in merged regions' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: instance ( n ) % region ( nn ) % id_restore_region = register_diag_field ( trim ( diag_name ) , 'residency_restore_region' // trim ( num_suffix ) // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Residency in region' // trim ( num_long_suffix ) // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: id_tmask_limit ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_tmask_limit' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'use upwind (not quicker) and horz diff (not neutral)' , 'none' , missing_value = missing_value , range = ( / - 2.0 , 2.0 / ) ) e: id_prog_rhodzt ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_rhodztE' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'E system ' // trim ( t_prog ( n ) % longname ) // ' * rho_dzt' , trim ( t_prog ( n ) % units ) // '*(kg/m^3)*m' , missing_value = missing_value , range = ( / - 1e6 , 1e12 / ) ) e: id_prog_int_rhodz ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_int_rhodzE' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'E system vertical sum of ' // trim ( t_prog ( n ) % longname ) // ' * rho_dzt' , trim ( t_prog ( n ) % units ) // '*(kg/m^3)*m' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) e: id_prog_rhodzt ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_rhodzt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % longname ) // ' * rho_dzt' , trim ( t_prog ( n ) % units ) // '*(kg/m^3)*m' , missing_value = missing_value , range = ( / - 1e6 , 1e12 / ) ) e: id_prog_int_rhodz ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_int_rhodz' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'vertical sum of ' // trim ( t_prog ( n ) % longname ) // ' * rho_dzt' , trim ( t_prog ( n ) % units ) // '*(kg/m^3)*m' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) e: id_prog ( n ) = register_diag_field ( 'ocean_model' , trim ( prog_name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( prog_longname ) , trim ( temp_units ) , missing_value = missing_value , range = range_array , standard_name = 'sea_water_potential_temperature' ) e: id_surf_tracer ( n ) = register_diag_field ( 'ocean_model' , 'surface_' // trim ( prog_name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( prog_longname ) , trim ( temp_units ) , missing_value = missing_value , range = range_array , standard_name = 'sea_surface_temperature' ) e: id_surf_tracer_sq ( n ) = register_diag_field ( 'ocean_model' , 'squared_surface_' // trim ( prog_name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'squared ' // trim ( prog_longname ) , 'squared ' // trim ( temp_units ) , missing_value = missing_value , range = ( / 0.0 , 1e10 / ) , standard_name = 'square_of_sea_surface_temperature' ) e: id_prog ( n ) = register_diag_field ( 'ocean_model' , trim ( prog_name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( prog_longname ) , trim ( temp_units ) , missing_value = missing_value , range = range_array , standard_name = 'sea_water_conservative_temperature' ) e: id_surf_tracer ( n ) = register_diag_field ( 'ocean_model' , 'surface_' // trim ( prog_name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( prog_longname ) , trim ( temp_units ) , missing_value = missing_value , range = range_array , standard_name = 'sea_surface_conservative_temperature' ) e: id_surf_tracer_sq ( n ) = register_diag_field ( 'ocean_model' , 'squared_surface_' // trim ( prog_name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'squared ' // trim ( prog_longname ) , 'squared ' // trim ( temp_units ) , missing_value = missing_value , range = ( / 0.0 , 1e10 / ) , standard_name = 'square_of_sea_surface_conservative_temperature' ) e: id_prog ( n ) = register_diag_field ( 'ocean_model' , trim ( prog_name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( prog_longname ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array , standard_name = 'sea_water_salinity' ) e: id_surf_tracer ( n ) = register_diag_field ( 'ocean_model' , 'surface_' // trim ( prog_name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( prog_longname ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array , standard_name = 'sea_surface_salinity' ) e: id_surf_tracer_sq ( n ) = register_diag_field ( 'ocean_model' , 'squared_surface_' // trim ( prog_name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'squared ' // trim ( prog_longname ) , 'squared ' // trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / 0.0 , 1e10 / ) , standard_name = 'square_of_sea_surface_salinity' ) e: id_prog ( n ) = register_diag_field ( 'ocean_model' , trim ( prog_name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( prog_longname ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array , standard_name = 'sea_water_age_since_surface_contact' ) e: id_surf_tracer ( n ) = register_diag_field ( 'ocean_model' , 'surface_' // trim ( prog_name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( prog_longname ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array ) e: id_surf_tracer_sq ( n ) = register_diag_field ( 'ocean_model' , 'squared_surface_' // trim ( prog_name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'squared ' // trim ( prog_longname ) , 'squared ' // trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / 0.0 , 1e20 / ) ) e: id_prog ( n ) = register_diag_field ( 'ocean_model' , trim ( prog_name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( prog_longname ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array , standard_name = 'moles_per_unit_mass_of_cfc11_in_sea_water' ) e: id_surf_tracer ( n ) = register_diag_field ( 'ocean_model' , 'surface_' // trim ( prog_name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( prog_longname ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array ) e: id_surf_tracer_sq ( n ) = register_diag_field ( 'ocean_model' , 'squared_surface_' // trim ( prog_name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'squared ' // trim ( prog_longname ) , 'squared ' // trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / 0.0 , 1e20 / ) ) e: id_prog ( n ) = register_diag_field ( 'ocean_model' , trim ( prog_name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( prog_longname ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array ) e: id_surf_tracer ( n ) = register_diag_field ( 'ocean_model' , 'surface_' // trim ( prog_name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( prog_longname ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array ) e: id_surf_tracer_sq ( n ) = register_diag_field ( 'ocean_model' , 'squared_surface_' // trim ( prog_name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'squared ' // trim ( prog_longname ) , 'squared ' // trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / 0.0 , 1e20 / ) ) e: id_prog_explicit ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_explicit' , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % longname ) // ' at taup1 updated just with explicit tendencies' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array ) e: id_prog_on_depth ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_on_depth' , grd % tracer_axes_depth ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array ) e: id_bott_tracer ( n ) = register_diag_field ( 'ocean_model' , 'bottom_' // trim ( prog_name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( prog_longname ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array ) e: id_tendency_conc ( n ) = register_diag_field ( 'ocean_model' , trim ( prog_name ) // '_tendency_conc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'time tendency of tracer concentration for ' // trim ( prog_longname ) , trim ( t_prog ( n ) % units ) // ' per second' , missing_value = missing_value , range = range_array ) e: id_tendency ( n ) = register_diag_field ( 'ocean_model' , trim ( prog_name ) // '_tendency' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'time tendency for tracer ' // trim ( prog_longname ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = range_array ) e: id_eta_smooth ( n ) = register_diag_field ( 'ocean_model' , trim ( prog_name ) // '_eta_smooth' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'surface smoother for ' // trim ( prog_name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = range_array ) e: id_pbot_smooth ( n ) = register_diag_field ( 'ocean_model' , trim ( prog_name ) // '_pbot_smooth' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'bottom smoother for ' // trim ( prog_name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = range_array ) e: id_tendency_expl ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_tendency_expl' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'explicit in time tendency for tracer ' // trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = range_array ) e: id_tendency_conc ( n ) = register_diag_field ( 'ocean_model' , trim ( prog_name ) // '_tendency_conc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'tendency of tracer concentration for ' // trim ( prog_longname ) , trim ( t_prog ( n ) % units ) // ' per second' , missing_value = missing_value , range = ( / - 1.e10 , 1e10 / ) ) e: id_tendency ( n ) = register_diag_field ( 'ocean_model' , trim ( prog_name ) // '_tendency' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'time tendency for tracer ' // trim ( prog_longname ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value ) e: id_eta_smooth ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_eta_smooth' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'surface smoother for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value ) e: id_pbot_smooth ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_pbot_smooth' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'bottom smoother for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value ) e: id_tendency_expl ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_tendency_expl' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'explicit in time tendency for ' // trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value ) e: id_prog_rhodztt ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_rhodzt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % longname ) // ' * rho_dzt' , trim ( t_prog ( n ) % units ) // '*(kg/m^3)*m' , missing_value = missing_value , range = ( / - 1e6 , 1e12 / ) ) e: id_prog_int_rhodzt ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_int_rhodz' , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( t_prog ( n ) % longname ) // ' * rho_dzt' , trim ( t_prog ( n ) % units ) // '*(kg/m^3)*m' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) e: id_progt ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % longname ) , trim ( temp_units ) , missing_value = missing_value , range = range_array , standard_name = 'sea_water_potential_temperature' ) e: id_surf_tracert ( n ) = register_diag_field ( 'ocean_model' , 'surface_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( t_prog ( n ) % longname ) , trim ( temp_units ) , missing_value = missing_value , range = range_array , standard_name = 'sea_surface_temperature' ) e: id_progt ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % longname ) , trim ( temp_units ) , missing_value = missing_value , range = range_array , standard_name = 'sea_water_conservative_temperature' ) e: id_surf_tracert ( n ) = register_diag_field ( 'ocean_model' , 'surface_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( t_prog ( n ) % longname ) , trim ( temp_units ) , missing_value = missing_value , range = range_array , standard_name = 'sea_surface_conservative_temperature' ) e: id_progt ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array , standard_name = 'sea_water_salinity' ) e: id_surf_tracert ( n ) = register_diag_field ( 'ocean_model' , 'surface_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array , standard_name = 'sea_surface_salinity' ) e: id_progt ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array , standard_name = 'sea_water_age_since_surface_contact' ) e: id_surf_tracert ( n ) = register_diag_field ( 'ocean_model' , 'surface_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array ) e: id_progt ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array , standard_name = 'moles_per_unit_mass_of_cfc11_in_sea_water' ) e: id_surf_tracert ( n ) = register_diag_field ( 'ocean_model' , 'surface_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array ) e: id_progt ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array ) e: id_surf_tracert ( n ) = register_diag_field ( 'ocean_model' , 'surface_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array ) e: id_bott_tracert ( n ) = register_diag_field ( 'ocean_model' , 'bottom_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = range_array ) e: id_tendency_conct ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_tendency_conc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'tendency of tracer concentration for ' // trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % units ) // ' per second' , missing_value = missing_value , range = ( / - 1.e10 , 1e10 / ) ) e: id_tendency_concl ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_tendency_concL' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'L contribution to tendency of tracer concentration for ' // trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % units ) // ' per second' , missing_value = missing_value , range = ( / - 1.e10 , 1e10 / ) ) e: id_tendencyt ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_tendency' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'time tendency for tracer ' // trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value ) e: id_tendencyl ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // 'L_tendency' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'time tendency for tracer ' // trim ( t_prog ( n ) % longname ) // 'L' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value ) e: id_diag ( n ) = register_diag_field ( 'ocean_model' , trim ( t_diag ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( t_diag ( n ) % longname ) , trim ( temp_units ) , missing_value = missing_value , range = range_array , standard_name = 'sea_water_potential_temperature' ) e: id_diag_surf_tracer ( n ) = register_diag_field ( 'ocean_model' , 'surface_' // trim ( t_diag ( n ) % name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( t_diag ( n ) % longname ) , trim ( temp_units ) , missing_value = missing_value , range = range_array , standard_name = 'sea_surface_temperature' ) e: id_diag_surf_tracer_sq ( n ) = register_diag_field ( 'ocean_model' , 'squared_surface_' // trim ( t_diag ( n ) % name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'squared ' // trim ( t_diag ( n ) % longname ) , 'squared ' // trim ( temp_units ) , missing_value = missing_value , range = range_array , standard_name = 'square_of_sea_surface_temperature' ) e: id_diag ( n ) = register_diag_field ( 'ocean_model' , trim ( t_diag ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( t_diag ( n ) % longname ) , trim ( temp_units ) , missing_value = missing_value , range = range_array ) e: id_diag_surf_tracer ( n ) = register_diag_field ( 'ocean_model' , 'surface_' // trim ( t_diag ( n ) % name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( t_diag ( n ) % longname ) , trim ( temp_units ) , missing_value = missing_value , range = range_array ) e: id_diag_surf_tracer_sq ( n ) = register_diag_field ( 'ocean_model' , 'squared_surface_' // trim ( t_diag ( n ) % name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'squared ' // trim ( t_diag ( n ) % longname ) , 'squared ' // trim ( temp_units ) , missing_value = missing_value , range = range_array ) e: id_diag ( n ) = register_diag_field ( 'ocean_model' , trim ( t_diag ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , trim ( t_diag ( n ) % longname ) , trim ( t_diag ( n ) % units ) , missing_value = missing_value ) e: id_diag_surf_tracer ( n ) = register_diag_field ( 'ocean_model' , 'surface_' // trim ( t_diag ( n ) % name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( t_diag ( n ) % longname ) , trim ( t_diag ( n ) % units ) , missing_value = missing_value , range = range_array ) e: id_diag_surf_tracer_sq ( n ) = register_diag_field ( 'ocean_model' , 'squared_surface_' // trim ( t_diag ( n ) % name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'squared ' // trim ( t_diag ( n ) % longname ) , 'squared ' // trim ( t_diag ( n ) % units ) , missing_value = missing_value , range = range_array ) e: id_diag_total ( n ) = register_diag_field ( 'ocean_model' , 'total_ocean' // trim ( t_diag ( n ) % name ) , time % model_time , 'Total ocean mass for tracer ' // trim ( t_diag ( n ) % name ) , 'kg/1e18' , missing_value = missing_value , range = ( / 0.0 , 1e20 / ) ) e: id_tendency_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_tendency_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'time tendency for tracer ' // trim ( t_prog ( n ) % longname ) // " binned to neutral density" , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_eta_smooth_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_eta_smooth_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'surface smoother for ' // trim ( t_prog ( n ) % longname ) // " binned to neutral density" , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_tendency = register_diag_field ( 'ocean_model' , 'neut_rho_tendency' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'total time tendency of locally ref potrho' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_pot_rho_tendency = register_diag_field ( 'ocean_model' , 'pot_rho_tendency' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'total time tendency of depth ref potrho' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_tendency_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_tendency_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'total time tendency of locally ref potrho as binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_tendency = register_diag_field ( 'ocean_model' , 'wdian_rho_tendency' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to time tendency of locally ref potrho' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_tendency_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_tendency_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to total time tendency as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_tendency = register_diag_field ( 'ocean_model' , 'tform_rho_tendency' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'water mass transformation from total tendency on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_tendency_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_tendency_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'water mass transformation from total tendency as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_tendency = register_diag_field ( 'ocean_model' , 'neut_temp_tendency' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related time tendency of locally ref potrho' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_tendency_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_tendency_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related time tendency of locally ref potrho binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_tendency = register_diag_field ( 'ocean_model' , 'wdian_temp_tendency' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to time tendency of locally ref potrho' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_tendency_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_tendency_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to time tendency as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_tendency = register_diag_field ( 'ocean_model' , 'tform_temp_tendency' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related water mass transformation from tendency on levels' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_tendency_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_tendency_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related water mass transformation from tendency binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_tendency = register_diag_field ( 'ocean_model' , 'neut_salt_tendency' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related time tendency of locally ref potrho' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_tendency_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_tendency_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related time tendency of locally ref potrho binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_tendency = register_diag_field ( 'ocean_model' , 'wdian_salt_tendency' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to time tendency of locally ref potrho' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_tendency_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_tendency_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to time tendency as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_tendency = register_diag_field ( 'ocean_model' , 'tform_salt_tendency' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related water mass transformation from tendency on levels' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_tendency_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_tendency_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related water mass transformation from tendency binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_smooth = register_diag_field ( 'ocean_model' , 'neut_rho_smooth' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'time tendency of local ref potrho from eta/pbot smoother' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_pot_rho_smooth = register_diag_field ( 'ocean_model' , 'pot_rho_smooth' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'time tendency of depth ref potrho from eta/pbot smoother' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_smooth_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_smooth_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'time tendency of local ref potrho from eta/pbot smoother binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_smooth = register_diag_field ( 'ocean_model' , 'wdian_rho_smooth' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to eta/pbot smoother' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_smooth_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_smooth_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to eta/pbot smoother binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_smooth = register_diag_field ( 'ocean_model' , 'tform_rho_smooth' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'water mass transformation from smoother on levels' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_smooth_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_smooth_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'water mass transformation from smoother binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_eta_tend_smooth = register_diag_field ( 'ocean_model' , 'eta_tend_smooth' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from eta/pbot smoother' , 'm/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_eta_tend_smooth_glob = register_diag_field ( 'ocean_model' , 'eta_tend_smooth_glob' , time % model_time , 'global mean non-Bouss steric sea level tendency from eta/pbot smoother' , 'm/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_smooth = register_diag_field ( 'ocean_model' , 'neut_temp_smooth' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related time tendency of local ref potrho from eta/pbot smoother' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_smooth_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_smooth_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related time tendency of local ref potrho from eta/pbot smoother binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_smooth = register_diag_field ( 'ocean_model' , 'wdian_temp_smooth' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to eta/pbot smoother' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_smooth_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_smooth_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to eta/pbot smoother binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_smooth = register_diag_field ( 'ocean_model' , 'tform_temp_smooth' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related water mass transformation from smoother on levels' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_smooth_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_smooth_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related water mass transformation from smoother binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_smooth = register_diag_field ( 'ocean_model' , 'neut_salt_smooth' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related time tendency of local ref potrho from eta/pbot smoother' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_smooth_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_smooth_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related time tendency of local ref potrho from eta/pbot smoother binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_smooth = register_diag_field ( 'ocean_model' , 'wdian_salt_smooth' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to eta/pbot smoother' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_smooth_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_smooth_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to eta/pbot smoother binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_smooth = register_diag_field ( 'ocean_model' , 'tform_salt_smooth' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related water mass transformation from smoother on levels' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_smooth_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_smooth_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related water mass transformation from smoother binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_frazil_on_nrho = register_diag_field ( 'ocean_model' , 'frazil_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'ocn frazil heat flux over time step binned to neutral density' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_frazil = register_diag_field ( 'ocean_model' , 'neut_rho_frazil' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of local ref potrho from frazil formation' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_pot_rho_frazil = register_diag_field ( 'ocean_model' , 'pot_rho_frazil' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of depth ref potrho from frazil formation' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_frazil_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_frazil_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of local ref potrho from frazil formation as binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_frazil = register_diag_field ( 'ocean_model' , 'wdian_rho_frazil' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to frazil formation' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_frazil_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_frazil_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to frazil formation as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_frazil_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_frazil_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'water mass transformation from frazil as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_frazil = register_diag_field ( 'ocean_model' , 'tform_rho_frazil' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'water mass transformation from frazil on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_eta_tend_frazil = register_diag_field ( 'ocean_model' , 'eta_tend_frazil' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from frazil' , 'm/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_eta_tend_frazil_glob = register_diag_field ( 'ocean_model' , 'eta_tend_frazil_glob' , time % model_time , 'global mean non-Bouss steric sea level tendency from frazil' , 'm/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_pme = register_diag_field ( 'ocean_model' , 'neut_rho_pme' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'time tendency of local ref potrho from pme' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_pot_rho_pme = register_diag_field ( 'ocean_model' , 'pot_rho_pme' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'time tendency of depth ref potrho from pme' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_pme_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_pme_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'time tendency of local ref potrho from pme as binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_pme = register_diag_field ( 'ocean_model' , 'wdian_rho_pme' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to pme' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_pme_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_pme_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to pme as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pme = register_diag_field ( 'ocean_model' , 'tform_rho_pme' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'water mass transformation from pme on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pme_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_pme_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'water mass transformation from pme as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_pbl_pme_kn = register_diag_field ( 'ocean_model' , 'neut_rho_pbl_pme_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form material time derivative from pme' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_pbl_pme_kn_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_pbl_pme_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form material time derivative from pme as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_pbl_pme_kn = register_diag_field ( 'ocean_model' , 'wdian_rho_pbl_pme_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form dianeutral transport from pme' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_pbl_pme_kn_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_pbl_pme_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form dianeutral transport from pme as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_pme_kn = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_pme_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form transform from pme pre-binning to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_pme_kn_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_pme_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form transform from pme as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_pbl_pme_kn = register_diag_field ( 'ocean_model' , 'neut_temp_pbl_pme_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form material time derivative from pme' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_pbl_pme_kn_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_pbl_pme_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form material time derivative from pme as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: idwdian_temp_pbl_pme_kn = register_diag_field ( 'ocean_model' , 'wdian_temp_pbl_pme_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form dianeutral transport from pme' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: idwdian_temp_pbl_pme_kn_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_pbl_pme_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form dianeutral transport from pme as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: idtform_temp_pbl_pme_kn = register_diag_field ( 'ocean_model' , 'tform_temp_pbl_pme_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form transform from pme pre-binning to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: idtform_temp_pbl_pme_kn_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_pbl_pme_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form transform from pme as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_pbl_pme_kn = register_diag_field ( 'ocean_model' , 'neut_salt_pbl_pme_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form material time derivative from pme' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_pbl_pme_kn_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_pbl_pme_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form material time derivative from pme as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: idwdian_salt_pbl_pme_kn = register_diag_field ( 'ocean_model' , 'wdian_salt_pbl_pme_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form dianeutral transport from pme' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: idwdian_salt_pbl_pme_kn_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_pbl_pme_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form dianeutral transport from pme as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: idtform_salt_pbl_pme_kn = register_diag_field ( 'ocean_model' , 'tform_salt_pbl_pme_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form transform from pme pre-binning to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: idtform_salt_pbl_pme_kn_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_pbl_pme_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form transform from pme as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_pbl_pme_pr = register_diag_field ( 'ocean_model' , 'neut_rho_pbl_pme_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'process advective-form material time derivative from pme' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_pbl_pme_pr_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_pbl_pme_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'process advective-form material time derivative from pme as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_pbl_pme_pr = register_diag_field ( 'ocean_model' , 'wdian_rho_pbl_pme_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'process advective-form dianeutral transport from pme' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_pbl_pme_pr_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_pbl_pme_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'process advective-form dianeutral transport from pme as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_pme_pr = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_pme_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'process advective-form water mass transform from pme pre-binning to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_pme_pr_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_pme_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'process advective-form water mass transform from pme binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_pbl_pme_pr = register_diag_field ( 'ocean_model' , 'neut_temp_pbl_pme_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form material time derivative from pme' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_pbl_pme_pr_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_pbl_pme_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form material time derivative from pme binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: idwdian_temp_pbl_pme_pr = register_diag_field ( 'ocean_model' , 'wdian_temp_pbl_pme_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form dianeutral transport from pme' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: idwdian_temp_pbl_pme_pr_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_pbl_pme_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form dianeutral transport from pme binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: idtform_temp_pbl_pme_pr = register_diag_field ( 'ocean_model' , 'tform_temp_pbl_pme_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form water mass transform from pme' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: idtform_temp_pbl_pme_pr_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_pbl_pme_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form water mass transform from pme binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_pbl_pme_pr = register_diag_field ( 'ocean_model' , 'neut_salt_pbl_pme_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form material time derivative from pme' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_pbl_pme_pr_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_pbl_pme_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form material time derivative from pme binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: idwdian_salt_pbl_pme_pr = register_diag_field ( 'ocean_model' , 'wdian_salt_pbl_pme_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form dianeutral transport from pme' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: idwdian_salt_pbl_pme_pr_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_pbl_pme_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form dianeutral transport from pme binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: idtform_salt_pbl_pme_pr = register_diag_field ( 'ocean_model' , 'tform_salt_pbl_pme_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form water mass transform from pme' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: idtform_salt_pbl_pme_pr_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_pbl_pme_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form water mass transform from pme binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_mass_t_on_nrho = register_diag_field ( 'ocean_model' , 'mass_t_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'ocean t-cell volume (*rho0) as binned to neutral density layers' , 'kg' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_mass_t_tendency_on_nrho = register_diag_field ( 'ocean_model' , 'mass_t_tendency_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'tendency of ocean t-cell volume (*rho0) as binned to neutral density layers' , 'kg/s' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_mass_nrho_layer = register_diag_field ( 'ocean_model' , 'mass_nrho_layer' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'volume of a neutral rho layer (*rho0) computed via interpolation to get layer thickness' , 'kg' , missing_value = missing_value , range = ( / 0.0 , 1.e20 / ) ) e: id_mass_nrho_tendency_layer = register_diag_field ( 'ocean_model' , 'mass_nrho_tendency_layer' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'tendency of volume of a neutral rho layer (*rho0) computed via interpolation to get layer thickness' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_mass_t_on_nrho = register_diag_field ( 'ocean_model' , 'mass_t_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'ocean t-cell volume as binned to neutral density layers' , 'kg' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_mass_t_tendency_on_nrho = register_diag_field ( 'ocean_model' , 'mass_t_tendency_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'tendency of ocean t-cell volume as binned to neutral density layers' , 'kg/s' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_mass_nrho_layer = register_diag_field ( 'ocean_model' , 'mass_nrho_layer' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'volume of a neutral rho layer computed via interpolation to get layer thickness' , 'kg' , missing_value = missing_value , range = ( / 0.0 , 1.e20 / ) ) e: id_mass_nrho_tendency_layer = register_diag_field ( 'ocean_model' , 'mass_nrho_tendency_layer' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'tendency of volume of a neutral rho layer computed via interpolation to get layer thickness' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: instance ( n ) % id_extm = register_diag_field ( diag_name , 'exp_tm' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , time % model_time , 'Explicit transport matrix for passive tracer ' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: instance ( n ) % id_imtm = register_diag_field ( diag_name , 'imp_tm' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , time % model_time , 'Implicit transport matrix for passive tracer ' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: id_tracer_advection ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_advection' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cp*rho*dzt*advection tendency' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_tracer_advection_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_advection_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'cp*rho*dzt*advection tendency binned to neutral density' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_tracer2_advection ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sq_advection' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*advection tendency for (cp*temp)^2' , 'kg/(m^2*sec)*(J/kg)^2' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_sweby_advect ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sweby_advect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cp*rho*dzt*sweby advect tendency' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_psom_advect ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_psom_advect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cp*rho*dzt*psom advect tendency' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_horz_advect ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_horz_advect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cp*rho*dzt*horz advect tendency' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_vert_advect ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vert_advect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cp*rho*dzt*vert advect tendency' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_advection_x ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_x_adv' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cp*rho*dzt*x-advective heating' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_advection_y ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_y_adv' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cp*rho*dzt*y-advective heating' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_advection_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_z_adv' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cp*rho*dzt*z-advective heating' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_xflux_adv ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_adv' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'cp*rho*dzt*dyt*u*temp' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_yflux_adv ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_adv' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'cp*rho*dzt*dxt*v*temp' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_zflux_adv ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_zflux_adv' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'cp*rho*dxt*dyt*wt*temp' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_xflux_adv_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_adv_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral of cp*rho*dyt*u*temp' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_yflux_adv_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_adv_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral of cp*rho*dxt*v*temp' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_tracer_adv_diss ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_adv_diss' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dissipation of squared ' // trim ( t_prog ( n ) % name ) // ' from advection errors' , '(Watt/m^2)^2' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_tracer_advection ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_advection' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*advection tendency' , 'kg/(sec*m^2)' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_tracer_advection_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_advection_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*advection tendency binned to neutral density' , 'kg/(sec*m^2)' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_tracer2_advection ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sq_advection' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*advection tendency for tracer sqrd' , 'kg/(m^2*s)*(tracer squared)' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_sweby_advect ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sweby_advect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*sweby advect tendency' , 'kg/(sec*m^2)' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_psom_advect ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_psom_advect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*psom advect tendency' , 'kg/(sec*m^2)' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_horz_advect ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_horz_advect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*horz advect tendency' , 'kg/(sec*m^2)' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_vert_advect ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vert_advect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*vert advect tendency' , 'kg/(sec*m^2)' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_advection_x ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_x_adv' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*x-advective tendency' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_advection_y ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_y_adv' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*y-advective tendency' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_advection_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_z_adv' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*z-advective tendency' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_xflux_adv ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_adv' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'rho*dzt*dyt*u*tracer' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_yflux_adv ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_adv' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'rho*dzt*dxt*v*tracer' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_zflux_adv ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_zflux_adv' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'rho*dxt*dyt*wt*tracer' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_xflux_adv_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_adv_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral of rho*dzt*dyt*u*tracer' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_yflux_adv_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_adv_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral of rho*dzt*dxt*v*tracer' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_tracer_adv_diss ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_adv_diss' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dissipation of squared ' // trim ( t_prog ( n ) % name ) // ' from advection errors' , '[kg/(m^2*sec)]^2' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) E: id_neut_rho_advect = register_diag_field ( 'ocean_model' , 'neut_rho_advect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'advection tendency for neutral rho' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_pot_rho_advect = register_diag_field ( 'ocean_model' , 'pot_rho_advect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'advection tendency for potential rho' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_advect = register_diag_field ( 'ocean_model' , 'wdian_rho_advect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport from advection tendency for neutral rho' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_advect = register_diag_field ( 'ocean_model' , 'tform_rho_advect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'water mass transformation from advection on level (pre-binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_advect_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_advect_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from advection as binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_advect_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_advect_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to advection as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_advect_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_advect_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'water mass transformation from advection as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_temp_advect = register_diag_field ( 'ocean_model' , 'neut_temp_advect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related advection tendency for neutral rho' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_temp_advect = register_diag_field ( 'ocean_model' , 'wdian_temp_advect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport from advection tendency for neutral rho' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_temp_advect = register_diag_field ( 'ocean_model' , 'tform_temp_advect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related water mass transformation from advection on level' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_temp_advect_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_advect_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally ref potrho from advection binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_temp_advect_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_advect_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to advection binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_temp_advect_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_advect_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related water mass transformation from advection binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_salt_advect = register_diag_field ( 'ocean_model' , 'neut_salt_advect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related advection tendency for neutral rho' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_salt_advect = register_diag_field ( 'ocean_model' , 'wdian_salt_advect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport from advection tendency for neutral rho' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_salt_advect = register_diag_field ( 'ocean_model' , 'tform_salt_advect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related water mass transformation from advection on level' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_salt_advect_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_advect_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally ref potrho from advection binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_salt_advect_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_advect_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to advection binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_salt_advect_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_advect_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related water mass transformation from advection binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) e: id_merid_flux_advect ( 0 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_advect_global' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'Global integral(cp*rho*dzt*dxt*v*temp)' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_over ( 0 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_over_global' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'overturn contribution to global integral(cp*rho*dzt*dxt*v*temp)' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_gyre ( 0 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_gyre_global' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'gyre contribution to global integral(cp*rho*dzt*dxt*v*temp)' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_advect ( 1 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_advect_southern' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'ACC integral(cp*rho*dzt*dxt*v*temp)' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_over ( 1 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_over_southern' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'overturn contribution to ACC integral(cp*rho*dzt*dxt*v*temp)' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_gyre ( 1 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_gyre_southern' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'gyre contribution to ACC integral(cp*rho*dzt*dxt*v*temp)' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_advect ( 2 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_advect_atlantic' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'Atlantic integral(cp*rho*dzt*dxt*v*temp)' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_over ( 2 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_over_atlantic' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'overturn contribution to Atlantic integral(cp*rho*dzt*dxt*v*temp)' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_gyre ( 2 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_gyre_atlantic' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'gyre contribution to Atlantic integral(cp*rho*dzt*dxt*v*temp)' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_advect ( 3 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_advect_pacific' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'Pacific integral(cp*rho*dzt*dxt*v*temp)' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_over ( 3 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_over_pacific' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'overturn contribution to Pacific integral(cp*rho*dzt*dxt*v*temp)' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_gyre ( 3 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_gyre_pacific' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'gyre contribution to Pacific integral(cp*rho*dzt*dxt*v*temp)' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_advect ( 4 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_advect_arctic' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'Arctic integral(cp*rho*dzt*dxt*v*temp)' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_over ( 4 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_over_arctic' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'overturn contribution to Arctic integral(cp*rho*dzt*dxt*v*temp)' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_gyre ( 4 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_gyre_arctic' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'gyre contribution to Arctic integral(cp*rho*dzt*dxt*v*temp)' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_advect ( 5 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_advect_indian' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'Indian integral(cp*rho*dzt*dxt*v*temp)' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_over ( 5 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_over_indian' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'overturn contribution to Indian integral(cp*rho*dzt*dxt*v*temp)' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_gyre ( 5 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_gyre_indian' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'gyre contribution to Indian integral(cp*rho*dzt*dxt*v*temp)' , 'Watts' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_advect ( 0 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_advect_global' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'Global integral(rho*dzt*dxt*v*temp)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_over ( 0 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_over_global' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'overturn contribution to global integral(rho*dzt*dxt*v*temp)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_gyre ( 0 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_gyre_global' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'gyre contribution to global integral(rho*dzt*dxt*v*temp)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_advect ( 1 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_advect_southern' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'ACC integral(rho*dzt*dxt*v*temp)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_over ( 1 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_over_southern' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'overturn contribution to ACC integral(rho*dzt*dxt*v*temp)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_gyre ( 1 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_gyre_southern' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'gyre contribution to ACC integral(rho*dzt*dxt*v*temp)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_advect ( 2 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_advect_atlantic' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'Atlantic integral(rho*dzt*dxt*v*temp)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_over ( 2 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_over_atlantic' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'overturn contribution to Atlantic integral(rho*dzt*dxt*v*temp)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_gyre ( 2 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_gyre_atlantic' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'gyre contribution to Atlantic integral(rho*dzt*dxt*v*temp)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_advect ( 3 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_advect_pacific' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'Pacific integral(rho*dzt*dxt*v*temp)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_over ( 3 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_over_pacific' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'overturn contribution to Pacific integral(rho*dzt*dxt*v*temp)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_gyre ( 3 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_gyre_pacific' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'gyre contribution to Pacific integral(rho*dzt*dxt*v*temp)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_advect ( 4 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_advect_arctic' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'Arctic integral(rho*dzt*dxt*v*temp)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_over ( 4 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_over_arctic' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'overturn contribution to Arctic integral(rho*dzt*dxt*v*temp)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_gyre ( 4 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_gyre_arctic' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'gyre contribution to Arctic integral(rho*dzt*dxt*v*temp)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_advect ( 5 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_advect_indian' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'Indian integral(rho*dzt*dxt*v*temp)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_over ( 5 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_over_indian' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'overturn contribution to Indian integral(rho*dzt*dxt*v*temp)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_merid_flux_gyre ( 5 , n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_merid_flux_gyre_indian' , grd % tracer_axes_flux_y ( 2 : 2 ) , time % model_time , 'gyre contribution to Indian integral(rho*dzt*dxt*v*temp)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) E: id_frazil_2d = register_diag_field ( 'ocean_model' , 'frazil_2d' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'ocn frazil heat flux from the top level over time step' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_frazil_3d = register_diag_field ( 'ocean_model' , 'frazil_3d' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'ocn frazil heat flux over time step' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_frazil_3d_int_z = register_diag_field ( 'ocean_model' , 'frazil_3d_int_z' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Vertical sum of ocn frazil heat flux over time step' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_total_ocean_frazil = register_diag_field ( 'ocean_model' , 'total_ocean_frazil' , time % model_time , 'total ocean heating from frazil' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) E: id_frazil_redist_2d = register_diag_field ( 'ocean_model' , 'frazil_redist_2d' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'ocn frazil redist heat flux over time step (for FAFMIP)' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_frazil_redist_3d = register_diag_field ( 'ocean_model' , 'frazil_redist_3d' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'ocn frazil heat flux over time step (for FAFMIP)' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_temp_freeze = register_diag_field ( 'ocean_model' , 'temp_freeze' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'freezing temperature of seawater' , 'deg C' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_pco2 = register_diag_field ( 'ocean_model' , 'pco2' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'pCO2' , ' ' , missing_value = - 1.0e+10 ) E: id_paco2 = register_diag_field ( 'ocean_model' , 'paco2' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'pCO2 inc. anthropogenic' , ' ' , missing_value = - 1.0e+10 ) E: id_co2_sat = register_diag_field ( 'ocean_model' , 'co2_saturation' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'CO2 saturation' , 'mmol/m^3' , missing_value = - 1.0e+10 ) E: id_aco2_sat = register_diag_field ( 'ocean_model' , 'aco2_saturation' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'CO2 saturation inc. anthropogenic' , 'mmol/m^3' , missing_value = - 1.0e+10 ) E: id_sc_o2 = register_diag_field ( 'ocean_model' , 'sc_o2' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'Schmidt number - O2' , ' ' , missing_value = - 1.0e+10 ) E: id_o2_sat = register_diag_field ( 'ocean_model' , 'o2_saturation' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'O2 saturation' , 'mmolO2/m^3' , missing_value = - 1.0e+10 ) E: id_kw_o2 = register_diag_field ( 'ocean_model' , 'kw_o2' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'Piston velocity - O2' , ' ' , missing_value = - 1.0e+10 ) E: id_light_limit = register_diag_field ( 'ocean_model' , 'light_limit' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'Integrated light limitation of phytoplankton growth' , ' ' , missing_value = - 1.0e+10 ) E: id_pprod_gross = register_diag_field ( 'ocean_model' , 'pprod_gross' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'Gross PHY production' , 'mmolN/m^3/s' , missing_value = - 1.0e+10 ) E: id_pprod_gross_2d = register_diag_field ( 'ocean_model' , 'pprod_gross_2d' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'Vertically integrated Gross PHY production' , 'mmolN/m^2/s' , missing_value = - 1.0e+10 ) E: id_zprod_gross = register_diag_field ( 'ocean_model' , 'zprod_gross' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'Gross ZOO production' , 'mmolN/m^3/s' , missing_value = - 1.0e+10 ) E: id_caco3_sediment = register_diag_field ( 'ocean_model' , 'caco3_sediment' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'Accumulated CaCO3 in sediment at base of water column' , 'mmolN/m^2' , missing_value = - 1.0e+10 ) E: id_det_sediment = register_diag_field ( 'ocean_model' , 'det_sediment' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'Accumulated DET in sediment at base of water column' , 'mmolN/m^2' , missing_value = - 1.0e+10 ) E: id_caco3_sed_remin = register_diag_field ( 'ocean_model' , 'caco3_sed_remin' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'Rate of remineralisation of CaCO3 in accumulated sediment' , 'mmolN/m^2' , missing_value = - 1.0e+10 ) E: id_det_sed_remin = register_diag_field ( 'ocean_model' , 'det_sed_remin' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'Rate of remineralisation of DET in accumulated sediment' , 'mmolN/m^2' , missing_value = - 1.0e+10 ) E: id_caco3_sed_depst = register_diag_field ( 'ocean_model' , 'caco3_sed_depst' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'Rate of deposition of CaCO3 to sediment at base of water column' , 'mmolN/m^2' , missing_value = - 1.0e+10 ) E: id_det_sed_depst = register_diag_field ( 'ocean_model' , 'det_sed_depst' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'Rate of deposition of DET to sediment at base of water column' , 'mmolN/m^2' , missing_value = - 1.0e+10 ) E: id_total_co2_flux = register_diag_field ( 'ocean_model' , 'total_co2_flux' , time % model_time , 'Total surface flux of inorganic C (natural) into ocean' , 'Pg/yr' , missing_value = - 1.0e+30 ) E: id_total_aco2_flux = register_diag_field ( 'ocean_model' , 'total_aco2_flux' , time % model_time , 'Total surface flux of inorganic C (natural + anthropogenic) into ocean' , 'Pg/yr' , missing_value = - 1.0e+30 ) e: biotic ( n ) % id_bgc_stf ( nn ) = register_diag_field ( 'ocean_model' , bgc_stf // str , grid % tracer_axes ( 1 : 2 ) , time % model_time , name1 , 'mmol/m^2/s' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_bgc_vstf ( nn ) = register_diag_field ( 'ocean_model' , 'v' // bgc_stf // str , grid % tracer_axes ( 1 : 2 ) , time % model_time , name2 , 'mmol/m^3/s' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_bgc_src ( nn ) = register_diag_field ( 'ocean_model' , bgc_src // str , grid % tracer_axes ( 1 : 3 ) , time % model_time , name3 , 'mmolN/m^3/s' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_bgc_btf ( nn ) = register_diag_field ( 'ocean_model' , bgc_btf // str , grid % tracer_axes ( 1 : 2 ) , time % model_time , name4 , 'mmol/m^2/s' , missing_value = - 1.0e+10 ) e: instance ( n ) % id_sc_co2 = register_diag_field ( trim ( diag_name ) , 'sc_co2_' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Schmidt number - CO2' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: instance ( n ) % id_alpha = register_diag_field ( trim ( diag_name ) , 'alpha' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Alpha CO2' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: instance ( n ) % id_csurf = register_diag_field ( trim ( diag_name ) , 'csurf' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'CO2* water' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: instance ( n ) % id_pco2surf = register_diag_field ( trim ( diag_name ) , 'pco2surf' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Oceanic pCO2' // trim ( long_suffix ) , 'ppm' , missing_value = - 1.0e+10 ) e: instance ( n ) % id_z0 = register_diag_field ( trim ( diag_name ) , 'z0' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'z0' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: instance ( n ) % id_z1 = register_diag_field ( trim ( diag_name ) , 'z1' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'z1' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: instance ( n ) % id_sfc_flux_pert_co2 = register_diag_field ( trim ( diag_name ) , 'sfc_flux_pert_co2' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'CO2 surface flux' // trim ( long_suffix ) , 'mol m^-1 s^-1' , missing_value = - 1.0e+10 ) e: cfc ( n ) % id_sfc_flux_cfc_11 = register_diag_field ( trim ( diag_name ) , 'sfc_flux_cfc_11' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Surface Flux - CFC-11' // trim ( long_suffix ) , 'mol m^-2 s^-1' , missing_value = - 1.0e+10 ) e: cfc ( n ) % id_sfc_flux_cfc_12 = register_diag_field ( trim ( diag_name ) , 'sfc_flux_cfc_12' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Surface Flux - CFC-12' // trim ( long_suffix ) , 'mol m^-2 s^-1' , missing_value = - 1.0e+10 ) e: cfc ( n ) % id_sc_11 = register_diag_field ( trim ( diag_name ) , 'sc_11' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Schmidt number - CFC-11' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: cfc ( n ) % id_alpha_11 = register_diag_field ( trim ( diag_name ) , 'alpha_11' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Solubility CFC-11' // trim ( long_suffix ) , 'mol m^-3 atm^-1' , missing_value = - 1.0e+10 ) e: cfc ( n ) % id_sc_12 = register_diag_field ( trim ( diag_name ) , 'sc_12' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Schmidt number - CFC-12' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: cfc ( n ) % id_alpha_12 = register_diag_field ( trim ( diag_name ) , 'alpha_12' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Solubility CFC-12' // trim ( long_suffix ) , 'mol m^-3 atm^-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jideal_n = register_diag_field ( trim ( diag_name ) , 'jideal_n' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Ideal Nutrient source, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jsuntan = register_diag_field ( trim ( diag_name ) , 'jsuntan' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Suntan source, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_remin_ip = register_diag_field ( trim ( diag_name ) , 'remin_ip' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Remineralization inverse lengthscale for fpip' // trim ( long_suffix ) , 'm-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jprod_pip = register_diag_field ( trim ( diag_name ) , 'jprod_pip' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Particulate ideal P production, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jprod_idop = register_diag_field ( trim ( diag_name ) , 'jprod_idop' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'DOP source, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jremin_idop = register_diag_field ( trim ( diag_name ) , 'jremin_idop' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'DOP remineralization, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_fpip = register_diag_field ( trim ( diag_name ) , 'fpip' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Particulate ideal P sinking flux' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jremin_pip = register_diag_field ( trim ( diag_name ) , 'jremin_pip' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Ideal PO4 remin fr particles, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jipo4 = register_diag_field ( trim ( diag_name ) , 'jipo4' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Ideal PO4 total source, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jife_new = register_diag_field ( trim ( diag_name ) , 'jife_new' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'iFe surface source, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_felim_irrk = register_diag_field ( trim ( diag_name ) , 'felim_irrk' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Fe-limited light half-saturation' // trim ( long_suffix ) , 'W m-2' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jprod_pipf = register_diag_field ( trim ( diag_name ) , 'jprod_pipf' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Particulate iPf production, layer integral' // trim ( long_suffix ) , 'mmol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jprod_idopf = register_diag_field ( trim ( diag_name ) , 'jprod_idopf' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'DOPf source, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jremin_idopf = register_diag_field ( trim ( diag_name ) , 'jremin_idopf' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'DOPf remineralization, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_fpipf = register_diag_field ( trim ( diag_name ) , 'fpipf' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Particulate iPf sinking flux' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jremin_pipf = register_diag_field ( trim ( diag_name ) , 'jremin_pipf' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'iPO4f remineralization, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jprod_pife = register_diag_field ( trim ( diag_name ) , 'jprod_pife' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Particulate iFe production, layer integral' // trim ( long_suffix ) , 'mmol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_fpife = register_diag_field ( trim ( diag_name ) , 'fpife' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Particulate iFe sinking flux' // trim ( long_suffix ) , 'mmol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jremin_pife = register_diag_field ( trim ( diag_name ) , 'jremin_pife' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'iFe remineralization, layer integral' // trim ( long_suffix ) , 'mmol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_ife_free = register_diag_field ( trim ( diag_name ) , 'ife_free' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Free iFe concentration' // trim ( long_suffix ) , 'mmol kg-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jife_scav = register_diag_field ( trim ( diag_name ) , 'jife_scav' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'iFe scavenging, layer integral' // trim ( long_suffix ) , 'mmol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jipo4f = register_diag_field ( trim ( diag_name ) , 'jipo4f' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Ideal PO4f net source, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_ichl_new = register_diag_field ( trim ( diag_name ) , 'ichl_new' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'New ichl' // trim ( long_suffix ) , 'mg kg-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_ipo4_bgc = register_diag_field ( trim ( diag_name ) , 'ipo4_bgc' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'PO4 used for bgc calculations' // trim ( long_suffix ) , 'mol kg-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jipo4_bgc = register_diag_field ( trim ( diag_name ) , 'jipo4_bgc' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Net PO4 source for bgc calculations, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: id_o2_sat = register_diag_field ( trim ( diag_name ) , 'o2_sat' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'O2 saturation' // trim ( long_suffix ) , 'mol m-3' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_sc_co2 = register_diag_field ( trim ( diag_name ) , 'sc_ico2' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Schmidt number - CO2' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_sc_o2 = register_diag_field ( trim ( diag_name ) , 'sc_io2' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Schmidt number - O2' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_alpha = register_diag_field ( trim ( diag_name ) , 'ialpha' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'CO2* saturation' // trim ( long_suffix ) , 'mol kg-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_csurf = register_diag_field ( trim ( diag_name ) , 'icsurf' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'CO2* water' // trim ( long_suffix ) , 'mol kg-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_pco2surf = register_diag_field ( trim ( diag_name ) , 'ipco2surf' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Oceanic pCO2' // trim ( long_suffix ) , 'ppm' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_sfc_flux_co2 = register_diag_field ( trim ( diag_name ) , 'sfc_flux_ico2' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'CO2 surface flux' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_htotal = register_diag_field ( trim ( diag_name ) , 'ihtotal' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'H+ ion concentration' // trim ( long_suffix ) , 'mol kg-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_alk = register_diag_field ( trim ( diag_name ) , 'ialk' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'ALK' // trim ( long_suffix ) , 'mol eq kg-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_sfc_flux_o2 = register_diag_field ( trim ( diag_name ) , 'sfc_flux_io2' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'iO2 surface flux' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jio2 = register_diag_field ( trim ( diag_name ) , 'jio2' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Total iO2 biological source, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_csatsurf = register_diag_field ( trim ( diag_name ) , 'icsatsurf' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'CO2* saturation DIC' // trim ( long_suffix ) , 'mol kg-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_htotal_sat = register_diag_field ( trim ( diag_name ) , 'ihtotal_sat' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'H+ ion concentration for DIC_sat' // trim ( long_suffix ) , 'mol kg-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_pco2satsurf = register_diag_field ( trim ( diag_name ) , 'ipco2satsurf' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Oceanic pCO2 saturation DIC' // trim ( long_suffix ) , 'ppm' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_sfc_flux_co2sat = register_diag_field ( trim ( diag_name ) , 'sfc_flux_ico2sat' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Saturation CO2 surface flux' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_c14surf = register_diag_field ( trim ( diag_name ) , 'ic14surf' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , '14CO2* water' // trim ( long_suffix ) , 'mol kg-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_sfc_flux_14co2 = register_diag_field ( trim ( diag_name ) , 'sfc_flux_i14co2' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , '14CO2 surface flux' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % frac_14catm = register_diag_field ( trim ( diag_name ) , 'frac_14catm' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , '14C fraction' // trim ( long_suffix ) , '' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jdecay_idi14c = register_diag_field ( trim ( diag_name ) , 'jdecay_idi14c' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'iDI14C decay, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jdecay_ido14c = register_diag_field ( trim ( diag_name ) , 'jdecay_ido14c' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'iDO14C decay, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jremin_pi14c = register_diag_field ( trim ( diag_name ) , 'jremin_pi14c' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Remineralization of Pi14C, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jremin_ido14c = register_diag_field ( trim ( diag_name ) , 'jremin_ido14c' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Remineralization of iDO14C, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jprod_pi14c = register_diag_field ( trim ( diag_name ) , 'jprod_pi14c' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Pi14C production, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jprod_ido14c = register_diag_field ( trim ( diag_name ) , 'jprod_ido14c' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'iDO14C production, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_fpi14c = register_diag_field ( trim ( diag_name ) , 'fpi14c' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Particulate i14C sinking flux' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jidi14c = register_diag_field ( trim ( diag_name ) , 'jidi14c' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Total iDI14C source, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jprod_pi15n = register_diag_field ( trim ( diag_name ) , 'jprod_pi15n' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Particulate ideal 15N production, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jprod_ido15n = register_diag_field ( trim ( diag_name ) , 'jprod_ido15n' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Dissolved ideal 15N source, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jremin_ido15n = register_diag_field ( trim ( diag_name ) , 'jremin_ido15n' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Dissolved ideal 15N remineralization' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_fpi15n = register_diag_field ( trim ( diag_name ) , 'fpi15n' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Particulate ideal 15N sinking flux' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jremin_pi15n = register_diag_field ( trim ( diag_name ) , 'jremin_pi15n' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Ideal 15no3 remin fr particles, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_ji15no3 = register_diag_field ( trim ( diag_name ) , 'ji15no3' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , '15no3 net source, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jprod_i18o = register_diag_field ( trim ( diag_name ) , 'jprod_i18o' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'N18O3 uptake source, layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_remin_isi = register_diag_field ( trim ( diag_name ) , 'remin_isi' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Remineralization inverse lengthscale for fpisi' // trim ( long_suffix ) , 'm-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jprod_pisi = register_diag_field ( trim ( diag_name ) , 'jprod_pisi' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Particulate ideal Si production layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_fpisi = register_diag_field ( trim ( diag_name ) , 'fpisi' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Particulate ideal Si sinking flux' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jremin_pisi = register_diag_field ( trim ( diag_name ) , 'jremin_pisi' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Ideal SiO4 remineralization layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jprod_pi30si = register_diag_field ( trim ( diag_name ) , 'jprod_pi30si' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Particulate ideal 30Si production layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_fpi30si = register_diag_field ( trim ( diag_name ) , 'fpi30si' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Particulate ideal 30Si sinking flux' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) e: ibgc ( n ) % id_jremin_pi30si = register_diag_field ( trim ( diag_name ) , 'jremin_pi30si' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Ideal 30SiO4 remineralization layer integral' // trim ( long_suffix ) , 'mol m-2 s-1' , missing_value = - 1.0e+10 ) E: id_o2_sat = register_diag_field ( trim ( diag_name ) , 'o2_saturation' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'O2 saturation' // trim ( long_suffix ) , 'mol/m^3/atm' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_sc_co2 = register_diag_field ( trim ( diag_name ) , 'sc_co2' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Schmidt number - CO2' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_sc_o2 = register_diag_field ( trim ( diag_name ) , 'sc_o2' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Schmidt number - O2' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_alpha = register_diag_field ( trim ( diag_name ) , 'alpha' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Alpha CO2' // trim ( long_suffix ) , 'mol/kg/atm' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_csurf = register_diag_field ( trim ( diag_name ) , 'csurf' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'CO2* water' // trim ( long_suffix ) , 'mol/kg' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_pco2surf = register_diag_field ( trim ( diag_name ) , 'pco2surf' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Oceanic pCO2' // trim ( long_suffix ) , 'ppm' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_flux_poc = register_diag_field ( trim ( diag_name ) , 'flux_poc' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'POC flux' // trim ( long_suffix ) , 'mol/m^2/s' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_flux_caco3 = register_diag_field ( trim ( diag_name ) , 'flux_caco3' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'CaCO3 flux' // trim ( long_suffix ) , 'mol/m^2/s' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_htotal = register_diag_field ( trim ( diag_name ) , 'htotal' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'H+ ion concentration' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jprod = register_diag_field ( trim ( diag_name ) , 'jprod' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Restoring production' // trim ( long_suffix ) , 'mol/kg/s' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jca = register_diag_field ( trim ( diag_name ) , 'jca' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'CaCO3 change' // trim ( long_suffix ) , 'mol/kg/s' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jpo4 = register_diag_field ( trim ( diag_name ) , 'jpo4' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'PO4 source' // trim ( long_suffix ) , 'mol/kg/s' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jdop = register_diag_field ( trim ( diag_name ) , 'jdop' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'DOP source' // trim ( long_suffix ) , 'mol/kg/s' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jo2 = register_diag_field ( trim ( diag_name ) , 'jo2' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'O2 source' // trim ( long_suffix ) , 'mol/kg/s' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_fc = register_diag_field ( trim ( diag_name ) , 'fc' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'POP change' // trim ( long_suffix ) , 'mol/m^2/s' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_fca = register_diag_field ( trim ( diag_name ) , 'fca' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'CaCO3 change' // trim ( long_suffix ) , 'mol/m^2/s' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jpo4_add = register_diag_field ( trim ( diag_name ) , 'jpo4_add' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Additional phosphate' // trim ( long_suffix ) , 'mol/kg/s' , missing_value = - 1.0e+10 ) e: he ( n ) % id_sfc_flux_he_3_man = register_diag_field ( 'ocean_model' , 'sfc_flux_he_3_man' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Surface Flux - HE-3 man.' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: he ( n ) % id_sfc_flux_he_3_atm = register_diag_field ( 'ocean_model' , 'sfc_flux_he_3_atm' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Surface Flux - HE-3 atm.' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: he ( n ) % id_sfc_flux_he_4_man = register_diag_field ( 'ocean_model' , 'sfc_flux_he_4_man' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Surface Flux - HE-4 man.' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: he ( n ) % id_sfc_flux_he_4_atm = register_diag_field ( 'ocean_model' , 'sfc_flux_he_4_atm' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Surface Flux - HE-4 atm.' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: he ( n ) % id_sc_3 = register_diag_field ( 'ocean_model' , 'sc_3' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Schmidt number - HE-3' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: he ( n ) % id_alpha_3_atm = register_diag_field ( 'ocean_model' , 'alpha_3_atm' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Solubility HE-3 Atmospheric' // trim ( long_suffix ) , 'mol m^-3 pptv^-1' , missing_value = - 1.0e+10 ) e: he ( n ) % id_alpha_3_man = register_diag_field ( 'ocean_model' , 'alpha_3_man' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Solubility HE-3 Mantle' // trim ( long_suffix ) , 'mol m^-3 pptv^-1' , missing_value = - 1.0e+10 ) e: he ( n ) % id_sc_4 = register_diag_field ( 'ocean_model' , 'sc_4' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Schmidt number - HE-4' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: he ( n ) % id_alpha_4_atm = register_diag_field ( 'ocean_model' , 'alpha_4_atm' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Solubility HE-4 Atmospheric' // trim ( long_suffix ) , 'mol m^-3 pptv^-1' , missing_value = - 1.0e+10 ) e: he ( n ) % id_alpha_4_man = register_diag_field ( 'ocean_model' , 'alpha_4_man' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Solubility HE-4 Mantle' // trim ( long_suffix ) , 'mol m^-3 pptv^-1' , missing_value = - 1.0e+10 ) e: he ( n ) % id_jhe3_man = register_diag_field ( 'ocean_model' , 'jhe3_man' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'HE-3 Mantle Source term' // trim ( long_suffix ) , 'mol m^-2 s^-1' , missing_value = - 1.0e+10 ) e: he ( n ) % id_jhe4_man = register_diag_field ( 'ocean_model' , 'jhe4_man' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'HE-4 Mantle Source term' // trim ( long_suffix ) , 'mol m^-2 s^-1' , missing_value = - 1.0e+10 ) e: he ( n ) % id_jhe_depth = register_diag_field ( 'ocean_model' , 'jhe_depth' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'HE Injection depth' // trim ( long_suffix ) , 'm' , missing_value = - 1.0e+10 ) e: abiotic ( n ) % id_sc_co2 = register_diag_field ( trim ( diag_name ) , 'sc_co2' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Schmidt number - CO2' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: abiotic ( n ) % id_alpha = register_diag_field ( trim ( diag_name ) , 'alpha' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Alpha CO2' // trim ( long_suffix ) , 'mol/kg/atm' , missing_value = - 1.0e+10 ) e: abiotic ( n ) % id_csurf = register_diag_field ( trim ( diag_name ) , 'csurf' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'CO2* water' // trim ( long_suffix ) , 'mol/kg' , missing_value = - 1.0e+10 ) e: abiotic ( n ) % id_c14surf = register_diag_field ( trim ( diag_name ) , 'c14surf' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'CO2* water' // trim ( long_suffix ) , 'mol/kg' , missing_value = - 1.0e+10 ) e: abiotic ( n ) % id_pco2surf = register_diag_field ( trim ( diag_name ) , 'pco2surf' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Oceanic pCO2' // trim ( long_suffix ) , 'ppm' , missing_value = - 1.0e+10 ) e: abiotic ( n ) % id_sfc_flux_co2 = register_diag_field ( trim ( diag_name ) , 'sfc_flux_co2' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'CO2 surface flux' // trim ( long_suffix ) , 'mol m^-2 s^-1' , missing_value = - 1.0e+10 ) e: abiotic ( n ) % id_sfc_flux_14co2 = register_diag_field ( trim ( diag_name ) , 'sfc_flux_14co2' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , '14CO2 surface flux' // trim ( long_suffix ) , 'mol m^-2 s^-1' , missing_value = - 1.0e+10 ) e: abiotic ( n ) % id_htotal = register_diag_field ( trim ( diag_name ) , 'htotal' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'H+ ion concentration' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: abiotic ( n ) % id_alk = register_diag_field ( trim ( diag_name ) , 'alk' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'ALK' // trim ( long_suffix ) , 'eq kg^-1' , missing_value = - 1.0e+10 ) e: abiotic ( n ) % id_po4 = register_diag_field ( trim ( diag_name ) , 'po4' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'PO4' // trim ( long_suffix ) , 'mol kg^-1' , missing_value = - 1.0e+10 ) e: abiotic ( n ) % id_sio4 = register_diag_field ( trim ( diag_name ) , 'sio4' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'SiO4' // trim ( long_suffix ) , 'mol kg^-1' , missing_value = - 1.0e+10 ) e: abiotic ( n ) % id_frac_14catm = register_diag_field ( trim ( diag_name ) , 'frac_14catm' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , '14C fractionation' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: abiotic ( n ) % id_jdi14c = register_diag_field ( trim ( diag_name ) , 'jdi14c' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Restoring production' // trim ( long_suffix ) , 'mol/kg/s' , missing_value = - 1.0e+10 ) E: id_o2_sat = register_diag_field ( trim ( diag_name ) , 'o2_saturation' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'O2 saturation' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_sc_co2 = register_diag_field ( trim ( diag_name ) , 'sc_co2' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Schmidt number - CO2' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_sc_o2 = register_diag_field ( trim ( diag_name ) , 'sc_o2' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Schmidt number - O2' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_sfc_flux_co2 = register_diag_field ( trim ( diag_name ) , 'sfc_flux_co2' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Surface Flux - CO2' // trim ( long_suffix ) , 'mol m^-2 s^-1' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_sfc_flux_o2 = register_diag_field ( trim ( diag_name ) , 'sfc_flux_o2' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Surface Flux - O2' // trim ( long_suffix ) , 'mol m^-2 s^-1' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_sfc_flux_fed = register_diag_field ( trim ( diag_name ) , 'sfc_flux_fed' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Surface Flux - Fed' // trim ( long_suffix ) , 'mol m^-2 s^-1' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_alpha = register_diag_field ( trim ( diag_name ) , 'alpha' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Alpha CO2' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_csurf = register_diag_field ( trim ( diag_name ) , 'csurf' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'CO2* water' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_pco2surf = register_diag_field ( trim ( diag_name ) , 'pco2surf' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Oceanic pCO2' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_flux_pon = register_diag_field ( trim ( diag_name ) , 'flux_pon' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'PON flux' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_flux_pop = register_diag_field ( trim ( diag_name ) , 'flux_pop' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'POP flux' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_flux_sio2 = register_diag_field ( trim ( diag_name ) , 'flux_sio2' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'Si flux' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_flux_caco3 = register_diag_field ( trim ( diag_name ) , 'flux_caco3' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'CaCO3 flux' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_htotal = register_diag_field ( trim ( diag_name ) , 'htotal' // trim ( suffix ) , grid_tracer_axes ( 1 : 2 ) , model_time , 'H+ ion concentration' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jprod_alk = register_diag_field ( trim ( diag_name ) , 'jprod_alk' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Restoring alkalinity-based production' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jprod_fed = register_diag_field ( trim ( diag_name ) , 'jprod_fed' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Restoring iron-based production' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jprod_n_fix = register_diag_field ( trim ( diag_name ) , 'jprod_n_fix' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Nitrogen fixation' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jprod_no3 = register_diag_field ( trim ( diag_name ) , 'jprod_no3' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Restoring NO3-based production' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jprod_nh4 = register_diag_field ( trim ( diag_name ) , 'jprod_nh4' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'NH4-based production' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jprod_p_fix = register_diag_field ( trim ( diag_name ) , 'jprod_p_fix' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'PO4 in nitrogen fixation' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jprod_po4 = register_diag_field ( trim ( diag_name ) , 'jprod_po4' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Restoring PO4-based production' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jprod_pofe = register_diag_field ( trim ( diag_name ) , 'jprod_pofe' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Detrital iron production' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jprod_pon = register_diag_field ( trim ( diag_name ) , 'jprod_pon' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Detrital nitrogen production' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jprod_pop = register_diag_field ( trim ( diag_name ) , 'jprod_pop' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Detrital phosphorus production' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jprod_sio4 = register_diag_field ( trim ( diag_name ) , 'jprod_sio4' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Restoring Si-based production' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jcaco3 = register_diag_field ( trim ( diag_name ) , 'jcaco3' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'CaCO3 change' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jfe_ads = register_diag_field ( trim ( diag_name ) , 'jfe_ads' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Iron adsorption' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jfe_des = register_diag_field ( trim ( diag_name ) , 'jfe_des' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Iron desorption' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jfe_graz = register_diag_field ( trim ( diag_name ) , 'jfe_graz' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Dissolved iron source from grazing' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jfe_sink = register_diag_field ( trim ( diag_name ) , 'jfe_sink' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Particulate iron sinking' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jno3 = register_diag_field ( trim ( diag_name ) , 'jno3' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'NO3 source' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jnh4 = register_diag_field ( trim ( diag_name ) , 'jnh4' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'NH4 source' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jnh4_graz = register_diag_field ( trim ( diag_name ) , 'jnh4_graz' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'NH4 source from grazing' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jpo4_graz = register_diag_field ( trim ( diag_name ) , 'jpo4_graz' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'PO4 source from grazing' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jpo4 = register_diag_field ( trim ( diag_name ) , 'jpo4' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'PO4 source' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jpofe = register_diag_field ( trim ( diag_name ) , 'jpofe' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Loss of sinking iron' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jpon = register_diag_field ( trim ( diag_name ) , 'jpon' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Loss of sinking nitrogen' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jpop = register_diag_field ( trim ( diag_name ) , 'jpop' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Loss of sinking phosphorus' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jsio4 = register_diag_field ( trim ( diag_name ) , 'jsio4' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'SiO4 source' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jdenit = register_diag_field ( trim ( diag_name ) , 'jdenit' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Denitrification' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jdon = register_diag_field ( trim ( diag_name ) , 'jdon' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'DON source' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jdop = register_diag_field ( trim ( diag_name ) , 'jdop' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'DOP source' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jldoc = register_diag_field ( trim ( diag_name ) , 'jldoc' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Labile DOC source' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_jo2 = register_diag_field ( trim ( diag_name ) , 'jo2' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'O2 source' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_fpon = register_diag_field ( trim ( diag_name ) , 'fpon' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'PON change' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_fpop = register_diag_field ( trim ( diag_name ) , 'fpop' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'POP change' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_fracl = register_diag_field ( trim ( diag_name ) , 'fracl' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Fraction large phytoplankton' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_fsio2 = register_diag_field ( trim ( diag_name ) , 'fsio2' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'Si change' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) e: biotic ( n ) % id_fcaco3 = register_diag_field ( trim ( diag_name ) , 'fcaco3' // trim ( suffix ) , grid_tracer_axes ( 1 : 3 ) , model_time , 'CaCO3 change' // trim ( long_suffix ) , ' ' , missing_value = - 1.0e+10 ) E: id_u_dot_grad_pint ( 1 ) = register_diag_field ( 'ocean_model' , 'u_dot_grad_pint_x' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'i-current times 3d i-pressure force' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_u_dot_grad_pint ( 2 ) = register_diag_field ( 'ocean_model' , 'u_dot_grad_pint_y' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'j-current times 3d j-pressure force' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_ubar_dot_grad_pext ( 1 ) = register_diag_field ( 'ocean_model' , 'ubar_dot_grad_pext_x' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , '2d i-current times 2d i-pressure force' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_ubar_dot_grad_pext ( 2 ) = register_diag_field ( 'ocean_model' , 'ubar_dot_grad_pext_y' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , '2d j-current times 2d j-pressure force' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_u_dot_lapfrict_horz = register_diag_field ( 'ocean_model' , 'u_dot_lapfrict_horz' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'i-current times horizontal laplacian friction' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_v_dot_lapfrict_horz = register_diag_field ( 'ocean_model' , 'v_dot_lapfrict_horz' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'j-current times horizontal laplacian friction' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_u_dot_bihfrict_horz = register_diag_field ( 'ocean_model' , 'u_dot_bihfrict_horz' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'i-current times horizontal biharmonic friction' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_v_dot_bihfrict_horz = register_diag_field ( 'ocean_model' , 'v_dot_bihfrict_horz' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'j-current times horizontal biharmonic friction' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_u_dot_frict_vert = register_diag_field ( 'ocean_model' , 'u_dot_frict_vert' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'i-current times vertical friction' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_v_dot_frict_vert = register_diag_field ( 'ocean_model' , 'v_dot_frict_vert' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'j-current times vertical friction' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_ubar_dot_frict_bt = register_diag_field ( 'ocean_model' , 'ubar_dot_frict_bt' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'i-ubar current times horizontal friction applied just to ubar' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_vbar_dot_frict_bt = register_diag_field ( 'ocean_model' , 'vbar_dot_frict_bt' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'j-vbar current times horizontal friction applied just to vbar' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_topostrophy = register_diag_field ( 'ocean_model' , 'topostrophy' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'topostrophy = f * (zhat cross u) dot grad H' , 'm/s^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_stokes_force_x = register_diag_field ( 'ocean_model' , 'stokes_force_x' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'Zonal component to Stokes Coriolis force' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_stokes_force_y = register_diag_field ( 'ocean_model' , 'stokes_force_y' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'Meridional component to Stokes Coriolis force' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_ke_tot = register_diag_field ( 'ocean_model' , 'ke_tot' , time % model_time , 'Globally integrated ocean kinetic energy' , '10^15 Joules' , missing_value = missing_value , range = ( / 0.0 , 1e20 / ) ) E: id_pe_tot = register_diag_field ( 'ocean_model' , 'pe_tot' , time % model_time , 'Globally integrated ocean potential energy' , '10^15 Joules' , missing_value = missing_value , range = ( / 0.0 , 1e20 / ) ) E: id_pe_tot_rel = register_diag_field ( 'ocean_model' , 'pe_tot_rel' , time % model_time , 'global potential energy - initial global potential energy' , '10^15 Joules' , missing_value = missing_value , range = ( / 0.0 , 1e20 / ) ) E: id_n2_pv = register_diag_field ( 'ocean_model' , 'n2_pv' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'squared BV frequency for planetary geostrophic PV: N^2' , '1/sec^2' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_pg_pv = register_diag_field ( 'ocean_model' , 'pg_pv' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'planetary geostrophic PV: f*N^2' , '1/sec^3' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_vert_pv = register_diag_field ( 'ocean_model' , 'vert_pv' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vertical piece of Ertel PV: (f+zeta)*N^2' , '1/sec^3' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_pg_pvf = register_diag_field ( 'ocean_model' , 'pg_pvf' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'planetary geostrophic PV times f: (f*N)^2' , '1/sec^4' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_vert_pvf = register_diag_field ( 'ocean_model' , 'vert_pvf' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vertical piece of Ertel PV times f: f*(f+zeta)*N^2' , '1/sec^4' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_bc_pvf = register_diag_field ( 'ocean_model' , 'bc_pvf' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'baroclinic component of balanced Ertel PV times f: -|\nabla buoy|^2' , '1/sec^4' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_pvf = register_diag_field ( 'ocean_model' , 'pvf' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Ertel PV times f' , '1/sec^4' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_ri_balance = register_diag_field ( 'ocean_model' , 'ri_balance' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Balanced Richardson number' , 'dimensionless' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_u_dot_grad_vert_pv = register_diag_field ( 'ocean_model' , 'u_dot_grad_vert_pv' , grd % tracer_axes ( 1 : 3 ) , time % model_time , '3d velocity dot product with 3d gradient of vertical piece of Ertel PV: u.grad((f+zeta)*N^2)' , '1/sec^4' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) e: id_u_dot_grad_pint_xy = register_diag_field ( 'ocean_model' , 'u_dot_grad_pint_xy' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'current dot 3d pressure force' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) e: id_ubar_dot_grad_pext_xy = register_diag_field ( 'ocean_model' , 'ubar_dot_grad_pext_xy' , grd % vel_axes_uv ( 1 : 2 ) , time % model_time , '2d current dot 2d pressure force' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) e: id_vert_lap_diss = register_diag_field ( 'ocean_model' , 'vert_lap_diss' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Energy dissipation from vertical Laplacian friction' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) , standard_name = 'ocean_kinetic_energy_dissipation_per_unit_area_due_to_vertical_friction' ) e: id_vorticity_z = register_diag_field ( 'ocean_model' , 'vorticity_z' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vertical vorticity component: v_x - u_y' , '1/sec' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) e: id_kinetic_energy = register_diag_field ( 'ocean_model' , 'kinetic_energy' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'kinetic energy in a grid cell' , '10^15 Joules' , missing_value = missing_value , range = ( / 0.0 , 1.e20 / ) ) e: id_kinetic_energy_intz = register_diag_field ( 'ocean_model' , 'kinetic_energy_intz' , grd % vel_axes_uv ( 1 : 2 ) , time % model_time , 'Vertically integrated kinetic energy' , '10^15 Joules' , missing_value = missing_value , range = ( / 0.0 , 1.e20 / ) ) e: id_kinetic_energy_clinic = register_diag_field ( 'ocean_model' , 'kinetic_energy_clinic' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Baroclinic kinetic energy' , '10^15 Joules' , missing_value = missing_value , range = ( / 0.0 , 1.e20 / ) ) e: id_kinetic_energy_clinic_intz = register_diag_field ( 'ocean_model' , 'kinetic_energy_clinic_intz' , grd % vel_axes_uv ( 1 : 2 ) , time % model_time , 'Vertically integrated baroclinic kinetic energy' , '10^15 Joules' , missing_value = missing_value , range = ( / 0.0 , 1.e20 / ) ) e: id_kinetic_energy_tropic = register_diag_field ( 'ocean_model' , 'kinetic_energy_tropic' , grd % vel_axes_uv ( 1 : 2 ) , time % model_time , 'Barotropic kinetic energy' , '10^15 Joules' , missing_value = missing_value , range = ( / 0.0 , 1.e20 / ) ) e: id_u_dot_grad_pint_xy = register_diag_field ( 'ocean_model' , 'u_dot_grad_pint_xy' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'current dot 3d pressure force' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) e: id_ubar_dot_grad_pext_xy = register_diag_field ( 'ocean_model' , 'ubar_dot_grad_pext_xy' , grd % tracer_axes ( 1 : 2 ) , time % model_time , '2d current dot 2d pressure force' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) e: id_vert_lap_diss = register_diag_field ( 'ocean_model' , 'vert_lap_diss' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Energy dissipation from vertical Laplacian friction' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) , standard_name = 'ocean_kinetic_energy_dissipation_per_unit_area_due_to_vertical_friction' ) e: id_vorticity_z = register_diag_field ( 'ocean_model' , 'vorticity_z' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'vertical vorticity component: v_x - u_y' , '1/sec' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) e: id_kinetic_energy = register_diag_field ( 'ocean_model' , 'kinetic_energy' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'kinetic energy in a grid cell' , '10^15 Joules' , missing_value = missing_value , range = ( / 0.0 , 1.e20 / ) ) e: id_kinetic_energy_intz = register_diag_field ( 'ocean_model' , 'kinetic_energy_intz' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Vertically integrated kinetic energy' , '10^15 Joules' , missing_value = missing_value , range = ( / 0.0 , 1.e20 / ) ) e: id_kinetic_energy_clinic = register_diag_field ( 'ocean_model' , 'kinetic_energy_clinic' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Baroclinic kinetic energy' , '10^15 Joules' , missing_value = missing_value , range = ( / 0.0 , 1.e20 / ) ) e: id_kinetic_energy_clinic_intz = register_diag_field ( 'ocean_model' , 'kinetic_energy_clinic_intz' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Vertically integrated baroclinic kinetic energy' , '10^15 Joules' , missing_value = missing_value , range = ( / 0.0 , 1.e20 / ) ) e: id_kinetic_energy_tropic = register_diag_field ( 'ocean_model' , 'kinetic_energy_tropic' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Barotropic kinetic energy' , '10^15 Joules' , missing_value = missing_value , range = ( / 0.0 , 1.e20 / ) ) E: id_mass_seawater = register_diag_field ( 'ocean_model' , 'total_mass_seawater' , time % model_time , 'total mass of liquid seawater' , 'kg' , missing_value = missing_value , range = ( / - 1e1 , 1e25 / ) , standard_name = 'sea_water_mass' ) E: id_volume_seawater = register_diag_field ( 'ocean_model' , 'total_volume_seawater' , time % model_time , 'total volume of liquid seawater' , 'm^3' , missing_value = missing_value , range = ( / - 1e1 , 1e25 / ) , standard_name = 'sea_water_volume' ) e: id_prog_total ( n ) = register_diag_field ( 'ocean_model' , 'total_ocean_heat' , time % model_time , 'Total heat in the liquid ocean referenced to 0degC' , 'Joule/1e25' , missing_value = missing_value , range = ( / 0.0 , 1e20 / ) ) e: id_tracer_on_rho ( n ) = register_diag_field ( 'ocean_model' , 'temp_on_rho' , dens % potrho_axes ( 1 : 3 ) , time % model_time , 'temperature on potential density surface' , 'C' , missing_value = missing_value , range = ( / - 5.0 , 100. / ) ) e: id_tracer_zrho_on_rho ( n ) = register_diag_field ( 'ocean_model' , 'temp_zrho_on_rho' , dens % potrho_axes ( 1 : 3 ) , time % model_time , 'temperature*dz/drho on potential density surface' , 'degC * m/(kg/m^3)' , missing_value = missing_value , range = ( / - 1.e9 , 1.e9 / ) ) e: id_prog_global_ave ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_global_ave' , time % model_time , 'Global mean ' // trim ( t_prog ( n ) % name ) // ' in liquid seawater' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 10.0 , 1000.0 / ) , standard_name = 'sea_water_potential_temperature' ) e: id_global_variance ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_global_variance' , time % model_time , 'Global ' // trim ( t_prog ( n ) % name ) // ' variance' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) , standard_name = 'global_temperature_variance' ) e: id_k_variance ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_variance' , grd % tracer_axes ( 3 : 3 ) , time % model_time , trim ( t_prog ( n ) % name ) // ' variance' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) , standard_name = 'temperature_variance' ) e: id_prog_total ( n ) = register_diag_field ( 'ocean_model' , 'total_ocean_salt' , time % model_time , 'total mass of salt in liquid seawater' , 'kg/1e18' , missing_value = missing_value , range = ( / - 1e2 , 1e10 / ) ) e: id_prog_global_ave ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_global_ave' , time % model_time , 'Global mean ' // trim ( t_prog ( n ) % name ) // ' in liquid seawater' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 10.0 , 1000.0 / ) , standard_name = 'sea_water_salinity' ) e: id_tracer_on_rho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_on_rho' , dens % potrho_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % name ) // ' on potential density surface' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / 0.0 , 1.e3 / ) ) e: id_tracer_zrho_on_rho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_zrho_on_rho' , dens % potrho_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % name ) // ' *dz/drho on potential density surface' , trim ( t_prog ( n ) % units ) // '*m/(kg/m^3)' , missing_value = missing_value , range = ( / - 1.e9 , 1.e9 / ) ) e: id_global_variance ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_global_variance' , time % model_time , 'Global ' // trim ( t_prog ( n ) % name ) // ' variance' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) , standard_name = 'global_salinity_variance' ) e: id_k_variance ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_variance' , grd % tracer_axes ( 3 : 3 ) , time % model_time , trim ( t_prog ( n ) % name ) // ' variance' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) , standard_name = 'salt_variance' ) e: id_prog_total ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_total' , time % model_time , 'mass integrated ' // trim ( t_prog ( n ) % name ) , 'yr' , missing_value = missing_value , range = ( / - 1e2 , 1e10 / ) ) e: id_prog_global_ave ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_global_ave' , time % model_time , 'Global mean ' // trim ( t_prog ( n ) % name ) // ' in liquid seawater' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 10.0 , 1000.0 / ) ) e: id_tracer_on_rho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_on_rho' , dens % potrho_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % name ) // ' on potential density surface' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / 0.0 , 1.e3 / ) ) e: id_tracer_zrho_on_rho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_zrho_on_rho' , dens % potrho_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % name ) // ' *dz/drho on potential density surface' , trim ( t_prog ( n ) % units ) // '*m/(kg/m^3)' , missing_value = missing_value , range = ( / - 1.e9 , 1.e9 / ) ) e: id_global_variance ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_global_variance' , time % model_time , 'Global ' // trim ( t_prog ( n ) % name ) // ' variance' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) e: id_k_variance ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_variance' , grd % tracer_axes ( 3 : 3 ) , time % model_time , trim ( t_prog ( n ) % name ) // ' variance' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) e: id_prog_total ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_total' , time % model_time , 'mass integrated ' // trim ( t_prog ( n ) % name ) , 'kg/1e18' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) e: id_prog_global_ave ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_global_ave' , time % model_time , 'Global mass weighted mean ' // trim ( t_prog ( n ) % name ) // ' in liquid seawater' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 10.0 , 1000.0 / ) ) e: id_tracer_on_rho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_on_rho' , dens % potrho_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % name ) // ' on potential density surface' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / 0.0 , 1.e3 / ) ) e: id_tracer_zrho_on_rho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_zrho_on_rho' , dens % potrho_axes ( 1 : 3 ) , time % model_time , trim ( t_prog ( n ) % name ) // ' *dz/drho on potential density surface' , trim ( t_prog ( n ) % units ) // '*m/(kg/m^3)' , missing_value = missing_value , range = ( / - 1.e9 , 1.e9 / ) ) e: id_global_variance ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_global_variance' , time % model_time , 'Global ' // trim ( t_prog ( n ) % name ) // ' variance' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) e: id_k_variance ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_variance' , grd % tracer_axes ( 3 : 3 ) , time % model_time , trim ( t_prog ( n ) % name ) // ' variance' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) e: id_prog_surface_ave ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_surface_ave' , time % model_time , 'Global mass weighted mean surface ' // trim ( t_prog ( n ) % name ) // ' in liquid seawater' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 10.0 , 1000.0 / ) ) e: id_prog_surface_area_ave ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_surface_area_ave' , time % model_time , 'Global area weighted mean surface ' // trim ( t_prog ( n ) % name ) // ' in liquid seawater' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 10.0 , 1000.0 / ) ) e: id_subduction_tracer ( n ) = register_diag_field ( 'ocean_model' , 'subduction_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Tracer transport across mld from subduction for ' // trim ( t_prog ( n ) % name ) , 'kg/sec * ' // trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_subduction_dhdt_tracer ( n ) = register_diag_field ( 'ocean_model' , 'subduction_dhdt_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Tracer transport across mld from dhdt for ' // trim ( t_prog ( n ) % name ) , 'kg/sec * ' // trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_subduction_horz_tracer ( n ) = register_diag_field ( 'ocean_model' , 'subduction_horz_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Tracer transport across mld from from horz advection for ' // trim ( t_prog ( n ) % name ) , 'kg/sec * ' // trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_subduction_vert_tracer ( n ) = register_diag_field ( 'ocean_model' , 'subduction_vert_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Tracer transport across mld from vertical advection for ' // trim ( t_prog ( n ) % name ) , 'kg/sec * ' // trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_subduction_mld_zflux_diff ( n ) = register_diag_field ( 'ocean_model' , 'subduction_mld_zflux_diff' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Tracer transport from vertical diffusion at base of mld for ' // trim ( t_prog ( n ) % name ) , 'kg/sec * ' // trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_tracer_mld ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_mld' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Vertically integrated tracer [sum(rho_dzt*tracer)] in mixed layer for ' // trim ( t_prog ( n ) % name ) , 'kg/m^2 * ' // trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_kappa_sort = register_diag_field ( 'ocean_model' , 'kappa_sort' , grd % tracer_axes ( 3 : 3 ) , time % model_time , 'kappa from sorting' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_temp_sort = register_diag_field ( 'ocean_model' , 'temp_sort' , grd % tracer_axes ( 3 : 3 ) , time % model_time , 'sorted temp' , 'C' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_kappa_simple = register_diag_field ( 'ocean_model' , 'kappa_simple' , grd % tracer_axes ( 3 : 3 ) , time % model_time , 'kappa from horz avg' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_mld_dtheta = register_diag_field ( 'ocean_model' , 'mld_dtheta' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'mixed layer depth determined by temperature criteria ' , 'm' , missing_value = missing_value , range = ( / 0.0 , 1.e6 / ) ) E: id_mld = register_diag_field ( 'ocean_model' , 'mld' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'mixed layer depth determined by density criteria ' , 'm' , missing_value = missing_value , range = ( / 0.0 , 1.e6 / ) , standard_name = 'ocean_mixed_layer_thickness_defined_by_sigma_t' ) E: id_mld_sq = register_diag_field ( 'ocean_model' , 'mld_sq' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'squared mixed layer depth determined by density criteria' , 'm^2' , missing_value = missing_value , range = ( / 0.0 , 1.e12 / ) , standard_name = 'square_of_ocean_mixed_layer_thickness_defined_by_sigma_t' ) E: id_mld_nrho = register_diag_field ( 'ocean_model' , 'mld_nrho' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'neutral density at base of mixed layer depth' , 'kg/m^3' , missing_value = missing_value , range = ( / 0.0 , 1.e6 / ) ) E: id_subduction = register_diag_field ( 'ocean_model' , 'subduction' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'rate of mass transferred below the mixed layer base' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_subduction_mld = register_diag_field ( 'ocean_model' , 'subduction_mld' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'mixed layer depth used for subduction diagnostics' , 'm' , missing_value = missing_value , range = ( / - 1.e2 , 1.e20 / ) ) E: id_subduction_dhdt = register_diag_field ( 'ocean_model' , 'subduction_dhdt' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'rate of mass transferred below the mixed layer base due to dh/dt' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_subduction_horz = register_diag_field ( 'ocean_model' , 'subduction_horz' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'rate of mass transferred below the mixed layer base due to horz advect' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_subduction_vert = register_diag_field ( 'ocean_model' , 'subduction_vert' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'rate of mass transferred below the mixed layer base due to vert advect' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_subduction_nrho = register_diag_field ( 'ocean_model' , 'subduction_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'rate of mass transferred below the mixed layer base as binned to neutral rho classes' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_subduction_dhdt_nrho = register_diag_field ( 'ocean_model' , 'subduction_dhdt_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'rate of mass transferred below the mixed layer base due to dhdt as binned to neutral rho classes' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_subduction_horz_nrho = register_diag_field ( 'ocean_model' , 'subduction_horz_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'rate of mass transferred below the mixed layer base due to horz velocity as binned to neutral rho classes' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_subduction_vert_nrho = register_diag_field ( 'ocean_model' , 'subduction_vert_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'rate of mass transferred below the mixed layer base due to vert velocity as binned to neutral rho classes' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_depth_of_potrho = register_diag_field ( 'ocean_model' , 'depth_of_potrho' , dens % potrho_axes ( 1 : 3 ) , time % model_time , 'depth of potential density surface' , 'm' , missing_value = missing_value , range = ( / 0.0 , 1.e10 / ) ) E: id_depth_of_theta = register_diag_field ( 'ocean_model' , 'depth_of_theta' , dens % theta_axes ( 1 : 3 ) , time % model_time , 'depth of potential temp surface' , 'm' , missing_value = missing_value , range = ( / 0.0 , 1.e10 / ) ) E: id_potrho_mix_depth = register_diag_field ( 'ocean_model' , 'potrho_mix_depth' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Depth of potential density mixed layer' , 'm' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_potrho_mix_base = register_diag_field ( 'ocean_model' , 'potrho_mix_base' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Potential density at mixed layer base' , 'kg/m^3' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_press_ave = register_diag_field ( 'ocean_model' , 'press_ave' , time % model_time , 'global mean absolute ocean pressure, including surface loading' , 'dbar' , missing_value = missing_value , range = ( / - 1e1 , 1e20 / ) ) E: id_tx_trans = register_diag_field ( 'ocean_model' , 'tx_trans' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'T-cell i-mass transport' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) , standard_name = 'ocean_mass_x_transport' ) E: id_ty_trans = register_diag_field ( 'ocean_model' , 'ty_trans' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'T-cell j-mass transport' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) , standard_name = 'ocean_mass_y_transport' ) E: id_tx_trans_int_z = register_diag_field ( 'ocean_model' , 'tx_trans_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'T-cell i-mass transport vertically summed' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_ty_trans_int_z = register_diag_field ( 'ocean_model' , 'ty_trans_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'T-cell j-mass transport vertically summed' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tz_trans = register_diag_field ( 'ocean_model' , 'tz_trans' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'T-cell k-mass transport' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) , standard_name = 'upward_ocean_mass_transport' ) E: id_tz_trans_int_z = register_diag_field ( 'ocean_model' , 'tz_trans_int_z' , grd % tracer_axes_wt ( 1 : 2 ) , time % model_time , 'T-cell k-mass transport vertically summed' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tz_trans_sq = register_diag_field ( 'ocean_model' , 'tz_trans_sq' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'Square of T-cell k-mass transport (positive upwards)' , trim ( transport_dims ) // '^2' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) , standard_name = 'square_of_upward_ocean_mass_transport' ) E: id_ux_trans = register_diag_field ( 'ocean_model' , 'ux_trans' , grd % vel_axes_flux_x ( 1 : 3 ) , time % model_time , 'U-cell i-mass transport' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_uy_trans = register_diag_field ( 'ocean_model' , 'uy_trans' , grd % vel_axes_flux_y ( 1 : 3 ) , time % model_time , 'U-cell j-mass transport' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_uz_trans = register_diag_field ( 'ocean_model' , 'uz_trans' , grd % vel_axes_wu ( 1 : 3 ) , time % model_time , 'U-cell k-mass transport' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tx_trans_rho = register_diag_field ( 'ocean_model' , 'tx_trans_rho' , dens % potrho_axes_flux_x ( 1 : 3 ) , time % model_time , 'T-cell i-mass transport on pot_rho' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_ty_trans_rho = register_diag_field ( 'ocean_model' , 'ty_trans_rho' , dens % potrho_axes_flux_y ( 1 : 3 ) , time % model_time , 'T-cell j-mass transport on pot_rho' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tx_trans_nrho = register_diag_field ( 'ocean_model' , 'tx_trans_nrho' , dens % neutralrho_axes_flux_x ( 1 : 3 ) , time % model_time , 'T-cell i-mass transport on neutral rho' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_ty_trans_nrho = register_diag_field ( 'ocean_model' , 'ty_trans_nrho' , dens % neutralrho_axes_flux_y ( 1 : 3 ) , time % model_time , 'T-cell j-mass transport on neutral rho' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tx_trans_theta = register_diag_field ( 'ocean_model' , 'tx_trans_theta' , dens % theta_axes_flux_x ( 1 : 3 ) , time % model_time , 'T-cell i-mass transport on theta' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_ty_trans_theta = register_diag_field ( 'ocean_model' , 'ty_trans_theta' , dens % theta_axes_flux_y ( 1 : 3 ) , time % model_time , 'T-cell j-mass transport on theta' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_k33_explicit = register_diag_field ( 'ocean_model' , 'k33_explicit' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'K33_explicit tensor element' , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e20 / ) ) E: id_tx_trans_gm = register_diag_field ( 'ocean_model' , 'tx_trans_gm' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'T-cell mass i-transport from GM' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1.e20 / ) ) E: id_ty_trans_gm = register_diag_field ( 'ocean_model' , 'ty_trans_gm' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'T-cell mass j-transport from GM' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1.e20 / ) ) E: id_slope_blayer_base = register_diag_field ( 'ocean_model' , 'slope_blayer_base' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'abs(slope) at neutral physics bdy-layer base' , 'dimensionless' , missing_value = missing_value , range = ( / - 1.0 , 1.e8 / ) ) E: id_surf_turb_thick = register_diag_field ( 'ocean_model' , 'surf_turb_thick' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'surface turbulent thickness for neutral physics' , 'm' , missing_value = missing_value , range = ( / - 1.0 , 1.e8 / ) ) E: id_surf_trans_thick = register_diag_field ( 'ocean_model' , 'surf_trans_thick' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Surface transition layer thickness' , 'm' , missing_value = missing_value , range = ( / - 1.0 , 1.e8 / ) ) E: id_depth_blayer_base = register_diag_field ( 'ocean_model' , 'depth_blayer_base' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Depth at bottom of neutral physics surface boundary layer' , 'm' , missing_value = missing_value , range = ( / - 1.0 , 1.e8 / ) ) E: id_full_turb_column = register_diag_field ( 'ocean_model' , 'full_turb_column' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'regions deemed fully turbulent by neutral physics' , 'dimensioness' , missing_value = missing_value , range = ( / - 1.e8 , 1.e8 / ) ) E: id_grav_agm_dz_sx_drhodx = register_diag_field ( 'ocean_model' , 'grav_agm_dz_sx_drhodx' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'grav*dz*agm*neutral x-slope times drho_dx' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e15 , 1.e15 / ) ) E: id_grav_agm_dz_sy_drhody = register_diag_field ( 'ocean_model' , 'grav_agm_dz_sy_drhody' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'grav*dz*agm*neutral y-slope times drho_dy' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e15 , 1.e15 / ) ) E: id_gm_eddy_ke_source = register_diag_field ( 'ocean_model' , 'gm_eddy_ke_source' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho0*dz*agm*(slope*N)^2 = eddy ke source from GM' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e1 , 1.e15 / ) , standard_name = 'tendency_of_ocean_eddy_kinetic_energy_content_due_to_bolus_transport' ) E: id_slopex_drhodx = register_diag_field ( 'ocean_model' , 'slopex_drhodx' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'neutral x-slope times drho_dx' , 'kg/m^4' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_slopey_drhody = register_diag_field ( 'ocean_model' , 'slopey_drhody' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'neutral y-slope times drho_dy' , 'kg/m^4' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_k33_implicit ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_k33_implicit' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'K33_implicit tensor element for ' // trim ( t_prog ( n ) % name ) , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) e: id_neutral_physics ( n ) = register_diag_field ( 'ocean_model' , 'neutral_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*cp*explicit neutral tendency (heating)' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_neutral_physics_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , 'neutral_diffusion_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*cp*explicit neutral diffusion tendency (heating)' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_neutral_physics_gm ( n ) = register_diag_field ( 'ocean_model' , 'neutral_gm_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*cp*GM stirring (heating)' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_neutral_physics ( n ) = register_diag_field ( 'ocean_model' , 'neutral_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*explicit neutral tendency for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_neutral_physics_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , 'neutral_diffusion_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*explicit neutral diffusion tendency for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_neutral_physics_gm ( n ) = register_diag_field ( 'ocean_model' , 'neutral_gm_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*GM stirring tendency for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_flux_x ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_neutral' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'cp*neutral_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_neutral' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'cp*neutral_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_neutral_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral cp*neutral_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_neutral_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral cp*neutral_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_gm ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_gm' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'cp*gm_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_gm ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_gm' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'cp*gm_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_gm_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_gm_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral cp*gm_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_gm_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_gm_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral cp*gm_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_ndiffuse' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'cp*redi_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_ndiffuse' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'cp*redi_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_ndiffuse_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_ndiffuse_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral cp*redi_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_ndiffuse_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_ndiffuse_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral cp*redi_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_neutral' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'neutral_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_neutral' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'neutral_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_neutral_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral neutral_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_neutral_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral neutral_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_gm ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_gm' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'gm_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_gm ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_gm' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'gm_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_gm_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_gm_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral gm_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_gm_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_gm_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral gm_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_ndiffuse' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'gm_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_ndiffuse' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'gm_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_ndiffuse_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_ndiffuse_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral gm_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_ndiffuse_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_ndiffuse_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral gm_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) E: id_rescale_psi_x = register_diag_field ( 'ocean_model' , 'rescale_psi_x' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Dimensionless rescaling of mode-1 psix for GM' , 'unitless' , missing_value = missing_value , range = ( / - 1.0 , 1.e10 / ) ) E: id_rescale_psi_y = register_diag_field ( 'ocean_model' , 'rescale_psi_y' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Dimensionless rescaling of mode-1 psiy for GM' , 'unitless' , missing_value = missing_value , range = ( / - 1.0 , 1.e10 / ) ) E: id_k33_explicit = register_diag_field ( 'ocean_model' , 'k33_explicit' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'K33_explicit tensor element' , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e20 / ) ) E: id_n_squared = register_diag_field ( 'ocean_model' , 'N_squared' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'squared buoyancy frequency' , '1/s^2' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_bv_freq = register_diag_field ( 'ocean_model' , 'bv_freq' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'buoy freq at T-cell centre for use in neutral physics' , '1/s' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_psix_gm_modes = register_diag_field ( 'ocean_model' , 'psix_gm_modes' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'i-comp of modal decomposed GM streamfunction' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1e10 / ) ) E: id_psiy_gm_modes = register_diag_field ( 'ocean_model' , 'psiy_gm_modes' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'j-comp of modal decomposed GM streamfunction' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1e10 / ) ) E: id_psix_gm_bvp = register_diag_field ( 'ocean_model' , 'psix_gm_bvp' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'i-comp of GM streamfunction computed via a BVP' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1e10 / ) ) E: id_psiy_gm_bvp = register_diag_field ( 'ocean_model' , 'psiy_gm_bvp' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'j-comp of GM streamfunction computed via a BVP' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1e10 / ) ) E: id_tx_trans_gm = register_diag_field ( 'ocean_model' , 'tx_trans_gm' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'T-cell mass i-transport from GM' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1.e20 / ) ) E: id_ty_trans_gm = register_diag_field ( 'ocean_model' , 'ty_trans_gm' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'T-cell mass j-transport from GM' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1.e20 / ) ) E: id_eddy_depth = register_diag_field ( 'ocean_model' , 'eddy_depth' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'mesoscale eddy penetration depth used in neutral physicsC' , 'm' , missing_value = missing_value , range = ( / - 1.0 , 1.e8 / ) ) E: id_gradx_rho = register_diag_field ( 'ocean_model' , 'gradx_rho' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'd(rho)/dx for neutral density' , 'kg/m^4' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_grady_rho = register_diag_field ( 'ocean_model' , 'grady_rho' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'd(rho)/dy for neutral density' , 'kg/m^4' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_gm_eddy_ke_source = register_diag_field ( 'ocean_model' , 'gm_eddy_ke_source' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'vertical sum of rho*dz*[(N*psi)^2 + (c*psi_z)^2]/agm = eddy ke source from BVP' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e1 , 1.e15 / ) , standard_name = 'tendency_of_ocean_eddy_kinetic_energy_content_due_to_bolus_transport' ) E: id_eta_tend_ndiff_flx = register_diag_field ( 'ocean_model' , 'eta_tend_ndiff_flx' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from neutral diffusion operator' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_ndiff_flx_glob = register_diag_field ( 'ocean_model' , 'eta_tend_ndiff_flx_glob' , time % model_time , 'global mean non-bouss steric sea level tendency from neutral diffusion operator' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_gm_flx = register_diag_field ( 'ocean_model' , 'eta_tend_gm_flx' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'numerical form of non-Bouss steric sea level tend from GM-based eddy fluxes' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_gm_flx_glob = register_diag_field ( 'ocean_model' , 'eta_tend_gm_flx_glob' , time % model_time , 'global mean numerical form of non-bouss steric sea level tend from GM-based eddy fluxes' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) e: id_k33_implicit ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_k33_implicit' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'K33_implicit tensor element for ' // trim ( t_prog ( n ) % name ) , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) e: id_neutral_physics_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , 'neutral_diffusion_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*cp*explicit neutral diffusion tendency (heating)' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_neutral_physics_ndiffuse_on_nrho ( n ) = register_diag_field ( 'ocean_model' , 'neutral_diffusion_on_nrho_' // trim ( t_prog ( n ) % name ) , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*cp*explicit neutral diffusion tendency (heating) binned to neutral density' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_neutral_physics_gm ( n ) = register_diag_field ( 'ocean_model' , 'neutral_gm_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*cp*GM stirring (heating)' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_neutral_physics_gm_on_nrho ( n ) = register_diag_field ( 'ocean_model' , 'neutral_gm_on_nrho_' // trim ( t_prog ( n ) % name ) , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*cp*GM stirring (heating) binned to neutral density' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_neutral_physics_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , 'neutral_diffusion_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*explicit neutral diffusion tendency for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_neutral_physics_ndiffuse_on_nrho ( n ) = register_diag_field ( 'ocean_model' , 'neutral_diffusion_on_nrho_' // trim ( t_prog ( n ) % name ) , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*explicit neutral diffusion tendency binned to neutral density for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_neutral_physics_gm ( n ) = register_diag_field ( 'ocean_model' , 'neutral_gm_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*GM stirring tendency for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_neutral_physics_gm_on_nrho ( n ) = register_diag_field ( 'ocean_model' , 'neutral_gm_on_nrho_' // trim ( t_prog ( n ) % name ) , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*GM stirring tendency binned to neutral density for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_flux_x_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_ndiffuse' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'cp*ndiffuse_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_ndiffuse' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'cp*ndiffuse_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_z_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_zflux_ndiffuse' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cp*ndiffuse_zflux*dxt*dyt*rho*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_gm ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_gm' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'cp*gm_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_gm ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_gm' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'cp*gm_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_z_gm ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_zflux_gm' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cp*gm_zflux*dxt*dyt*rho*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_ndiffuse_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_ndiffuse_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral cp*ndiffuse_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_ndiffuse_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_ndiffuse_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral cp*ndiffuse_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_gm_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_gm_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral cp*gm_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_gm_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_gm_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral cp*gm_yflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_ndiffuse' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'ndiffuse_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_ndiffuse' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'ndiffuse_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_z_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_zflux_ndiffuse' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'ndiffuse_zflux*dxt*dyt*rho*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_gm ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_gm' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'gm_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_gm ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_gm' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'gm_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_z_gm ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_zflux_gm' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'gm_zflux*dxt*dyt*rho*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_ndiffuse_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_ndiffuse_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral ndiffuse_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_ndiffuse_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_ndiffuse_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral ndiffuse_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_gm_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_gm_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral gm_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_gm_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_gm_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral gm_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_bc_mode ( n ) = register_diag_field ( 'ocean_model' , 'baroclinic_mode_' // string ( n ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Dimensionless baroclinic mode number ' // string ( n ) , 'Dimensionless' , missing_value = missing_value , range = ( / - 1.e2 , 1.e2 / ) ) e: id_bc_speed ( n ) = register_diag_field ( 'ocean_model' , 'baroclinic_speed_' // string ( n ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Speed for baroclinic mode number ' // string ( n ) , 'm/s' , missing_value = missing_value , range = ( / - 1.e2 , 1.e2 / ) ) E: id_u_et_gm = register_diag_field ( 'ocean_model' , 'u_et_gm' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'i-component of gm transport velocity' , 'm/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_v_nt_gm = register_diag_field ( 'ocean_model' , 'v_nt_gm' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'j-component of gm transport velocity' , 'm/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_w_bt_gm = register_diag_field ( 'ocean_model' , 'w_bt_gm' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'vertical component of gm transport velocity' , 'm/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_uhrho_et_gm = register_diag_field ( 'ocean_model' , 'uhrho_et_gm' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'i-component of gm mass transport' , '(kg/m^3)*m^2/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_vhrho_nt_gm = register_diag_field ( 'ocean_model' , 'vhrho_nt_gm' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'j-component of gm mass transport' , '(kg/m^3)*m^2/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wrho_bt_gm = register_diag_field ( 'ocean_model' , 'wrho_bt_gm' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'k-component of gm mass transport' , '(kg/m^3)*m/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tx_trans_gm_adv = register_diag_field ( 'ocean_model' , 'tx_trans_gm_adv' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'T-cell mass i-transport from GM advection' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1.e20 / ) ) E: id_ty_trans_gm_adv = register_diag_field ( 'ocean_model' , 'ty_trans_gm_adv' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'T-cell mass j-transport from GM advection' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1.e20 / ) ) E: id_tz_trans_gm_adv = register_diag_field ( 'ocean_model' , 'tz_trans_gm_adv' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'T-cell mass k-transport from GM advection' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1.e20 , 1e20 / ) ) E: id_k33_explicit = register_diag_field ( 'ocean_model' , 'k33_explicit' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'K33_explicit tensor element' , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e20 / ) ) E: id_tx_trans_gm = register_diag_field ( 'ocean_model' , 'tx_trans_gm' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'T-cell mass i-transport from GM' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1.e20 / ) ) E: id_ty_trans_gm = register_diag_field ( 'ocean_model' , 'ty_trans_gm' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'T-cell mass j-transport from GM' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1.e20 / ) ) E: id_depth_blayer_base = register_diag_field ( 'ocean_model' , 'depth_blayer_base' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Depth of neutral physics surface bdy-layer' , 'm' , missing_value = missing_value , range = ( / - 1.0 , 1.e8 / ) ) E: id_slope_blayer_base = register_diag_field ( 'ocean_model' , 'slope_blayer_base' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'abs(slope) at neutral physics bdy-layer base' , 'dimensionless' , missing_value = missing_value , range = ( / - 1.0 , 1.e8 / ) ) E: id_eddy_depth = register_diag_field ( 'ocean_model' , 'eddy_depth' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'mesoscale eddy penetration depth used in neutral physicsA' , 'm' , missing_value = missing_value , range = ( / - 1.0 , 1.e8 / ) ) E: id_steep_depth = register_diag_field ( 'ocean_model' , 'steep_depth' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Depth at base of steep slope surface bdy layer' , 'm' , missing_value = missing_value , range = ( / - 1.0 , 1.e8 / ) ) E: id_grav_agm_dz_sx_drhodx = register_diag_field ( 'ocean_model' , 'grav_agm_dz_sx_drhodx' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'grav*dz*agm*neutral x-slope times drho_dx' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e15 , 1.e15 / ) ) E: id_grav_agm_dz_sy_drhody = register_diag_field ( 'ocean_model' , 'grav_agm_dz_sy_drhody' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'grav*dz*agm*neutral y-slope times drho_dy' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e15 , 1.e15 / ) ) E: id_gm_eddy_ke_source = register_diag_field ( 'ocean_model' , 'gm_eddy_ke_source' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho0*dz*agm*(slope*N)^2 = eddy ke source from GM' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e1 , 1.e15 / ) , standard_name = 'tendency_of_ocean_eddy_kinetic_energy_content_due_to_bolus_transport' ) E: id_slopex_drhodx = register_diag_field ( 'ocean_model' , 'slopex_drhodx' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'neutral x-slope times drho_dx' , 'kg/m^4' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_slopey_drhody = register_diag_field ( 'ocean_model' , 'slopey_drhody' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'neutral y-slope times drho_dy' , 'kg/m^4' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_ustar = register_diag_field ( 'ocean_model' , 'ugm' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'GM zonal velocity' , 'm/sec' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_vstar = register_diag_field ( 'ocean_model' , 'vgm' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'GM merid velocity' , 'm/sec' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_wstar = register_diag_field ( 'ocean_model' , 'wgm' , grd % vel_axes_wt ( 1 : 3 ) , time % model_time , 'GM vert velocity (T-cell bottom)' , 'm/sec' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) e: id_k33_implicit ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_k33_implicit' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'K33_implicit tensor element for ' // trim ( t_prog ( n ) % name ) , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) e: id_neutral_physics ( n ) = register_diag_field ( 'ocean_model' , 'neutral_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*cp*explicit neutral tendency (heating)' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_neutral_physics_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , 'neutral_diffusion_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*cp*explicit neutral diffusion tendency (heating)' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_neutral_physics_gm ( n ) = register_diag_field ( 'ocean_model' , 'neutral_gm_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*cp*GM stirring (heating)' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_neutral_physics ( n ) = register_diag_field ( 'ocean_model' , 'neutral_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*explicit neutral tendency for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_neutral_physics_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , 'neutral_diffusion_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*explicit neutral diffusion tendency for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_neutral_physics_gm ( n ) = register_diag_field ( 'ocean_model' , 'neutral_gm_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*GM stirring tendency for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_flux_x ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_neutral' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'cp*neutral_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_neutral' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'cp*neutral_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_neutral_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral cp*neutral_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_neutral_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral cp*neutral_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_gm ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_gm' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'cp*gm_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_gm ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_gm' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'cp*gm_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_gm_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_gm_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral cp*gm_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_gm_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_gm_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral cp*gm_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_ndiffuse' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'cp*redi_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_ndiffuse' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'cp*redi_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_ndiffuse_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_ndiffuse_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral cp*redi_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_ndiffuse_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_ndiffuse_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral cp*redi_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_neutral' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'neutral_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_neutral' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'neutral_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_neutral_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral neutral_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_neutral_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral neutral_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_gm ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_gm' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'gm_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_gm ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_gm' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'gm_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_gm_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_gm_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral gm_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_gm_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_gm_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral gm_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_ndiffuse' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'gm_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_ndiffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_ndiffuse' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'gm_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_x_ndiffuse_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_ndiffuse_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral gm_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_flux_y_ndiffuse_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_ndiffuse_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral gm_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) E: id_ksurf_blayer = register_diag_field ( 'ocean_model' , 'ksurf_blayer' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'k-value at base of surf nblayer region' , 'dimensionless' , missing_value = missing_value , range = ( / - 1.0 , 1.e1 / ) ) E: id_n2slope = register_diag_field ( 'ocean_model' , 'N2slope' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'Squared buoyancy frequency used in neutral slope calculation' , '1/s^2' , missing_value = missing_value , range = ( / - 1e3 , 1.e10 / ) ) E: id_n2_for_agm = register_diag_field ( 'ocean_model' , 'N2_for_agm' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Squared buoyancy frequency used for (N/Nref)^2 agm calculation' , '1/s^2' , missing_value = missing_value , range = ( / - 1e3 , 1.e10 / ) ) E: id_n2_nblayer_base = register_diag_field ( 'ocean_model' , 'N2_nblayer_base' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Squared buoyancy frequency at base of nblayer' , '1/s^2' , missing_value = missing_value , range = ( / - 1e3 , 1.e10 / ) ) E: id_slope31 = register_diag_field ( 'ocean_model' , 'slope31' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'neutral slope -(rho_x/rho_z)' , 'dimensionless' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_slope32 = register_diag_field ( 'ocean_model' , 'slope32' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'neutral slope -(rho_y/rho_z)' , 'dimensionless' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eady_mld = register_diag_field ( 'ocean_model' , 'eady_mld' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Mixed layer depth inside of which compute ave Eady rate' , 's^-1' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_eady_rate_zave = register_diag_field ( 'ocean_model' , 'eady_rate_zave' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Eady growth rate averaged over depth range for nphysics ' , 's^-1' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_eady_rate = register_diag_field ( 'ocean_model' , 'eady_rate' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Eady growth rate used in neutral physics ' , 's^-1' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_rossby = register_diag_field ( 'ocean_model' , 'rossby' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Rossby radius used in neutral physics' , 'm' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_rossby_radius = register_diag_field ( 'ocean_model' , 'rossby_radius' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Rossby radius computed without min/max bounds' , 'm' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_rossby_equator = register_diag_field ( 'ocean_model' , 'rossby_equator' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Equatorial Rossby radius' , 'm' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_rossby_nonequator = register_diag_field ( 'ocean_model' , 'rossby_nonequator' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Rossby radius outside equatorial region' , 'm' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_bczone = register_diag_field ( 'ocean_model' , 'bczone' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'radius of baroclinic zone' , 'm' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_sqrt2betacr = register_diag_field ( 'ocean_model' , 'sqrt2betaCr' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'sqrt(2 * 1st b/c wave speed *beta) in neutral physics ' , '1/sec' , missing_value = missing_value , range = ( / - 1e0 , 1e10 / ) ) E: id_gw_speed = register_diag_field ( 'ocean_model' , 'gw_speed' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Gravity wave speed used in neutral physics ' , 'm/s' , missing_value = missing_value , range = ( / - 1e2 , 1e2 / ) ) E: id_baroclinicity = register_diag_field ( 'ocean_model' , 'baroclinicity' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'vertically averaged horz density gradient' , 'kg/m^4' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_growth_rate_baroclinic = register_diag_field ( 'ocean_model' , 'growth_rate_baroclinic' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'growth rate using baroclinicity' , 's^-1' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_agm_growth_rate = register_diag_field ( 'ocean_model' , 'agm_growth_rate' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'effective growth rate for agm' , 's^-1' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_agm_length = register_diag_field ( 'ocean_model' , 'agm_length' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'effective length scale for agm' , 'm' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_rhines_length = register_diag_field ( 'ocean_model' , 'rhines_length' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Rhines length approximated as eady_rate/beta' , 'm' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_agm_qg = register_diag_field ( 'ocean_model' , 'agm_qg' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'agm from QG theory' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_agm = register_diag_field ( 'ocean_model' , 'agm' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'GM diffusivity at surface' , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) , standard_name = 'ocean_tracer_bolus_laplacian_diffusivity' ) E: id_agm_grid_scaling = register_diag_field ( 'ocean_model' , 'agm_grid_scaling' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Scaling of AGM according to Delta(s)^2/(Delta(s)^2 + Rossby^2)' , 'dimensionless' , missing_value = missing_value , range = ( / - 1e1 , 1e1 / ) ) E: id_aredi_grid_scaling = register_diag_field ( 'ocean_model' , 'aredi_grid_scaling' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Scaling of Aredi according to Delta(s)^2/(Delta(s)^2 + Rossby^2)' , 'dimensionless' , missing_value = missing_value , range = ( / - 1e1 , 1e1 / ) ) E: id_agm_3d = register_diag_field ( 'ocean_model' , 'agm_3d' , grd % tracer_axes ( 1 : 3 ) , time % model_time , '3d GM diffusivity' , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) , standard_name = 'ocean_tracer_bolus_laplacian_diffusivity' ) E: id_aredi = register_diag_field ( 'ocean_model' , 'aredi' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'neutral diffusivity at k=1' , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e20 / ) , standard_name = 'ocean_tracer_epineutral_laplacian_diffusivity' ) E: id_aredi_3d = register_diag_field ( 'ocean_model' , 'aredi_3d' , grd % tracer_axes ( 1 : 3 ) , time % model_time , '3d neutral diffusivity' , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e20 / ) ) E: id_tx_trans_nrho_gm = register_diag_field ( 'ocean_model' , 'tx_trans_nrho_gm' , dens % neutralrho_axes_flux_x ( 1 : 3 ) , time % model_time , 'T-cell i-mass transport from GM on neutral rho' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_ty_trans_nrho_gm = register_diag_field ( 'ocean_model' , 'ty_trans_nrho_gm' , dens % neutralrho_axes_flux_y ( 1 : 3 ) , time % model_time , 'T-cell j-mass transport from GM on neutral rho' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tx_trans_rho_gm = register_diag_field ( 'ocean_model' , 'tx_trans_rho_gm' , dens % potrho_axes_flux_x ( 1 : 3 ) , time % model_time , 'T-cell i-mass transport from GM on pot_rho' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_ty_trans_rho_gm = register_diag_field ( 'ocean_model' , 'ty_trans_rho_gm' , dens % potrho_axes_flux_y ( 1 : 3 ) , time % model_time , 'T-cell j-mass transport from GM on pot_rho' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tx_trans_theta_gm = register_diag_field ( 'ocean_model' , 'tx_trans_theta_gm' , dens % theta_axes_flux_x ( 1 : 3 ) , time % model_time , 'T-cell i-mass transport from GM on theta' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_ty_trans_theta_gm = register_diag_field ( 'ocean_model' , 'ty_trans_theta_gm' , dens % theta_axes_flux_y ( 1 : 3 ) , time % model_time , 'T-cell j-mass transport from GM on theta' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_eta_tend_gm90 = register_diag_field ( 'ocean_model' , 'eta_tend_gm90' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'analytic (and less accurate) form of non-Bouss steric sea level tendency from GM90' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_gm90_glob = register_diag_field ( 'ocean_model' , 'eta_tend_gm90_glob' , time % model_time , 'global mean analytic (and less accurate) form of non-bouss steric sea level tendency from GM90' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_cabbeling_tend = register_diag_field ( 'ocean_model' , 'cabbeling_tend' , grd % tracer_axes ( 1 : 3 ) , time % model_time , '(1/rho)*d(rho)/dt from cabbeling' , 's^-1' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_cabbeling_speed = register_diag_field ( 'ocean_model' , 'cabbeling_speed' , grd % tracer_axes ( 1 : 3 ) , time % model_time , '(dz/rho)*d(rho)/dt from cabbeling' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_cabbeling_tend_intz = register_diag_field ( 'ocean_model' , 'cabbeling_tend_intz' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'vertical sum of (dz/rho)*d(rho)/dt from cabbeling' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_cabbeling_tend_intz_glob = register_diag_field ( 'ocean_model' , 'cabbeling_tend_intz_glob' , time % model_time , 'global mean vertical sum of (dz/rho)*d(rho)/dt from cabbeling' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_thermobaric_tend = register_diag_field ( 'ocean_model' , 'thermobaric_tend' , grd % tracer_axes ( 1 : 3 ) , time % model_time , '(1/rho)*d(rho)/dt from thermobaricity' , 's^-1' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_thermobaric_speed = register_diag_field ( 'ocean_model' , 'thermobaric_speed' , grd % tracer_axes ( 1 : 3 ) , time % model_time , '(dz/rho)*d(rho)/dt from thermobaricity' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_thermobaric_tend_intz = register_diag_field ( 'ocean_model' , 'thermobaric_tend_intz' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'vertical sum of (dz/rho)*d(rho)/dt from thermobaricity' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_thermobaric_tend_intz_glob = register_diag_field ( 'ocean_model' , 'thermobaric_tend_intz_glob' , time % model_time , 'global mean vertical sum of (dz/rho)*d(rho)/dt from thermobaricity' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_neut_rho_cabbeling = register_diag_field ( 'ocean_model' , 'neut_rho_cabbeling' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of locally referenced potential density from cabbeling' , '(kg/m^3)/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_wdian_cabbeling = register_diag_field ( 'ocean_model' , 'wdian_cabbeling' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to cabbeling' , 'kg/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_neut_rho_thermob = register_diag_field ( 'ocean_model' , 'neut_rho_thermob' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of locally referenced potential density from thermob' , '(kg/m^3)/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_wdian_thermob = register_diag_field ( 'ocean_model' , 'wdian_thermob' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to thermobaricity' , 'kg/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_neut_rho_cabbeling_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_cabbeling_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally referenced potential density due to cabbeling as binned to neutral density' , '(kg/m^3)/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_wdian_cabbeling_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_cabbeling_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to cabbeling as binned to neutral density' , 'kg/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_neut_rho_thermob_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_thermob_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally referenced potential density due to thermobaricity as binned to neutral density' , '(kg/m^3)/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_wdian_thermob_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_thermob_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to thermobaricity as binned to neutral density' , 'kg/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_tform_rho_cabbel_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_cabbel_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to cabbeling as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_rho_thermb_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_thermb_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to thermobaricity as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_rho_nphysics = register_diag_field ( 'ocean_model' , 'neut_rho_nphysics' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of locally referenced potential density from time-explicit nphysics' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_rho_nphysics = register_diag_field ( 'ocean_model' , 'wdian_rho_nphysics' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to time-explicit nphysics' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_rho_ndiff = register_diag_field ( 'ocean_model' , 'neut_rho_ndiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of locally referenced potential density time-explicit neutral diffusion' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_rho_ndiff_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_ndiff_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from time-explicit neutral diffusion as binned to neutral rho layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_rho_ndiff = register_diag_field ( 'ocean_model' , 'wdian_rho_ndiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to time-explicit neutral diffusion' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_rho_ndiff_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_ndiff_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to time-explicit neutral diffusion as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_rho_ndiff = register_diag_field ( 'ocean_model' , 'tform_rho_ndiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to time-explicit neutral diffusion on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_rho_ndiff_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_ndiff_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to time-explicit neutral diffusion as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_ndiff_tend = register_diag_field ( 'ocean_model' , 'eta_tend_ndiff_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'numerical form of non-Bouss steric sea level tend from time explicit ndiffusion' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_ndiff_tend_glob = register_diag_field ( 'ocean_model' , 'eta_tend_ndiff_tend_glob' , time % model_time , 'global mean numerical form of non-bouss steric sea level tend from time explicit ndiffusion' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_neut_temp_ndiff = register_diag_field ( 'ocean_model' , 'neut_temp_ndiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally ref potrho time-explicit neutral diffusion' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_temp_ndiff_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_ndiff_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally ref potrho from time-explicit neutral diff binned to neutral rho layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_temp_ndiff = register_diag_field ( 'ocean_model' , 'wdian_temp_ndiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport from time-explicit neutral diffusion' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_temp_ndiff_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_ndiff_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport from time-explicit neutral diffusion binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_temp_ndiff = register_diag_field ( 'ocean_model' , 'tform_temp_ndiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to time-explicit neutral diffusion on levels' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_temp_ndiff_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_ndiff_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to time-explicit neutral diffusion binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_salt_ndiff = register_diag_field ( 'ocean_model' , 'neut_salt_ndiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally ref potrho time-explicit neutral diffusion' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_salt_ndiff_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_ndiff_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally ref potrho from time-explicit neutral diff binned to neutral rho layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_salt_ndiff = register_diag_field ( 'ocean_model' , 'wdian_salt_ndiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport from time-explicit neutral diffusion' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_salt_ndiff_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_ndiff_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport from time-explicit neutral diffusion binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_salt_ndiff = register_diag_field ( 'ocean_model' , 'tform_salt_ndiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to time-explicit neutral diffusion on levels' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_salt_ndiff_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_ndiff_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to time-explicit neutral diffusion binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_rho_gm = register_diag_field ( 'ocean_model' , 'neut_rho_gm' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of locally referenced potential density from GM transport' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_rho_gm_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_gm_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from GM transport as binned to neutral rho layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_rho_gm = register_diag_field ( 'ocean_model' , 'wdian_rho_gm' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to GM transport' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_rho_gm_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_gm_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to GM transport as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_rho_gm = register_diag_field ( 'ocean_model' , 'tform_rho_gm' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to GM transport on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_rho_gm_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_gm_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to GM transport as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_gm_tend = register_diag_field ( 'ocean_model' , 'eta_tend_gm_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'numerical form of non-Bouss steric sea level tend from GM-based tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_gm_tend_glob = register_diag_field ( 'ocean_model' , 'eta_tend_gm_tend_glob' , time % model_time , 'global mean numerical form of non-bouss steric sea level tend from GM-based tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_neut_temp_gm = register_diag_field ( 'ocean_model' , 'neut_temp_gm' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally referenced potential density from GM transport' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_temp_gm_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_gm_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally ref potrho from GM transport binned to neutral rho layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_temp_gm = register_diag_field ( 'ocean_model' , 'wdian_temp_gm' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to GM transport' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_temp_gm_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_gm_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to GM transport binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_temp_gm = register_diag_field ( 'ocean_model' , 'tform_temp_gm' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to GM transport on levels' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_temp_gm_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_gm_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to GM transport binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_salt_gm = register_diag_field ( 'ocean_model' , 'neut_salt_gm' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally referenced potential density from GM transport' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_salt_gm_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_gm_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally ref potrho from GM transport binned to neutral rho layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_salt_gm = register_diag_field ( 'ocean_model' , 'wdian_salt_gm' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to GM transport' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_salt_gm_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_gm_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to GM transport binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_salt_gm = register_diag_field ( 'ocean_model' , 'tform_salt_gm' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to GM transport on levels' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_salt_gm_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_gm_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to GM transport binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_thickness_sigma = register_diag_field ( 'ocean_model' , 'thickness_sigma' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Thickness of BBL' , 'm' , missing_value = missing_value , range = ( / - 1.e3 , 1.e3 / ) ) E: id_weight_sigma = register_diag_field ( 'ocean_model' , 'weight_sigma' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'weight of cell w/i sigma layer' , 'dimensionless' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_diff_cet = register_diag_field ( 'ocean_model' , 'diff_cet_sigma' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'i-sigma diffusivity' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1.e8 / ) ) E: id_diff_cnt = register_diag_field ( 'ocean_model' , 'diff_cnt_sigma' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'j-sigma diffusivity' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1.e8 / ) ) E: id_sigma_uhrho = register_diag_field ( 'ocean_model' , 'sigma_uhrho' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'i-sigma uhrho' , 'm^2/s * kg/m^3' , missing_value = missing_value , range = ( / - 10.0 , 1.e8 / ) ) E: id_sigma_vhrho = register_diag_field ( 'ocean_model' , 'sigma_vhrho' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'j-sigma vhrho' , 'm^2/s * kg/m^3' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) E: id_sigma_uhrho_sgs = register_diag_field ( 'ocean_model' , 'sigma_uhrho_sgs' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'i-sigma uhrho from SGS' , 'm^2/s * kg/m^3' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) E: id_sigma_vhrho_sgs = register_diag_field ( 'ocean_model' , 'sigma_vhrho_sgs' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'j-sigma vhrho from SGS' , 'm^2/s * kg/m^3' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) E: id_sigma_uhrho_res = register_diag_field ( 'ocean_model' , 'sigma_uhrho_res' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'i-sigma uhrho via resolved flow' , 'm^2/s * kg/m^3' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) E: id_sigma_vhrho_res = register_diag_field ( 'ocean_model' , 'sigma_vhrho_res' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'j-sigma vhrho via resolved flow' , 'm^2/s * kg/m^3' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_tracer_sigma ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma' , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( t_prog ( n ) % longname ) // ' in sigma layer' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) e: id_sigma_diff ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_diff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'thk wghtd sigma-diffusion heating ' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_adv ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_adv' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'thk wghtd sigma-advection heating ' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_diff_2d ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_diff_2d' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'thk wghtd sigma-diffusion heating in sigma layer' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_adv_2d ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_adv_2d' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'thk wghtd sigma-advection heating in sigma layer' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_smooth ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_smooth' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'thk wghtd sigma-smoothing heating in sigma layer' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_diff ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_diff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'thk wghtd sigma-diffusion on ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_adv ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_adv' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'thk wghtd sigma-advection on ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_diff_2d ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_diff_2d' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'thk wghtd sigma-diffusion in sigma layer on ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_adv_2d ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_adv_2d' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'thk wghtd sigma-advection in sigma layer on ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_smooth ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_smooth' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'thk wghtd sigma-smoothing in sigma layer on ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_diff_xflux ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_diff_xflux' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'cp*sigma_diff_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_diff_yflux ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_diff_yflux' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'cp*sigma_diff_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_diff_xflux_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_diff_xflux_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'vertical sum of cp*sigma_diff_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_diff_yflux_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_diff_yflux_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'vertical sum of cp*sigma_diff_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_diff_xflux ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_diff_xflux' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'sigma_diff_xflux*dyt*rho_dzt*tracer for ' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_diff_yflux ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_diff_yflux' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'sigma_diff_yflux*dxt*rho_dzt*tracer for ' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_diff_xflux_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_diff_xflux_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'vertical sum of sigma_diff_xflux*dyt*rho_dzt*tracer for ' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_diff_yflux_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_diff_yflux_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'vertical sum of sigma_diff_yflux*dxt*rho_dzt*tracer for ' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_adv_xflux ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_adv_xflux' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'cp*sigma_adv_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_adv_yflux ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_adv_yflux' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'cp*sigma_adv_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_adv_xflux_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_adv_xflux_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'vertical sum of cp*sigma_adv_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_adv_yflux_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_adv_yflux_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'vertical sum of cp*sigma_adv_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_adv_xflux ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_adv_xflux' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'sigma_adv_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_adv_yflux ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_adv_yflux' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'sigma_adv_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_adv_xflux_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_adv_xflux_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'vertical sum of sigma_adv_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_sigma_adv_yflux_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sigma_adv_yflux_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'vertical sum of sigma_adv_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) E: id_neut_rho_sigma = register_diag_field ( 'ocean_model' , 'neut_rho_sigma' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of neutral density from sigma transport' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_rho_sigma = register_diag_field ( 'ocean_model' , 'wdian_rho_sigma' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to sigma transport' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_rho_sigma = register_diag_field ( 'ocean_model' , 'tform_rho_sigma' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to sigma transport on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_rho_sigma_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_sigma_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of neutral density from sigma transport as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_rho_sigma_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_sigma_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to sigma transport as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_rho_sigma_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_sigma_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to sigma transport as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_sigma = register_diag_field ( 'ocean_model' , 'eta_tend_sigma' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from sigma tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_sigma_glob = register_diag_field ( 'ocean_model' , 'eta_tend_sigma_glob' , time % model_time , 'global mean non-bouss steric sea level tendency from sigma tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_kblt_submeso = register_diag_field ( 'ocean_model' , 'kblt_submeso' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'Number of k-levels in boundary layer for submesoscale closure' , 'dimensionless' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_hblt_submeso = register_diag_field ( 'ocean_model' , 'hblt_submeso' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'Boundary layer depth used for submesoscale closure' , 'metre' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_front_length_submeso = register_diag_field ( 'ocean_model' , 'front_length_submeso' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'Front length used for submesoscale closure' , 'metre' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_buoy_freq_ave_submeso = register_diag_field ( 'ocean_model' , 'buoy_freq_ave_submeso' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'Buoyancy frequency averaged over depth of mixed layer for submesoscale closure' , '1/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_mu_submeso = register_diag_field ( 'ocean_model' , 'mu_submeso' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vertical structure function for submesoscale streamfunction' , 'dimensionless' , missing_value = missing_value , range = ( / - 1.e2 , 1e2 / ) ) E: id_dmu_submeso = register_diag_field ( 'ocean_model' , 'dmu_submeso' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vertical derivative of vertical structure function for submesoscale streamfunction' , '1/metre' , missing_value = missing_value , range = ( / - 1.e6 , 1e6 / ) ) E: id_psix_submeso = register_diag_field ( 'ocean_model' , 'psix_submeso' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'i-comp of submesoscale streamfunction' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1e10 / ) ) E: id_psiy_submeso = register_diag_field ( 'ocean_model' , 'psiy_submeso' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'j-comp of submesoscale streamfunction' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1e10 / ) ) E: id_tx_trans_submeso = register_diag_field ( 'ocean_model' , 'tx_trans_submeso' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'T-cell mass i-transport from submesoscale param' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1.e20 , 1e20 / ) ) E: id_ty_trans_submeso = register_diag_field ( 'ocean_model' , 'ty_trans_submeso' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'T-cell mass j-transport from submesoscale param' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1.e20 , 1e20 / ) ) E: id_tz_trans_submeso = register_diag_field ( 'ocean_model' , 'tz_trans_submeso' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'T-cell mass k-transport from submesoscale param' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1.e20 , 1e20 / ) ) E: id_tx_trans_nrho_submeso = register_diag_field ( 'ocean_model' , 'tx_trans_nrho_submeso' , dens % neutralrho_axes_flux_x ( 1 : 3 ) , time % model_time , 'T-cell i-mass transport from submesoscale param on neutral rho' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_ty_trans_nrho_submeso = register_diag_field ( 'ocean_model' , 'ty_trans_nrho_submeso' , dens % neutralrho_axes_flux_y ( 1 : 3 ) , time % model_time , 'T-cell j-mass transport from submesoscale param on neutral rho' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tz_trans_nrho_submeso = register_diag_field ( 'ocean_model' , 'tz_trans_nrho_submeso' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'T-cell k-mass transport from submesoscale param on neutral rho' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tx_trans_rho_submeso = register_diag_field ( 'ocean_model' , 'tx_trans_rho_submeso' , dens % potrho_axes_flux_x ( 1 : 3 ) , time % model_time , 'T-cell i-mass transport from submesoscale param on pot_rho' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_ty_trans_rho_submeso = register_diag_field ( 'ocean_model' , 'ty_trans_rho_submeso' , dens % potrho_axes_flux_y ( 1 : 3 ) , time % model_time , 'T-cell j-mass transport from submesoscale param on pot_rho' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_u_et_submeso = register_diag_field ( 'ocean_model' , 'u_et_submeso' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'i-component of submesoscale transport velocity' , 'm/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_v_nt_submeso = register_diag_field ( 'ocean_model' , 'v_nt_submeso' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'j-component of submesoscale transport velocity' , 'm/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_w_bt_submeso = register_diag_field ( 'ocean_model' , 'w_bt_submeso' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'vertical component of submesoscale transport velocity' , 'm/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_uhrho_et_submeso = register_diag_field ( 'ocean_model' , 'uhrho_et_submeso' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'i-component of submesoscale advective mass transport' , '(kg/m^3)*m^2/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_vhrho_nt_submeso = register_diag_field ( 'ocean_model' , 'vhrho_nt_submeso' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'j-component of submesoscale advective mass transport' , '(kg/m^3)*m^2/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wrho_bt_submeso = register_diag_field ( 'ocean_model' , 'wrho_bt_submeso' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'k-component of submesoscale advective mass transport' , '(kg/m^3)*m/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tx_trans_submeso_adv = register_diag_field ( 'ocean_model' , 'tx_trans_submeso_adv' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'i-component of submesoscale advective mass transport' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_ty_trans_submeso_adv = register_diag_field ( 'ocean_model' , 'ty_trans_submeso_adv' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'j-component of submesoscale advective mass transport' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tz_trans_submeso_adv = register_diag_field ( 'ocean_model' , 'tz_trans_submeso_adv' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'k-component of submesoscale advective mass transport' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_subdiff_diffusivity = register_diag_field ( 'ocean_model' , 'subdiff_diffusivity' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'horizontal diffusivity used for submesoscale biharmonic mixing scheme' , 'm^4/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1e10 / ) ) e: id_subdiff_diffusivity = register_diag_field ( 'ocean_model' , 'subdiff_diffusivity' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'horizontal diffusivity used for submesoscale laplacian diffusion scheme' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1e10 / ) ) E: id_eta_tend_submeso_flx = register_diag_field ( 'ocean_model' , 'eta_tend_submeso_flx' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from submesoscale fluxes' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_submeso_flx_glob = register_diag_field ( 'ocean_model' , 'eta_tend_submeso_flx_glob' , time % model_time , 'global mean non-bouss steric sea level tendency from submesoscale fluxes' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_subdiff_flx = register_diag_field ( 'ocean_model' , 'eta_tend_subdiff_flx' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from subdiff fluxes' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_subdiff_flx_glob = register_diag_field ( 'ocean_model' , 'eta_tend_subdiff_flx_glob' , time % model_time , 'global mean non-bouss steric sea level tendency from subdiff fluxes' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) e: id_xflux_submeso ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_submeso' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'cp*submeso_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_yflux_submeso ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_submeso' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'cp*submeso_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_zflux_submeso ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_zflux_submeso' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'cp*submeso_zflux*dxt*dyt*rho*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_xflux_submeso_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_submeso_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral cp*submeso_xflux*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_yflux_submeso_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_submeso_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral cp*submeso_yflux*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_submeso ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_submeso' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*cp*submesoscale tendency (heating)' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_submeso_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_submeso_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*cp*submesoscale tendency (heating) binned to neutral density' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_xflux_subdiff ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_subdiff' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'cp*xflux_subdiff*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_yflux_subdiff ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_subdiff' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'cp*yflux_subdiff*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_xflux_subdiff_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_subdiff_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral cp*xflux_subdiff*dyt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_yflux_subdiff_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_subdiff_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral cp*yflux_subdiff*dxt*rho_dzt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_subdiff ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_subdiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*cp*submesoscale_diff tendency (heating)' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_xflux_submeso ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_submeso' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'submeso_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_yflux_submeso ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_submeso' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'submeso_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_zflux_submeso ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_zflux_submeso' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'submeso_yflux*dxt*dyt*rho*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_xflux_submeso_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_submeso_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral submeso_xflux*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_yflux_submeso_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_submeso_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral submeso_yflux*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_submeso ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_submeso' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*submesoscale tendency for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_submeso_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_submeso_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*submesoscale tendency for ' // trim ( t_prog ( n ) % name ) // ' binned to neutral density' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_xflux_subdiff ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_subdiff' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'xflux_subdiff*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_yflux_subdiff ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_subdiff' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'yflux_subdiff*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_xflux_subdiff_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_subdiff_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'z-integral xflux_subdiff*dyt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_yflux_subdiff_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_subdiff_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'z-integral yflux_subdiff*dxt*rho_dzt*tracer for' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: id_subdiff ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_subdiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*submesoscale_diff tendency for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_rho_submeso = register_diag_field ( 'ocean_model' , 'neut_rho_submeso' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of locally referenced potential density from submeso param' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_pot_rho_submeso = register_diag_field ( 'ocean_model' , 'pot_rho_submeso' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of depth referenced potential density from submeso param' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_rho_submeso = register_diag_field ( 'ocean_model' , 'wdian_rho_submeso' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to submeso closure' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_rho_submeso = register_diag_field ( 'ocean_model' , 'tform_rho_submeso' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to submeso on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_rho_submeso_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_submeso_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potential density from submeso as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_rho_submeso_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_submeso_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to submeso as binned to neutral density layers' , 'm/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_rho_submeso_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_submeso_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to submeso as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_submeso_tend = register_diag_field ( 'ocean_model' , 'eta_tend_submeso_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from submesoscale tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_submeso_tend_glob = register_diag_field ( 'ocean_model' , 'eta_tend_submeso_tend_glob' , time % model_time , 'global mean non-bouss steric sea level tendency from submesoscale tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_subdiff_tend = register_diag_field ( 'ocean_model' , 'eta_tend_subdiff_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from subdiff tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_subdiff_tend_glob = register_diag_field ( 'ocean_model' , 'eta_tend_subdiff_tend_glob' , time % model_time , 'global mean non-bouss steric sea level tendency from subdiff tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_neut_temp_submeso = register_diag_field ( 'ocean_model' , 'neut_temp_submeso' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally referenced potential density from submeso param' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_temp_submeso = register_diag_field ( 'ocean_model' , 'wdian_temp_submeso' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to submeso closure' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_temp_submeso = register_diag_field ( 'ocean_model' , 'tform_temp_submeso' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to submeso on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_temp_submeso_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_submeso_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally ref potential density from submeso as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_temp_submeso_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_submeso_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to submeso as binned to neutral density layers' , 'm/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_temp_submeso_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_submeso_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to submeso as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_salt_submeso = register_diag_field ( 'ocean_model' , 'neut_salt_submeso' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally referenced potential density from submeso param' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_salt_submeso = register_diag_field ( 'ocean_model' , 'wdian_salt_submeso' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to submeso closure' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_salt_submeso = register_diag_field ( 'ocean_model' , 'tform_salt_submeso' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to submeso on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_salt_submeso_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_submeso_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally ref potential density from submeso as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_salt_submeso_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_submeso_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to submeso as binned to neutral density layers' , 'm/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_salt_submeso_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_submeso_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to submeso as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_rho_subdiff = register_diag_field ( 'ocean_model' , 'neut_rho_subdiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of locally referenced potential density from subdiff param' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_rho_subdiff = register_diag_field ( 'ocean_model' , 'wdian_rho_subdiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to subdiff closure' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_rho_subdiff = register_diag_field ( 'ocean_model' , 'tform_rho_subdiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to subdiff on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_rho_subdiff_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_subdiff_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potential density from subdiff as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_rho_subdiff_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_subdiff_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to subdiff as binned to neutral density layers' , 'm/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_rho_subdiff_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_subdiff_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to subdiff as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_subdiff_tend = register_diag_field ( 'ocean_model' , 'eta_tend_subdiff_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from subdiffscale tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_subdiff_tend_glob = register_diag_field ( 'ocean_model' , 'eta_tend_subdiff_tend_glob' , time % model_time , 'global mean non-bouss steric sea level tendency from subdiffscale tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_neut_temp_subdiff = register_diag_field ( 'ocean_model' , 'neut_temp_subdiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally referenced potential density from subdiff param' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_temp_subdiff = register_diag_field ( 'ocean_model' , 'wdian_temp_subdiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to subdiff closure' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_temp_subdiff = register_diag_field ( 'ocean_model' , 'tform_temp_subdiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to subdiff on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_temp_subdiff_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_subdiff_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally ref potential density from subdiff as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_temp_subdiff_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_subdiff_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to subdiff as binned to neutral density layers' , 'm/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_temp_subdiff_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_subdiff_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to subdiff as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_salt_subdiff = register_diag_field ( 'ocean_model' , 'neut_salt_subdiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally referenced potential density from subdiff param' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_salt_subdiff = register_diag_field ( 'ocean_model' , 'wdian_salt_subdiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to subdiff closure' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_salt_subdiff = register_diag_field ( 'ocean_model' , 'tform_salt_subdiff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to subdiff on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_salt_subdiff_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_subdiff_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally ref potential density from subdiff as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_salt_subdiff_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_subdiff_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to subdiff as binned to neutral density layers' , 'm/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_salt_subdiff_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_subdiff_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to subdiff as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_mixdownslope ( n ) = register_diag_field ( 'ocean_model' , 'mixdownslope_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cp*mixdownslope*rho*dzt*temp' , 'Watt/m^2' , missing_value = missing_value , range = ( / - 1.e9 , 1.e9 / ) ) e: id_mixdownslope_on_nrho ( n ) = register_diag_field ( 'ocean_model' , 'mixdownslope_' // trim ( t_prog ( n ) % name ) // '_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'cp*mixdownslope*rho*dzt*temp binned to neutral density' , 'Watt/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_mixdownslope ( n ) = register_diag_field ( 'ocean_model' , 'mixdownslope_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'mixdownslope*rho*dzt*tracer for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e9 , 1.e9 / ) ) e: id_mixdownslope_on_nrho ( n ) = register_diag_field ( 'ocean_model' , 'mixdownslope_' // trim ( t_prog ( n ) % name ) // '_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'mixdownslope*rho*dzt*tracer for ' // trim ( t_prog ( n ) % name ) // ' binned to neutral density' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_mixdown = register_diag_field ( 'ocean_model' , 'neut_rho_mixdown' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of locally referenced potential density from mixdowslope' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_rho_mixdown = register_diag_field ( 'ocean_model' , 'wdian_rho_mixdown' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to mixdowslope' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_rho_mixdown = register_diag_field ( 'ocean_model' , 'tform_rho_mixdown' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to mixdowslope on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_rho_mixdown_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_mixdown_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of local ref potrho from mixdownslope as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_rho_mixdown_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_mixdown_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to mixdowslope as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_rho_mixdown_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_mixdown_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to mixdowslope as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_mixdown = register_diag_field ( 'ocean_model' , 'eta_tend_mixdown' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from mixdown tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_mixdown_glob = register_diag_field ( 'ocean_model' , 'eta_tend_mixdown_glob' , time % model_time , 'global mean non-bouss steric sea level tendency from mixdown tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_neut_temp_mixdown = register_diag_field ( 'ocean_model' , 'neut_temp_mixdown' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally referenced potential density from mixdowslope' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_temp_mixdown = register_diag_field ( 'ocean_model' , 'wdian_temp_mixdown' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to mixdowslope' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_temp_mixdown = register_diag_field ( 'ocean_model' , 'tform_temp_mixdown' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to mixdowslope on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_temp_mixdown_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_mixdown_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related update of local ref potrho from mixdownslope as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_temp_mixdown_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_mixdown_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to mixdowslope as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_temp_mixdown_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_mixdown_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to mixdowslope as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_salt_mixdown = register_diag_field ( 'ocean_model' , 'neut_salt_mixdown' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally referenced potential density from mixdowslope' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_salt_mixdown = register_diag_field ( 'ocean_model' , 'wdian_salt_mixdown' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to mixdowslope' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_salt_mixdown = register_diag_field ( 'ocean_model' , 'tform_salt_mixdown' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to mixdowslope on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_salt_mixdown_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_mixdown_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related update of local ref potrho from mixdownslope as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_salt_mixdown_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_mixdown_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to mixdowslope as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_salt_mixdown_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_mixdown_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to mixdowslope as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_lap_viscosity = register_diag_field ( 'ocean_model' , 'lap_viscosity_2d' , grd % vel_axes_uv ( 1 : 2 ) , time % model_time , 'Vertically averaged laplacian viscosity' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1.e20 / ) ) E: id_lap_fric_u = register_diag_field ( 'ocean_model' , 'lap_fric_u' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Thickness and rho wghtd horz lap frict on u' , '(kg/m^2)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_lap_fric_v = register_diag_field ( 'ocean_model' , 'lap_fric_v' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Thickness and rho wghtd horz lap frict on v' , '(kg/m^2)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_aiso = register_diag_field ( 'ocean_model' , 'aiso_bih' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'U-cell isotropic bih visc' , 'm^4/sec' , missing_value = - 10.0 , range = ( / - 10.0 , 1.e20 / ) , standard_name = 'ocean_momentum_xy_biharmonic_diffusivity' ) E: id_aaniso = register_diag_field ( 'ocean_model' , 'aaniso_bih' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'U-cell anisotropic bih visc' , 'm^4/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e20 / ) ) E: id_along = register_diag_field ( 'ocean_model' , 'along_bih' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'U-cell along-stream bih visc' , 'm^4/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e20 / ) ) E: id_across = register_diag_field ( 'ocean_model' , 'across_bih' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'U-cell cross-stream bih visc' , 'm^4/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e20 / ) ) E: id_visc_diverge = register_diag_field ( 'ocean_model' , 'visc_diverge_bih' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'U-cell biharmonic visc based on horz_diverge_t gradients' , 'm^4/sec' , missing_value = - 10.0 , range = ( / - 10.0 , 1.e20 / ) ) E: id_bih_fric_u = register_diag_field ( 'ocean_model' , 'bih_fric_u' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Thickness and rho wghtd horz bih frict on u-zonal' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_bih_fric_v = register_diag_field ( 'ocean_model' , 'bih_fric_v' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Thickness and rho wghtd horz bih frict on v-merid' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_horz_bih_diss = register_diag_field ( 'ocean_model' , 'horz_bih_diss' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Energy dissipation from horizontal biharmonic friction' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_side_drag_friction_u = register_diag_field ( 'ocean_model' , 'side_drag_friction_bih_u' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'u-friction due to side drag from bihgen module' , 'N/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_side_drag_friction_v = register_diag_field ( 'ocean_model' , 'side_drag_friction_bih_v' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'v-friction due to side drag from bihgen module' , 'N/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_bih_plus_side_fric_u = register_diag_field ( 'ocean_model' , 'bih_plus_side_fric_u' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Thickness and rho wghtd horz bih frict + side friction on u-zonal' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_bih_plus_side_fric_v = register_diag_field ( 'ocean_model' , 'bih_plus_side_fric_v' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Thickness and rho wghtd horz bih frict + side friction on v-merid' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_xflux_diff ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_diff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'i-diffusive heat flux' , 'Watt' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_yflux_diff ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_diff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'j-diffusive heat flux' , 'Watt' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_h_diffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_h_diffuse' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'horz-diffusion of heat' , 'Watt/m^2' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_xflux_diff ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_diff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'i-diffusive flux of ' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_yflux_diff ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_diff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'j-diffusive flux of ' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_h_diffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_h_diffuse' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'horz-diffusion of ' // trim ( t_prog ( n ) % name ) , 'kg/(sec*m^2)' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_aiso = register_diag_field ( 'ocean_model' , 'aiso_bih' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'T-cell isotropic bih visc' , 'm^4/sec' , missing_value = - 10.0 , range = ( / - 10.0 , 1.e20 / ) , standard_name = 'ocean_momentum_xy_biharmonic_diffusivity' ) E: id_aaniso = register_diag_field ( 'ocean_model' , 'aaniso_bih' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'T-cell anisotropic bih visc' , 'm^4/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e20 / ) ) E: id_aiso_smag = register_diag_field ( 'ocean_model' , 'aiso_bih_smag' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'T-cell isotropic bih visc from smag' , 'm^4/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_aaniso_smag = register_diag_field ( 'ocean_model' , 'aaniso_bih_smag' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'T-cell anisotropic bih visc from smag' , 'm^4/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_along = register_diag_field ( 'ocean_model' , 'along_bih' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'T-cell along-stream bih visc' , 'm^4/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e20 / ) ) E: id_across = register_diag_field ( 'ocean_model' , 'across_bih' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'T-cell cross-stream bih visc' , 'm^4/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e20 / ) ) E: id_visc_diverge = register_diag_field ( 'ocean_model' , 'visc_diverge_bih' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'T-cell biharmonic visc based on horz_diverge_t gradients' , 'm^4/sec' , missing_value = - 10.0 , range = ( / - 10.0 , 1.e20 / ) ) E: id_sin2theta = register_diag_field ( 'ocean_model' , 'sin2theta_bih' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'sin2theta for orientation angle with biharmonic friction' , 'dimensionless' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_cos2theta = register_diag_field ( 'ocean_model' , 'cos2theta_bih' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cos2theta for orientation angle with biharmonic friction' , 'dimensionless' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_bih_fric_u = register_diag_field ( 'ocean_model' , 'bih_fric_u' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Thickness and rho wghtd horz bih frict on u-zonal' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_bih_fric_v = register_diag_field ( 'ocean_model' , 'bih_fric_v' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Thickness and rho wghtd horz bih frict on v-merid' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_horz_bih_diss = register_diag_field ( 'ocean_model' , 'horz_bih_diss' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Energy dissipation from horizontal biharmonic friction' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_stress_xx_bih = register_diag_field ( 'ocean_model' , 'stress_xx_bih' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Stress tensor xx component from biharmonic friction' , 'N/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_stress_xy_bih = register_diag_field ( 'ocean_model' , 'stress_xy_bih' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Stress tensor xy component from biharmonic friction' , 'N/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_stress_yx_bih = register_diag_field ( 'ocean_model' , 'stress_yx_bih' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Stress tensor xy component from biharmonic friction' , 'N/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_xflux_diff ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_diff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'i-diffusive heat flux' , 'Watts' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_yflux_diff ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_diff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'j-diffusive heat flux' , 'Watts' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_h_diffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_h_diffuse' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'horz-diffusion heating' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_xflux_diff ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_diff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'i-diffusive flux of ' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_yflux_diff ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_diff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'j-diffusive flux of ' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_h_diffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_h_diffuse' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'horz-diffusion of ' // trim ( t_prog ( n ) % name ) , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_bih_viscosity = register_diag_field ( 'ocean_model' , 'bih_viscosity' , grd % vel_axes_uv ( 1 : 2 ) , time % model_time , 'Vertically averaged biharmonic viscosity' , 'm^4/s' , missing_value = missing_value , range = ( / - 10.0 , 1.e20 / ) ) E: id_aiso = register_diag_field ( 'ocean_model' , 'aiso_lap' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'U-cell isotropic visc' , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) , standard_name = 'ocean_momentum_xy_laplacian_diffusivity' ) E: id_aaniso = register_diag_field ( 'ocean_model' , 'aaniso_lap' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'U-cell anisotropic visc' , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_along = register_diag_field ( 'ocean_model' , 'along' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'U-cell along-stream visc' , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_across = register_diag_field ( 'ocean_model' , 'across' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'U-cell cross-stream visc' , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_lap_fric_u = register_diag_field ( 'ocean_model' , 'lap_fric_u' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Thick & rho wghtd horz lap frict on u-zonal' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_lap_fric_v = register_diag_field ( 'ocean_model' , 'lap_fric_v' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Thick & rho wghtd horz lap frict on v-merid' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_horz_lap_diss = register_diag_field ( 'ocean_model' , 'horz_lap_diss' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Energy dissipation from horizontal Laplacian friction' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_viscosity_scaling = register_diag_field ( 'ocean_model' , 'viscosity_scaling' , grd % vel_axes_uv ( 1 : 2 ) , time % model_time , 'Grid/Rossby radius scaling for the laplacian viscosity' , 'dimensionless' , missing_value = missing_value , range = ( / - 1.0 , 10.0 / ) ) E: id_side_drag_friction_u = register_diag_field ( 'ocean_model' , 'side_drag_friction_lap_u' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'u-friction due to side drag from lapgen module' , 'N/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_side_drag_friction_v = register_diag_field ( 'ocean_model' , 'side_drag_friction_lap_v' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'v-friction due to side drag from lapgen module' , 'N/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_lap_plus_side_fric_u = register_diag_field ( 'ocean_model' , 'lap_plus_side_fric_u' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Thickness and rho wghtd horz lap frict + side friction on u-zonal' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_lap_plus_side_fric_v = register_diag_field ( 'ocean_model' , 'lap_plus_side_fric_v' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Thickness and rho wghtd horz lap frict + side friction on v-merid' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_bih_fric_u = register_diag_field ( 'ocean_model' , 'bih_fric_u' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Thickness and rho wghtd horz bih-frict on u' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_bih_fric_v = register_diag_field ( 'ocean_model' , 'bih_fric_v' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Thickness and rho wghtd horz bih-frict on v' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_aiso = register_diag_field ( 'ocean_model' , 'aiso_lap' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'T-cell isotropic visc' , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) , standard_name = 'ocean_momentum_xy_laplacian_diffusivity' ) E: id_aaniso = register_diag_field ( 'ocean_model' , 'aaniso_lap' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'T-cell anisotropic visc' , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_aiso_smag = register_diag_field ( 'ocean_model' , 'aiso_lap_smag' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'T-cell isotropic lap visc from smag' , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_aaniso_smag = register_diag_field ( 'ocean_model' , 'aaniso_lap_smag' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'T-cell anisotropic lap visc from smag' , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_along = register_diag_field ( 'ocean_model' , 'along' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'T-cell along-stream visc' , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_across = register_diag_field ( 'ocean_model' , 'across' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'T-cell cross-stream visc' , 'm^2/sec' , missing_value = missing_value , range = ( / - 10.0 , 1.e10 / ) ) E: id_sin2theta = register_diag_field ( 'ocean_model' , 'sin2theta_lap' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'sin2theta for orientation angle with laplacian friction' , 'dimensionless' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_cos2theta = register_diag_field ( 'ocean_model' , 'cos2theta_lap' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cos2theta for orientation angle with laplacian friction' , 'dimensionless' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_lap_fric_u = register_diag_field ( 'ocean_model' , 'lap_fric_u' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Thick & rho wghtd horz lap frict on u-zonal' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_lap_fric_v = register_diag_field ( 'ocean_model' , 'lap_fric_v' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Thick & rho wghtd horz lap frict on v-merid' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_horz_lap_diss = register_diag_field ( 'ocean_model' , 'horz_lap_diss' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Energy dissipation from horizontal Laplacian friction' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_viscosity_scaling = register_diag_field ( 'ocean_model' , 'viscosity_scaling' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Grid/Rossby radius scaling for the laplacian viscosity' , 'dimensionless' , missing_value = missing_value , range = ( / - 1.0 , 10.0 / ) ) E: id_stress_xx_lap = register_diag_field ( 'ocean_model' , 'stress_xx_lap' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Stress tensor xx component from Laplacian friction' , 'N/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_stress_xy_lap = register_diag_field ( 'ocean_model' , 'stress_xy_lap' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Stress tensor xy component from Laplacian friction' , 'N/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_stress_yx_lap = register_diag_field ( 'ocean_model' , 'stress_yx_lap' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Stress tensor xy component from Laplacian friction' , 'N/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_ofp_n1_src_temp = register_diag_field ( 'ocean_model' , 'OFP_n1_src_temp' , time % model_time , 'OFP_1 source region temperature' , 'oC degree' , missing_value = missing_value , range = ( / - 100. , 100. / ) ) E: id_ofp_n1_src_salt = register_diag_field ( 'ocean_model' , 'OFP_n1_src_salt' , time % model_time , 'OFP_1 source region salinity' , 'psu' , missing_value = missing_value , range = ( / 0. , 100. / ) ) E: id_ofp_n1_src_trans = register_diag_field ( 'ocean_model' , 'OFP_n1_src_trans' , time % model_time , 'OFP_1 source region transport' , 'm^3/s' , missing_value = missing_value , range = ( / 0. , 100. / ) ) E: id_ofp_n1_int_temp = register_diag_field ( 'ocean_model' , 'OFP_n1_int_temp' , time % model_time , 'OFP_1 interior region temperature' , 'oC degree' , missing_value = missing_value , range = ( / - 100. , 100. / ) ) E: id_ofp_n1_int_salt = register_diag_field ( 'ocean_model' , 'OFP_n1_int_salt' , time % model_time , 'OFP_1 interior region salinity' , 'psu' , missing_value = missing_value , range = ( / 0. , 100. / ) ) E: id_ofp_n1_ent_temp = register_diag_field ( 'ocean_model' , 'OFP_n1_ent_temp' , time % model_time , 'OFP_1 entrainment region temperature' , 'oC degree' , missing_value = missing_value , range = ( / - 100. , 100. / ) ) E: id_ofp_n1_ent_salt = register_diag_field ( 'ocean_model' , 'OFP_n1_ent_salt' , time % model_time , 'OFP_1 entrainment region salinity' , 'psu' , missing_value = missing_value , range = ( / 0. , 100. / ) ) E: id_ofp_n1_ent_trans = register_diag_field ( 'ocean_model' , 'OFP_n1_ent_trans' , time % model_time , 'OFP_1 entrainment region transport' , 'm^3/s' , missing_value = missing_value , range = ( / 0. , 100. / ) ) E: id_ofp_n1_prd_temp = register_diag_field ( 'ocean_model' , 'OFP_n1_prd_temp' , time % model_time , 'OFP_1 production region temperature' , 'oC degree' , missing_value = missing_value , range = ( / - 100. , 100. / ) ) E: id_ofp_n1_prd_salt = register_diag_field ( 'ocean_model' , 'OFP_n1_prd_salt' , time % model_time , 'OFP_1 production region salinity' , 'psu' , missing_value = missing_value , range = ( / 0. , 100. / ) ) E: id_ofp_n1_prd_trans = register_diag_field ( 'ocean_model' , 'OFP_n1_prd_trans' , time % model_time , 'OFP_1 production region transport' , 'm^3/s' , missing_value = missing_value , range = ( / 0. , 100. / ) ) E: id_ofp_n1_prd_depth = register_diag_field ( 'ocean_model' , 'OFP_n1_prd_depth' , time % model_time , 'OFP_1 production depth' , 'meter' , missing_value = missing_value , range = ( / 0. , 10000. / ) ) E: id_ofp_n2_src_temp = register_diag_field ( 'ocean_model' , 'OFP_n2_src_temp' , time % model_time , 'OFP_2 source region temperature' , 'oC degree' , missing_value = missing_value , range = ( / - 100. , 100. / ) ) E: id_ofp_n2_src_salt = register_diag_field ( 'ocean_model' , 'OFP_n2_src_salt' , time % model_time , 'OFP_2 source region salinity' , 'psu' , missing_value = missing_value , range = ( / 0. , 100. / ) ) E: id_ofp_n2_src_trans = register_diag_field ( 'ocean_model' , 'OFP_n2_src_trans' , time % model_time , 'OFP_2 source region transport' , 'm^3/s' , missing_value = missing_value , range = ( / 0. , 100. / ) ) E: id_ofp_n2_int_temp = register_diag_field ( 'ocean_model' , 'OFP_n2_int_temp' , time % model_time , 'OFP_2 interior region temperature' , 'oC degree' , missing_value = missing_value , range = ( / - 100. , 100. / ) ) E: id_ofp_n2_int_salt = register_diag_field ( 'ocean_model' , 'OFP_n2_int_salt' , time % model_time , 'OFP_2 interior region salinity' , 'psu' , missing_value = missing_value , range = ( / 0. , 100. / ) ) E: id_ofp_n2_ent_temp = register_diag_field ( 'ocean_model' , 'OFP_n2_ent_temp' , time % model_time , 'OFP_2 entrainment region temperature' , 'oC degree' , missing_value = missing_value , range = ( / - 100. , 100. / ) ) E: id_ofp_n2_ent_salt = register_diag_field ( 'ocean_model' , 'OFP_n2_ent_salt' , time % model_time , 'OFP_2 entrainment region salinity' , 'psu' , missing_value = missing_value , range = ( / 0. , 100. / ) ) E: id_ofp_n2_ent_trans = register_diag_field ( 'ocean_model' , 'OFP_n2_ent_trans' , time % model_time , 'OFP_2 entrainment region transport' , 'm^3/s' , missing_value = missing_value , range = ( / 0. , 100. / ) ) E: id_ofp_n2_prd_temp = register_diag_field ( 'ocean_model' , 'OFP_n2_prd_temp' , time % model_time , 'OFP_2 production region temperature' , 'oC degree' , missing_value = missing_value , range = ( / - 100. , 100. / ) ) E: id_ofp_n2_prd_salt = register_diag_field ( 'ocean_model' , 'OFP_n2_prd_salt' , time % model_time , 'OFP_2 production region salinity' , 'psu' , missing_value = missing_value , range = ( / 0. , 100. / ) ) E: id_ofp_n2_prd_trans = register_diag_field ( 'ocean_model' , 'OFP_n2_prd_trans' , time % model_time , 'OFP_2 production region transport' , 'm^3/s' , missing_value = missing_value , range = ( / 0. , 100. / ) ) E: id_ofp_n2_prd_depth = register_diag_field ( 'ocean_model' , 'OFP_n2_prd_depth' , time % model_time , 'OFP_2 production depth' , 'meter' , missing_value = missing_value , range = ( / 0. , 10000. / ) ) E: id_neut_rho_overofp = register_diag_field ( 'ocean_model' , 'neut_rho_overofp' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of locally referenced potrho from overflow_ofp scheme' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_overofp_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_overofp_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from overflow_ofp as binned to neutral rho layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_overofp = register_diag_field ( 'ocean_model' , 'wdian_rho_overofp' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to overflow_ofp' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_overofp_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_overofp_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to overflow_ofp as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_overofp_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_overofp_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to overflow_ofp as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_overofp = register_diag_field ( 'ocean_model' , 'neut_temp_overofp' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally referenced potrho from overflow_ofp scheme' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_overofp_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_overofp_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally ref potrho from overflow_ofp binned to neutral rho layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_overofp = register_diag_field ( 'ocean_model' , 'wdian_temp_overofp' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to overflow_ofp' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_overofp_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_overofp_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to overflow_ofp binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_overofp_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_overofp_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to overflow_ofp as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_overofp = register_diag_field ( 'ocean_model' , 'neut_salt_overofp' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally referenced potrho from overflow_ofp scheme' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_overofp_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_overofp_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally ref potrho from overflow_ofp binned to neutral rho layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_overofp = register_diag_field ( 'ocean_model' , 'wdian_salt_overofp' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to overflow_ofp' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_overofp_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_overofp_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to overflow_ofp binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_overofp_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_overofp_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to overflow_ofp as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_increment_tend ( n ) = register_diag_field ( 'ocean_model' , 'u_increment_tend' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'rho*dzt*tendency due to increment' , 'kg/m s^2' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_increment_tend ( n ) = register_diag_field ( 'ocean_model' , 'v_increment_tend' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'rho*dzt*tendency due to increment' , 'kg/m s^2' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_increment_tend ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_increment_tend' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*cp*heating due to increment' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_increment_tend ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_increment_tend' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*tendency due to increment' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_sw_frac = register_diag_field ( 'ocean_model' , 'sw_frac' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'fraction of shortwave penetrating' , 'dimensionless' , missing_value = - 1e10 , range = ( / - 1.e10 , 1.e10 / ) ) E: id_sw_heat = register_diag_field ( 'ocean_model' , 'sw_heat' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'penetrative shortwave heating' , 'W/m^2' , missing_value = - 1e10 , range = ( / - 1.e10 , 1.e10 / ) , standard_name = 'downwelling_shortwave_flux_in_sea_water' ) E: id_irradiance = register_diag_field ( 'ocean_model' , 'irradiance' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'irradiance' , 'W/m^2' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_sw_heat_on_nrho = register_diag_field ( 'ocean_model' , 'sw_heat_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'penetrative shortwave heating binned to neutral density' , 'W/m^2' , missing_value = - 1e10 , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_sw = register_diag_field ( 'ocean_model' , 'neut_rho_sw' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from shortwave penetration' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_pot_rho_sw = register_diag_field ( 'ocean_model' , 'pot_rho_sw' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of depth ref potrho from shortwave penetration' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_sw_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_sw_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from shortwave penetration binned to neutral rho layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_sw = register_diag_field ( 'ocean_model' , 'wdian_rho_sw' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to penetrative shortwave heating' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_sw_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_sw_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to penetrative shortwave heating binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_sw = register_diag_field ( 'ocean_model' , 'tform_rho_sw' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to penetrative shortwave heating' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_sw_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_sw_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to penetrative shortwave heating binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_eta_tend_sw_pen = register_diag_field ( 'ocean_model' , 'eta_tend_sw_pen' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from swflx penetration' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_sw_pen_glob = register_diag_field ( 'ocean_model' , 'eta_tend_sw_pen_glob' , time % model_time , 'global mean non-bouss steric sea level tendency from swflx penetration' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_rayleigh_drag_u = register_diag_field ( 'ocean_model' , 'rayleigh_drag_u' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Rayleigh drag on i-component of velocity' , 'N/m2' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_rayleigh_drag_v = register_diag_field ( 'ocean_model' , 'rayleigh_drag_v' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Rayleigh drag on j-component of velocity' , 'N/m2' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_rayleigh_drag_power = register_diag_field ( 'ocean_model' , 'rayleigh_drag_power' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Energy sink from Rayleigh drag' , 'Watt' , missing_value = missing_value , range = ( / - 1e16 , 1e16 / ) ) e: id_xland ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xlandinsert' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'xlandinsert*cp*rho*dzt*temp' , 'Watt/m^2' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_xland ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xlandinsert' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'xlandinsert*rho*dzt*tracer for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_rho_xinsert = register_diag_field ( 'ocean_model' , 'neut_rho_xinsert' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from xlandinsert' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_xinsert_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_xinsert_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from xlandinsert as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_xinsert = register_diag_field ( 'ocean_model' , 'wdian_rho_xinsert' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to xlandinsert' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_xinsert_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_xinsert_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport from xlandinsert as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_xinsert = register_diag_field ( 'ocean_model' , 'tform_rho_xinsert' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform from xlandinsert' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_xinsert_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_xinsert_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform from xlandinsert as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_eta_tend_xinsert = register_diag_field ( 'ocean_model' , 'eta_tend_xinsert' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from xinsert tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_xinsert_glob = register_diag_field ( 'ocean_model' , 'eta_tend_xinsert_glob' , time % model_time , 'global mean non-bouss steric sea level tendency from xinsert tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_neut_temp_xinsert = register_diag_field ( 'ocean_model' , 'neut_temp_xinsert' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally ref potrho from xlandinsert' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_xinsert_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_xinsert_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally ref potrho from xlandinsert as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_xinsert = register_diag_field ( 'ocean_model' , 'wdian_temp_xinsert' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to xlandinsert' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_xinsert_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_xinsert_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport from xlandinsert as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_xinsert = register_diag_field ( 'ocean_model' , 'tform_temp_xinsert' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform from xlandinsert' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_xinsert_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_xinsert_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform from xlandinsert as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_xinsert = register_diag_field ( 'ocean_model' , 'neut_salt_xinsert' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally ref potrho from xlandinsert' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_xinsert_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_xinsert_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally ref potrho from xlandinsert as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_xinsert = register_diag_field ( 'ocean_model' , 'wdian_salt_xinsert' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to xlandinsert' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_xinsert_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_xinsert_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport from xlandinsert as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_xinsert = register_diag_field ( 'ocean_model' , 'tform_salt_xinsert' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform from xlandinsert' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_xinsert_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_xinsert_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform from xlandinsert as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_sponge_tend = register_diag_field ( 'ocean_model' , 'eta_t_sponge_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'eta_t tendency due to sponge' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_sponge_tend ( 1 ) = register_diag_field ( 'ocean_model' , 'u_sponge_tend' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'rho*dzt*u_tendency due to sponge' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_sponge_tend ( 2 ) = register_diag_field ( 'ocean_model' , 'v_sponge_tend' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'rho*dzt*v_tendency due to sponge' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_sponge_tend ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sponge_tend' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*cp*heating due to sponge' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_sponge_tend ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_sponge_tend' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*tendency due to sponge' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_increment_tend = register_diag_field ( 'ocean_model' , 'eta_t_increment_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'eta_t tendency due to increment' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_rivermix ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_rivermix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cp*rivermix*rho_dzt*temp' , 'Watt/m^2' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_rivermix_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_rivermix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'cp*rivermix*rho_dzt*temp binned to neutral density' , 'Watt/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_runoffmix ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_runoffmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cp*runoffmix*rho_dzt*temp' , 'Watt/m^2' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_calvingmix ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_calvingmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cp*calvingmix*rho_dzt*temp' , 'Watt/m^2' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_rivermix ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_rivermix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rivermix*rho_dzt*tracer for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_rivermix_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_rivermix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'rivermix*rho_dzt*tracer for ' // trim ( t_prog ( n ) % name ) // ' binned to neutral density' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_runoffmix ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_runoffmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'runoffmix*rho_dzt*tracer for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_calvingmix ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_calvingmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'calvingmix*rho_dzt*tracer for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_diff_cbt_river_t = register_diag_field ( 'ocean_model' , 'diff_cbt_river_t' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'diff_cbt(temp) enhancement at rivers' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) ) E: id_diff_cbt_river_s = register_diag_field ( 'ocean_model' , 'diff_cbt_river_s' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'diff_cbt(salt) enhancement at rivers' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) ) E: id_neut_rho_rivermix = register_diag_field ( 'ocean_model' , 'neut_rho_rivermix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from rivermix scheme' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_rivermix_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_rivermix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from rivermix scheme as binned to neutral rho layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_rivermix = register_diag_field ( 'ocean_model' , 'wdian_rho_rivermix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to rivermix scheme' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_rivermix_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_rivermix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to rivermix scheme as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_rivermix = register_diag_field ( 'ocean_model' , 'tform_rho_rivermix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'transform due to rivermix scheme pre-binning to neutral rho' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_rivermix_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_rivermix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform from rivermix scheme as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_runoffmix = register_diag_field ( 'ocean_model' , 'neut_rho_runoffmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from runoffmix scheme' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_pot_rho_runoffmix = register_diag_field ( 'ocean_model' , 'pot_rho_runoffmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of depth ref potrho from runoffmix scheme' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_runoffmix_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_runoffmix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from runoffmix scheme as binned to neutral rho layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_runoffmix = register_diag_field ( 'ocean_model' , 'wdian_rho_runoffmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to runoffmix scheme' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_runoffmix_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_runoffmix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to runoffmix scheme as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_runoffmix = register_diag_field ( 'ocean_model' , 'tform_rho_runoffmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'transform due to runoffmix scheme pre-binning to neutral rho ' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_runoffmix_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_runoffmix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform from runoffmix scheme as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_calvingmix = register_diag_field ( 'ocean_model' , 'neut_rho_calvingmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from calvingmix scheme' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_calvingmix = register_diag_field ( 'ocean_model' , 'wdian_rho_calvingmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to calvingmix scheme' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_calvingmix = register_diag_field ( 'ocean_model' , 'tform_rho_calvingmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to calvingmix scheme pre-binned' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_calvingmix_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_calvingmix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from calvingmix scheme as binned to neutral rho layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_calvingmix_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_calvingmix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to calvingmix scheme as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_calvingmix_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_calvingmix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform from calvingmix scheme as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_pbl_rv_pr = register_diag_field ( 'ocean_model' , 'neut_rho_pbl_rv_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'process advective-form material time derivative from river' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_pbl_rv_pr_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_pbl_rv_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'process advective-form material time derivative from river as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_pbl_rv_pr = register_diag_field ( 'ocean_model' , 'wdian_rho_pbl_rv_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'process advective-form dianeutral transport from river' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_pbl_rv_pr_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_pbl_rv_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'process advective-form dianeutral transport from river as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_rv_pr = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_rv_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'process advective-form water mass transform from river pre-binning to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_rv_pr_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_rv_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'process advective-form water mass transform from river binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_pbl_rv_pr = register_diag_field ( 'ocean_model' , 'neut_temp_pbl_rv_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form material time derivative from river' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_pbl_rv_pr_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_pbl_rv_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form material time derivative from river binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_pbl_rv_pr = register_diag_field ( 'ocean_model' , 'wdian_temp_pbl_rv_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form dianeutral transport from river' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_pbl_rv_pr_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_pbl_rv_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form dianeutral transport from river binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_pbl_rv_pr = register_diag_field ( 'ocean_model' , 'tform_temp_pbl_rv_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form water mass transform from river' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_pbl_rv_pr_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_pbl_rv_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form water mass transform from river binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_pbl_rv_pr = register_diag_field ( 'ocean_model' , 'neut_salt_pbl_rv_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form material time derivative from river' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_pbl_rv_pr_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_pbl_rv_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form material time derivative from river binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_pbl_rv_pr = register_diag_field ( 'ocean_model' , 'wdian_salt_pbl_rv_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form dianeutral transport from river' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_pbl_rv_pr_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_pbl_rv_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form dianeutral transport from river binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_pbl_rv_pr = register_diag_field ( 'ocean_model' , 'tform_salt_pbl_rv_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form water mass transform from river' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_pbl_rv_pr_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_pbl_rv_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form water mass transform from river binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_pbl_rv_kn = register_diag_field ( 'ocean_model' , 'neut_rho_pbl_rv_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form material time derivative from river' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_pbl_rv_kn_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_pbl_rv_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form material time derivative from river as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_pbl_rv_kn = register_diag_field ( 'ocean_model' , 'wdian_rho_pbl_rv_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form dianeutral transport from river' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_pbl_rv_kn_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_pbl_rv_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form dianeutral transport from river as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_rv_kn = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_rv_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form water mass transform from river pre-binning to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_rv_kn_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_rv_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form water mass transform from river binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_pbl_rv_kn = register_diag_field ( 'ocean_model' , 'neut_temp_pbl_rv_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form material time derivative from river' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_pbl_rv_kn_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_pbl_rv_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form material time derivative from river binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_pbl_rv_kn = register_diag_field ( 'ocean_model' , 'wdian_temp_pbl_rv_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form dianeutral transport from river' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_pbl_rv_kn_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_pbl_rv_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form dianeutral transport from river binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_pbl_rv_kn = register_diag_field ( 'ocean_model' , 'tform_temp_pbl_rv_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form water mass transform from river' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_pbl_rv_kn_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_pbl_rv_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form water mass transform from river binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_pbl_rv_kn = register_diag_field ( 'ocean_model' , 'neut_salt_pbl_rv_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form material time derivative from river' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_pbl_rv_kn_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_pbl_rv_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form material time derivative from river binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_pbl_rv_kn = register_diag_field ( 'ocean_model' , 'wdian_salt_pbl_rv_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form dianeutral transport from river' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_pbl_rv_kn_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_pbl_rv_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form dianeutral transport from river binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_pbl_rv_kn = register_diag_field ( 'ocean_model' , 'tform_salt_pbl_rv_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form water mass transform from river' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_pbl_rv_kn_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_pbl_rv_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form water mass transform from river binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_pbl_rn_pr = register_diag_field ( 'ocean_model' , 'neut_rho_pbl_rn_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'process advective-form material time derivative from runoff' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_pbl_rn_pr_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_pbl_rn_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'process advective-form material time derivative from runoff as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_pbl_rn_pr = register_diag_field ( 'ocean_model' , 'wdian_rho_pbl_rn_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'process advective-form dianeutral transport from runoff' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_pbl_rn_pr_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_pbl_rn_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'process advective-form dianeutral transport from runoff as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_rn_pr = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_rn_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'process advective-form water mass transform from runoff pre-binning to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_rn_pr_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_rn_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'process advective-form water mass transform from runoff binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_pbl_rn_pr = register_diag_field ( 'ocean_model' , 'neut_temp_pbl_rn_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form material time derivative from runoff' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_pbl_rn_pr_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_pbl_rn_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form material time derivative from runoff binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_pbl_rn_pr = register_diag_field ( 'ocean_model' , 'wdian_temp_pbl_rn_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form dianeutral transport from runoff' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_pbl_rn_pr_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_pbl_rn_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form dianeutral transport from runoff binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_pbl_rn_pr = register_diag_field ( 'ocean_model' , 'tform_temp_pbl_rn_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form water mass transform from runoff' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_pbl_rn_pr_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_pbl_rn_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form water mass transform from runoff binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_pbl_rn_pr = register_diag_field ( 'ocean_model' , 'neut_salt_pbl_rn_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form material time derivative from runoff' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_pbl_rn_pr_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_pbl_rn_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form material time derivative from runoff binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_pbl_rn_pr = register_diag_field ( 'ocean_model' , 'wdian_salt_pbl_rn_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form dianeutral transport from runoff' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_pbl_rn_pr_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_pbl_rn_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form dianeutral transport from runoff binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_pbl_rn_pr = register_diag_field ( 'ocean_model' , 'tform_salt_pbl_rn_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form water mass transform from runoff' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_pbl_rn_pr_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_pbl_rn_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form water mass transform from runoff binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_pbl_rn_kn = register_diag_field ( 'ocean_model' , 'neut_rho_pbl_rn_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form material time derivative from runoff' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_pbl_rn_kn_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_pbl_rn_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form material time derivative from runoff as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_pbl_rn_kn = register_diag_field ( 'ocean_model' , 'wdian_rho_pbl_rn_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form dianeutral transport from runoff' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_pbl_rn_kn_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_pbl_rn_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form dianeutral transport from runoff as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_rn_kn = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_rn_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form water mass transform from runoff pre-binning to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_rn_kn_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_rn_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form water mass transform from runoff binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_pbl_rn_kn = register_diag_field ( 'ocean_model' , 'neut_temp_pbl_rn_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form material time derivative from runoff' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_pbl_rn_kn_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_pbl_rn_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form material time derivative from runoff binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_pbl_rn_kn = register_diag_field ( 'ocean_model' , 'wdian_temp_pbl_rn_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form dianeutral transport from runoff' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_pbl_rn_kn_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_pbl_rn_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form dianeutral transport from runoff binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_pbl_rn_kn = register_diag_field ( 'ocean_model' , 'tform_temp_pbl_rn_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form water mass transform from runoff' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_pbl_rn_kn_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_pbl_rn_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form water mass transform from runoff binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_pbl_rn_kn = register_diag_field ( 'ocean_model' , 'neut_salt_pbl_rn_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form material time derivative from runoff' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_pbl_rn_kn_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_pbl_rn_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form material time derivative from runoff binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_pbl_rn_kn = register_diag_field ( 'ocean_model' , 'wdian_salt_pbl_rn_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form dianeutral transport from runoff' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_pbl_rn_kn_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_pbl_rn_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form dianeutral transport from runoff binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_pbl_rn_kn = register_diag_field ( 'ocean_model' , 'tform_salt_pbl_rn_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form water mass transform from runoff' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_pbl_rn_kn_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_pbl_rn_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form water mass transform from runoff binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_pbl_cl_pr = register_diag_field ( 'ocean_model' , 'neut_rho_pbl_cl_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'process advective-form material time derivative from calving' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_pbl_cl_pr_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_pbl_cl_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'process advective-form material time derivative from calving as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_pbl_cl_pr = register_diag_field ( 'ocean_model' , 'wdian_rho_pbl_cl_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'process advective-form dianeutral transport from calving' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_pbl_cl_pr_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_pbl_cl_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'process advective-form dianeutral transport from calving as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_cl_pr = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_cl_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'process advective-form water mass transform from calving pre-binning to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_cl_pr_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_cl_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'process advective-form water mass transform from calving binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_pbl_cl_pr = register_diag_field ( 'ocean_model' , 'neut_temp_pbl_cl_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form material time derivative from calving' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_pbl_cl_pr_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_pbl_cl_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form material time derivative from calving binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_pbl_cl_pr = register_diag_field ( 'ocean_model' , 'wdian_temp_pbl_cl_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form dianeutral transport from calving' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_pbl_cl_pr_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_pbl_cl_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form dianeutral transport from calving binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_pbl_cl_pr = register_diag_field ( 'ocean_model' , 'tform_temp_pbl_cl_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form water mass transform from calving' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_pbl_cl_pr_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_pbl_cl_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related process advective-form water mass transform from calving binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_pbl_cl_pr = register_diag_field ( 'ocean_model' , 'neut_salt_pbl_cl_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form material time derivative from calving' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_pbl_cl_pr_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_pbl_cl_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form material time derivative from calving binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_pbl_cl_pr = register_diag_field ( 'ocean_model' , 'wdian_salt_pbl_cl_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form dianeutral transport from calving' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_pbl_cl_pr_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_pbl_cl_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form dianeutral transport from calving binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_pbl_cl_pr = register_diag_field ( 'ocean_model' , 'tform_salt_pbl_cl_pr' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form water mass transform from calving' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_pbl_cl_pr_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_pbl_cl_pr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related process advective-form water mass transform from calving binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_pbl_cl_kn = register_diag_field ( 'ocean_model' , 'neut_rho_pbl_cl_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form material time derivative from calving' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_pbl_cl_kn_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_pbl_cl_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form material time derivative from calving as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_pbl_cl_kn = register_diag_field ( 'ocean_model' , 'wdian_rho_pbl_cl_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form dianeutral transport from calving' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_pbl_cl_kn_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_pbl_cl_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form dianeutral transport from calving as binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_cl_kn = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_cl_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form water mass transform from calving pre-binning to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_cl_kn_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_cl_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'kinematic advective-form water mass transform from calving binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_pbl_cl_kn = register_diag_field ( 'ocean_model' , 'neut_temp_pbl_cl_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form material time derivative from calving' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_pbl_cl_kn_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_pbl_cl_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form material time derivative from calving binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_pbl_cl_kn = register_diag_field ( 'ocean_model' , 'wdian_temp_pbl_cl_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form dianeutral transport from calving' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_pbl_cl_kn_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_pbl_cl_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form dianeutral transport from calving binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_pbl_cl_kn = register_diag_field ( 'ocean_model' , 'tform_temp_pbl_cl_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form water mass transform from calving' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_pbl_cl_kn_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_pbl_cl_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related kinematic advective-form water mass transform from calving binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_pbl_cl_kn = register_diag_field ( 'ocean_model' , 'neut_salt_pbl_cl_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form material time derivative from calving' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_pbl_cl_kn_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_pbl_cl_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form material time derivative from calving binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_pbl_cl_kn = register_diag_field ( 'ocean_model' , 'wdian_salt_pbl_cl_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form dianeutral transport from calving' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_pbl_cl_kn_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_pbl_cl_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form dianeutral transport from calving binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_pbl_cl_kn = register_diag_field ( 'ocean_model' , 'tform_salt_pbl_cl_kn' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form water mass transform from calving' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_pbl_cl_kn_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_pbl_cl_kn_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related kinematic advective-form water mass transform from calving binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_eta_tend_rivermix = register_diag_field ( 'ocean_model' , 'eta_tend_rivermix' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from rivermix' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_runoffmix = register_diag_field ( 'ocean_model' , 'eta_tend_runoffmix' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from runoffmix' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_calvingmix = register_diag_field ( 'ocean_model' , 'eta_tend_calvingmix' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from calvingmix' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_rivermix_glob = register_diag_field ( 'ocean_model' , 'eta_tend_rivermix_glob' , time % model_time , 'global mean non-bouss steric sea level tendency from rivermix' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_runoffmix_glob = register_diag_field ( 'ocean_model' , 'eta_tend_runoffmix_glob' , time % model_time , 'global mean non-bouss steric sea level tendency from runoffmix' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_calvingmix_glob = register_diag_field ( 'ocean_model' , 'eta_tend_calvingmix_glob' , time % model_time , 'global mean non-bouss steric sea level tendency from calvingmix' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) e: id_overexch ( n ) = register_diag_field ( 'ocean_model' , 'overexch_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cp*overexch*rho*dzt*temp' , 'Watt/m^2' , missing_value = missing_value , range = ( / - 1.e9 , 1.e9 / ) ) e: id_overexch ( n ) = register_diag_field ( 'ocean_model' , 'overexch_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'overexch*rho*dzt*tracer for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e9 , 1.e9 / ) ) E: id_neut_rho_overex = register_diag_field ( 'ocean_model' , 'neut_rho_overex' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of locally referenced potrho from overexchange scheme' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_overex_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_overex_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from overexchange as binned to neutral rho layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_overex = register_diag_field ( 'ocean_model' , 'wdian_rho_overex' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to overexchange' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_overex_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_overex_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to overexchange as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_overex_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_overex_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to overexchange as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_overex = register_diag_field ( 'ocean_model' , 'neut_temp_overex' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally referenced potrho from overexchange scheme' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_overex_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_overex_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally ref potrho from overexchange binned to neutral rho layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_overex = register_diag_field ( 'ocean_model' , 'wdian_temp_overex' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to overexchange' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_overex_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_overex_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to overexchange binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_overex_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_overex_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to overexchange as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_overex = register_diag_field ( 'ocean_model' , 'neut_salt_overex' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally referenced potrho from overexchange scheme' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_overex_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_overex_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally ref potrho from overexchange binned to neutral rho layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_overex = register_diag_field ( 'ocean_model' , 'wdian_salt_overex' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to overexchange' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_overex_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_overex_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to overexchange binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_overex_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_overex_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to overexchange binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_sat_chl = register_diag_field ( 'ocean_model' , 'sat_chl' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'Chlorophyll' , 'mg/m^3' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_f_vis = register_diag_field ( 'ocean_model' , 'f_vis' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'Fraction of incoming shortwave in the visible range' , 'dimensionless' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) e: id_xland ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xland' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'xlandmix*cp*rho*dzt*temp' , 'Watt/m^2' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_xland ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xland' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'xlandmix*rho*dzt*tracer for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_xland_mass = register_diag_field ( 'ocean_model' , 'mass_xland' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'mass source from xland' , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e8 , 1.e8 / ) ) E: id_neut_rho_xmix = register_diag_field ( 'ocean_model' , 'neut_rho_xmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from xlandmix' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_xmix_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_xmix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from xlandmix binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_xmix = register_diag_field ( 'ocean_model' , 'wdian_rho_xmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to xlandmix' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_xmix_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_xmix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport from xlandmix binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_xmix = register_diag_field ( 'ocean_model' , 'tform_rho_xmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform from xlandmix' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_xmix_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_xmix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform from xlandmix binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_eta_tend_xmix = register_diag_field ( 'ocean_model' , 'eta_tend_xmix' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from xlandmix tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_xmix_glob = register_diag_field ( 'ocean_model' , 'eta_tend_xmix_glob' , time % model_time , 'global mean non-bouss steric sea level tendency from xlandmix tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_neut_temp_xmix = register_diag_field ( 'ocean_model' , 'neut_temp_xmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally ref potrho from xlandmix' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_xmix_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_xmix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally ref potrho from xlandmix binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_xmix = register_diag_field ( 'ocean_model' , 'wdian_temp_xmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to xlandmix' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_xmix_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_xmix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport from xlandmix binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_xmix = register_diag_field ( 'ocean_model' , 'tform_temp_xmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform from xlandmix' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_xmix_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_xmix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform from xlandmix binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_xmix = register_diag_field ( 'ocean_model' , 'neut_salt_xmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally ref potrho from xlandmix' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_xmix_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_xmix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally ref potrho from xlandmix binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_xmix = register_diag_field ( 'ocean_model' , 'wdian_salt_xmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to xlandmix' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_xmix_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_xmix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport from xlandmix binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_xmix = register_diag_field ( 'ocean_model' , 'tform_salt_xmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform from xlandmix' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_xmix_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_xmix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform from xlandmix binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_overflow_xflux = register_diag_field ( 'ocean_model' , 'overflow_xflux' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'off-shelf i-transport from overflow' , 'kg/s' , missing_value = missing_value , range = ( / - 1.e14 , 1.e14 / ) ) E: id_overflow_yflux = register_diag_field ( 'ocean_model' , 'overflow_yflux' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'off-shelf j-transport from overflow' , 'kg/s' , missing_value = missing_value , range = ( / - 1.e9 , 1.e9 / ) ) E: id_tx_trans_overflow = register_diag_field ( 'ocean_model' , 'tx_trans_overflow' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'i-directed mass transport from overflow' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_ty_trans_overflow = register_diag_field ( 'ocean_model' , 'ty_trans_overflow' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'j-directed mass transport from overflow' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_overflow ( n ) = register_diag_field ( 'ocean_model' , 'overflow_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cp*overflow*rho*dzt*temp' , 'Watt/m^2' , missing_value = missing_value , range = ( / - 1.e9 , 1.e9 / ) ) e: id_overflow_xflux_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_overflow_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'vert-integ cp*overflow_xflux*rho*dzt*dyt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e9 , 1.e9 / ) ) e: id_overflow_yflux_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_overflow_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'vert-integ cp*overflow_yflux*rho*dzt*dxt*temp' , 'Watt' , missing_value = missing_value , range = ( / - 1.e9 , 1.e9 / ) ) e: id_overflow ( n ) = register_diag_field ( 'ocean_model' , 'overflow_' // trim ( t_prog ( n ) % name ) , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'overflow*rho*dzt*tracer for ' // trim ( t_prog ( n ) % name ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e9 , 1.e9 / ) ) e: id_overflow_xflux_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_xflux_overflow_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'vert-integ overflow_xflux*dyt*rho*dzt*tracer for ' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e9 , 1.e9 / ) ) e: id_overflow_yflux_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_yflux_overflow_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'vert-integ overflow_yflux*dxt*rho*dzt*tracer for ' // trim ( t_prog ( n ) % name ) , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e9 , 1.e9 / ) ) E: id_neut_rho_overfl = register_diag_field ( 'ocean_model' , 'neut_rho_overfl' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of locally referenced potrho from overflow scheme' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_overfl_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_overfl_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from overflow as binned to neutral rho layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_overfl = register_diag_field ( 'ocean_model' , 'wdian_rho_overfl' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to overflow' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_overfl_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_overfl_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to overflow as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_overfl_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_overfl_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to overflow as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_overfl = register_diag_field ( 'ocean_model' , 'neut_temp_overfl' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally referenced potrho from overflow scheme' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_overfl_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_overfl_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally ref potrho from overflow binned to neutral rho layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_overfl = register_diag_field ( 'ocean_model' , 'wdian_temp_overfl' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to overflow' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_overfl_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_overfl_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to overflow binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_overfl_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_overfl_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to overflow as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_overfl = register_diag_field ( 'ocean_model' , 'neut_salt_overfl' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally referenced potrho from overflow scheme' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_overfl_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_overfl_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally ref potrho from overflow binned to neutral rho layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_overfl = register_diag_field ( 'ocean_model' , 'wdian_salt_overfl' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to overflow' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_overfl_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_overfl_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to overflow binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_overfl_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_overfl_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to overflow as binned to neutral rho layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_nonlocal ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_nonlocal_KPP' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cp*rho*dzt*nonlocal tendency from KPP' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_nonlocal_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_nonlocal_KPP_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'cp*rho*dzt*nonlocal tendency from KPP binned to neutral density' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_wsfc ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_wsfc_KPP' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'cp*rho*dzt*surface tendency from KPP' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_nonlocal ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_nonlocal_KPP' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*nonlocal tendency from KPP' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_nonlocal_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_nonlocal_KPP_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*nonlocal tendency from KPP binned to neutral density' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_wsfc ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_wsfc_KPP' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'rho*dzt*surface tendency from KPP' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_wbot ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_wbot_KPP' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'tracer flux through sbl-bottom' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_ghats ( 1 ) = register_diag_field ( 'ocean_model' , 'temp_ghats_KPP' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'nonlocal term ghats * diff_cbt from KPP' , 'none' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_ghats ( 2 ) = register_diag_field ( 'ocean_model' , 'salt_ghats_KPP' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'nonlocal term ghats * diff_cbt from KPP' , 'none' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_diff_cbt_kpp_t = register_diag_field ( 'ocean_model' , 'diff_cbt_kpp_t' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusivity from kpp for temp' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_diff_cbt_kpp_s = register_diag_field ( 'ocean_model' , 'diff_cbt_kpp_s' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusivity from kpp for salt' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_visc_cbt_kpp = register_diag_field ( 'ocean_model' , 'visc_cbt_kpp' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert viscosity from kpp on T-cell' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_visc_cbu_kpp = register_diag_field ( 'ocean_model' , 'visc_cbu_kpp' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'vert viscosity from kpp on U-cell' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_hblt = register_diag_field ( 'ocean_model' , 'hblt' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'T-cell boundary layer depth from KPP' , 'm' , missing_value = missing_value , range = ( / - 1.e5 , 1.e6 / ) , standard_name = 'ocean_mixed_layer_thickness_defined_by_mixing_scheme' ) E: id_ws = register_diag_field ( 'ocean_model' , 'wscale' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'wscale from KPP' , 'm' , missing_value = missing_value , range = ( / - 1.e5 , 1.e6 / ) ) E: id_neut_rho_kpp_nloc = register_diag_field ( 'ocean_model' , 'neut_rho_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'locally referenced potrho tendency due to KPP nonlocal term' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_wdian_rho_kpp_nloc = register_diag_field ( 'ocean_model' , 'wdian_rho_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to KPP nonlocal term' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_tform_rho_kpp_nloc = register_diag_field ( 'ocean_model' , 'tform_rho_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to KPP nonlocal on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_neut_rho_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from KPP nolocal as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_rho_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to KPP nonlocal as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_rho_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to KPP nonlocal as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_kpp_nloc = register_diag_field ( 'ocean_model' , 'eta_tend_kpp_nloc' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from kpp_nloc tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_kpp_nloc_glob = register_diag_field ( 'ocean_model' , 'eta_tend_kpp_nloc_glob' , time % model_time , 'global mean non-bouss steric sea level tendency from kpp_nloc tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_neut_temp_kpp_nloc = register_diag_field ( 'ocean_model' , 'neut_temp_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related locally referenced potrho tendency due to KPP nonlocal term' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_wdian_temp_kpp_nloc = register_diag_field ( 'ocean_model' , 'wdian_temp_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to KPP nonlocal term' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_tform_temp_kpp_nloc = register_diag_field ( 'ocean_model' , 'tform_temp_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to KPP nonlocal on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_neut_temp_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally ref potrho from KPP nolocal as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_temp_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to KPP nonlocal as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_temp_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to KPP nonlocal as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_salt_kpp_nloc = register_diag_field ( 'ocean_model' , 'neut_salt_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related locally referenced potrho tendency due to KPP nonlocal term' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_wdian_salt_kpp_nloc = register_diag_field ( 'ocean_model' , 'wdian_salt_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to KPP nonlocal term' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_tform_salt_kpp_nloc = register_diag_field ( 'ocean_model' , 'tform_salt_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to KPP nonlocal on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_neut_salt_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally ref potrho from KPP nolocal as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_salt_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to KPP nonlocal as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_salt_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to KPP nonlocal as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_roughness_klevel = register_diag_field ( 'ocean_model' , 'roughness_klevel' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'klevel at top of the bottom layer defined by roughness amplitude for internal tide mixing' , 'dimensionless' , missing_value = missing_value , range = ( / - 1.0 , 1.e10 / ) ) E: id_energy_flux = register_diag_field ( 'ocean_model' , 'energy_flux' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'energy flux out of barotropic tides for use w/ internal tide mixing' , 'W/m^2' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_power_waves = register_diag_field ( 'ocean_model' , 'power_waves' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'power from barotropic tides to internal tides' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_power_diss_leewave = register_diag_field ( 'ocean_model' , 'power_diss_leewave' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'power dissipation from mixing due to breaking leewaves' , 'W/m^2' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_power_diss_wave = register_diag_field ( 'ocean_model' , 'power_diss_wave' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'power dissipation from internal wave induced mixing' , 'W/m^2' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_power_diss_drag = register_diag_field ( 'ocean_model' , 'power_diss_drag' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'power dissipation from barotropic tide drag' , 'W/m^2' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_power_diss_tides = register_diag_field ( 'ocean_model' , 'power_diss_tides' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'power dissipation from barotropic tide drag and baroclinic wave drag' , 'W/m^2' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) , standard_name = 'tendency_of_ocean_potential_energy_content_due_to_tides' ) E: id_mix_efficiency = register_diag_field ( 'ocean_model' , 'mix_efficiency' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'efficiency of internal wave dissipation going to mix tracer' , 'dimensionless' , missing_value = missing_value , range = ( / - 1e5 , 1e5 / ) ) E: id_bvfreq_bottom = register_diag_field ( 'ocean_model' , 'bvfreq_bottom' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'absolute Brunt-Vaisala freq at ocean bottom' , 's^-1' , missing_value = missing_value , range = ( / - 1e1 , 1e9 / ) ) E: id_bvfreq = register_diag_field ( 'ocean_model' , 'bvfreq' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'absolute Brunt-Vaisala freq at tracer cell bottom' , 's^-1' , missing_value = missing_value , range = ( / - 1e1 , 1e9 / ) ) E: id_rinumber_drag = register_diag_field ( 'ocean_model' , 'rinumber_drag' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'Richardson number from Lee etal' , 'dimensionless' , missing_value = missing_value , range = ( / - 1e1 , 1e18 / ) ) E: id_diff_cbt_wave = register_diag_field ( 'ocean_model' , 'diff_cbt_wave' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'diffusivity from breaking internal wave dissipation' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_diff_cbt_leewave = register_diag_field ( 'ocean_model' , 'diff_cbt_leewave' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'diffusivity from breaking leewaves' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_diff_cbt_drag = register_diag_field ( 'ocean_model' , 'diff_cbt_drag' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'diffusivity from drag of barotropic tides on bottom' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_visc_cbt_wave = register_diag_field ( 'ocean_model' , 'visc_cbt_wave' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'viscosity from breaking internal wave dissipation' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_visc_cbt_leewave = register_diag_field ( 'ocean_model' , 'visc_cbt_leewave' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'viscosity from breaking leewaves' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_visc_cbt_drag = register_diag_field ( 'ocean_model' , 'visc_cbt_drag' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'viscosity from drag of barotropic tides on bottom' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_visc_cbu_wave = register_diag_field ( 'ocean_model' , 'visc_cbu_wave' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'viscosity from breaking internal wave dissipation' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_visc_cbu_leewave = register_diag_field ( 'ocean_model' , 'visc_cbu_leewave' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'viscosity from breaking leewaves ' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_visc_cbu_drag = register_diag_field ( 'ocean_model' , 'visc_cbu_drag' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'viscosity from drag of barotropic tides on bottom' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_diff_cbt_tides = register_diag_field ( 'ocean_model' , 'diff_cbt_tides' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'diffusivity from drag of barotropic tides on bottom + wave drag' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) , standard_name = 'ocean_vertical_tracer_diffusivity_due_to_tides' ) E: id_visc_cbt_tides = register_diag_field ( 'ocean_model' , 'visc_cbt_tides' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'viscosity from drag of barotropic tides on bottom + wave drag' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) , standard_name = 'ocean_vertical_tracer_diffusivity_due_to_tides' ) E: id_visc_cbu_tides = register_diag_field ( 'ocean_model' , 'visc_cbu_tides' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'viscosity from drag of barotropic tides on bottom + wave drag' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) , standard_name = 'ocean_vertical_momentum_diffusivity_due_to_tides' ) E: id_wmix = register_diag_field ( 'ocean_model' , 'wmix' , grd % tracer_axes_wt ( 1 : 2 ) , time % model_time , 'wind mixing' , 'm^3/s^3' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_bte = register_diag_field ( 'ocean_model' , 'bte' , grd % tracer_axes_wt ( 1 : 2 ) , time % model_time , 'bulk_Tke term' , 'm^2/s^3' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_dbloc = register_diag_field ( 'ocean_model' , 'dbloc' , grd % tracer_axes_wt ( 1 : 2 ) , time % model_time , 'delta density ' , 'm/s^2' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_tke = register_diag_field ( 'ocean_model' , 'tke' , grd % tracer_axes_wt ( 1 : 2 ) , time % model_time , 'Rhs of tke' , 'm^3/s^3' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_hbl = register_diag_field ( 'ocean_model' , 'hbl' , grd % tracer_axes_wt ( 1 : 2 ) , time % model_time , 'Kraus mixed layer depth' , 'm' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_diff_cbt_chen_t = register_diag_field ( 'ocean_model' , 'diff_cbt_chen_t' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'vert diffusivity from chen for temp' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_diff_cbt_chen_s = register_diag_field ( 'ocean_model' , 'diff_cbt_chen_s' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'vert diffusivity from chen for salinity' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_tide_rescspeed_mask = register_diag_field ( 'ocean_model' , 'tide_rescspeed_mask' , grid % vel_axes_uv ( 1 : 2 ) , time % model_time , 'mask based on tide_speed_drag for barotropic drag mixing' , 'dimensionless' , missing_value = missing_value , range = ( / - 1e1 , 1e1 / ) ) E: id_tide_deepspeed_mask = register_diag_field ( 'ocean_model' , 'tide_deepspeed_mask' , grid % vel_axes_uv ( 1 : 2 ) , time % model_time , 'mask based on tide_speed_drag for deep ocean region' , 'dimensionless' , missing_value = missing_value , range = ( / - 1e1 , 1e1 / ) ) E: id_roughness_klevel = register_diag_field ( 'ocean_model' , 'roughness_klevel' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'klevel at top of the bottom layer defined by roughness amplitude for internal tide mixing' , 'dimensionless' , missing_value = missing_value , range = ( / - 1.0 , 1.e10 / ) ) E: id_energy_flux = register_diag_field ( 'ocean_model' , 'energy_flux' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'energy flux out of barotropic tides for use w/ internal tide mixing' , 'W/m^2' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_power_waves = register_diag_field ( 'ocean_model' , 'power_waves' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'power from barotropic tides to internal tides' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_power_diss_leewave = register_diag_field ( 'ocean_model' , 'power_diss_leewave' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'power dissipation from mixing due to breaking leewaves' , 'W/m^2' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_power_diss_wave = register_diag_field ( 'ocean_model' , 'power_diss_wave' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'power dissipation from internal wave induced mixing' , 'W/m^2' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_power_diss_drag = register_diag_field ( 'ocean_model' , 'power_diss_drag' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'power dissipation from barotropic tide drag' , 'W/m^2' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_power_diss_tides = register_diag_field ( 'ocean_model' , 'power_diss_tides' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'power dissipation from barotropic tide drag and baroclinic wave drag' , 'W/m^2' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) , standard_name = 'tendency_of_ocean_potential_energy_content_due_to_tides' ) E: id_mix_efficiency = register_diag_field ( 'ocean_model' , 'mix_efficiency' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'efficiency of internal wave dissipation going to mix tracer' , 'dimensionless' , missing_value = missing_value , range = ( / - 1e5 , 1e5 / ) ) E: id_bvfreq_bottom = register_diag_field ( 'ocean_model' , 'bvfreq_bottom' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'absolute Brunt-Vaisala freq at ocean bottom' , 's^-1' , missing_value = missing_value , range = ( / - 1e1 , 1e9 / ) ) E: id_bvfreq = register_diag_field ( 'ocean_model' , 'bvfreq' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'absolute Brunt-Vaisala freq at tracer cell bottom' , 's^-1' , missing_value = missing_value , range = ( / - 1e1 , 1e9 / ) ) E: id_rinumber_drag = register_diag_field ( 'ocean_model' , 'rinumber_drag' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'Richardson number from Lee etal' , 'dimensionless' , missing_value = missing_value , range = ( / - 1e1 , 1e18 / ) ) E: id_diff_cbt_wave = register_diag_field ( 'ocean_model' , 'diff_cbt_wave' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'diffusivity from breaking internal wave dissipation' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_diff_cbt_leewave = register_diag_field ( 'ocean_model' , 'diff_cbt_leewave' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'diffusivity from breaking leewaves' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_diff_cbt_drag = register_diag_field ( 'ocean_model' , 'diff_cbt_drag' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'diffusivity from drag of barotropic tides on bottom' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_visc_cbt_wave = register_diag_field ( 'ocean_model' , 'visc_cbt_wave' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'viscosity from breaking internal wave dissipation' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_visc_cbt_leewave = register_diag_field ( 'ocean_model' , 'visc_cbt_leewave' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'viscosity from breaking leewaves' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_visc_cbt_drag = register_diag_field ( 'ocean_model' , 'visc_cbt_drag' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'viscosity from drag of barotropic tides on bottom' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_visc_cbu_wave = register_diag_field ( 'ocean_model' , 'visc_cbu_wave' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'viscosity from breaking internal wave dissipation' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_visc_cbu_leewave = register_diag_field ( 'ocean_model' , 'visc_cbu_leewave' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'viscosity from breaking leewaves ' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_visc_cbu_drag = register_diag_field ( 'ocean_model' , 'visc_cbu_drag' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'viscosity from drag of barotropic tides on bottom' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_diff_cbt_tides = register_diag_field ( 'ocean_model' , 'diff_cbt_tides' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'diffusivity from drag of barotropic tides on bottom + wave drag' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) , standard_name = 'ocean_vertical_tracer_diffusivity_due_to_tides' ) E: id_visc_cbt_tides = register_diag_field ( 'ocean_model' , 'visc_cbt_tides' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'viscosity from drag of barotropic tides on bottom + wave drag' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) , standard_name = 'ocean_vertical_tracer_diffusivity_due_to_tides' ) E: id_visc_cbu_tides = register_diag_field ( 'ocean_model' , 'visc_cbu_tides' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'viscosity from drag of barotropic tides on bottom + wave drag' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) , standard_name = 'ocean_vertical_momentum_diffusivity_due_to_tides' ) e: id_convect ( n ) = register_diag_field ( 'ocean_model' , 'convect_heating' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'heating due to convection' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_convect ( n ) = register_diag_field ( 'ocean_model' , 'convect_' // trim ( t_prog ( n ) % name ) , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*th_tendency due to convection' , 'm*kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_ktot = register_diag_field ( 'ocean_model' , 'ktot' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'number convecting levels' , 'number' , missing_value = missing_value , range = ( / - 10.0 , 1.e20 / ) ) E: id_kven = register_diag_field ( 'ocean_model' , 'kven' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'number ventilated levels' , 'number' , missing_value = missing_value , range = ( / - 10.0 , 1.e20 / ) ) E: id_neut_rho_convect = register_diag_field ( 'ocean_model' , 'neut_rho_convect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of locally referenced potential density from convective adjustment' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_rho_convect = register_diag_field ( 'ocean_model' , 'wdian_rho_convect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to convective adjustment' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_convect = register_diag_field ( 'ocean_model' , 'tform_rho_convect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to convective adjustment on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_convect_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_convect_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from convective adjustment as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_rho_convect_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_convect_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to convective adjustment as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_convect_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_convect_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to convective adjustment as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_temp_convect = register_diag_field ( 'ocean_model' , 'neut_temp_convect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally referenced potential density from convective adjustment' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_temp_convect_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_convect_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally ref potrho from convect adjust as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_temp_convect = register_diag_field ( 'ocean_model' , 'wdian_temp_convect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to convective adjustment on levels' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_temp_convect_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_convect_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to convective adjustment as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_convect = register_diag_field ( 'ocean_model' , 'tform_temp_convect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to convective adjustment on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_temp_convect_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_convect_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to convective adjustment as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_salt_convect = register_diag_field ( 'ocean_model' , 'neut_salt_convect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally referenced potential density from convective adjustment' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_salt_convect_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_convect_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally ref potrho from convect adjust as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_salt_convect = register_diag_field ( 'ocean_model' , 'wdian_salt_convect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to convective adjustment on levels' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_salt_convect_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_convect_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to convective adjustment as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_convect = register_diag_field ( 'ocean_model' , 'tform_salt_convect' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to convective adjustment on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_salt_convect_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_convect_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to convective adjustment as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_diff_cbt_pp = register_diag_field ( 'ocean_model' , 'diff_cbt_pp' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'vert diffusivity from pp' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_visc_cbt_pp = register_diag_field ( 'ocean_model' , 'visc_cbt_pp' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'vert viscosity from pp' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_visc_cbu_pp = register_diag_field ( 'ocean_model' , 'visc_cbu_pp' , grd % vel_axes_wu ( 1 : 3 ) , time % model_time , 'vert viscosity from pp' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) e: id_nonlocal ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_nonlocal_KPP' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cp*rho*dzt*nonlocal tendency from KPP' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_nonlocal_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_nonlocal_KPP_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'cp*rho*dzt*nonlocal tendency from KPP binned to neutral density' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_nonlocal ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_nonlocal_KPP' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*nonlocal tendency from KPP' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_nonlocal_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_nonlocal_KPP_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*nonlocal tendency from KPP binned to neutral density' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_diff_cbt_kpp_t = register_diag_field ( 'ocean_model' , 'diff_cbt_kpp_t' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusivity from kpp for temp' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_diff_cbt_kpp_s = register_diag_field ( 'ocean_model' , 'diff_cbt_kpp_s' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusivity from kpp for salt' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_diff_cbt_int = register_diag_field ( 'ocean_model' , 'diff_cbt_int' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusivity from kpp internal tide mixing' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_visc_cbt_int = register_diag_field ( 'ocean_model' , 'visc_cbt_int' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert viscosity from kpp internal tide mixing' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_diff_cbt_coast = register_diag_field ( 'ocean_model' , 'diff_cbt_coast' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusivity from kpp coastal tide mixing' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_visc_cbt_coast = register_diag_field ( 'ocean_model' , 'visc_cbt_coast' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert viscosity from kpp coastal tide mixing' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_hblt = register_diag_field ( 'ocean_model' , 'hblt' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'T-cell boundary layer depth from KPP' , 'm' , missing_value = missing_value , range = ( / - 1.e5 , 1.e6 / ) , standard_name = 'ocean_mixed_layer_thickness_defined_by_mixing_scheme' ) E: id_bf_int_tide = register_diag_field ( 'ocean_model' , 'bf_int_tide' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'buoyancy frequency' , '1/sec' , missing_value = missing_value , range = ( / 0.0 , 1.e-1 / ) ) E: id_neut_rho_kpp_nloc = register_diag_field ( 'ocean_model' , 'neut_rho_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'locally referenced potrho tendency due to KPP nonlocal term' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_wdian_rho_kpp_nloc = register_diag_field ( 'ocean_model' , 'wdian_rho_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to KPP nonlocal term' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_tform_rho_kpp_nloc = register_diag_field ( 'ocean_model' , 'tform_rho_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to KPP nonlocal on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_neut_rho_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from KPP nolocal as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_rho_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to KPP nonlocal as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_rho_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to KPP nonlocal as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_kpp_nloc = register_diag_field ( 'ocean_model' , 'eta_tend_kpp_nloc' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from kpp_nloc tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_kpp_nloc_glob = register_diag_field ( 'ocean_model' , 'eta_tend_kpp_nloc_glob' , time % model_time , 'global mean non-bouss steric sea level tendency from kpp_nloc tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_neut_temp_kpp_nloc = register_diag_field ( 'ocean_model' , 'neut_temp_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related locally referenced potrho tendency due to KPP nonlocal term' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_wdian_temp_kpp_nloc = register_diag_field ( 'ocean_model' , 'wdian_temp_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to KPP nonlocal term' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_tform_temp_kpp_nloc = register_diag_field ( 'ocean_model' , 'tform_temp_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to KPP nonlocal on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_neut_temp_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally ref potrho from KPP nolocal as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_temp_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to KPP nonlocal as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_temp_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to KPP nonlocal as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_salt_kpp_nloc = register_diag_field ( 'ocean_model' , 'neut_salt_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related locally referenced potrho tendency due to KPP nonlocal term' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_wdian_salt_kpp_nloc = register_diag_field ( 'ocean_model' , 'wdian_salt_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to KPP nonlocal term' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_tform_salt_kpp_nloc = register_diag_field ( 'ocean_model' , 'tform_salt_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to KPP nonlocal on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_neut_salt_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally ref potrho from KPP nolocal as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_salt_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to KPP nonlocal as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_salt_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to KPP nonlocal as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_nonlocal ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_nonlocal_KPP' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cp*rho*dzt*nonlocal tendency from KPP' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_nonlocal_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_nonlocal_KPP_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'cp*rho*dzt*nonlocal tendency from KPP binned to neutral density' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_wsfc ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_wsfc_KPP' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'cp*rho*dzt*surface tendency from KPP' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_nonlocal ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_nonlocal_KPP' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*nonlocal tendency from KPP' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_nonlocal_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_nonlocal_KPP_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'rho*dzt*nonlocal tendency from KPP binned to neutral density' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_wsfc ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_wsfc_KPP' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'rho*dzt*surface tendency from KPP' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) e: id_wbot ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_wbot_KPP' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'tracer flux through sbl-bottom' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_ghats ( 1 ) = register_diag_field ( 'ocean_model' , 'temp_ghats_KPP' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'nonlocal term ghats * diff_cbt from KPP' , 'none' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_ghats ( 2 ) = register_diag_field ( 'ocean_model' , 'salt_ghats_KPP' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'nonlocal term ghats * diff_cbt from KPP' , 'none' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_diff_cbt_kpp_t = register_diag_field ( 'ocean_model' , 'diff_cbt_kpp_t' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusivity from kpp for temp' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_diff_cbt_kpp_s = register_diag_field ( 'ocean_model' , 'diff_cbt_kpp_s' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusivity from kpp for salt' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_diff_cbt_conv = register_diag_field ( 'ocean_model' , 'diff_cbt_conv' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusivity from kpp convection' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_hblt = register_diag_field ( 'ocean_model' , 'hblt' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'T-cell boundary layer depth from KPP' , 'm' , missing_value = missing_value , range = ( / - 1.e5 , 1.e6 / ) , standard_name = 'ocean_mixed_layer_thickness_defined_by_mixing_scheme' ) E: id_ws = register_diag_field ( 'ocean_model' , 'wscale' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'wscale from KPP' , 'm' , missing_value = missing_value , range = ( / - 1.e5 , 1.e6 / ) ) E: id_lang_enh = register_diag_field ( 'ocean_model' , 'lang_enh' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'enhancement due to langmuir turbulence' , 'none' , missing_value = missing_value , range = ( / 0.0 , 10. / ) ) E: id_lang = register_diag_field ( 'ocean_model' , 'lang_num' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Langmuir number' , 'none' , missing_value = missing_value , range = ( / 0.0 , 1.e10 / ) ) E: id_u10 = register_diag_field ( 'ocean_model' , 'u10' , grd % tracer_axes ( 1 : 2 ) , time % model_time , '10m wind speed used for kpp Langmuir turbulence' , 'm/s' , missing_value = missing_value , range = ( / 0.0 , 1.e3 / ) ) E: id_neut_rho_kpp_nloc = register_diag_field ( 'ocean_model' , 'neut_rho_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'locally referenced potrho tendency due to KPP nonlocal term' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_pot_rho_kpp_nloc = register_diag_field ( 'ocean_model' , 'pot_rho_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'depth referenced potrho tendency due to KPP nonlocal term' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_wdian_rho_kpp_nloc = register_diag_field ( 'ocean_model' , 'wdian_rho_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to KPP nonlocal term' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_tform_rho_kpp_nloc = register_diag_field ( 'ocean_model' , 'tform_rho_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to KPP nonlocal on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_neut_rho_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of locally ref potrho from KPP nolocal as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_rho_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to KPP nonlocal as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_rho_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to KPP nonlocal as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_kpp_nloc = register_diag_field ( 'ocean_model' , 'eta_tend_kpp_nloc' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from kpp_nloc tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_eta_tend_kpp_nloc_glob = register_diag_field ( 'ocean_model' , 'eta_tend_kpp_nloc_glob' , time % model_time , 'global mean non-bouss steric sea level tendency from kpp_nloc tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e10 , 1.e10 / ) ) E: id_neut_temp_kpp_nloc = register_diag_field ( 'ocean_model' , 'neut_temp_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related locally referenced potrho tendency due to KPP nonlocal term' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_wdian_temp_kpp_nloc = register_diag_field ( 'ocean_model' , 'wdian_temp_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to KPP nonlocal term' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_tform_temp_kpp_nloc = register_diag_field ( 'ocean_model' , 'tform_temp_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to KPP nonlocal on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_neut_temp_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related update of locally ref potrho from KPP nolocal as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_temp_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to KPP nonlocal as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_temp_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to KPP nonlocal as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_neut_salt_kpp_nloc = register_diag_field ( 'ocean_model' , 'neut_salt_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related locally referenced potrho tendency due to KPP nonlocal term' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_wdian_salt_kpp_nloc = register_diag_field ( 'ocean_model' , 'wdian_salt_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to KPP nonlocal term' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_tform_salt_kpp_nloc = register_diag_field ( 'ocean_model' , 'tform_salt_kpp_nloc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to KPP nonlocal on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_neut_salt_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related update of locally ref potrho from KPP nolocal as binned to neutral density layers' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_wdian_salt_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due to KPP nonlocal as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_tform_salt_kpp_nloc_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_kpp_nloc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to KPP nonlocal as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_ri_num_dudz = register_diag_field ( 'ocean_model' , 'ri_num_dudz' , grid % tracer_axes_wt ( 1 : 3 ) , time % model_time , '(du/dz)^2 for Richardson number computed on T-cell bottom using Cgrid routine' , '1/s^2' , missing_value = missing_value , range = ( / - 1e1 , 1e15 / ) ) E: id_ri_num_n2 = register_diag_field ( 'ocean_model' , 'ri_num_n2' , grid % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'N^2 for Richardson number computed on T-cell bottom using Cgrid routine' , '1/s^2' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_rit = register_diag_field ( 'ocean_model' , 'rit' , grid % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'Richardson number computed on T-cell bottom' , 'dimensionless' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_riu = register_diag_field ( 'ocean_model' , 'riu' , grid % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'Richardson number computed on U-cell bottom' , 'dimensionless' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_diff_cbt_const = register_diag_field ( 'ocean_model' , 'diff_cbt_const' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diff_cbt from constant scheme' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) ) E: id_visc_cbt_const = register_diag_field ( 'ocean_model' , 'visc_cbt_const' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'vert visc_cbt from constant scheme' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) ) E: id_visc_cbu_const = register_diag_field ( 'ocean_model' , 'visc_cbu_const' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'vert visc_cbu from constant scheme' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) ) E: id_density_delta_z = register_diag_field ( 'ocean_model' , 'density_delta_z' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'rho(k)-rho(k+1) to check stability for const diff_cbt' , 'kg/m^3' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) ) e: id_gotm_diag ( n ) = register_diag_field ( 'ocean_model' , trim ( gotm ( n ) % name ) , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , trim ( gotm ( n ) % name ) , trim ( gotm ( n ) % units ) , missing_value = missing_value , range = ( / - 1e18 , 1e18 / ) ) e: id_adv_flux_x ( n ) = register_diag_field ( 'ocean_model' , trim ( gotm ( n ) % name ) // '_xflux_adv' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'rho*dzt*dyt*u*Gotm_field' , ' kg/sec' , missing_value = missing_value , range = ( / - 1e18 , 1e18 / ) ) e: id_adv_flux_y ( n ) = register_diag_field ( 'ocean_model' , trim ( gotm ( n ) % name ) // '_yflux_adv' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'rho*dzt*dxt*v*Gotm_field' , ' kg/sec' , missing_value = missing_value , range = ( / - 1e18 , 1e18 / ) ) e: id_adv_flux_z ( n ) = register_diag_field ( 'ocean_model' , trim ( gotm ( n ) % name ) // '_zflux_adv' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'rho*dxt*dyt*wt*Gotm_field' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e18 , 1e18 / ) ) e: id_adv_flux_x_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( gotm ( n ) % name ) // '_xflux_adv_int_z' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'rho*dzt*dyt*u*Gotm_field' , ' kg m/sec' , missing_value = missing_value , range = ( / - 1e18 , 1e18 / ) ) e: id_adv_flux_y_int_z ( n ) = register_diag_field ( 'ocean_model' , trim ( gotm ( n ) % name ) // '_yflux_adv_int_z' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'rho*dzt*dxt*v*Gotm_field' , ' kg m/sec' , missing_value = missing_value , range = ( / - 1e18 , 1e18 / ) ) e: id_gotm_errors ( n ) = register_diag_field ( 'ocean_model' , trim ( gotm ( n ) % name ) // '_advect_error' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , trim ( gotm ( n ) % name ) , trim ( gotm ( n ) % units ) , missing_value = missing_value , range = ( / - 1e18 , 1e18 / ) ) E: id_gotm_nn = register_diag_field ( 'ocean_model' , 'gotm_nn' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'squared buoy freq given to GOTM' , '1/s^2' , missing_value = missing_value , range = ( / - 1e18 , 1e18 / ) ) E: id_gotm_ss = register_diag_field ( 'ocean_model' , 'gotm_ss' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'squared vert shear given to GOTM' , '1/s^2' , missing_value = missing_value , range = ( / - 1e18 , 1e18 / ) ) E: id_diff_cbt_gotm = register_diag_field ( 'ocean_model' , 'diff_cbt_gotm' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusivity from GOTM' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_visc_cbt_gotm = register_diag_field ( 'ocean_model' , 'visc_cbt_gotm' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert viscosity from GOTM' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) E: id_visc_cbu_gotm = register_diag_field ( 'ocean_model' , 'visc_cbu_gotm' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'vert viscosity from GOTM' , 'm^2/sec' , missing_value = missing_value , range = ( / - 1.e5 , 1.e5 / ) ) e: id_zflux_diff ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_zflux_diff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'z-diffusive heat flux' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_vdiffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'explicit vert diffusion of heat' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_vdiffuse_impl ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_impl' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'implicit vert diffusion of heat' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_vdiffuse_k33 ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_k33' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusion of heat due to K33 from neutral diffusion' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_vdiffuse_k33_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_k33_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'vert diffusion of heat due to K33 from neutral diffusion binned to neutral density' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_vdiffuse_diff_cbt ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_diff_cbt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusion of heat due to diff_cbt' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_vdiffuse_diff_cbt_conv ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_diff_cbt_conv' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusion of heat due to diff_cbt_conv' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_vdiffuse_diff_cbt_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_diff_cbt_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'vert diffusion of heat due to diff_cbt binned to neutral density' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_vdiffuse_sbc ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_sbc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusion of heat due to surface flux' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_vdiffuse_sbc_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_sbc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'vert diffusion of heat due to surface flux binned to neutral density' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_vdiffuse_bbc ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_bbc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusion of heat due to bottom flux' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e16 , 1.e16 / ) ) e: id_vdiffuse_diss ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_diss' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dissipation of squared temp via vert diffusion' , '(Watts/m^2)^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_zflux_diff ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_zflux_diff' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'k-diffusive flux of ' // trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) e: id_vdiffuse ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'explicit vert diffusion of ' // trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) e: id_vdiffuse_impl ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_impl' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'implicit vert diffusion of ' // trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) e: id_vdiffuse_k33 ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_k33' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusion due to K33 from neutral diffusion for ' // trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) e: id_vdiffuse_k33_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_k33_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'vert diffusion due to K33 from neutral diffusion ' // trim ( t_prog ( n ) % longname ) // ' binned to neutral density' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) e: id_vdiffuse_diff_cbt ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_diff_cbt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusion due to diff_cbt for ' // trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) e: id_vdiffuse_diff_cbt_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_diff_cbt_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'vert diffusion due to diff_cbt for ' // trim ( t_prog ( n ) % longname ) // ' binned to neutral density' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) e: id_vdiffuse_diff_cbt_conv ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_diff_cbt_conv' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusion due to diff_cbt_conv for ' // trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) e: id_vdiffuse_sbc ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_sbc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusion due to surface flux for ' // trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) e: id_vdiffuse_sbc_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_sbc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'vert diffusion due to surface flux for ' // trim ( t_prog ( n ) % longname ) // ' binned to neutral density' , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) e: id_vdiffuse_bbc ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_bbc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diffusion due to bottom flux for ' // trim ( t_prog ( n ) % longname ) , trim ( t_prog ( n ) % flux_units ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) e: id_vdiffuse_diss ( n ) = register_diag_field ( 'ocean_model' , trim ( t_prog ( n ) % name ) // '_vdiffuse_diss' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dissipation of squared tracer via vert diffusion for ' // trim ( t_prog ( n ) % longname ) , '[kg/(m^2*sec)]^2' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_power_diss_back = register_diag_field ( 'ocean_model' , 'power_diss_back' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'power dissipation from prescribed background vertical diffusivity' , 'W/m^2' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) , standard_name = 'tendency_of_ocean_potential_energy_content_due_to_background' ) E: id_power_diss = register_diag_field ( 'ocean_model' , 'power_diss' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'power dissipation from vertical heat and salt diffusion' , 'W/m^2' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) , standard_name = 'tendency_of_ocean_potential_energy_content' ) E: id_diff_cbt_vmix_min = register_diag_field ( 'ocean_model' , 'diff_cbt_vmix_min' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'floored diffusivity based on minimum dissipation' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) ) E: id_diff_cbt_t_before_min = register_diag_field ( 'ocean_model' , 'diff_cbt_t_before_min' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diff_cbt(temp) before apply min dissipation step' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) ) E: id_diff_cbt_s_before_min = register_diag_field ( 'ocean_model' , 'diff_cbt_s_before_min' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'vert diff_cbt(salt) before apply min dissipation step' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) ) E: id_diff_cbt_t = register_diag_field ( 'ocean_model' , 'diff_cbt_t' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'total vert diff_cbt(temp) (w/o neutral included)' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) , standard_name = 'ocean_vertical_heat_diffusivity' ) E: id_diff_cbt_s = register_diag_field ( 'ocean_model' , 'diff_cbt_s' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'total vert diff_cbt(salt) (w/o neutral included)' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) , standard_name = 'ocean_vertical_salt_diffusivity' ) E: id_vmix_min_diss = register_diag_field ( 'ocean_model' , 'vmix_min_diss' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'floored dissipation from vmix_min scheme' , 'W/m^3' , missing_value = missing_value , range = ( / - 10.0 , 1e12 / ) ) E: id_eta_tend_diff_cbt_flx = register_diag_field ( 'ocean_model' , 'eta_tend_diff_cbt_flx' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from diff_cbt diffusive fluxes' , 'm/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_eta_tend_diff_cbt_flx_glob = register_diag_field ( 'ocean_model' , 'eta_tend_diff_cbt_flx_glob' , time % model_time , 'global mean non-Bouss steric sea level tendency from diff_cbt diffusive fluxes' , 'm/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_vfrict_expl_u = register_diag_field ( 'ocean_model' , 'vfrict_expl_u' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'explicit vert friction on u-velocity' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_vfrict_expl_v = register_diag_field ( 'ocean_model' , 'vfrict_expl_v' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'explicit vert friction on v-velocity' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_vfrict_impl_u = register_diag_field ( 'ocean_model' , 'vfrict_impl_u' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'implicit vertical u-mixing' , '(kg/m^3)*(m/s^2)' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_vfrict_impl_v = register_diag_field ( 'ocean_model' , 'vfrict_impl_v' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'implicit vertical v-mixing' , '(kg/m^3)*(m/s^2)' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_visc_cbu_diabatic = register_diag_field ( 'ocean_model' , 'visc_cbu_diabatic' , grd % vel_axes_wu ( 1 : 3 ) , time % model_time , 'vertical viscosity (w/o form drag)' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) ) E: id_visc_cbt_diabatic = register_diag_field ( 'ocean_model' , 'visc_cbt_diabatic' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'vertical viscosity (w/o form drag) on T-grid' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) ) E: id_visc_cbu_before_min = register_diag_field ( 'ocean_model' , 'visc_cbu_before_min' , grd % vel_axes_wu ( 1 : 3 ) , time % model_time , 'vertical viscosity before being boosted from a min dissipation' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) ) E: id_visc_cbu = register_diag_field ( 'ocean_model' , 'visc_cbu' , grd % vel_axes_wu ( 1 : 3 ) , time % model_time , 'total vertical viscosity' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) , standard_name = 'ocean_vertical_momentum_diffusivity' ) E: id_visc_cbt = register_diag_field ( 'ocean_model' , 'visc_cbt' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'total vertical viscosity on T-grid' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) ) E: id_bottom_power ( 1 ) = register_diag_field ( 'ocean_model' , 'bottom_power_u' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'Power dissipation to bottom drag in i-direction' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_bottom_power ( 2 ) = register_diag_field ( 'ocean_model' , 'bottom_power_v' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'Power dissipation to bottom drag in j-direction' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_wind_power ( 1 ) = register_diag_field ( 'ocean_model' , 'wind_power_u' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'Power from wind stress in i-direction' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_wind_power ( 2 ) = register_diag_field ( 'ocean_model' , 'wind_power_v' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'Power from wind stress in j-direction' , 'Watt' , missing_value = missing_value , range = ( / - 1e15 , 1e15 / ) ) E: id_neut_temp_vdiffuse = register_diag_field ( 'ocean_model' , 'neut_temp_vdiffuse' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'drhodT * vertical diffusion of temp' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_salt_vdiffuse = register_diag_field ( 'ocean_model' , 'neut_salt_vdiffuse' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'drhodS * vertical diffusion of salt' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_vdiffuse = register_diag_field ( 'ocean_model' , 'neut_rho_vdiffuse' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vertical diffusion of locally ref potrho (including stf, btf, and K33)' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_temp_vdiffuse = register_diag_field ( 'ocean_model' , 'wdian_temp_vdiffuse' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to vert diffusion of temp (including stf, btf, and K33)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_salt_vdiffuse = register_diag_field ( 'ocean_model' , 'wdian_salt_vdiffuse' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to vert diffusion of salt (including stf, btf, and K33)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_vdiffuse = register_diag_field ( 'ocean_model' , 'wdian_rho_vdiffuse' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to vert diffusion (including stf, btf, and K33)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_vdiffuse = register_diag_field ( 'ocean_model' , 'tform_rho_vdiffuse' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to vert diffusion (including stf, btf, and K33) on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_vdiffuse_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_vdiffuse_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'vertical diffusion (including stf, btf, and K33) of loc ref potrho binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_vdiffuse_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_vdiffuse_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to vert diffusion (including stf, btf, and K33) binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_vdiffuse_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_vdiffuse_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to vert diffusion (including stf, btf, and K33) binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_diff_cbt = register_diag_field ( 'ocean_model' , 'neut_rho_diff_cbt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vertical diffusion of locally ref potrho from diff_cbt' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_pot_rho_diff_cbt = register_diag_field ( 'ocean_model' , 'pot_rho_diff_cbt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vertical diffusion of depth ref potrho from diff_cbt' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_pot_rho_diff_cbt_conv = register_diag_field ( 'ocean_model' , 'pot_rho_diff_cbt_conv' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vertical diffusion of depth ref potrho from convective diff_cbt' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_diff_cbt = register_diag_field ( 'ocean_model' , 'wdian_rho_diff_cbt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport from diff_cbt' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_diff_cbt = register_diag_field ( 'ocean_model' , 'tform_rho_diff_cbt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due from diff_cbt on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_diff_cbt_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_diff_cbt_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'vertical diffusion of loc ref potrho from diff_cbt binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_diff_cbt_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_diff_cbt_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due diff_cbt binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_diff_cbt_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_diff_cbt_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform from diff_cbt as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_temp_diff_cbt = register_diag_field ( 'ocean_model' , 'neut_temp_diff_cbt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related vertical diffusion of locally ref potrho from diff_cbt' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_temp_diff_cbt = register_diag_field ( 'ocean_model' , 'wdian_temp_diff_cbt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due from diff_cbt' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_temp_diff_cbt = register_diag_field ( 'ocean_model' , 'tform_temp_diff_cbt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to diff_cbt on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_temp_diff_cbt_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_diff_cbt_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related vertical diffusion of loc ref potrho from diff_cbt binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_temp_diff_cbt_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_diff_cbt_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport from diff_cbt binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_temp_diff_cbt_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_diff_cbt_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform from diff_cbt as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_salt_diff_cbt = register_diag_field ( 'ocean_model' , 'neut_salt_diff_cbt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related vertical diffusion of locally ref potrho from diff_cbt' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_salt_diff_cbt = register_diag_field ( 'ocean_model' , 'wdian_salt_diff_cbt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due from diff_cbt' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_salt_diff_cbt = register_diag_field ( 'ocean_model' , 'tform_salt_diff_cbt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to diff_cbt on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_salt_diff_cbt_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_diff_cbt_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related vertical diffusion of loc ref potrho from diff_cbt binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_salt_diff_cbt_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_diff_cbt_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport from diff_cbt binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_salt_diff_cbt_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_diff_cbt_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform from diff_cbt as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_k33 = register_diag_field ( 'ocean_model' , 'neut_rho_k33' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'tendency of locally ref potrho from K33impl' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_pot_rho_k33 = register_diag_field ( 'ocean_model' , 'pot_rho_k33' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'tendency of depth ref potrho from K33impl' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_k33 = register_diag_field ( 'ocean_model' , 'wdian_rho_k33' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport from K33impl' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_k33 = register_diag_field ( 'ocean_model' , 'tform_rho_k33' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform from K33impl on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_k33_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_k33_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'tendency of loc ref potrho from K33impl binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_k33_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_k33_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport from K33impl binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_k33_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_k33_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform from K33impl as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_temp_k33 = register_diag_field ( 'ocean_model' , 'neut_temp_k33' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related tendency of locally ref potrho from K33impl' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_temp_k33 = register_diag_field ( 'ocean_model' , 'wdian_temp_k33' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to vert K33impl' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_temp_k33 = register_diag_field ( 'ocean_model' , 'tform_temp_k33' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to K33impl on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_temp_k33_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_k33_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related loc ref potrho tendency from K33impl binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_temp_k33_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_k33_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due to K33impl binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_temp_k33_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_k33_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to K33impl as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_salt_k33 = register_diag_field ( 'ocean_model' , 'neut_salt_k33' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related tendency of locally ref potrho from K33impl (no stf,btf)' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_salt_k33 = register_diag_field ( 'ocean_model' , 'wdian_salt_k33' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due from K33impl' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_salt_k33 = register_diag_field ( 'ocean_model' , 'tform_salt_k33' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to K33impl on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_salt_k33_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_k33_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related tendency of loc ref potrho from K33impl binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_salt_k33_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_k33_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport from K33impl binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_salt_k33_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_k33_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform from K33impl as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_vmix = register_diag_field ( 'ocean_model' , 'neut_rho_vmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vertical diffusion of locally ref potrho from diff_cbt + K33impl' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_vmix = register_diag_field ( 'ocean_model' , 'wdian_rho_vmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to vert diffusion from diff_cbt + K33impl' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_vmix = register_diag_field ( 'ocean_model' , 'tform_rho_vmix' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to vert diffuse from diff_cbt + K33impl on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_vmix_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_vmix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'vertical diffusion of loc ref potrho from from diff_cbt + K33impl binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_vmix_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_vmix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to vert diffusion from diff_cbt + K33impl binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_vmix_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_vmix_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to vert diffusion from diff_cbt + K33impl as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_diff_wave = register_diag_field ( 'ocean_model' , 'neut_rho_diff_wave' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vertical diffusion of locally ref potrho from diff_cbt_wave' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_diff_wave = register_diag_field ( 'ocean_model' , 'wdian_rho_diff_wave' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport from diff_cbt_wave' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_diff_wave = register_diag_field ( 'ocean_model' , 'tform_rho_diff_wave' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due from diff_cbt_wave on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_diff_wave_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_diff_wave_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'vertical diffusion of loc ref potrho from diff_cbt_wave binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_diff_wave_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_diff_wave_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due diff_cbt_wave binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_diff_wave_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_diff_wave_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform from diff_cbt_wave as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_temp_diff_wave = register_diag_field ( 'ocean_model' , 'neut_temp_diff_wave' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related vertical diffusion of locally ref potrho from diff_cbt_wave' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_temp_diff_wave = register_diag_field ( 'ocean_model' , 'wdian_temp_diff_wave' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due from diff_cbt_wave' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_temp_diff_wave = register_diag_field ( 'ocean_model' , 'tform_temp_diff_wave' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to diff_cbt_wave on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_temp_diff_wave_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_diff_wave_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related vertical diffusion of loc ref potrho from diff_cbt_wave binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_temp_diff_wave_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_diff_wave_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport from diff_cbt_wave binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_temp_diff_wave_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_diff_wave_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform from diff_cbt_wave as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_salt_diff_wave = register_diag_field ( 'ocean_model' , 'neut_salt_diff_wave' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related vertical diffusion of locally ref potrho from diff_cbt_wave' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_salt_diff_wave = register_diag_field ( 'ocean_model' , 'wdian_salt_diff_wave' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due from diff_cbt_wave' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_salt_diff_wave = register_diag_field ( 'ocean_model' , 'tform_salt_diff_wave' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to diff_cbt_wave on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_salt_diff_wave_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_diff_wave_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related vertical diffusion of loc ref potrho from diff_cbt_wave binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_salt_diff_wave_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_diff_wave_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport from diff_cbt_wave binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_salt_diff_wave_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_diff_wave_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform from diff_cbt_wave as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_diff_drag = register_diag_field ( 'ocean_model' , 'neut_rho_diff_drag' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vertical diffusion of locally ref potrho from diff_cbt_drag' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_diff_drag = register_diag_field ( 'ocean_model' , 'wdian_rho_diff_drag' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport from diff_cbt_drag' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_diff_drag = register_diag_field ( 'ocean_model' , 'tform_rho_diff_drag' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due from diff_cbt_drag on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_diff_drag_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_diff_drag_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'vertical diffusion of loc ref potrho from diff_cbt_drag binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_diff_drag_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_diff_drag_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due diff_cbt_drag binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_diff_drag_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_diff_drag_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform from diff_cbt_drag as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_temp_diff_drag = register_diag_field ( 'ocean_model' , 'neut_temp_diff_drag' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related vertical diffusion of locally ref potrho from diff_cbt_drag' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_temp_diff_drag = register_diag_field ( 'ocean_model' , 'wdian_temp_diff_drag' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due from diff_cbt_drag' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_temp_diff_drag = register_diag_field ( 'ocean_model' , 'tform_temp_diff_drag' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to diff_cbt_drag on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_temp_diff_drag_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_diff_drag_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related vertical diffusion of loc ref potrho from diff_cbt_drag binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_temp_diff_drag_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_diff_drag_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport from diff_cbt_drag binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_temp_diff_drag_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_diff_drag_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform from diff_cbt_drag as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_salt_diff_drag = register_diag_field ( 'ocean_model' , 'neut_salt_diff_drag' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related vertical diffusion of locally ref potrho from diff_cbt_drag' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_salt_diff_drag = register_diag_field ( 'ocean_model' , 'wdian_salt_diff_drag' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due from diff_cbt_drag' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_salt_diff_drag = register_diag_field ( 'ocean_model' , 'tform_salt_diff_drag' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to diff_cbt_drag on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_salt_diff_drag_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_diff_drag_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related vertical diffusion of loc ref potrho from diff_cbt_drag binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_salt_diff_drag_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_diff_drag_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport from diff_cbt_drag binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_salt_diff_drag_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_diff_drag_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform from diff_cbt_drag as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_diff_lee = register_diag_field ( 'ocean_model' , 'neut_rho_diff_lee' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vertical diffusion of locally ref potrho from diff_cbt_lee' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_diff_lee = register_diag_field ( 'ocean_model' , 'wdian_rho_diff_lee' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport from diff_cbt_lee' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_diff_lee = register_diag_field ( 'ocean_model' , 'tform_rho_diff_lee' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due from diff_cbt_lee on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_diff_lee_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_diff_lee_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'vertical diffusion of loc ref potrho from diff_cbt_lee binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_diff_lee_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_diff_lee_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due diff_cbt_lee binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_diff_lee_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_diff_lee_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform from diff_cbt_lee as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_temp_diff_lee = register_diag_field ( 'ocean_model' , 'neut_temp_diff_lee' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related vertical diffusion of locally ref potrho from diff_cbt_lee' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_temp_diff_lee = register_diag_field ( 'ocean_model' , 'wdian_temp_diff_lee' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due from diff_cbt_lee' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_temp_diff_lee = register_diag_field ( 'ocean_model' , 'tform_temp_diff_lee' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to diff_cbt_lee on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_temp_diff_lee_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_diff_lee_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related vertical diffusion of loc ref potrho from diff_cbt_lee binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_temp_diff_lee_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_diff_lee_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport from diff_cbt_lee binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_temp_diff_lee_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_diff_lee_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform from diff_cbt_lee as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_salt_diff_lee = register_diag_field ( 'ocean_model' , 'neut_salt_diff_lee' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related vertical diffusion of locally ref potrho from diff_cbt_lee' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_salt_diff_lee = register_diag_field ( 'ocean_model' , 'wdian_salt_diff_lee' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due from diff_cbt_lee' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_salt_diff_lee = register_diag_field ( 'ocean_model' , 'tform_salt_diff_lee' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to diff_cbt_lee on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_salt_diff_lee_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_diff_lee_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related vertical diffusion of loc ref potrho from diff_cbt_lee binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_salt_diff_lee_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_diff_lee_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport from diff_cbt_lee binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_salt_diff_lee_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_diff_lee_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform from diff_cbt_lee as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_diff_back = register_diag_field ( 'ocean_model' , 'neut_rho_diff_back' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vertical diffusion of locally ref potrho from diff_cbt_back' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_diff_back = register_diag_field ( 'ocean_model' , 'wdian_rho_diff_back' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport from diff_cbt_back' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_diff_back = register_diag_field ( 'ocean_model' , 'tform_rho_diff_back' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due from diff_cbt_back on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_diff_back_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_diff_back_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'vertical diffusion of loc ref potrho from diff_cbt_back binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_rho_diff_back_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_diff_back_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due diff_cbt_back binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_rho_diff_back_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_diff_back_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'watermass transform from diff_cbt_back as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_temp_diff_back = register_diag_field ( 'ocean_model' , 'neut_temp_diff_back' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related vertical diffusion of locally ref potrho from diff_cbt_back' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_temp_diff_back = register_diag_field ( 'ocean_model' , 'wdian_temp_diff_back' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport due from diff_cbt_back' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_temp_diff_back = register_diag_field ( 'ocean_model' , 'tform_temp_diff_back' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform due to diff_cbt_back on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_temp_diff_back_on_nrho = register_diag_field ( 'ocean_model' , 'neut_temp_diff_back_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related vertical diffusion of loc ref potrho from diff_cbt_back binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_temp_diff_back_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_temp_diff_back_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related dianeutral mass transport from diff_cbt_back binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_temp_diff_back_on_nrho = register_diag_field ( 'ocean_model' , 'tform_temp_diff_back_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'temp related watermass transform from diff_cbt_back as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_salt_diff_back = register_diag_field ( 'ocean_model' , 'neut_salt_diff_back' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related vertical diffusion of locally ref potrho from diff_cbt_back' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_salt_diff_back = register_diag_field ( 'ocean_model' , 'wdian_salt_diff_back' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport due from diff_cbt_back' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_salt_diff_back = register_diag_field ( 'ocean_model' , 'tform_salt_diff_back' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform due to diff_cbt_back on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_salt_diff_back_on_nrho = register_diag_field ( 'ocean_model' , 'neut_salt_diff_back_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related vertical diffusion of loc ref potrho from diff_cbt_back binned to neutral density' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_wdian_salt_diff_back_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_salt_diff_back_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related dianeutral mass transport from diff_cbt_back binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_tform_salt_diff_back_on_nrho = register_diag_field ( 'ocean_model' , 'tform_salt_diff_back_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'salt related watermass transform from diff_cbt_back as binned to neutral density layers' , 'kg/sec' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_neut_rho_sbc = register_diag_field ( 'ocean_model' , 'neut_rho_sbc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of local ref potrho due to surface temp and salt flux' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_pot_rho_sbc = register_diag_field ( 'ocean_model' , 'pot_rho_sbc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of depth ref potrho due to surface temp and salt flux' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_sbc = register_diag_field ( 'ocean_model' , 'wdian_rho_sbc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to surface temp and salt flux' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_sbc = register_diag_field ( 'ocean_model' , 'tform_rho_sbc' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'net surface heat and salt flux water mass transform on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_sbc_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_sbc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of local ref potrho due to surface temp and salt flux binned to neutral density classes' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_sbc_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_sbc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to surface temp and salt flux as binned to neutral density classes' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_sbc_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_sbc_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'net surface heat and salt flux water mass transformation in neutral density classes' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_sbc_temp = register_diag_field ( 'ocean_model' , 'neut_rho_sbc_temp' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of local ref potrho due to surface temp flux' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_pot_rho_sbc_temp = register_diag_field ( 'ocean_model' , 'pot_rho_sbc_temp' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of depth ref potrho due to surface temp flux' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_sbc_temp_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_sbc_temp_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of local ref potrho due to surface temp flux binned to neutral density classes' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_sbc_temp = register_diag_field ( 'ocean_model' , 'wdian_rho_sbc_temp' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to surface temp flux' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_sbc_temp_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_sbc_temp_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to surface temp flux as binned to neutral density classes' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_sbc_temp = register_diag_field ( 'ocean_model' , 'tform_rho_sbc_temp' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'net surface heat flux water mass transformation (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_sbc_temp_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_sbc_temp_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'net surface heat flux water mass transformation in neutral density classes' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_sbc_salt = register_diag_field ( 'ocean_model' , 'neut_rho_sbc_salt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of local ref potrho due to surface salt flux' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_pot_rho_sbc_salt = register_diag_field ( 'ocean_model' , 'pot_rho_sbc_salt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of depth ref potrho due to surface salt flux' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_sbc_salt_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_sbc_salt_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of local ref potrho due to surface salt flux binned to neutral density classes' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_sbc_salt = register_diag_field ( 'ocean_model' , 'wdian_rho_sbc_salt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to surface salt flux' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_sbc_salt_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_sbc_salt_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to surface salt flux as binned to neutral density classes' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_sbc_salt = register_diag_field ( 'ocean_model' , 'tform_rho_sbc_salt' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'net surface salt flux water mass transformation (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_sbc_salt_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_sbc_salt_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'net surface salt flux water mass transformation in neutral density classes' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_bbc_temp = register_diag_field ( 'ocean_model' , 'neut_rho_bbc_temp' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of local ref potrho due to bottom geothermal heat flux' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_pot_rho_bbc_temp = register_diag_field ( 'ocean_model' , 'pot_rho_bbc_temp' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'update of depth ref potrho due to bottom geothermal heat flux' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_bbc_temp = register_diag_field ( 'ocean_model' , 'wdian_rho_bbc_temp' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to bottom geothermal heat flux' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_bbc_temp = register_diag_field ( 'ocean_model' , 'tform_rho_bbc_temp' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'watermass transform due to bottom geothermal heat flux on levels (pre-layer binning)' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_bbc_temp_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_bbc_temp_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'bottom geothermal heat flux water mass transformation in neutral density classes' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_neut_rho_bbc_temp_on_nrho = register_diag_field ( 'ocean_model' , 'neut_rho_bbc_temp_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'update of local ref potrho due to bottom geothermal heat flux binned to neutral density classes' , '(kg/m^3)/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_wdian_rho_bbc_temp_on_nrho = register_diag_field ( 'ocean_model' , 'wdian_rho_bbc_temp_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'dianeutral mass transport due to bottom heat flux as binned to neutral density classes' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_eta_tend_diff_cbt_tend = register_diag_field ( 'ocean_model' , 'eta_tend_diff_cbt_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from diff_cbt diffusion tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_eta_tend_diff_cbt_tend_glob = register_diag_field ( 'ocean_model' , 'eta_tend_diff_cbt_tend_glob' , time % model_time , 'non-Bouss steric sea level tendency from diff_cbt diffusion tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_eta_tend_k33_tend = register_diag_field ( 'ocean_model' , 'eta_tend_k33_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from k33 diffusion tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_eta_tend_k33_tend_glob = register_diag_field ( 'ocean_model' , 'eta_tend_k33_tend_glob' , time % model_time , 'non-Bouss steric sea level tendency from k33 diffusion tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_eta_tend_diff_wave_tend = register_diag_field ( 'ocean_model' , 'eta_tend_diff_wave_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from diff_cbt_wave diffusion tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_eta_tend_diff_wave_tend_glob = register_diag_field ( 'ocean_model' , 'eta_tend_diff_wave_tend_glob' , time % model_time , 'non-Bouss steric sea level tendency from diff_cbt_wave diffusion tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_eta_tend_diff_drag_tend = register_diag_field ( 'ocean_model' , 'eta_tend_diff_drag_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from diff_cbt_drag diffusion tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_eta_tend_diff_drag_tend_glob = register_diag_field ( 'ocean_model' , 'eta_tend_diff_drag_tend_glob' , time % model_time , 'non-Bouss steric sea level tendency from diff_cbt_drag diffusion tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_eta_tend_diff_lee_tend = register_diag_field ( 'ocean_model' , 'eta_tend_diff_lee_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from diff_cbt_lee diffusion tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_eta_tend_diff_lee_tend_glob = register_diag_field ( 'ocean_model' , 'eta_tend_diff_lee_tend_glob' , time % model_time , 'non-Bouss steric sea level tendency from diff_cbt_lee diffusion tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_eta_tend_diff_back_tend = register_diag_field ( 'ocean_model' , 'eta_tend_diff_back_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from diff_cbt_back diffusion tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_eta_tend_diff_back_tend_glob = register_diag_field ( 'ocean_model' , 'eta_tend_diff_back_tend_glob' , time % model_time , 'non-Bouss steric sea level tendency from diff_cbt_back diffusion tendency' , 'm/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_form_drag_aiki_u = register_diag_field ( 'ocean_model' , 'form_drag_aiki_u' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'Aiki i-component form stress' , 'N/m2' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_form_drag_aiki_v = register_diag_field ( 'ocean_model' , 'form_drag_aiki_v' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'Aiki j-component form stress' , 'N/m2' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_form_drag_aiki_power = register_diag_field ( 'ocean_model' , 'form_drag_aiki_power' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Power sink from Aiki form drag' , 'Watt' , missing_value = missing_value , range = ( / - 1e16 , 1e16 / ) ) E: id_form_drag_aiki_coeff = register_diag_field ( 'ocean_model' , 'form_drag_aiki_coeff' , grd % vel_axes_wu ( 1 : 3 ) , time % model_time , 'dimensionless form scaling coefficient for Aiki scheme' , 'dimensionless' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) ) E: id_n_squared = register_diag_field ( 'ocean_model' , 'N_sqrd_gbatch' , grd % vel_axes_wu ( 1 : 3 ) , time % model_time , 'N^2 on T-cell bottom for Gbatch form drag' , 'sec^-2' , missing_value = missing_value , range = ( / - 1.e2 , 1e8 / ) ) E: id_f2overn2 = register_diag_field ( 'ocean_model' , 'f2overN2' , grd % vel_axes_wu ( 1 : 3 ) , time % model_time , '(f/N)**2 on U-cell bottom' , 'dimensionless' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_f2overnb2 = register_diag_field ( 'ocean_model' , 'f2overNb2' , grd % vel_axes_wu ( 1 : 2 ) , time % model_time , '(f/N)**2 on U-cell at base of surf mixed layer' , 'sec^2' , missing_value = missing_value , range = ( / - 1.0 , 1e6 / ) ) E: id_visc_cbu_form_drag_u = register_diag_field ( 'ocean_model' , 'visc_cbu_form_drag_u' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'vertical viscosity from form drag on u-velocity component' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) , standard_name = 'ocean_vertical_momentum_diffusivity_due_to_form_drag' ) E: id_visc_cbu_form_drag_v = register_diag_field ( 'ocean_model' , 'visc_cbu_form_drag_v' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'vertical viscosity from form drag on v-velocity component' , 'm^2/s' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) ) E: id_form_drag_velocity_u = register_diag_field ( 'ocean_model' , 'form_drag_velocity_u' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'eddy induced i-velocity from Gbatch form drag' , 'm/s' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_form_drag_velocity_v = register_diag_field ( 'ocean_model' , 'form_drag_velocity_v' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'eddy induced j-velocity from Gbatch form drag' , 'm/s' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_form_drag_velocity_fu = register_diag_field ( 'ocean_model' , 'form_drag_velocity_fu' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'f * eddy induced i-velocity from Gbatch form drag' , 'm/s' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_form_drag_velocity_fv = register_diag_field ( 'ocean_model' , 'form_drag_velocity_fv' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'f * eddy induced j-velocity from Gbatch form drag' , 'm/s' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_ksurf_blayer_form_drag = register_diag_field ( 'ocean_model' , 'ksurf_blayer_form_drag' , grd % vel_axes_uv ( 1 : 2 ) , time % model_time , 'k-index at the base of the boundary layer for GBatch form drag' , 'unitless' , missing_value = missing_value , range = ( / - 10.0 , 1e10 / ) ) E: id_surface_blayer_form_drag = register_diag_field ( 'ocean_model' , 'surface_blayer_form_drag' , grd % vel_axes_uv ( 1 : 2 ) , time % model_time , 'U-cell depth of surface boundary layer used in Gbatch form drag' , 'm' , missing_value = missing_value , range = ( / - 10.0 , 1e10 / ) ) e: obc % bound ( m ) % id_ctrop = register_diag_field ( 'ocean_model' , 'ctrop_p_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xt , obc % bound ( m ) % id_yt / ) , time % model_time , 'barotr phase speed on open bounds' , 'm/s' , missing_value = missing_value , range = ( / - 1.e8 , 1.e8 / ) ) e: obc % bound ( m ) % id_eta_data = register_diag_field ( 'ocean_model' , 'eta_data_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xt , obc % bound ( m ) % id_yt / ) , time % model_time , 'external sea level data on open bounds' , 'm' , missing_value = missing_value , range = ( / - 1.e8 , 1.e8 / ) ) e: obc % bound ( m ) % id_rel_coef = register_diag_field ( 'ocean_model' , 'rel_coeff_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xt , obc % bound ( m ) % id_yt / ) , time % model_time , 'relaxation coefficient' , 'none' , missing_value = missing_value , range = ( / - 1.e8 , 1.e8 / ) ) E: id_hadv_u = register_diag_field ( 'ocean_model' , 'hadv_u' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'Thickness and rho wghtd horz advection of u' , '(kg/m^3)*(m^2/s^2)' , missing_value = - 1e10 , range = ( / - 1e10 , 1e10 / ) ) E: id_hadv_v = register_diag_field ( 'ocean_model' , 'hadv_v' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'Thickness and rho wghtd horz advection of v' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_vadv_u = register_diag_field ( 'ocean_model' , 'vadv_u' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'Thickness and rho wghtd vert advection of u' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_vadv_v = register_diag_field ( 'ocean_model' , 'vadv_v' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'Thickness and rho wghtd vert advection of v' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_surf_accel ( 1 ) = register_diag_field ( 'ocean_model' , 'surf_accel_u' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'uh-forcing from fresh water' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_surf_accel ( 2 ) = register_diag_field ( 'ocean_model' , 'surf_accel_v' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'vh-forcing from fresh water' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_pme_u = register_diag_field ( 'ocean_model' , 'pme_u' , grd % vel_axes_uv ( 1 : 2 ) , time % model_time , 'pme on u-cell' , '(kg/m^3)*(m/s)' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_river_u = register_diag_field ( 'ocean_model' , 'river_u' , grd % vel_axes_uv ( 1 : 2 ) , time % model_time , 'river on u-cell' , '(kg/m^3)*(m/s)' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_drag_coeff = register_diag_field ( 'ocean_model' , 'drag_coeff' , grd_axes ( 1 : 2 ) , time % model_time , 'Dimensionless bottom drag coefficient' , 'dimensionless' , missing_value = missing_value , range = ( / - 1.0 , 1.e3 / ) ) E: id_gamma_bmf = register_diag_field ( 'ocean_model' , 'gamma_bmf' , grd_axes ( 1 : 2 ) , time % model_time , 'Bottom drag factor rho0*cdbot*uvmag' , 'kg/(m^2 sec)' , missing_value = missing_value , range = ( / - 1.0 , 1.e12 / ) ) E: id_bmf_u = register_diag_field ( 'ocean_model' , 'bmf_u' , grd_axes ( 1 : 2 ) , time % model_time , 'Bottom u-stress via bottom drag' , 'N/m^2' , missing_value = missing_value , range = ( / - 1.0 , 1.e2 / ) ) E: id_bmf_v = register_diag_field ( 'ocean_model' , 'bmf_v' , grd_axes ( 1 : 2 ) , time % model_time , 'Bottom v-stress via bottom drag' , 'N/m^2' , missing_value = missing_value , range = ( / - 1.0 , 1.e2 / ) ) E: id_eta_tend_geoheat = register_diag_field ( 'ocean_model' , 'eta_tend_geoheat' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from geothermal heating' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_geoheat_glob = register_diag_field ( 'ocean_model' , 'eta_tend_geoheat_glob' , time % model_time , 'non-Bouss steric sea level tendency from geothermal heating' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_cur_wav_dr = register_diag_field ( 'ocean_model' , 'current_wave_stress' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'combined current wave bottom stress' , 'N/m^2' , missing_value = missing_value , range = ( / - 1.0 , 1.e3 / ) ) E: id_wave_s = register_diag_field ( 'ocean_model' , 'wave_s' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'wave skin friction velocity' , 'm/s' , missing_value = missing_value , range = ( / - 1.0 , 1.e3 / ) ) E: id_wave_u = register_diag_field ( 'ocean_model' , 'wave_u' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'wave friction velocity' , 'm/s' , missing_value = missing_value , range = ( / - 1.0 , 1.e3 / ) ) E: id_iter = register_diag_field ( 'ocean_model' , 'iter' , grd_axes ( 1 : 2 ) , time % model_time , 'number of ustar iterations' , 'm/s' , missing_value = missing_value , range = ( / 0.0 , 1.e3 / ) ) E: id_dzu = register_diag_field ( 'ocean_model' , 'dzu' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'u-cell thickness' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) E: id_dzwu = register_diag_field ( 'ocean_model' , 'dzwu' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'thickness between velocity points' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) E: id_dzt = register_diag_field ( 'ocean_model' , 'dzt' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 't-cell thickness' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) , standard_name = 'cell_thickness' ) E: id_dzten ( 1 ) = register_diag_field ( 'ocean_model' , 'dzteast' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'thickness at east face of T-cell' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) E: id_dzten ( 2 ) = register_diag_field ( 'ocean_model' , 'dztnorth' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'thickness at north face of T-cell' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) E: id_dzt_pbc = register_diag_field ( 'ocean_model' , 'dzt_pbc' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'ocean bottom t-cell total thickness' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) E: id_dztlo = register_diag_field ( 'ocean_model' , 'dztlo' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'distance from t-cell center to t-cell bottom' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) E: id_dztup = register_diag_field ( 'ocean_model' , 'dztup' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'distance from t-cell center to t-cell top' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) E: id_dstlo = register_diag_field ( 'ocean_model' , 'dstlo' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 's-distance from t-cell center to t-cell bottom' , 's-units' , missing_value = missing_value , range = ( / - 1e5 , 1e5 / ) ) E: id_dstup = register_diag_field ( 'ocean_model' , 'dstup' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 's-distance from t-cell center to t-cell top' , 's-units' , missing_value = missing_value , range = ( / - 1e5 , 1e5 / ) ) E: id_dzwt = register_diag_field ( 'ocean_model' , 'dzwt' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'thickness between tracer points' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) E: id_dst = register_diag_field ( 'ocean_model' , 'dst' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'ocean s-cell thickness' , 's-units' , missing_value = missing_value , range = ( / - 1e5 , 1e5 / ) ) E: id_geodepth_zt = register_diag_field ( 'ocean_model' , 'geodepth_zt' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'ocean t-cell depth relative to z=0' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1.e8 / ) ) e: id_geodepth_zwt = register_diag_field ( 'ocean_model' , 'geodepth_zwt' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'ocean bottom of t-cell depth relative to z=0' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1.e8 / ) ) e: id_dzul = register_diag_field ( 'ocean_model' , 'dzuL' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'L system contribution to u-cell thickness' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) e: id_dzue = register_diag_field ( 'ocean_model' , 'dzuE' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'E system contribution to u-cell thickness' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) e: id_dzwul = register_diag_field ( 'ocean_model' , 'dzwuL' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'L system contribution to thickness between velocity points' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) e: id_dzwue = register_diag_field ( 'ocean_model' , 'dzwuE' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'E system contribution to thickness between velocity points' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) e: id_dztl = register_diag_field ( 'ocean_model' , 'dztL' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'L system contribution to t-cell thickness' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) e: id_dzte = register_diag_field ( 'ocean_model' , 'dztE' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'E system contribution to t-cell thickness' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) e: id_dztlol = register_diag_field ( 'ocean_model' , 'dztloL' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'L system contribution to distance from t-cell center to t-cell bottom' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) e: id_dztloe = register_diag_field ( 'ocean_model' , 'dztloE' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'E system contribution to distance from t-cell center to t-cell bottom' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) e: id_dztupl = register_diag_field ( 'ocean_model' , 'dztupL' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'L system contribution to distance from t-cell center to t-cell top' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) e: id_dztupe = register_diag_field ( 'ocean_model' , 'dztupE' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'E system contribution to distance from t-cell center to t-cell top' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) e: id_dzwtl = register_diag_field ( 'ocean_model' , 'dzwtL' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'L system contribution to thickness between tracer points' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) e: id_dzwte = register_diag_field ( 'ocean_model' , 'dzwtE' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'E system contribution to thickness between tracer points' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e5 / ) ) e: id_rho_dzul = register_diag_field ( 'ocean_model' , 'rho_dzuL' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'L system contribution to u-cell rho*thickness' , '(kg/m^3)*m' , missing_value = missing_value , range = ( / - 1.e8 , 1.e8 / ) ) e: id_rho_dzue = register_diag_field ( 'ocean_model' , 'rho_dzuE' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'E system contribution to u-cell rho*thickness' , '(kg/m^3)*m' , missing_value = missing_value , range = ( / - 1.e8 , 1.e8 / ) ) e: id_rho_dztl = register_diag_field ( 'ocean_model' , 'rho_dztL' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'L system contribution to t-cell rho*thickness' , '(kg/m^3)*m' , missing_value = missing_value , range = ( / - 1.e8 , 1.e8 / ) ) e: id_rho_dzte = register_diag_field ( 'ocean_model' , 'rho_dztE' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'E system contribution to t-cell rho*thickness' , '(kg/m^3)*m' , missing_value = missing_value , range = ( / - 1.e8 , 1.e8 / ) ) e: id_mass_ue = register_diag_field ( 'ocean_model' , 'mass_uE' , grid % vel_axes_uv ( 1 : 2 ) , time % model_time , 'E system contribution to mass per area on C-cell column' , 'kg/m^2' , missing_value = missing_value , range = ( / - 1e1 , 1e8 / ) ) e: id_depth_zt = register_diag_field ( 'ocean_model' , 'depth_zt' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'ocean t-cell depth relative to z=0' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1.e8 / ) ) e: id_depth_st = register_diag_field ( 'ocean_model' , 'depth_st' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'ocean t-cell depth relative to z=0' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1.e10 / ) ) e: id_depth_swt = register_diag_field ( 'ocean_model' , 'depth_swt' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'ocean t-cell bottom relative to z=0' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1.e10 / ) ) e: id_depth_zwt = register_diag_field ( 'ocean_model' , 'depth_zwt' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'depth to t-cell bottom relative to z=0' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1.e10 / ) ) e: id_depth_zu = register_diag_field ( 'ocean_model' , 'depth_zu' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'ocean u-cell depth relative to z=0' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1.e10 / ) ) e: id_depth_zwu = register_diag_field ( 'ocean_model' , 'depth_zwu' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'depth to ocean u-cell bottom reative to z=0' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1.e10 / ) ) e: id_depth_zt = register_diag_field ( 'ocean_model' , 'depth_zt' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'ocean t-cell depth relative to column top' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1.e10 / ) ) e: id_depth_st = register_diag_field ( 'ocean_model' , 'depth_st' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'ocean t-cell s-depth' , 's-units' , missing_value = missing_value , range = ( / - 1e8 , 1.e8 / ) ) e: id_depth_swt = register_diag_field ( 'ocean_model' , 'depth_swt' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'ocean t-cell bottom s-depth' , 's-units' , missing_value = missing_value , range = ( / - 1e8 , 1.e8 / ) ) e: id_depth_zwt = register_diag_field ( 'ocean_model' , 'depth_zwt' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'depth to t-cell bottom relative to column top' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1.e10 / ) ) e: id_depth_zu = register_diag_field ( 'ocean_model' , 'depth_zu' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'ocean u-cell depth relative to column top' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1.e10 / ) ) e: id_depth_zwu = register_diag_field ( 'ocean_model' , 'depth_zwu' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'depth to ocean u-cell bottom reative to column top' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1.e10 / ) ) E: id_dzt_dst = register_diag_field ( 'ocean_model' , 'dzt_dst' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'ocean t-cell specific thickness' , 'm/s-coordinate' , missing_value = missing_value , range = ( / - 1.e8 , 1.e8 / ) ) E: id_rho_dzu = register_diag_field ( 'ocean_model' , 'rho_dzu' , grid % vel_axes_uv ( 1 : 3 ) , time % model_time , 'u-cell rho*thickness' , '(kg/m^3)*m' , missing_value = missing_value , range = ( / - 1.e8 , 1.e8 / ) ) E: id_rho_dzt = register_diag_field ( 'ocean_model' , 'rho_dzt' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 't-cell rho*thickness' , '(kg/m^3)*m' , missing_value = missing_value , range = ( / - 1.e8 , 1.e8 / ) , standard_name = 'sea_water_mass_per_unit_area' ) E: id_rho_dzten ( 1 ) = register_diag_field ( 'ocean_model' , 'rho_dzteast' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 't-cell rho*thickness at east face of T-cell' , '(kg/m^3)*m' , missing_value = missing_value , range = ( / - 1.e8 , 1.e8 / ) ) E: id_rho_dzten ( 2 ) = register_diag_field ( 'ocean_model' , 'rho_dztnorth' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 't-cell rho*thickness at north face of T-cell' , '(kg/m^3)*m' , missing_value = missing_value , range = ( / - 1.e8 , 1.e8 / ) ) E: id_mass_u = register_diag_field ( 'ocean_model' , 'mass_u' , grid % vel_axes_uv ( 1 : 2 ) , time % model_time , 'mass per area on C-cell column' , 'kg/m^2' , missing_value = missing_value , range = ( / - 1e1 , 1e8 / ) ) E: id_mass_en ( 1 ) = register_diag_field ( 'ocean_model' , 'mass_en1' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'vertical sum rho_dzten(1)' , 'kg/m^2' , missing_value = missing_value , range = ( / - 1e1 , 1e8 / ) ) E: id_mass_en ( 2 ) = register_diag_field ( 'ocean_model' , 'mass_en2' , grid % tracer_axes ( 1 : 2 ) , time % model_time , 'vertical sum rho_dzten(2)' , 'kg/m^2' , missing_value = missing_value , range = ( / - 1e1 , 1e8 / ) ) E: id_thicku = register_diag_field ( 'ocean_model' , 'thicku' , grid % vel_axes_uv ( 1 : 2 ) , time % model_time , 'thickness from z=eta_u to z=-H of U-cell column' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e8 / ) ) E: id_thicken ( 1 ) = register_diag_field ( 'ocean_model' , 'thicken1' , grid % vel_axes_u ( 1 : 2 ) , time % model_time , 'vertical sum of dzten(1)' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e8 / ) ) E: id_thicken ( 2 ) = register_diag_field ( 'ocean_model' , 'thicken2' , grid % vel_axes_v ( 1 : 2 ) , time % model_time , 'vertical sum of dzten(2)' , 'm' , missing_value = missing_value , range = ( / - 1e1 , 1e8 / ) ) E: id_rho_dzt_tendency = register_diag_field ( 'ocean_model' , 'rho_dzt_tendency' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'rho_dzt_tendency' , '(kg/m^3)*(m/s)' , missing_value = missing_value , range = ( / - 1e8 , 1e8 / ) ) e: id_mass_t = register_diag_field ( 'ocean_model' , 'mass_t' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'ocean t-cell volume times rho0' , 'kg' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_mass_tendency = register_diag_field ( 'ocean_model' , 'mass_tendency' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'tendency for ocean t-cell volume times rho0' , 'kg/s' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_mass_t = register_diag_field ( 'ocean_model' , 'mass_t' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'ocean t-cell mass' , 'kg' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_mass_tendency = register_diag_field ( 'ocean_model' , 'mass_tendency' , grid % tracer_axes ( 1 : 3 ) , time % model_time , 'tendency for ocean t-cell mass' , 'kg/s' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_sea_level = register_diag_field ( 'ocean_model' , 'sea_level' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'effective sea level (eta_t + patm/(rho0*g)) on T cells' , 'meter' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) , standard_name = 'sea_surface_height_above_geoid' ) E: id_sea_level_sq = register_diag_field ( 'ocean_model' , 'sea_level_sq' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'square of effective sea level (eta_t + patm/(rho0*g)) on T cells' , 'm^2' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) , standard_name = 'square_of_sea_surface_height_above_geoid' ) E: id_eta_t_mod = register_diag_field ( 'ocean_model' , 'eta_t_mod' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'surface height on T cells from modified diagnostic' // trim ( model_type ) , 'meter' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_eta_t = register_diag_field ( 'ocean_model' , 'eta_t' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'surface height on T cells' // trim ( model_type ) , 'meter' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_eta_t_sq = register_diag_field ( 'ocean_model' , 'eta_t_sq' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'square of surface height on T cells' // trim ( model_type ) , 'm^2' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_eta_t_bar = register_diag_field ( 'ocean_model' , 'eta_t_bar' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'surface height on T cells averaged over bar loop' , 'meter' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_deta_dt = register_diag_field ( 'ocean_model' , 'deta_dt' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'tendency for eta_t' , 'm/s' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_eta_u = register_diag_field ( 'ocean_model' , 'eta_u' , grd % vel_axes_uv ( 1 : 2 ) , time % model_time , 'surface height on U cells' , 'meter' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_pbot_u = register_diag_field ( 'ocean_model' , 'pbot_u' , grd % vel_axes_uv ( 1 : 2 ) , time % model_time , 'bottom pressure on U cells' , 'dbar' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_pbot_t = register_diag_field ( 'ocean_model' , 'pbot_t' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'bottom pressure on T cells' // trim ( model_type ) , 'dbar' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) , standard_name = 'sea_water_pressure_at_sea_floor' ) E: id_anompb = register_diag_field ( 'ocean_model' , 'anompb' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'T-cell bottom pressure - rho0*grav*ht' , 'dbar' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_anompb_bt = register_diag_field ( 'ocean_model' , 'anompb_bt' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'pbot_t - rho0*grav*ht at itime=2 in barotropic loop' , 'dbar' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_dpbot_dt = register_diag_field ( 'ocean_model' , 'dpbot_dt' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'tendency for pbot on T cells' , 'Pa/s' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_patm_t = register_diag_field ( 'ocean_model' , 'patm_t' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'applied pressure on T cells' , 'Pa' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) , standard_name = 'sea_water_pressure_at_sea_water_surface' ) E: id_patm_u = register_diag_field ( 'ocean_model' , 'patm_u' , grd % vel_axes_uv ( 1 : 2 ) , time % model_time , 'applied pressure on U cells' , 'Pa' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_patm_for_sea_lev = register_diag_field ( 'ocean_model' , 'patm_for_sea_lev' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'applied pressure used to compute sea level for sea ice dynamics' , 'Pa' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_sea_lev_for_coupler = register_diag_field ( 'ocean_model' , 'sea_lev_for_coupler' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'sea level passed to coupler for use in computing sea ice dynamics' , 'm' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_dpatm_dt = register_diag_field ( 'ocean_model' , 'dpatm_dt' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'tendency for patm on T cells' , 'Pa/s' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_ps = register_diag_field ( 'ocean_model' , 'ps' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'surf+atmos pressure' , 'Pascal' , missing_value = missing_value , range = ( / - 1e5 , 1e5 / ) ) E: id_psx = register_diag_field ( 'ocean_model' , 'psx' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'zonal surf pressure gradient' , 'Pa/m' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_psy = register_diag_field ( 'ocean_model' , 'psy' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'meridional surf pressure gradient' , 'Pa/m' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_eta_t_bt = register_diag_field ( 'ocean_model' , 'eta_t_bt' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'surface height on T cells w/i barotropic loop' , 'meter' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_udrho_bt = register_diag_field ( 'ocean_model' , 'udrho_bt' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'depth and density weighted u sampled from b/t loop' , '(kg/m^3)*m^2/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_vdrho_bt = register_diag_field ( 'ocean_model' , 'vdrho_bt' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'depth and density weighted v sampled from b/t loop' , '(kg/m^3)*m^2/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_psx_bt = register_diag_field ( 'ocean_model' , 'psx_bt' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'zonal surf pressure gradient sampled from b/t loop' , 'Pa/m' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_psy_bt = register_diag_field ( 'ocean_model' , 'psy_bt' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'meridional surf pressure gradient sampled from b/t loop' , 'Pa/m' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_eta_t_bt1 = register_diag_field ( 'ocean_model' , 'eta_t_bt1' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'surface height on T cells from fstau=1 in barotropic loop' , 'meter' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_anompb_bt1 = register_diag_field ( 'ocean_model' , 'anompb_bt1' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'pbot_t - rho0*grav*ht at itime=1 in barotropic loop' , 'dbar' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_udrho_bt1 = register_diag_field ( 'ocean_model' , 'udrho_bt1' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'depth and density weighted u sampled from fstau=1 in b/t loop' , '(kg/m^3)*m^2/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_vdrho_bt1 = register_diag_field ( 'ocean_model' , 'vdrho_bt1' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'depth and density weighted v sampled from fstau=1 in b/t loop' , '(kg/m^3)*m^2/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_psx_bt1 = register_diag_field ( 'ocean_model' , 'psx_bt1' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'zonal surf pressure gradient sampled from fstau=1 in b/t loop' , 'Pa/m' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_psy_bt1 = register_diag_field ( 'ocean_model' , 'psy_bt1' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'meridional surf pressure gradient sampled from fstau=1 in b/t loop' , 'Pa/m' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_pb = register_diag_field ( 'ocean_model' , 'pb' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'effective bottom pressure ' , 'Pa' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_grad_anompbx = register_diag_field ( 'ocean_model' , 'grad_anompbx' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'zonal bottom pressure force' , 'Pa/m' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_grad_anompby = register_diag_field ( 'ocean_model' , 'grad_anompby' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'meridional bottom pressure force' , 'Pa/m' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_urhod = register_diag_field ( 'ocean_model' , 'urhod' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'depth and density weighted u' , '(kg/m^3)*m^2/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_vrhod = register_diag_field ( 'ocean_model' , 'vrhod' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'depth and density weighted v' , '(kg/m^3)*m^2/s' , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_psiu = register_diag_field ( 'ocean_model' , 'psiu' , grd % tracer_axes_flux_x ( 1 : 2 ) , time % model_time , 'quasi-barotropic strmfcn psiu (compatible with tx_trans)' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) , standard_name = 'ocean_barotropic_mass_streamfunction' ) E: id_psiv = register_diag_field ( 'ocean_model' , 'psiv' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'quasi-barotropic strmfcn psiv (compatible with ty_trans)' , trim ( transport_dims ) , missing_value = missing_value , range = ( / - 1e20 , 1e20 / ) ) E: id_conv_rho_ud_t = register_diag_field ( 'ocean_model' , 'conv_rho_ud_t' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'convergence rho*ud on T cells' , '(kg/m^3)*(m/s)' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_eta_smoother = register_diag_field ( 'ocean_model' , 'eta_smoother' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'surface smoother applied to eta' , 'm/s' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_pbot_smoother = register_diag_field ( 'ocean_model' , 'pbot_smooth' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'bottom smoother applied to bottom pressure' , 'dbar/s' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_smooth_mask = register_diag_field ( 'ocean_model' , 'smooth_mask' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'mask for eta/pbot smoothing' , 'dimensionless' , missing_value = missing_value , range = ( / - 1e1 , 1e1 / ) ) E: id_ke_bt = register_diag_field ( 'ocean_model' , 'ke_bt' , time % model_time , 'barotropic ke' , '10^-15 joules' , missing_value = missing_value , range = ( / - 10.0 , 1000.0 / ) ) E: id_pe_bt = register_diag_field ( 'ocean_model' , 'pe_bt' , time % model_time , 'barotropic pe' , '10^-15 joules' , missing_value = missing_value , range = ( / - 10.0 , 1000.0 / ) ) E: id_pme_total = register_diag_field ( 'ocean_model' , 'pme_total' , time % model_time , 'mass pme added over dtuv time' , 'kg' , missing_value = missing_value , range = ( / - 1e18 , 1e18 / ) ) E: id_river_total = register_diag_field ( 'ocean_model' , 'river_total' , time % model_time , 'mass river added over dtuv time' , 'kg' , missing_value = missing_value , range = ( / - 10.0 , 1e18 / ) ) E: id_etat_avg = register_diag_field ( 'ocean_model' , 'etat_avg' , time % model_time , 'area averaged eta_t' , 'meter' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_eta_global = register_diag_field ( 'ocean_model' , 'eta_global' , time % model_time , 'global ave eta_t plus patm_t/(g*rho0)' , 'meter' , missing_value = missing_value , range = ( / - 1e4 , 1e4 / ) ) E: id_mass_total = register_diag_field ( 'ocean_model' , 'mass_total' , time % model_time , 'total ocean mass' , 'kg' , missing_value = missing_value , range = ( / 0.0 , 1e12 / ) ) E: id_forcing_u_bt = register_diag_field ( 'ocean_model' , 'forcing_u_bt' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'i-forcing of barotropic system, including smf and bmf' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_forcing_v_bt = register_diag_field ( 'ocean_model' , 'forcing_v_bt' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'j-forcing of barotropic system, including smf and bmf' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_nonlin_forcing_u_bt = register_diag_field ( 'ocean_model' , 'nonlin_forcing_u_bt' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'i-forcing of barotropic system, excluding smf and bmf' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_nonlin_forcing_v_bt = register_diag_field ( 'ocean_model' , 'nonlin_forcing_v_bt' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'j-forcing of barotropic system, excluding smf and bmf' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_ext_mode_source = register_diag_field ( 'ocean_model' , 'ext_mode_source' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'vertically integrated mass source on T cells' , '(kg/m^3)*(m/s)' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_eta_t_tendency = register_diag_field ( 'ocean_model' , 'eta_t_tendency' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'tendency for eta_t over a time step' , 'm/s' , missing_value = missing_value , range = ( / - 1e4 , 1e4 / ) ) E: id_udrho_bt_lap = register_diag_field ( 'ocean_model' , 'udrho_bt_lap' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'laplacian friction to i-component udrho on barotropic time step' , '(m^2/s^2)*(kg/m^3)' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_udrho_bt_bih = register_diag_field ( 'ocean_model' , 'udrho_bt_bih' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'biharmonic friction to i-component udrho on barotropic time step' , '(m^2/s^2)*(kg/m^3)' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_udrho_lap = register_diag_field ( 'ocean_model' , 'udrho_lap' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'laplacian friction to i-component udrho on baroclinic time step' , '(m^2/s^2)*(kg/m^3)' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_udrho_bih = register_diag_field ( 'ocean_model' , 'udrho_bih' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'biharmonic friction to i-component udrho on baroclinic time step' , '(m^2/s^2)*(kg/m^3)' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_vdrho_bt_lap = register_diag_field ( 'ocean_model' , 'vdrho_bt_lap' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'laplacian friction to j-component vdrho on barotropic time step' , '(m^2/s^2)*(kg/m^3)' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_vdrho_bt_bih = register_diag_field ( 'ocean_model' , 'vdrho_bt_bih' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'biharmonic friction to j-component vdrho on barotropic time step' , '(m^2/s^2)*(kg/m^3)' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_vdrho_lap = register_diag_field ( 'ocean_model' , 'vdrho_lap' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'laplacian friction to j-component vdrho on baroclinic time step' , '(m^2/s^2)*(kg/m^3)' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_vdrho_bih = register_diag_field ( 'ocean_model' , 'vdrho_bih' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'biharmonic friction to j-component vdrho on baroclinic time step' , '(m^2/s^2)*(kg/m^3)' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_rhobarz = register_diag_field ( 'ocean_model' , 'rhobarz' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'vertically averaged in-situ density' , 'kg/m^3' , missing_value = missing_value , range = ( / - 1e1 , 1e6 / ) ) E: id_rhoavg = register_diag_field ( 'ocean_model' , 'rhoavg' , time % model_time , 'global averaged in-situ density from ocean_barotropic_mod' , 'kg/m^3' , missing_value = missing_value , range = ( / - 1e1 , 1e6 / ) ) e: id_pme_velocity = register_diag_field ( 'ocean_model' , 'pme_velocity' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'net (precip-evap)(kg/(m2*sec) into ocean, divided by 1000kg/m3' , 'm/sec' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) e: id_conv_ud_pred_bt1 = register_diag_field ( 'ocean_model' , 'conv_ud_pred_bt1' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'dt*gamma*convergence of (udrho_bt,vdrho_bt) at fstau=1 for pred step' , 'dbar' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) e: id_conv_ud_corr_bt1 = register_diag_field ( 'ocean_model' , 'conv_ud_corr_bt1' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'dt*convergence of (udrho_bt,vdrho_bt) at fstau=1 for corr step' , 'dbar' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) e: id_conv_ud_pred_bt = register_diag_field ( 'ocean_model' , 'conv_ud_pred_bt' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'dt*gamma*convergence of (udrho_bt,vdrho_bt) at fstau=2 for pred step' , 'dbar' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) e: id_conv_ud_corr_bt = register_diag_field ( 'ocean_model' , 'conv_ud_corr_bt' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'dt*convergence of (udrho_bt,vdrho_bt) at fstau=2 for corr step' , 'dbar' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) e: id_pme_velocity = register_diag_field ( 'ocean_model' , 'pme_velocity' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'net (precip-evap)(kg/(m2*sec) into ocean, divided by 1035kg/m3' , 'm/sec' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) e: id_conv_ud_pred_bt1 = register_diag_field ( 'ocean_model' , 'conv_ud_pred_bt1' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'dt*rho0r*gamma*convergence of (udrho_bt,vdrho_bt) at fstau=1 for pred step' , 'metre' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) e: id_conv_ud_corr_bt1 = register_diag_field ( 'ocean_model' , 'conv_ud_corr_bt1' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'dt*rho0r*convergence of (udrho_bt,vdrho_bt) at fstau=1 for corr step' , 'metre' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) e: id_conv_ud_pred_bt = register_diag_field ( 'ocean_model' , 'conv_ud_pred_bt' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'dt*rho0r*gamma*convergence of (udrho_bt,vdrho_bt) at fstau=2 for pred step' , 'metre' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) e: id_conv_ud_corr_bt = register_diag_field ( 'ocean_model' , 'conv_ud_corr_bt' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'dt*rho0r*convergence of (udrho_bt,vdrho_bt) at fstau=2 for corr step' , 'metre' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_eta_nonbouss = register_diag_field ( 'ocean_model' , 'eta_nonbouss' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'surface height including steric contribution' , 'meter' , missing_value = missing_value , range = ( / - 1e4 , 1e4 / ) ) E: id_eta_nonbouss_global = register_diag_field ( 'ocean_model' , 'eta_nonbouss_global' , time % model_time , 'global ave eta_nonbouss' , 'meter' , missing_value = missing_value , range = ( / - 1e4 , 1e4 / ) ) E: id_eta_nonbouss_tend = register_diag_field ( 'ocean_model' , 'eta_nonbouss_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'change in eta_nonbouss over a time step' , 'meter' , missing_value = missing_value , range = ( / - 1e4 , 1e4 / ) ) E: id_eta_dynamic_tend = register_diag_field ( 'ocean_model' , 'eta_dynamic_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'dynamical contributions to eta_nonbouss over a time step' , 'meter' , missing_value = missing_value , range = ( / - 1e4 , 1e4 / ) ) E: id_eta_water_tend = register_diag_field ( 'ocean_model' , 'eta_water_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'water contributions to eta_nonbouss over a time step' , 'meter' , missing_value = missing_value , range = ( / - 1e4 , 1e4 / ) ) E: id_eta_steric_tend = register_diag_field ( 'ocean_model' , 'eta_steric_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'steric contributions to eta_nonbouss over a time step' , 'meter' , missing_value = missing_value , range = ( / - 1e4 , 1e4 / ) ) E: id_eta_steric_tend_a = register_diag_field ( 'ocean_model' , 'eta_steric_tend_A' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'thickness ratio for steric contributions' , 'dimensionless' , missing_value = missing_value , range = ( / - 1e4 , 1e4 / ) ) E: id_eta_steric_tend_b = register_diag_field ( 'ocean_model' , 'eta_steric_tend_B' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'density ratio for steric contributions' , 'dimensionless' , missing_value = missing_value , range = ( / - 1e4 , 1e4 / ) ) E: id_eta_nonsteric_tend = register_diag_field ( 'ocean_model' , 'eta_nonsteric_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'nonsteric contributions to eta_nonbouss over a time step' , 'meter' , missing_value = missing_value , range = ( / - 1e4 , 1e4 / ) ) E: id_eta_source_tend = register_diag_field ( 'ocean_model' , 'eta_source_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'source contributions to eta_nonbouss over a time step' , 'meter' , missing_value = missing_value , range = ( / - 1e4 , 1e4 / ) ) E: id_eta_smooth_tend = register_diag_field ( 'ocean_model' , 'eta_smooth_tend' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'smoothing contributions to on diagnosed eta used for eta_nonbouss' , 'meter' , missing_value = missing_value , range = ( / - 1e4 , 1e4 / ) ) E: id_eta_nonbouss_tend_global = register_diag_field ( 'ocean_model' , 'eta_nonbouss_tend_global' , time % model_time , 'global ave change in eta_nonbouss over a time step' , 'meter' , missing_value = missing_value , range = ( / - 1e4 , 1e4 / ) ) E: id_eta_dynamic_tend_global = register_diag_field ( 'ocean_model' , 'eta_dynamic_tend_global' , time % model_time , 'global ave dynamical contributions to eta_nonbouss over a time step' , 'meter' , missing_value = missing_value , range = ( / - 1e4 , 1e4 / ) ) E: id_eta_water_tend_global = register_diag_field ( 'ocean_model' , 'eta_water_tend_global' , time % model_time , 'global ave eustatic contributions to eta_nonbouss over a time step' , 'meter' , missing_value = missing_value , range = ( / - 1e4 , 1e4 / ) ) E: id_eta_steric_tend_global = register_diag_field ( 'ocean_model' , 'eta_steric_tend_global' , time % model_time , 'global ave steric contributions to eta_nonbouss over a time step' , 'meter' , missing_value = missing_value , range = ( / - 1e4 , 1e4 / ) ) E: id_eta_source_tend_global = register_diag_field ( 'ocean_model' , 'eta_source_tend_global' , time % model_time , 'global ave source contributions to eta_nonbouss over a time step' , 'meter' , missing_value = missing_value , range = ( / - 1e4 , 1e4 / ) ) E: id_eta_smooth_tend_global = register_diag_field ( 'ocean_model' , 'eta_smooth_tend_global' , time % model_time , 'global ave smoother contributions to eta_nonbouss over a time step' , 'meter' , missing_value = missing_value , range = ( / - 1e4 , 1e4 / ) ) E: id_eta_eq_tidal = register_diag_field ( 'ocean_model' , 'eta_eq_tidal' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'equilibrium tidal potential' , 'meter' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_press = register_diag_field ( 'ocean_model' , 'press' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'absolute pressure' , 'dbar' , missing_value = missing_value , range = ( / - 10. , 1e6 / ) ) E: id_rho = register_diag_field ( 'ocean_model' , 'rho' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'in situ density' , 'kg/m^3' , missing_value = missing_value , range = ( / - 10.0 , 1e5 / ) ) E: id_rhoe = register_diag_field ( 'ocean_model' , 'rhoE' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'E system in situ density' , 'kg/m^3' , missing_value = missing_value , range = ( / - 10.0 , 1e5 / ) ) E: id_pot_rho = register_diag_field ( 'ocean_model' , 'pot_rho' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'potential density' , 'kg/m^3' , missing_value = missing_value , range = ( / - 10.0 , 1e5 / ) ) E: id_int_rhodz = register_diag_field ( 'ocean_model' , 'int_rhodz' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'vertical integral of density' , 'm*(kg/m^3)' , missing_value = missing_value , range = ( / - 10.0 , 1e5 / ) ) e: id_neutral_rho = register_diag_field ( 'ocean_model' , 'neutral_rho' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'polynomial estimate of neutral density' , 'kg/m^3' , missing_value = missing_value , range = ( / - 10.0 , 1e5 / ) ) e: id_neutral_rho = register_diag_field ( 'ocean_model' , 'neutral_rho' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'potential density estimate of neutral density' , 'kg/m^3' , missing_value = missing_value , range = ( / - 10.0 , 1e5 / ) ) e: id_neutral_rho = register_diag_field ( 'ocean_model' , 'neutral_rho' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'conservative temperature is neutral density' , 'degC' , missing_value = missing_value , range = ( / - 10.0 , 1e5 / ) ) E: id_eos_salinity = register_diag_field ( 'ocean_model' , 'eos_salinity' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'absolute salinity as used for TEOS10 equation of state' , 'g/kg' , missing_value = missing_value , range = ( / 0.0 , 100.0 / ) ) E: id_pot_rho_0 = register_diag_field ( 'ocean_model' , 'pot_rho_0' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'potential density referenced to 0 dbar' , 'kg/m^3' , missing_value = missing_value , range = ( / - 10.0 , 1e5 / ) , standard_name = 'sea_water_potential_density' ) E: id_pot_rho_1 = register_diag_field ( 'ocean_model' , 'pot_rho_1' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'potential density referenced to 1000 dbar' , 'kg/m^3' , missing_value = missing_value , range = ( / - 10.0 , 1e5 / ) ) E: id_pot_rho_2 = register_diag_field ( 'ocean_model' , 'pot_rho_2' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'potential density referenced to 2000 dbar' , 'kg/m^3' , missing_value = missing_value , range = ( / - 10.0 , 1e5 / ) ) E: id_pot_rho_3 = register_diag_field ( 'ocean_model' , 'pot_rho_3' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'potential density referenced to 3000 dbar' , 'kg/m^3' , missing_value = missing_value , range = ( / - 10.0 , 1e5 / ) ) E: id_pot_rho_4 = register_diag_field ( 'ocean_model' , 'pot_rho_4' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'potential density referenced to 4000 dbar' , 'kg/m^3' , missing_value = missing_value , range = ( / - 10.0 , 1e5 / ) ) E: id_pot_rho_et = register_diag_field ( 'ocean_model' , 'pot_rho_et' , grd % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , 'potential density at east face of tracer cell' , 'kg/m^3' , missing_value = missing_value , range = ( / - 10.0 , 1e5 / ) ) E: id_pot_rho_nt = register_diag_field ( 'ocean_model' , 'pot_rho_nt' , grd % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , 'potential density at north face of tracer cell' , 'kg/m^3' , missing_value = missing_value , range = ( / - 10.0 , 1e5 / ) ) E: id_pot_rho_wt = register_diag_field ( 'ocean_model' , 'pot_rho_wt' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'potential density at wt points' , 'kg/m^3' , missing_value = missing_value , range = ( / - 10.0 , 1e5 / ) ) E: id_thermal_expand = register_diag_field ( 'ocean_model' , 'thermal_expand' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'thermal expansion coefficient -(1/rho)d(rho)/d(theta)' , '1/C' , missing_value = - 1e10 , range = ( / - 1e10 , 1e10 / ) ) E: id_haline_contract = register_diag_field ( 'ocean_model' , 'haline_contract' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'haline contraction coefficient (1/rho)d(rho)/d(salinity)' , '1/(g/kg)' , missing_value = - 1e10 , range = ( / - 1e10 , 1e10 / ) ) E: id_drhodtheta = register_diag_field ( 'ocean_model' , 'drhodtheta' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'd(rho)/d(theta)' , 'kg/m^3/C' , missing_value = - 1e10 , range = ( / - 1e10 , 1e10 / ) ) E: id_drhodsalt = register_diag_field ( 'ocean_model' , 'drhodsalinity' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'd(rho)/d(salinity)' , 'kg/m^3/psu' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_dpotrhodtheta = register_diag_field ( 'ocean_model' , 'dpotrhodtheta' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'd(potrho)/d(theta)' , 'kg/m^3/C' , missing_value = - 1e10 , range = ( / - 1e10 , 1e10 / ) ) E: id_dpotrhodsalt = register_diag_field ( 'ocean_model' , 'dpotrhodsalt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'd(potrho)/d(salinity)' , 'kg/m^3/psu' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_dpotrhodpress = register_diag_field ( 'ocean_model' , 'dpotrhodpress' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'd(potrho)/d(press)' , 'kg/m^3/psu' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_drhodpress = register_diag_field ( 'ocean_model' , 'drhodpress' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'd(rho)/d(press)' , '(kg/m^3)/dbar' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_sound_speed2 = register_diag_field ( 'ocean_model' , 'sound_speed2' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'squared sound speed = 1/[d(rho)/d(press)]' , '(m/s)^2' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_cabbeling = register_diag_field ( 'ocean_model' , 'cabbeling' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'cabbeling parameter' , '(1/degC)^2' , missing_value = - 1e10 , range = ( / - 1e10 , 1e10 / ) ) E: id_thermobaricity = register_diag_field ( 'ocean_model' , 'thermobaricity' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'thermobaricity parameter' , '1/(dbar*degC)' , missing_value = - 1e10 , range = ( / - 1e10 , 1e10 / ) ) E: id_buoyfreq2_zt = register_diag_field ( 'ocean_model' , 'buoyfreq2_zt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Squared buoyancy frequency at T-point' , '1/s^2' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_buoyfreq2_wt = register_diag_field ( 'ocean_model' , 'buoyfreq2_wt' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'Squared buoyancy frequency at T-cell bottom' , '1/s^2' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_drhodz_zt = register_diag_field ( 'ocean_model' , 'drhodz_zt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'd(neutral rho)/dz at T-point' , 'kg/m^4' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_drhodx_zt = register_diag_field ( 'ocean_model' , 'drhodx_zt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'd(neutral rho)/dx at nominal T-point' , 'kg/m^4' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_drhody_zt = register_diag_field ( 'ocean_model' , 'drhody_zt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'd(neutral rho)/dy at nominal T-point' , 'kg/m^4' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_drhodz_diag = register_diag_field ( 'ocean_model' , 'drhodz_diag' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'regularized d(neutral rho)/dz at T-point' , 'kg/m^4' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_drhodz_wt = register_diag_field ( 'ocean_model' , 'drhodz_wt' , grd % tracer_axes_wt ( 1 : 3 ) , time % model_time , 'd(neutral rho)/dz at W-point' , 'kg/m^4' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_rhoave = register_diag_field ( 'ocean_model' , 'rhoave' , time % model_time , 'global mean ocean in-situ density from ocean_density_mod' , 'kg/m^3' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_pbot_adjust = register_diag_field ( 'ocean_model' , 'pbot_adjust' , time % model_time , 'pbot adjustment to counteract spurious mass source in Boussinesq fluid' , 'dbar' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) ) E: id_eta_adjust = register_diag_field ( 'ocean_model' , 'eta_adjust' , time % model_time , 'global eta adjustment to include steric effect in Boussinesq fluid' , 'm' , missing_value = missing_value , range = ( / - 100.0 , 100.0 / ) ) E: id_eta_adjust_approx = register_diag_field ( 'ocean_model' , 'eta_adjust_approx' , time % model_time , 'approximate global eta adjustment to include steric effect in Boussinesq fluid' , 'm' , missing_value = missing_value , range = ( / - 100.0 , 100.0 / ) ) E: id_eta_adjust_cstvolume = register_diag_field ( 'ocean_model' , 'eta_adjust_cstvolume' , time % model_time , 'global eta adjustment (assuming constant volume) to include steric effect in Boussinesq fluid' , 'm' , missing_value = missing_value , range = ( / - 100.0 , 100.0 / ) ) E: id_grad_nrho = register_diag_field ( 'ocean_model' , 'grad_nrho' , grd % tracer_axes ( 1 : 3 ) , time % model_time , '|grad neutral rho|' , 'dimensionless' , missing_value = missing_value , range = ( / - 1e1 , 1e10 / ) ) E: id_grad_lrpotrho = register_diag_field ( 'ocean_model' , 'grad_lrpotrho' , grd % tracer_axes ( 1 : 3 ) , time % model_time , '|grad local ref potential rho|' , 'dimensionless' , missing_value = missing_value , range = ( / - 1e1 , 1e10 / ) ) E: id_grad_nrho_lrpotrho = register_diag_field ( 'ocean_model' , 'grad_nrho_lrpotrho' , grd % tracer_axes ( 1 : 3 ) , time % model_time , '|grad neutral rho| / |grad local ref potential rho|' , 'dimensionless' , missing_value = missing_value , range = ( / - 1e1 , 1e10 / ) ) E: id_watermass_factor = register_diag_field ( 'ocean_model' , 'watermass_factor' , grd % tracer_axes ( 1 : 3 ) , time % model_time , '(|grad neutral rho|/|grad local ref potential rho|)/(delta(gamma))' , '(m^3/kg)' , missing_value = missing_value , range = ( / - 1e1 , 1e15 / ) ) E: id_stratification_factor = register_diag_field ( 'ocean_model' , 'stratification_factor' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'abs ( rho*Area(h)/gamma_h )' , 'm^3' , missing_value = missing_value , range = ( / - 1e1 , 1e22 / ) ) E: id_stratification_axis = register_diag_field ( 'ocean_model' , 'stratification_axis' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'direction of strongest stratification' , 'dimensionless' , missing_value = missing_value , range = ( / - 1e2 , 1e2 / ) ) E: id_smax_dianeutral = register_diag_field ( 'ocean_model' , 'smax_dianeutral' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'slope factor used for computing dianeutral transport diagnostic' , 'dimensionless' , missing_value = missing_value , range = ( / - 1e2 , 1e2 / ) ) E: id_ustoke = register_diag_field ( 'ocean_model' , 'ww3 ustoke' , grd % vel_axes_uv ( 1 : 2 ) , time % model_time , 'i-directed stokes drift velocity' , 'm/s' , missing_value = missing_value , range = ( / - 10. , 10. / ) , standard_name = 'surface stokes drift x-velocity' ) E: id_vstoke = register_diag_field ( 'ocean_model' , 'ww3 vstoke' , grd % vel_axes_uv ( 1 : 2 ) , time % model_time , 'j-directed stokes drift velocity' , 'm/s' , missing_value = missing_value , range = ( / - 10. , 10. / ) , standard_name = 'surface stokes drift y-velocity' ) E: id_wavlen = register_diag_field ( 'ocean_model' , 'ww3 wavlen' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'mean wave length' , 'm' ) E: id_tau_x = register_diag_field ( 'ocean_model' , 'tau_x' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'i-directed wind stress forcing u-velocity' , 'N/m^2' , missing_value = missing_value , range = ( / - 10. , 10. / ) , standard_name = 'surface_downward_x_stress' ) E: id_tau_x_flux_correction = register_diag_field ( 'ocean_model' , 'tau_x_flux_correction' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'i-directed wind stress flux correction forcing u-velocity' , 'N/m^2' , missing_value = missing_value , range = ( / - 10. , 10. / ) , standard_name = 'surface_downward_x_stress_correction' ) E: id_tau_x_net = register_diag_field ( 'ocean_model' , 'tau_x_net' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'net i-directed wind stress (including correction) forcing u-velocity' , 'N/m^2' , missing_value = missing_value , range = ( / - 10. , 10. / ) ) E: id_tau_y = register_diag_field ( 'ocean_model' , 'tau_y' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'j-directed wind stress forcing v-velocity' , 'N/m^2' , missing_value = missing_value , range = ( / - 10. , 10. / ) , standard_name = 'surface_downward_y_stress' ) E: id_tau_y_flux_correction = register_diag_field ( 'ocean_model' , 'tau_y_flux_correction' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'j-directed wind stress flux corretion forcing v-velocity' , 'N/m^2' , missing_value = missing_value , range = ( / - 10. , 10. / ) , standard_name = 'surface_downward_y_stress_correction' ) E: id_tau_y_net = register_diag_field ( 'ocean_model' , 'tau_y_net' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'net j-directed wind stress (including correction) forcing v-velocity' , 'N/m^2' , missing_value = missing_value , range = ( / - 10. , 10. / ) ) E: id_tau_curl = register_diag_field ( 'ocean_model' , 'tau_curl' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'wind stress curl averaged to U-point' , 'N/m^3' , missing_value = missing_value , range = ( / - 10. , 10. / ) ) E: id_ekman_we = register_diag_field ( 'ocean_model' , 'ekman_we' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'Ekman vertical velocity averaged to wt-point' , 'm/s' , missing_value = missing_value , range = ( / - 100. , 100. / ) ) E: id_ekman_heat = register_diag_field ( 'ocean_model' , 'ekman_heat' , grd % tracer_axes_flux_y ( 1 : 2 ) , time % model_time , 'Ekman Component to heat transport' , 'Watts' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) E: id_stokes_depth = register_diag_field ( 'ocean_model' , 'stokes_depth' , grd % vel_axes_uv ( 1 : 2 ) , time % model_time , 'Decady depth for Stokes drift from surface waves' , 'metre' , missing_value = missing_value , range = ( / - 10.0 , 1e6 / ) ) E: id_ustokes = register_diag_field ( 'ocean_model' , 'ustokes' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'i-Stokes drift from surface waves' , 'm/sec' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_vstokes = register_diag_field ( 'ocean_model' , 'vstokes' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'j-Stokes drift from surface waves' , 'm/sec' , missing_value = missing_value , range = ( / - 1e3 , 1e3 / ) ) E: id_latent_heat_vapor = register_diag_field ( 'ocean_model' , 'latent_heat_vapor' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'latent heat of vaporization at ocean surface' , 'J/kg' , missing_value = missing_value , range = ( / 0.0 , 1.e7 / ) ) E: id_latent_heat_fusion = register_diag_field ( 'ocean_model' , 'latent_heat_fusion' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'latent heat of fusion for water at ocean surface' , 'J/kg' , missing_value = missing_value , range = ( / 0.0 , 1.e7 / ) ) E: id_temp_runoff_eff = register_diag_field ( 'ocean_model' , 'temp_runoff_eff' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'effective temp of liquid river runoff entering the ocean' , 'degC' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) E: id_temp_calving_eff = register_diag_field ( 'ocean_model' , 'temp_calving_eff' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'effective temp of land ice calving into ocean' , 'degC' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) E: id_ice_mask = register_diag_field ( 'ocean_model' , 'ice_mask' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'ice mask according to near-frazil condition' , 'none' , missing_value = missing_value , range = ( / - 10. , 10. / ) ) E: id_open_ocean_mask = register_diag_field ( 'ocean_model' , 'open_ocean_mask' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'open-ocean mask according to near-frazil condition' , 'none' , missing_value = missing_value , range = ( / - 10. , 10. / ) ) E: id_river = register_diag_field ( 'ocean_model' , 'river' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'mass flux of river (runoff + calving) entering ocean' , '(kg/m^3)*(m/sec)' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_alphasfc = register_diag_field ( 'ocean_model' , 'alphasfc' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Thermal expansion coeff at surface (-1/rho drho/dT) ' , '1/(deg C)' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_betasfc = register_diag_field ( 'ocean_model' , 'betasfc' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Saline contraction coeff at surface (1/rho drho/dS) ' , '1/psu' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_alphasfc2 = register_diag_field ( 'ocean_model' , 'alphasfc2' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Potrho thermal expansion coeff at surface (-1/potrho dpotrho/dT)' , '1/(deg C)' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_betasfc2 = register_diag_field ( 'ocean_model' , 'betasfc2' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Potrho saline contraction coeff at surface (1/potrho dpotrho/dS)' , '1/psu' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_runoff = register_diag_field ( 'ocean_model' , 'runoff' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'mass flux of liquid river runoff entering ocean ' , '(kg/m^3)*(m/sec)' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) , standard_name = 'water_flux_into_sea_water_from_rivers' ) E: id_calving = register_diag_field ( 'ocean_model' , 'ice_calving' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'mass flux of land ice calving into ocean' , '(kg/m^3)*(m/sec)' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) , standard_name = 'water_flux_into_sea_water_from_icebergs' ) E: id_evap = register_diag_field ( 'ocean_model' , 'evap' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'mass flux from evaporation/condensation (>0 enters ocean)' , '(kg/m^3)*(m/sec)' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) , standard_name = 'water_evaporation_flux' ) E: id_melt = register_diag_field ( 'ocean_model' , 'melt' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'water flux transferred with sea ice form/melt (>0 enters ocean)' , '(kg/m^3)*(m/sec)' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) , standard_name = 'water_flux_into_sea_water_due_to_sea_ice_thermodynamics' ) E: id_pme_river = register_diag_field ( 'ocean_model' , 'pme_river' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'mass flux of precip-evap+river via sbc (liquid, frozen, evaporation)' , '(kg/m^3)*(m/sec)' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) , standard_name = 'water_flux_into_sea_water' ) E: id_net_sfc_workemp = register_diag_field ( 'ocean_model' , 'net_sfc_workEmP' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'pme_river*g*beta2*So/rho0, beta uses pot_rho rather than neut' , 'm^2/s^-3' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) E: id_pme_sbc = register_diag_field ( 'ocean_model' , 'pme_sbc' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'precip-evap via sbc (liquid, frozen, evaporation)' , '(kg/m^3)*(m/sec)' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_pme_restore = register_diag_field ( 'ocean_model' , 'pme_restore' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'precip-evap from restoring of SSS (>0 enters ocean)' , '(kg/m^3)*(m/sec)' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_pme_eta_restore = register_diag_field ( 'ocean_model' , 'pme_eta_restore' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'precip-evap from restoring of eta (>0 enters ocean)' , '(kg/m^3)*(m/sec)' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_pme_correct = register_diag_field ( 'ocean_model' , 'pme_correct' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'precip-evap from flux correction (>0 enters ocean)' , '(kg/m^3)*(m/sec)' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_pme_net = register_diag_field ( 'ocean_model' , 'pme_net' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'precip-evap into ocean (total w/ restore + normalize)' , '(kg/m^3)*(m/sec)' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_fprec = register_diag_field ( 'ocean_model' , 'fprec' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'snow falling onto ocean (>0 enters ocean)' , '(kg/m^3)*(m/sec)' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) , standard_name = 'snowfall_flux' ) E: id_lprec = register_diag_field ( 'ocean_model' , 'lprec' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'liquid precip (including ice melt/form) into ocean (>0 enters ocean)' , '(kg/m^3)*(m/sec)' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) , standard_name = 'rainfall_flux' ) E: id_wfimelt = register_diag_field ( 'ocean_model' , 'wfimelt' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'water into ocean due to ice melt (>0 enters ocean)' , '(kg/m^3)*(m/sec)' , missing_value = missing_value , range = ( / - 1.e-1 , 1.e-1 / ) , standard_name = 'icemelt_flux' ) E: id_wfiform = register_diag_field ( 'ocean_model' , 'wfiform' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'water out of ocean due to ice form (>0 enters ocean)' , '(kg/m^3)*(m/sec)' , missing_value = missing_value , range = ( / - 1.e-1 , 1.e-1 / ) , standard_name = 'iceform_flux' ) E: id_licefw = register_diag_field ( 'ocean_model' , 'licefw' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'water into ocean due to land ice discharge (>0 enters ocean)' , '(kg/m^2/sec)' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) , standard_name = 'licefw_flux' ) E: id_liceht = register_diag_field ( 'ocean_model' , 'liceht' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'heat into ocean due to land ice discharge-melt (>0 heats ocean)' , '(W/m^2)' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) , standard_name = 'liceht_flux' ) E: id_mh_flux = register_diag_field ( 'ocean_model' , 'mh_flux' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'heat into ocean due to melting ice (>0 heats ocean)' , '(W/m^2)' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) , standard_name = 'mh_flux' ) E: id_swflx = register_diag_field ( 'ocean_model' , 'swflx' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'shortwave flux into ocean (>0 heats ocean)' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) , standard_name = 'surface_net_downward_shortwave_flux' ) E: id_swflx_vis = register_diag_field ( 'ocean_model' , 'swflx_vis' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'visible shortwave into ocean (>0 heats ocean)' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_evap_heat = register_diag_field ( 'ocean_model' , 'evap_heat' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'latent heat flux into ocean (<0 cools ocean)' , 'W/m^2' , missing_value = missing_value , range = ( / - 1e10 , 1e10 / ) , standard_name = 'surface_downward_latent_heat_flux' ) E: id_lw_heat = register_diag_field ( 'ocean_model' , 'lw_heat' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'longwave flux into ocean (<0 cools ocean)' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) , standard_name = 'surface_net_downward_longwave_flux' ) E: id_sens_heat = register_diag_field ( 'ocean_model' , 'sens_heat' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'sensible heat into ocean (<0 cools ocean)' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) , standard_name = 'surface_downward_sensible_heat_flux' ) E: id_fprec_melt_heat = register_diag_field ( 'ocean_model' , 'fprec_melt_heat' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'heat flux to melt frozen precip (<0 cools ocean)' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) , standard_name = 'heat_flux_into_sea_water_due_to_snow_thermodynamics' ) E: id_calving_melt_heat = register_diag_field ( 'ocean_model' , 'calving_melt_heat' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'heat flux needed to melt calving ice (<0 cools ocean)' , 'W/m^2' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) , standard_name = 'heat_flux_into_sea_water_due_to_iceberg_thermodynamics' ) E: id_total_ocean_river = register_diag_field ( 'ocean_model' , 'total_ocean_river' , time % model_time , 'total liquid river water and calving ice entering ocean' , 'kg/sec/1e15' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_total_ocean_evap = register_diag_field ( 'ocean_model' , 'total_ocean_evap' , time % model_time , 'total evaporative ocean mass flux (>0 enters ocean)' , '(kg/sec)/1e15' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_total_ocean_melt = register_diag_field ( 'ocean_model' , 'total_ocean_melt' , time % model_time , 'total liquid water melted from sea ice (>0 enters ocean)' , '(kg/sec)/1e15' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_total_ocean_pme_river = register_diag_field ( 'ocean_model' , 'total_ocean_pme_river' , time % model_time , 'total ocean precip-evap+river via sbc (liquid, frozen, evaporation)' , '(kg/sec)/1e15' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_total_ocean_pme_sbc = register_diag_field ( 'ocean_model' , 'total_ocean_pme_sbc' , time % model_time , 'total ocean precip-evap via sbc (liquid, frozen, evaporation)' , 'kg/sec/1e15' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_total_ocean_pme_restore = register_diag_field ( 'ocean_model' , 'total_ocean_pme_restore' , time % model_time , 'total precip-evap from restore (>0 enters ocean)' , '(kg/sec)/1e15' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_total_ocean_pme_correct = register_diag_field ( 'ocean_model' , 'total_ocean_pme_correct' , time % model_time , 'total precip-evap from flux correction (>0 enters ocean)' , '(kg/sec)/1e15' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_total_ocean_pme_net = register_diag_field ( 'ocean_model' , 'total_ocean_pme_net' , time % model_time , 'total precip-evap into ocean (total w/ restore + normalize)' , '(kg/sec)/1e15' , missing_value = missing_value , range = ( / - 1e6 , 1e6 / ) ) E: id_total_ocean_fprec = register_diag_field ( 'ocean_model' , 'total_ocean_fprec' , time % model_time , 'total snow falling onto ocean (>0 enters ocean)' , '(kg/sec)/1e15' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_total_ocean_lprec = register_diag_field ( 'ocean_model' , 'total_ocean_lprec' , time % model_time , 'total liquid precip into ocean (>0 enters ocean)' , '(kg/sec)/1e15' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_aice = register_diag_field ( 'ocean_model' , 'aice' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'fraction of surface area covered with ice' , 'm^2/m^2' , missing_value = missing_value , range = ( / - 1.e1 , 1.e1 / ) , standard_name = 'areal_ice_concentration' ) E: id_wnd = register_diag_field ( 'ocean_model' , 'wnd' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Wind speed' , 'm/s' , missing_value = missing_value , range = ( / - 1.e3 , 1.e3 / ) , standard_name = 'wind_speed' ) E: id_total_ocean_wfimelt = register_diag_field ( 'ocean_model' , 'total_ocean_wfimelt' , time % model_time , 'total icemelt into ocean (>0 enters ocean)' , 'kg/sec/1e15' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_total_ocean_wfiform = register_diag_field ( 'ocean_model' , 'total_ocean_wfiform' , time % model_time , 'total iceform outof ocean (>0 enters ocean)' , 'kg/sec/1e15' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_atm_co2 = register_diag_field ( 'ocean_model' , 'atm_co2' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'Atmospheric CO2 content' , 'ppm' , missing_value = missing_value , range = ( / - 1.e1 , 1.e4 / ) , standard_name = 'atmospheric_co2' ) E: id_total_ocean_licefw = register_diag_field ( 'ocean_model' , 'total_ocean_licefw' , time % model_time , 'total land icemelt into ocean (>0 enters ocean)' , 'kg/sec/1e15' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_total_ocean_liceht = register_diag_field ( 'ocean_model' , 'total_ocean_liceht' , time % model_time , 'total land icemelt heat flux into ocean (>0 heats ocean)' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_total_ocean_mh_flux = register_diag_field ( 'ocean_model' , 'total_ocean_mh_flux' , time % model_time , 'total heat flux into ocean from melting ice (>0 heats ocean)' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_total_ocean_runoff = register_diag_field ( 'ocean_model' , 'total_ocean_runoff' , time % model_time , 'total liquid river runoff (>0 water enters ocean)' , '(kg/sec)/1e15' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_total_ocean_calving = register_diag_field ( 'ocean_model' , 'total_ocean_calving' , time % model_time , 'total water entering ocean from calving land ice' , '(kg/sec)/1e15' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_total_ocean_swflx = register_diag_field ( 'ocean_model' , 'total_ocean_swflx' , time % model_time , 'total shortwave flux into ocean (>0 heats ocean)' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_total_ocean_swflx_vis = register_diag_field ( 'ocean_model' , 'total_ocean_swflx_vis' , time % model_time , 'total visible shortwave into ocean (>0 heats ocean)' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_total_ocean_evap_heat = register_diag_field ( 'ocean_model' , 'total_ocean_evap_heat' , time % model_time , 'total latent heat flux into ocean (<0 cools ocean)' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_total_ocean_lw_heat = register_diag_field ( 'ocean_model' , 'total_ocean_lw_heat' , time % model_time , 'total longwave flux into ocean (<0 cools ocean)' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_total_ocean_sens_heat = register_diag_field ( 'ocean_model' , 'total_ocean_sens_heat' , time % model_time , 'total sensible heat into ocean (<0 cools ocean)' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_total_ocean_fprec_melt_heat = register_diag_field ( 'ocean_model' , 'total_ocean_fprec_melt_heat' , time % model_time , 'total heat flux to melt frozen precip (<0 cools ocean)' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_total_ocean_calving_melt_heat = register_diag_field ( 'ocean_model' , 'total_ocean_calving_melt_heat' , time % model_time , 'total heat flux to melt frozen land ice (<0 cools ocean)' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_total_ocean_river_heat = register_diag_field ( 'ocean_model' , 'total_ocean_river_heat' , time % model_time , 'total heat flux into ocean from liquid+solid runoff (<0 cools ocean)' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_sw = register_diag_field ( 'ocean_model' , 'eta_tend_sw' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from shortwave heating' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_lw = register_diag_field ( 'ocean_model' , 'eta_tend_lw' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from longwave heating' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_sens = register_diag_field ( 'ocean_model' , 'eta_tend_sens' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from sensible heating' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_evap_heat = register_diag_field ( 'ocean_model' , 'eta_tend_evap_heat' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from latent heat of vaporization' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_fprec_melt = register_diag_field ( 'ocean_model' , 'eta_tend_fprec_melt' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from latent heat of melting frozen precip' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_iceberg_melt = register_diag_field ( 'ocean_model' , 'eta_tend_iceberg_melt' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from latent heat of melting icebergs' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_heat_coupler = register_diag_field ( 'ocean_model' , 'eta_tend_heat_coupler' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from total sfc heating through coupler (sans frazil)' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_heat_restore = register_diag_field ( 'ocean_model' , 'eta_tend_heat_restore' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from total sfc heating through restore' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_salt_coupler = register_diag_field ( 'ocean_model' , 'eta_tend_salt_coupler' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from salt flux entering through coupler' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_salt_restore = register_diag_field ( 'ocean_model' , 'eta_tend_salt_restore' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from salt flux entering through restoring' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_fprec = register_diag_field ( 'ocean_model' , 'eta_tend_fprec' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from frozen precipitation' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_lprec = register_diag_field ( 'ocean_model' , 'eta_tend_lprec' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from liquid precipitation' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_evap = register_diag_field ( 'ocean_model' , 'eta_tend_evap' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from evaporating water' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_runoff = register_diag_field ( 'ocean_model' , 'eta_tend_runoff' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from liquid runoff' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_iceberg = register_diag_field ( 'ocean_model' , 'eta_tend_iceberg' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from icebergs' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_water_coupler = register_diag_field ( 'ocean_model' , 'eta_tend_water_coupler' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss sea level tendency from surface water fluxes passed through coupler' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_water_restore = register_diag_field ( 'ocean_model' , 'eta_tend_water_restore' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric sea level tendency from surface water fluxes computed from surface restoring' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_sw_glob = register_diag_field ( 'ocean_model' , 'eta_tend_sw_glob' , time % model_time , 'global mean non-Bouss steric sea level tendency from shortwave heating' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_lw_glob = register_diag_field ( 'ocean_model' , 'eta_tend_lw_glob' , time % model_time , 'global mean non-Bouss steric sea level tendency from longwave heating' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_sens_glob = register_diag_field ( 'ocean_model' , 'eta_tend_sens_glob' , time % model_time , 'global mean non-Bouss steric sea level tendency from sensible heating' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_evap_heat_glob = register_diag_field ( 'ocean_model' , 'eta_tend_evap_heat_glob' , time % model_time , 'global mean non-Bouss steric sea level tendency from latent heat of vaporization' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_fprec_melt_glob = register_diag_field ( 'ocean_model' , 'eta_tend_fprec_melt_glob' , time % model_time , 'global mean non-Bouss steric sea level tendency from latent heat of melting frozen precip' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_iceberg_melt_glob = register_diag_field ( 'ocean_model' , 'eta_tend_iceberg_melt_glob' , time % model_time , 'global mean non-Bouss steric sea level tendency from latent heat of melting icebergs' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_heat_coupler_glob = register_diag_field ( 'ocean_model' , 'eta_tend_heat_coupler_glob' , time % model_time , 'global mean non-Bouss steric sea level tendency from total sfc heating through coupler (sans frazil)' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_heat_restore_glob = register_diag_field ( 'ocean_model' , 'eta_tend_heat_restore_glob' , time % model_time , 'global mean non-Bouss steric sea level tendency from total sfc heating through restore' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_salt_coupler_glob = register_diag_field ( 'ocean_model' , 'eta_tend_salt_coupler_glob' , time % model_time , 'global mean non-Bouss steric sea level tendency from salt flux entering through coupler' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_salt_restore_glob = register_diag_field ( 'ocean_model' , 'eta_tend_salt_restore_glob' , time % model_time , 'global mean non-Bouss steric sea level tendency from salt flux entering through restoring' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_fprec_glob = register_diag_field ( 'ocean_model' , 'eta_tend_fprec_glob' , time % model_time , 'global mean non-Bouss steric sea level tendency from frozen precipitation' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_lprec_glob = register_diag_field ( 'ocean_model' , 'eta_tend_lprec_glob' , time % model_time , 'global mean non-Bouss steric sea level tendency from liquid precipitation' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_evap_glob = register_diag_field ( 'ocean_model' , 'eta_tend_evap_glob' , time % model_time , 'global mean non-Bouss steric sea level tendency from evaporating water' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_runoff_glob = register_diag_field ( 'ocean_model' , 'eta_tend_runoff_glob' , time % model_time , 'global mean non-Bouss steric sea level tendency from liquid runoff' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_iceberg_glob = register_diag_field ( 'ocean_model' , 'eta_tend_iceberg_glob' , time % model_time , 'global mean non-Bouss steric sea level tendency from icebergs' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_water_coupler_glob = register_diag_field ( 'ocean_model' , 'eta_tend_water_coupler_glob' , time % model_time , 'global mean non-Bouss sea level tendency from surface water fluxes passed through coupler' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_eta_tend_water_restore_glob = register_diag_field ( 'ocean_model' , 'eta_tend_water_restore_glob' , time % model_time , 'global mean non-Bouss steric sea level tendency from surface water fluxes computed from surface restoring' , 'm/s' , missing_value = missing_value , range = ( / - 1.e10 , 1.e10 / ) ) E: id_mass_pme_adj_on_nrho = register_diag_field ( 'ocean_model' , 'mass_pme_adj_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'mass transport from surface restoring pme (>0 enters ocean) binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_mass_precip_on_nrho = register_diag_field ( 'ocean_model' , 'mass_precip_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'mass transport from liquid+solid prec & seaice melt+form (>0 enters ocean) binned to neutral density' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_mass_evap_on_nrho = register_diag_field ( 'ocean_model' , 'mass_evap_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'mass transport from evaporation/condensation (>0 leaves ocean) binned to neutral density classes' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_mass_river_on_nrho = register_diag_field ( 'ocean_model' , 'mass_river_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'mass transport from liquid+frozen river runoff (>0 enters ocean) binned to neutral density classes' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_mass_melt_on_nrho = register_diag_field ( 'ocean_model' , 'mass_melt_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'mass transport from melting/forming sea ice (>0 enters ocean) binned to neutral density classes' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_mass_pmepr_on_nrho = register_diag_field ( 'ocean_model' , 'mass_pmepr_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'mass transport from liquid+frozen mass and seaice melt+form (>0 enters ocean) binned to neutral density classes' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_flux_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_flux_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'impact of surface heat and salt flux on water mass transformation' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_adjheat_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_adjheat_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'impact of surface heat restoring+correction on water mass transformation' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_adjsalt_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_adjsalt_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'impact of surface salt restoring+correction on water mass transformation' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_heat_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_heat_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'impact of surface heat flux on water mass transformation' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_salt_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_salt_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'impact of surface salt flux on water mass transformation' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_sw_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_sw_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'impact of surface shortwave heat (>0 heats ocean) on water mass transformation' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_lw_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_lw_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'impact of surface longwave heat (>0 heats ocean) on water mass transformation' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_sens_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_sens_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'impact of surface sensible heat (>0 heats ocean) on water mass transformation' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) E: id_tform_rho_pbl_lat_on_nrho = register_diag_field ( 'ocean_model' , 'tform_rho_pbl_lat_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'impact of surface latent (vapor and solid) heat (>0 heats ocean) on water mass transformation ' , 'kg/sec' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_stf_coupler ( n ) = register_diag_field ( 'ocean_model' , 'sfc_hflux_coupler' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'surface heat flux coming through coupler' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_stf_restore ( n ) = register_diag_field ( 'ocean_model' , 'sfc_hflux_restore' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'surface heat flux from restoring' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_stf_correct ( n ) = register_diag_field ( 'ocean_model' , 'sfc_hflux_correct' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'surface heat flux from flux correction' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) , standard_name = 'heat_flux_correction' ) e: id_stf_total ( n ) = register_diag_field ( 'ocean_model' , 'sfc_hflux_total' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'surface heat flux from coupler plus restore (omits mass transfer heating)' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_net_sfc_heating = register_diag_field ( 'ocean_model' , 'net_sfc_heating' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'surface ocean heat flux coming through coupler and mass transfer' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_net_sfc_workq = register_diag_field ( 'ocean_model' , 'net_sfc_workq' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'net_sfc_heat*g*alpha2/Cp/rho0, alpha uses pot_rho rather than neut' , 'm^2/s^-3' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_stf_runoff ( n ) = register_diag_field ( 'ocean_model' , 'sfc_hflux_from_runoff' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'heat flux (relative to 0C) from liquid river runoff' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) , standard_name = 'temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water' ) e: id_stf_calving ( n ) = register_diag_field ( 'ocean_model' , 'sfc_hflux_from_calving' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'heat flux (relative to 0C) from solid land ice entering ocean' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) , standard_name = 'temperature_flux_due_to_icebergs_expressed_as_heat_flux_into_sea_water' ) e: id_stf_pme ( n ) = register_diag_field ( 'ocean_model' , 'sfc_hflux_pme' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'heat flux (relative to 0C) from pme transfer of water across ocean surface' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_stf_pme_on_nrho ( n ) = register_diag_field ( 'ocean_model' , 'sfc_hflux_pme_on_nrho' , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , 'heat flux (relative to 0C) from pme transfer of water across ocean surface binned to neutral density' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_stf_prec ( n ) = register_diag_field ( 'ocean_model' , 'sfc_hflux_from_water_prec' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'heat flux from precip transfer of water across ocean surface' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) , standard_name = 'temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water' ) e: id_stf_evap ( n ) = register_diag_field ( 'ocean_model' , 'sfc_hflux_from_water_evap' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'heat flux from evap transfer of water across ocean surface' , 'Watts/m^2' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) , standard_name = 'temperature_flux_due_to_evaporation_expressed_as_heat_flux_into_sea_water' ) e: id_trunoff ( n ) = register_diag_field ( 'ocean_model' , 'temp_runoff' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'temperature of liquid river runoff entering the ocean' , 'degC' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_tcalving ( n ) = register_diag_field ( 'ocean_model' , 'temp_calving' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'temperature of land ice calving into ocean' , 'degC' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_triver ( n ) = register_diag_field ( 'ocean_model' , 'temp_river' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'temperature of river water (=runoff+calving) entering ocean' , 'degC' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_coupler ( n ) = register_diag_field ( 'ocean_model' , 'total_ocean_hflux_coupler' , time % model_time , 'total surface heat flux passed through coupler' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_restore ( n ) = register_diag_field ( 'ocean_model' , 'total_ocean_hflux_restore' , time % model_time , 'total surface heat flux adjustment from restoring' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_correct ( n ) = register_diag_field ( 'ocean_model' , 'total_ocean_hflux_correct' , time % model_time , 'total surface heat flux adjustment from correction' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_sum ( n ) = register_diag_field ( 'ocean_model' , 'total_ocean_hflux_sum' , time % model_time , 'total surface heat flux from coupler and restoring' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_net_sfc_heating = register_diag_field ( 'ocean_model' , 'total_net_sfc_heating' , time % model_time , 'total ocean surface flux from coupler and mass transfer' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_runoff ( n ) = register_diag_field ( 'ocean_model' , 'total_ocean_runoff_heat' , time % model_time , 'total ocean heat flux from liquid river runoff' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_calving ( n ) = register_diag_field ( 'ocean_model' , 'total_ocean_calving_heat' , time % model_time , 'total ocean heat flux from calving land ice' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_pme ( n ) = register_diag_field ( 'ocean_model' , 'total_ocean_hflux_pme' , time % model_time , 'total ocean heat flux from pme transferring water across surface' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_prec ( n ) = register_diag_field ( 'ocean_model' , 'total_ocean_hflux_prec' , time % model_time , 'total ocean heat flux from precip transferring water across surface' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_evap ( n ) = register_diag_field ( 'ocean_model' , 'total_ocean_hflux_evap' , time % model_time , 'total ocean heat flux from evap transferring water across surface' , 'Watts/1e15' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_stf_coupler ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) // ': flux from the coupler' , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_stf_restore ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) // ': flux from restoring term' , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_stf_correct ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) // ': flux correction from data file' , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) , standard_name = 'virtual_salt_flux_correction' ) e: id_stf_total ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_stf_runoff ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) , standard_name = 'salt_flux_into_sea_water_from_rivers' ) e: id_stf_calving ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_salt_flux_ice = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) , standard_name = 'downward_sea_ice_basal_salt_flux' ) e: id_stf_pme ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_stf_pme_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , trim ( name ) , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_stf_prec ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_stf_evap ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_trunoff ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_tcalving ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_triver ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_salt_flux_ice = register_diag_field ( 'ocean_model' , trim ( name ) , time % model_time , trim ( name ) , 'kg/sec (*1e-15)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_coupler ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , time % model_time , trim ( name ) , 'kg/sec (*1e-15)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_restore ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , time % model_time , trim ( name ) , 'kg/sec (*1e-15)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_correct ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , time % model_time , trim ( name ) , 'kg/sec (*1e-15)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_sum ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , time % model_time , trim ( name ) , 'kg/sec (*1e-15)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_runoff ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , time % model_time , trim ( name ) , 'kg/sec (*1e-15)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_calving ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , time % model_time , trim ( name ) , 'kg/sec (*1e-15)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_pme ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , time % model_time , trim ( name ) , 'kg/sec (*1e-15)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_prec ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , time % model_time , trim ( name ) , 'kg/sec (*1e-15)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_evap ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , time % model_time , trim ( name ) , 'kg/sec (*1e-15)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_stf_coupler ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) // ': flux from the coupler' , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_stf_restore ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) // ': flux from the restoring' , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_stf_correct ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) // ': flux from flux correction' , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_stf_total ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_stf_runoff ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_stf_calving ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_stf_pme ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_stf_pme_on_nrho ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , dens % neutralrho_axes ( 1 : 3 ) , time % model_time , trim ( name ) , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e20 , 1.e20 / ) ) e: id_stf_prec ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_stf_evap ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) , 'kg/(m^2*sec)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_trunoff ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_tcalving ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_triver ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , grd % tracer_axes ( 1 : 2 ) , time % model_time , trim ( name ) , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_coupler ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , time % model_time , trim ( name ) , 'kg/sec (*1e-15)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_restore ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , time % model_time , trim ( name ) , 'kg/sec (*1e-15)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_correct ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , time % model_time , trim ( name ) , 'kg/sec (*1e-15)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_sum ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , time % model_time , trim ( name ) , 'kg/sec (*1e-15)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_runoff ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , time % model_time , trim ( name ) , 'kg/sec (*1e-15)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_calving ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , time % model_time , trim ( name ) , 'kg/sec (*1e-15)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_pme ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , time % model_time , trim ( name ) , 'kg/sec (*1e-15)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_prec ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , time % model_time , trim ( name ) , 'kg/sec (*1e-15)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) e: id_total_ocean_stf_evap ( n ) = register_diag_field ( 'ocean_model' , trim ( name ) , time % model_time , trim ( name ) , 'kg/sec (*1e-15)' , missing_value = missing_value , range = ( / - 1.e4 , 1.e4 / ) ) E: id_u ( 1 ) = register_diag_field ( 'ocean_model' , 'u' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'i-current' , 'm/sec' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) , standard_name = 'sea_water_x_velocity' ) E: id_u ( 2 ) = register_diag_field ( 'ocean_model' , 'v' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'j-current' , 'm/sec' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) , standard_name = 'sea_water_y_velocity' ) E: id_u_on_depth ( 1 ) = register_diag_field ( 'ocean_model' , 'u_on_depth' , grd % vel_axes_u_depth ( 1 : 3 ) , time % model_time , 'i-current mapped to depth surface' , 'm/sec' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_u_on_depth ( 2 ) = register_diag_field ( 'ocean_model' , 'v_on_depth' , grd % vel_axes_v_depth ( 1 : 3 ) , time % model_time , 'j-current mapped to depth surface' , 'm/sec' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_usurf ( 1 ) = register_diag_field ( 'ocean_model' , 'usurf' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'i-surface current' , 'm/sec' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_usurf ( 2 ) = register_diag_field ( 'ocean_model' , 'vsurf' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'j-surface current' , 'm/sec' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_ubott ( 1 ) = register_diag_field ( 'ocean_model' , 'ubott' , grd % vel_axes_u ( 1 : 2 ) , time % model_time , 'i-bottom current' , 'm/sec' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_ubott ( 2 ) = register_diag_field ( 'ocean_model' , 'vbott' , grd % vel_axes_v ( 1 : 2 ) , time % model_time , 'j-bottom current' , 'm/sec' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_accel ( 1 ) = register_diag_field ( 'ocean_model' , 'accel_u' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'baroclinic forcing of rho*u' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_accel ( 2 ) = register_diag_field ( 'ocean_model' , 'accel_v' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'baroclinic forcing of rho*v' , '(kg/m^3)*(m^2/s^2)' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_converge_rho_ud_t = register_diag_field ( 'ocean_model' , 'converge_rho_ud_t' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'convergence rho*ud on T cells computed in velocity_mod' , '(kg/m^3)*(m/s)' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_speed = register_diag_field ( 'ocean_model' , 'speed' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'speed of horizontal current' , 'm/sec' , missing_value = missing_value , range = ( / - 10.0 , 10.0 / ) ) E: id_cor_u = register_diag_field ( 'ocean_model' , 'cor_u' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'explicit coriolis accel in i-direct' , 'm/s^2' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_cor_v = register_diag_field ( 'ocean_model' , 'cor_v' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'explicit coriolis accel in j-direct' , 'm/s^2' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_hrho_cor_u = register_diag_field ( 'ocean_model' , 'hrho_cor_u' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'rho*dz weighted explicit coriolis accel in i-direct' , 'N/m^2' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_hrho_cor_v = register_diag_field ( 'ocean_model' , 'hrho_cor_v' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'rho*dz weighted explicit coriolis accel in j-direct' , 'N/m^2' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_ucori_impl = register_diag_field ( 'ocean_model' , 'ucori_impl' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'implicit Coriolis force in i-direction' , 'N/m^2' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_vcori_impl = register_diag_field ( 'ocean_model' , 'vcori_impl' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'implicit Coriolis force in j-direction' , 'N/m^2' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_horz_diverge_t = register_diag_field ( 'ocean_model' , 'horz_diverge_t' , grd % vel_axes_wt ( 1 : 3 ) , time % model_time , 'horizontal (on k=constant) divergence of (uhrho,vhrho) at T-points' , '(kg/m^3)*m/sec' , missing_value = missing_value , range = ( / - 10.e4 , 10.e4 / ) ) E: id_wt = register_diag_field ( 'ocean_model' , 'wt' , grd % vel_axes_wt ( 1 : 3 ) , time % model_time , 'dia-surface velocity T-points' , 'm/sec' , missing_value = missing_value , range = ( / - 10.e4 , 10.e4 / ) ) E: id_wrho_bt = register_diag_field ( 'ocean_model' , 'wrhot' , grd % vel_axes_wt ( 1 : 3 ) , time % model_time , 'rho*dia-surface velocity T-points' , '(kg/m^3)*m/sec' , missing_value = missing_value , range = ( / - 10.e4 , 10.e4 / ) ) E: id_uhrho_et = register_diag_field ( 'ocean_model' , 'uhrho_et' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'uhrho_et on horz face of T-cells' , '(kg/m^3)*m^2/sec' , missing_value = missing_value , range = ( / - 100.e4 , 100.e4 / ) ) E: id_vhrho_nt = register_diag_field ( 'ocean_model' , 'vhrho_nt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'vhrho_nt on horz face of T-cells' , '(kg/m^3)*m^2/sec' , missing_value = missing_value , range = ( / - 100.e4 , 100.e4 / ) ) E: id_horz_diverge_u = register_diag_field ( 'ocean_model' , 'horz_diverge_u' , grd % vel_axes_wu ( 1 : 3 ) , time % model_time , 'horizontal (on k=constant) divergence of (uhrho,vhrho) at U-points (only relevant for B-grid)' , '(kg/m^3)*m/sec' , missing_value = missing_value , range = ( / - 10.e4 , 10.e4 / ) ) E: id_wrho_bu = register_diag_field ( 'ocean_model' , 'wrhou' , grd % vel_axes_wu ( 1 : 3 ) , time % model_time , 'rho*dia-surface velocity U-points (only relevant for B-grid)' , '(kg/m^3)*m/sec' , missing_value = missing_value , range = ( / - 10.e4 , 10.e4 / ) ) E: id_uhrho_eu = register_diag_field ( 'ocean_model' , 'uhrho_eu' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'uhrho_eu on horz face of U-cells (only relevant for B-grid)' , '(kg/m^3)*m^2/sec' , missing_value = missing_value , range = ( / - 100.e4 , 100.e4 / ) ) E: id_vhrho_nu = register_diag_field ( 'ocean_model' , 'vhrho_nu' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'vhrho_nu on horz face of U-cells (only relevant for B-grid)' , '(kg/m^3)*m^2/sec' , missing_value = missing_value , range = ( / - 100.e4 , 100.e4 / ) ) E: id_rhodz_vorticity_z = register_diag_field ( 'ocean_model' , 'rhodz_vorticity_z' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'vertical rhodz vorticity: (rho*dz*v)_x-(rho*dz*u)_y' , '(kg*m^2)/sec' , missing_value = missing_value , range = ( / - 1e8 , 1e8 / ) ) E: id_courant_uet = register_diag_field ( 'ocean_model' , 'courant_uet' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Courant number [uet*dtts/dxt]' , 'none' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_courant_vnt = register_diag_field ( 'ocean_model' , 'courant_vnt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Courant number [vnt*dtts/dyt]' , 'none' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_courant_wbt = register_diag_field ( 'ocean_model' , 'courant_wbt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Courant number [wbt*dtts/dzt]' , 'none' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_courant_ueu = register_diag_field ( 'ocean_model' , 'courant_ueu' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Courant number [ueu*dtuv/dxu]' , 'none' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_courant_vnu = register_diag_field ( 'ocean_model' , 'courant_vnu' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Courant number [vnu*dtuv/dyu]' , 'none' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_courant_wbu = register_diag_field ( 'ocean_model' , 'courant_wbu' , grd % vel_axes_uv ( 1 : 3 ) , time % model_time , 'Courant number [wnu*dtuv/dzu]' , 'none' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_mass_source = register_diag_field ( 'ocean_model' , 'mass_source' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'Mass source on T-grid' , '(kg/m^3)*(m/s)' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_eta_tend_press = register_diag_field ( 'ocean_model' , 'eta_tend_press' , grd % tracer_axes ( 1 : 2 ) , time % model_time , 'non-Bouss steric tendency from motion across pressure surfaces (when vert coord = press)' , 'm/s' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_eta_tend_press_glob = register_diag_field ( 'ocean_model' , 'eta_tend_press_glob' , time % model_time , 'non-Bouss steric tendency from motion across pressure surfaces (when vert coord = press)' , 'm/s' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: register_2d_t_field = register_diag_field ( 'ocean_model' , name , grid % tracer_axes ( 1 : 2 ) , time % model_time , desc , units , missing_value = missing_value , range = range ) E: register_3d_t_field = register_diag_field ( 'ocean_model' , name , grid % tracer_axes ( 1 : 3 ) , time % model_time , desc , units , missing_value = missing_value , range = range ) E: register_3d_xte_field = register_diag_field ( 'ocean_model' , name , grid % tracer_axes_flux_x ( 1 : 3 ) , time % model_time , desc , units , missing_value = missing_value , range = range ) E: register_3d_ytn_field = register_diag_field ( 'ocean_model' , name , grid % tracer_axes_flux_y ( 1 : 3 ) , time % model_time , desc , units , missing_value = missing_value , range = range ) E: register_3d_ztb_field = register_diag_field ( 'ocean_model' , name , grid % tracer_axes_wt ( 1 : 3 ) , time % model_time , desc , units , missing_value = missing_value , range = range ) E: id_put_array = register_diag_field ( 'oda' , 'oda_put' , grid % tracer_axes ( 1 : 3 ) , time , 'oda_put_array' , 'none' , missing_value = - 1.0e+10 ) E: id_got_array = register_diag_field ( 'oda' , 'oda_got' , grid % tracer_axes ( 1 : 3 ) , time , 'oda_got_array' , 'none' , missing_value = - 1.0e+10 ) E: id_omf = register_diag_field ( 'oda' , 'omf_temp' , grid % tracer_axes ( 1 : 3 ) , time , 'data-first guess misfit (temp)' , 'deg_C' , missing_value = - 20. , range = ( / - 20. , 20. / ) ) E: id_oma = register_diag_field ( 'oda' , 'oma_temp' , grid % tracer_axes ( 1 : 3 ) , time , 'data-analysis misfit (temp)' , 'deg_C' , missing_value = - 20. , range = ( / - 20. , 20. / ) ) E: id_amf = register_diag_field ( 'oda' , 'amf_temp' , grid % tracer_axes ( 1 : 3 ) , time , 'correction for temperature' , 'W/m^2' , missing_value = - 2.e3 , range = ( / - 2.e3 , 2.e3 / ) ) e: obc % bound ( m ) % id_ctrop = register_diag_field ( 'ocean_model' , 'ctrop_p_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xt , obc % bound ( m ) % id_yt / ) , time % model_time , 'barotr phase speed on open bounds' , 'm/s' , missing_value = missing_value , range = ( / - 1.e8 , 1.e8 / ) ) e: obc % bound ( m ) % id_transport = register_diag_field ( 'ocean_model' , 'obc_transport_int_z_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xu , obc % bound ( m ) % id_yt / ) , time % model_time , 'z-integral of horizontal transport on obc' , 'm^2/s' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: obc % bound ( m ) % id_transport = register_diag_field ( 'ocean_model' , 'obc_transport_int_z_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xt , obc % bound ( m ) % id_yu / ) , time % model_time , 'z-integral of horizontal transport on obc' , 'm^2/s' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: obc % bound ( m ) % id_cclin ( n ) = register_diag_field ( 'ocean_model' , 'cclin_' // trim ( t_prog ( n ) % name ) // '_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xt , obc % bound ( m ) % id_yt , grd % tracer_axes_depth ( 3 ) / ) , time % model_time , 'phase speed on obc' , 'm/s' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: obc % bound ( m ) % id_tracer_data ( n ) = register_diag_field ( 'ocean_model' , 'tracer_data_' // trim ( t_prog ( n ) % name ) // '_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xt , obc % bound ( m ) % id_yt , grd % tracer_axes_depth ( 3 ) / ) , time % model_time , 'tracer data on obc' , trim ( t_prog ( n ) % units ) , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: obc % bound ( m ) % id_tracer_flux ( n ) = register_diag_field ( 'ocean_model' , 'obc_heat_flux_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xu , obc % bound ( m ) % id_yt , grd % tracer_axes_depth ( 3 ) / ) , time % model_time , 'total horizontal tracer flux on obc' , 'Watt/m' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: obc % bound ( m ) % id_tracer_flux_dif ( n ) = register_diag_field ( 'ocean_model' , 'obc_heat_flux_dif_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xu , obc % bound ( m ) % id_yt , grd % tracer_axes_depth ( 3 ) / ) , time % model_time , 'horizontal tracer diffusion flux on obc' , 'Watt/m' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: obc % bound ( m ) % id_tracer_flux_adv ( n ) = register_diag_field ( 'ocean_model' , 'obc_heat_flux_adv_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xu , obc % bound ( m ) % id_yt , grd % tracer_axes_depth ( 3 ) / ) , time % model_time , 'horizontal tracer advection flux on obc' , 'Watt/m' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: obc % bound ( m ) % id_tracer_flux ( n ) = register_diag_field ( 'ocean_model' , 'obc_' // trim ( t_prog ( n ) % name ) // '_flux_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xu , obc % bound ( m ) % id_yt , grd % tracer_axes_depth ( 3 ) / ) , time % model_time , 'total horizontal tracer flux on obc' , ' kg/m/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: obc % bound ( m ) % id_tracer_flux_dif ( n ) = register_diag_field ( 'ocean_model' , 'obc_' // trim ( t_prog ( n ) % name ) // '_flux_dif_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xu , obc % bound ( m ) % id_yt , grd % tracer_axes_depth ( 3 ) / ) , time % model_time , 'horizontal tracer diffusion flux on obc' , ' kg/m/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: obc % bound ( m ) % id_tracer_flux_adv ( n ) = register_diag_field ( 'ocean_model' , 'obc_' // trim ( t_prog ( n ) % name ) // '_flux_adv_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xu , obc % bound ( m ) % id_yt , grd % tracer_axes_depth ( 3 ) / ) , time % model_time , 'horizontal tracer advection flux on obc' , ' kg/m/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: obc % bound ( m ) % id_tracer_flux ( n ) = register_diag_field ( 'ocean_model' , 'obc_heat_flux_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xt , obc % bound ( m ) % id_yu , grd % tracer_axes_depth ( 3 ) / ) , time % model_time , 'totel horizontal tracer flux on obc' , 'Watt/m' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: obc % bound ( m ) % id_tracer_flux_dif ( n ) = register_diag_field ( 'ocean_model' , 'obc_heat_flux_dif_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xt , obc % bound ( m ) % id_yu , grd % tracer_axes_depth ( 3 ) / ) , time % model_time , 'horizontal tracer diffusion flux on obc' , 'Watt/m' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: obc % bound ( m ) % id_tracer_flux_adv ( n ) = register_diag_field ( 'ocean_model' , 'obc_heat_flux_adv_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xt , obc % bound ( m ) % id_yu , grd % tracer_axes_depth ( 3 ) / ) , time % model_time , 'horizontal tracer advection flux on obc' , 'Watt/m' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: obc % bound ( m ) % id_tracer_flux ( n ) = register_diag_field ( 'ocean_model' , 'obc_' // trim ( t_prog ( n ) % name ) // '_flux_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xt , obc % bound ( m ) % id_yu , grd % tracer_axes_depth ( 3 ) / ) , time % model_time , 'total horizontal tracer flux on obc' , ' kg/m/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: obc % bound ( m ) % id_tracer_flux_dif ( n ) = register_diag_field ( 'ocean_model' , 'obc_' // trim ( t_prog ( n ) % name ) // '_flux_dif_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xt , obc % bound ( m ) % id_yu , grd % tracer_axes_depth ( 3 ) / ) , time % model_time , 'horizontal tracer diffusion flux on obc' , ' kg/m/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) e: obc % bound ( m ) % id_tracer_flux_adv ( n ) = register_diag_field ( 'ocean_model' , 'obc_' // trim ( t_prog ( n ) % name ) // '_flux_adv_' // trim ( obc % bound ( m ) % name ) , ( / obc % bound ( m ) % id_xt , obc % bound ( m ) % id_yu , grd % tracer_axes_depth ( 3 ) / ) , time % model_time , 'horizontal tracer advection flux on obc' , ' kg/m/sec' , missing_value = missing_value , range = ( / - 1.e18 , 1.e18 / ) ) E: id_geopotential = register_diag_field ( 'ocean_model' , 'geopotential' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'geopotential at T-point' , 'm^2/s^2' , missing_value = missing_value , range = ( / - 1e8 , 1e8 / ) ) E: id_anompress = register_diag_field ( 'ocean_model' , 'anompress' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'anomalous hydrostatic pressure at T-point' , 'Pa' , missing_value = missing_value , range = ( / - 1e8 , 1e8 / ) ) E: id_anompress_zwt = register_diag_field ( 'ocean_model' , 'anompress_zwt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'anomalous hydrostatic pressure at T-cell bottom' , 'Pa' , missing_value = missing_value , range = ( / - 1e8 , 1e8 / ) ) E: id_anomgeopot = register_diag_field ( 'ocean_model' , 'anomgeopot' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'anomalous geopotential at T-point' , 'm^2/s^2' , missing_value = missing_value , range = ( / - 1e8 , 1e8 / ) ) E: id_anomgeopot_zwt = register_diag_field ( 'ocean_model' , 'anomgeopot_zwt' , grd % tracer_axes ( 1 : 3 ) , time % model_time , 'anomalous geopotential at T-cell bottom' , 'm^2/s^2' , missing_value = missing_value , range = ( / - 1e8 , 1e8 / ) ) E: id_pgrad_klev ( 1 ) = register_diag_field ( 'ocean_model' , 'dzupgrad_x_klev' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'dz*dp_dx on k-level' , 'Pa' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_pgrad_klev ( 2 ) = register_diag_field ( 'ocean_model' , 'dzupgrad_y_klev' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'dz*dp_dy on k-level' , 'Pa' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_rhoprime_geograd_klev ( 1 ) = register_diag_field ( 'ocean_model' , 'dzurhoprime_geograd_x_klev' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'dz*rhoprime*d(geopot)/dx on k-level' , 'Pa' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_rhoprime_geograd_klev ( 2 ) = register_diag_field ( 'ocean_model' , 'dzurhoprime_geograd_y_klev' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'dz*rhoprime*d(geopot)/dx on k-level' , 'Pa' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_rhoprime_pgrad_klev ( 1 ) = register_diag_field ( 'ocean_model' , 'dzurhoprime_pgrad_x_klev' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'dz*(rhoprime/rho0)*dp/dx on k-level' , 'Pa' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_rhoprime_pgrad_klev ( 2 ) = register_diag_field ( 'ocean_model' , 'dzurhoprime_pgrad_y_klev' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'dz*(rhoprime/rho0)*dp/dy on k-level' , 'Pa' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_rho_geogradprime_klev ( 1 ) = register_diag_field ( 'ocean_model' , 'dzurho_geogradprime_x_klev' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'dzu*rho*d(geopot_prime)/dx on k-level' , 'Pa' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_rho_geogradprime_klev ( 2 ) = register_diag_field ( 'ocean_model' , 'dzurho_geogradprime_y_klev' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'dzu*rho*d(geopot_prime)/dy on k-level' , 'Pa/m' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_press_force ( 1 ) = register_diag_field ( 'ocean_model' , 'press_force_u' , grd % vel_axes_u ( 1 : 3 ) , time % model_time , 'i-directed pressure force' , 'Pa' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) ) E: id_press_force ( 2 ) = register_diag_field ( 'ocean_model' , 'press_force_v' , grd % vel_axes_v ( 1 : 3 ) , time % model_time , 'j-directed pressure force' , 'Pa' , missing_value = missing_value , range = ( / - 1e9 , 1e9 / ) )