`iv_type` ================================================================ .. code-block:: type iv_type integer :: nstats(num_ob_indexes) integer :: time integer :: num_inst, total_rad_pixel, total_rad_channel real :: synop_ef_u, synop_ef_v, synop_ef_t, synop_ef_p, synop_ef_q real :: metar_ef_u, metar_ef_v, metar_ef_t, metar_ef_p, metar_ef_q real :: ships_ef_u, ships_ef_v, ships_ef_t, ships_ef_p, ships_ef_q real :: geoamv_ef_u, geoamv_ef_v real :: polaramv_ef_u, polaramv_ef_v real :: gpspw_ef_tpw real :: sound_ef_u, sound_ef_v, sound_ef_t, sound_ef_q real :: mtgirs_ef_u, mtgirs_ef_v, mtgirs_ef_t, mtgirs_ef_q real :: tamdar_ef_u, tamdar_ef_v, tamdar_ef_t, tamdar_ef_q real :: tamdar_sfc_ef_u, tamdar_sfc_ef_v, tamdar_sfc_ef_t, tamdar_sfc_ef_p, tamdar_sfc_ef_q real :: airep_ef_u, airep_ef_v, airep_ef_t, airep_ef_q real :: pilot_ef_u, pilot_ef_v real :: ssmir_ef_speed, ssmir_ef_tpw real :: satem_ef_thickness, ssmt1_ef_t, ssmt2_ef_rh real :: gpsref_ef_ref, gpsref_ef_p, gpsref_ef_t, gpsref_ef_q real :: gpseph_ef_eph real :: qscat_ef_u, qscat_ef_v real :: profiler_ef_u, profiler_ef_v real :: buoy_ef_u, buoy_ef_v, buoy_ef_t, buoy_ef_p, buoy_ef_q real :: radar_ef_rv, radar_ef_rf, radar_ef_rr real :: bogus_ef_u, bogus_ef_v, bogus_ef_t, bogus_ef_p, bogus_ef_q, bogus_ef_slp real :: airsr_ef_t, airsr_ef_q real :: rain_ef_r #if (WRF_CHEM == 1) real :: chemic_surf_ef #endif type (infa_type) :: info(num_ob_indexes) type (airsr_type) , pointer :: airsr(:) type (sound_type) , pointer :: sound(:) type (synop_type) , pointer :: sonde_sfc(:) type (airep_type) , pointer :: airep(:) type (pilot_type) , pointer :: pilot(:) type (satem_type) , pointer :: satem(:) type (geoamv_type) , pointer :: geoamv(:) type (polaramv_type) , pointer :: polaramv(:) type (synop_type) , pointer :: synop(:) type (synop_type) , pointer :: metar(:) type (synop_type) , pointer :: ships(:) type (gpspw_type) , pointer :: gpspw(:) type (gpsref_type) , pointer :: gpsref(:) type (gpseph_type) , pointer :: gpseph(:) type (ssmi_tb_type) , pointer :: ssmi_tb(:) type (ssmi_rv_type) , pointer :: ssmi_rv(:) type (ssmt1_type) , pointer :: ssmt1(:) type (ssmt2_type) , pointer :: ssmt2(:) type (pseudo_type) , pointer :: pseudo(:) type (qscat_type) , pointer :: qscat(:) type (synop_type) , pointer :: buoy(:) type (pilot_type) , pointer :: profiler(:) type (bogus_type) , pointer :: bogus(:) type (radar_type) , pointer :: radar(:) type (instid_type) , pointer :: instid(:) type (mtgirs_type) , pointer :: mtgirs(:) type (tamdar_type) , pointer :: tamdar(:) type (synop_type) , pointer :: tamdar_sfc(:) type (rain_type) , pointer :: rain(:) #if (WRF_CHEM == 1) type (chemic_surf_type), pointer :: chemic_surf(:) #endif type (varbc_tamdar_type) :: varbc_tamdar real :: missing real :: ptop end type iv_type **单点观测数据结构** .. code-block:: type field_type real :: inv ! Innovation vector integer :: qc ! Observation QC real :: error ! Observational error real :: sens ! Sensitivity vector real :: imp ! Impact vector end type field_type **单层观测数据结构** .. code-block:: type synop_type real :: h ! Height in m type (field_type) :: u ! u-wind. type (field_type) :: v ! v-wind. type (field_type) :: t ! temperature. type (field_type) :: p ! pressure. type (field_type) :: q ! q. end type synop_type **多层观测数据结构** .. code-block:: type sound_type real , pointer :: h (:) ! Height in m real , pointer :: p (:) ! pressure. type (field_type) , pointer :: u (:) ! u-wind. type (field_type) , pointer :: v (:) ! v-wind. type (field_type) , pointer :: t (:) ! temperature. type (field_type) , pointer :: q (:) ! q. end type sound_type **相关的程序** - `da_allocate_obs_info.inc` - `da_allocate_observations.inc` - `da_allocate_observations_chem_sfc.inc` - `da_allocate_observations_rain.inc` - `da_deallocate_observations.inc`