Documentation  02/04/2002    Puech Dominique  Météo-France  CNRM/GMAP/OBS 

I. Tables d'informations générales
      I.1. Table DDRS
      I.2. Table DESC
      I.3. Table INDEX

II. Description "de la locomotive"
      II.1. Table HDR
      II.2. Table SAT
      II.3. Données SATOB
      II.4. Données RTOVS, ATOVS pré-procéssées
      II.5. Données ATOVS brutes

III. Description des wagons
      III.1. Table BODY
      III.2. Table RTOVS_BODY
      III.3. Table ERRSTAT
      III.4. Table UPDATE

IV. Gestion des listes noires
      IV.1. liste LISTE_NOIRE_DIAP
      IV.2. liste LISTE_LOC
      IV.3. Remarques

V. Annexes
      V.1. Tableaux de travail
      V.2. Nameliste
      V.3. obschar  MDBOCH


I. Tables d'informations générales

I.1. Table DDRS

  Cette table contient les données des tableaux d'entête du cmafoc
       (XMOBDD1, XMOBDD2 X=M,R et C)
  Table  DDRS   ->  tableau implicite   ROBDDR(2*3072,4)  -> fichier   ddrs

  * pointeur dynamique : MDB_ddrno_AT_ddrs = 1
       ROBHDR(1:NLENCD1,MDB_ddrno_AT_ddrs)  = 1
       ROBHDR(NLENCD1+1:NLENCD2,MDB_ddrno_AT_ddrs)  = 2

  * pointeur dynamique : MDB_wordno_AT_ddrs = 2
       ROBHDR(j=1,NLENCD1,MDB_wordno_AT_ddrs)  = j
       ROBHDR(j=NLENCD1+1,NLENCD2,MDB_wordno_AT_ddrs)  = j

  * pointeur dynamique : MDB_bulkdata_AT_ddrs = 3

    pointeur        valeur du      signification
                    pointeur

    NCD1LN              1      longueur du 1er DDR (*)
    NCD1NL              8      longueur du DDR suivant (*)
    NCD1OT             11      heure du milieu de la période d'observation (hhmnss)
    NCD1OD             12      date du milieu de la période d'observation (aaaammjj)
    NCD1NPU            15      nombre d'update prévu   NRESUPD
    NCD1NUP            16      nombre d'update réalisés  -1
    NCD1RM             22      longueur max d'une observation (*)
    NCD1TO             27      nombre total d'observations
    NCD1NSY            28      nombre de messages de la catégorie NSYNOP
    NCD1NAI            29      nombre de messages de la catégorie NAIREP
    NCD1NSA            30      nombre de messages de la catégorie NSATOB
    NCD1NDB            31      nombre de messages de la catégorie NDRIBU
    NCD1NTE            32      nombre de messages de la catégorie NTEMP
    NCD1NPI            33      nombre de messages de la catégorie NPILOT
    NCD1NSM            34      nombre de messages de la catégorie NSATEM, hors TOVS
    NCD1NT             35      nombre de messages TOVS de la catégorie NSATEM
    NCD1NPA            36      nombre de messages de la catégorie NPAOB
    NCD1SC             37      nombre de messages de la catégorie NSCATT
    NCD1NRR            38      nombre de messages de la catégorie NRARAD
    NCD1NSSM           39      nombre de messages de la catégorie NSSMI
    NCD1NAT            40      nombre de messages ATOVS de la catégorie NSATEM
    NCD1AL             51      longueur totale du fichier cmafoc (hors ddrs) (*)
    NCD11DL            57      TOVS : nb niv. inversés dans le 1DVAR = NO1DVLV
    NCD11DV            58      TOVS : nb var. inversées - 1DVAR - altitude = NO1DVVA
    NCD11DS            59      TOVS : nb var. inversées - 1DVAR - un niveau = NO1DVSLV
    NCD11DLS           75      SSMI : nb de niv. inversés dans le 1DVAR = NO1DVLVS
    NCD11DVS           76      SSMI : nb var. inversées - 1DVAR - altitude = NO1DVVAS
    NCD11DSS           77      SSMI : nb de var. inversées - 1DVAR - un niveau = NO1DSLVS
    NCD1SOH            81      indicateur de présence des données
    NCD1TSL_numslots  101      time slot information (*)
    NCD1TSL_numslots  102      nb de mots par time slot (*)
    NCD1TSL_init_date 103      date initiale du 1er time slot (*)
    NCD1TSL_init_time 104      heure initiale du 1er time slot (*)
      ...  pour chaque time slot   X+NCD1TSL_numslots (*)
        "2eme DDR   x + 1024*3
    NCD2LN             1      longueur du 2eme DDR (*)
    NCD1LND            8      longueur du DDR suivant (*)

(*) informations nécessaire pour la création un fichier cmafoc

I.2. Table DESC

  Dans cette table des éléments descriptifs généraux
  Table  DESC   ->  tableau implicite   ROBHDR(1,8)  -> fichier   desc

    pointeur             valeur du         signification
                          pointeur

    MDB_andate_AT_desc       2         date du milieu de la période d'observation (aammjj)
    MDB_time_AT_desc         3         heure du milieu de la période d'observation (hhmmss)

    MLNK_desc2ddrs(2)        5         = NLENCD1 + NLENCD2
    MLNK_desc2index(2)       7         = nb d'observations

I.3. Table INDEX

  Table permettant un accès pàlus rapide aux données
  Table  INDEX   ->  tableau implicite   MOBHDR(nb d'obs,8)  -> fichier   index

    pointeur             valeur du         signification
                          pointeur

    MDB_target_AT_index       1         = 1
    MDB_procid_AT_index       2         = 1    nb de groupe de données
    MDB_tslot_AT_index        3         = 1 (3dvar)    numéro de slot pour 4dvar
    MDB_kset_AT_index         4         = 0
    MDB_abnob_AT_index        5         = int(RABSO)

    MLNK_index_2hdr(2)        7         = 1

  Définition des bornes des time-slots
  Utilisation du fichier ficdate initialisé dans le script d'exécution
      H_3h, +30mn, +1h, +1h, +1h, +1h, +1h, +30mn
      Soit pour le 2001111418       :      20011114150000
      20011114153000
      20011114163000
      20011114173000
      20011114183000
      20011114193000
      20011114203000
      20011114210000


II. Description "de la locomotive"

II.1. Table HDR

  Cette table contient les valeurs de la partie fixe de la locomotive du fichier CMAFOC, ainsi que les 2 premiers éléments de la partie optionnelle (NCMINS, NCMREV2)
  "table"  HDR   ->  tableau implicite   ROBHDR(nb d'obs,36)  -> fichier   hdr

    pointeur          valeur du      signification
                       pointeur

    MDBONM                 1      seqno numéro de l'obs.
    MDBOTP                 2      obstype type de l'observation
    MDBOCH                 3      obschar caractéristiques de l'observation
    MDBDAT                 5      date date de l'observation (sous la forme AAAAMMJJ)
    MDBETM                 6      time heure de l'observation (sous la forme HHMMSS)
    MDBRFL                 7      codes qualité
    MDBRST                 8      codes état  (0)
    MDBREV1                9      codes événements, première partie  (0)
    MDBRBLE               10      codes événements liste noire  (0)
    MDBBOX                11      numéro de boite géographique  (NABSO)
    MDBSTD                12      propre a chaque site de production
    MDBSID                13      statid indicatif  OMM de l'obs - 8 caractères  (transfer)
    MDB_ident_AT_hdr      14      ident numero satellite
    MDBLAT                15      lat latitude de l'observation (en radians)
    MDBLON                16      lon longitude de l'observation (en radians)
    MDBALT                17      altitude de la station (en mètres)  ou RABSO
    MDBMOR                18      orographie du modèle (RABSO)
    MDBTLA                19      latitude sur la spère transformée (RABSO)
    MDBTLO                20      longitude sur la spère transformée (RABSO)
    MDBINS                21      spécification de l'instrument (NABSO)
    MDBREV2               22      code événement - 2ème partie (NABSO)
    MDBSSIA               25      indicateur de capteur satellite (pour NGTHRB)

    MDBHOANX              23      X = S (synop), D (dribu), T (temp), P (pilot)
    MDBHOBAX              24      initialisés a RABSO

    MLNK_hdr2sat(2)       29      = 1
    MLNK_hdr2body(2)      31      nb de paramètres observés (= nb de wagons)
    MLNK_hdr2errstat(2)   33      nb de paramètres observés (= nb de wagons)
    MLNK_hdr2update(2)    35      nb de paramètres observés (= nb de wagons)

II.2  Table SAT

  Dans cette table, est indiquée la présence de satellites dans les données. Valeurs mises a 1 si présence de données correspondantes (défaut = aucune valeur). Définition pour SATOB, SATEM : NGTHR1, NGTHR2, NGTHRB
  "table"  SAT   ->  tableau implicite   SATHDR(nb d'obs,14)  -> fichier   sat

    pointeur             valeur du         signification
                          pointeur

    MDB_satid_AT_sat          1         numéro satellite (integer)

    MLNK_sat2satob(2)         5         = 1 pour NSATOB
    MLNK_sat2atovs(2)        11         = 1 pour NGTHRB
    MLNK_sat2rtovs(2)        13         = 1 pour NGTHR1, NGTHR2

II.3. Données SATOB

  Cette table contient les valeurs de la partie optionnelle de la locomotive du fichier CMAFOC  pour les satellites, ainsi que certaines données supplémentaires.
  "table" SATHDR   tableau implicite   SATHDR(nb d'obs du type,7)  ->  fichier  satob

    pointeur             valeur du         signification
                          pointeur

    MDBNSBCMM                 1         comp_method cloud motion comp. Method  (NABSO)
    MDBSBIUP                  2         instdata
    MDBSBDPT                  3         dataproc data proc. Technique used  (NABSO)
    MDBSBQIx                 4-6         qi[3] x=1,2,3   (NABSO)

II.4. Données RTOVS, ATOVS pré-procéssées

  Cette table contient les valeurs de la partie optionnelle de la locomotive du fichier CMAFOC  pour les satellites, ainsi que certaines données supplémentaires. Types de données = NGTHR1, NGTHR2

  "table" SATHDR   tableau implicite   SATHDR( nb d'obs du type,31)  ->  fichier  rtovs

    pointeur                valeur du      signification
                             pointeur

    MDBSOE                       1      solar_elevation élevation solaire (ou RABSO)
    MDBCHU                       2      numchan canaux utilisés dans les calculs
    MDBDPT                       3      dataproc tech. de traitement des données utilisées
                                           -> couverture nuageuse (8,16 ou 32) utilisé pour le 1dvarV
    MDBSLC                       4      loc_counter position du satellite -> scan
                                           mod(SLC,100) entre 1 et 56  -> 1 + (SCAN -2)/3  (arpège)
    MDBVS4                       8      vertsign[4] 4ère signification verticale
                                        zénith pour noaa 15 et 16 (206,207)
    MDBOZO                       9      ozone      (ou RABSO)
    MDBPP1                      10      press[1] 1ère pression  (ou RABSO)
    MDBPP2                      11      press[2] 2ère pression
    MDBCLC                      12      cloud_cover couverture nuageuse   (oulan = nébulosité totale cf bdm)
    MDBLSQ                      13      landsea masque terre/mer
                                           (0=terre, 1=mer, 2=côte, 3=absent) idem NCMOCH
    MDBHLS                      14      landsurf_height hauteur de la surface du sol  (km)
    NCMSKT                      15      skintemp température de l'enveloppe  (K)
    MLNK_rtovs2rtovs_body(2)    30      nb de paramètres observés (= nb de wagons)
    MLNK_rtovs2rtovs_slev(2)    26      = 1
    MLNK_rtovs2rtovs_mlev(2)    28      = NO1DVLV  (43)  nb de niveaux modèle
    MLNK_rtovs2rtovs_pred(2)    24      = 1

    "table" RTOVS_SLEV
      tableau implicite   SATSLEV(nb de rtovs,17) -> fichier   rtovs_slev   RABSO
    "table" RTOVS_MLEV
      tableau implicite   SATMLEV(nb rtovs*NO1DVLV,8) -> fichier rtovs_mlev   RABSO
    "table" RTOVS_PRED
      tableau implicite   SATPRED(nb de rtovs,17)  ->  fichier   rtovs_pred   RABSO

II.5. Données ATOVS brutes

  Cette table contient les valeurs de la partie optionnelle de la locomotive du fichier CMAFOC  pour les satellites, ainsi que certaines données supplémentaires. Types de données = NGTHRB
  "table" SATHDR    tableau implicite   SATHDR(nb d'obs du type,29)  ->  fichier atovs

    pointeur                valeur du         signification
                             pointeur

    MDBSCLA                     1          numéro de ligne scan
    MDBFOVA                     2          numéro de champs de vue (scan)
    MDBSTHA                     3          hauteur de la station
    MDBSAZA                     4          zénith
    MDBSABA                     5          bearing ou azimuth
    MDBSOZA                     6          solar zenith angle
    MDBSOBA                     7          solar azimuth

    MLNK_atovs2atovs_pred(2)    24         = 1

    "table" ATOVS_PRED
      tableau implicite   SATPRED(nb de rtovs,19)  ->  fichier   atovs_pred        RABSO


III. Description "des wagons"

III.1. Table BODY

  Cette table contient les valeurs incontournables de la partie fixe du wagon du fichier CMAFOC, et des valeurs dépendantes du type d'observation.
  "table"  BODY   ->  tableau implicite   ROBODY(nb total de wagons,17)  ->  fichier   body

    pointeur          valeur du        signification
                       pointeur

    MDBVNM                1          type de paramètre (cf table NVNUMB)
    MDBVCO                2          type de coordonnée verticale  =1 ou  =3 (T brillance)
    MDBRDFL               3          code qualité base de donnée
    MDBFLG                4          code qualité analyse
    MDBDSTA               5          code qualité expérience  cf MDBRST
    MDBDEV1               6          code qualité évènements, première partie     = 0
    MDBDBLE               7          code qualité évènements liste noire                  = 0
    MDBESQN               8          numéro du wagon
    MDBPPP                9          press pression corr. à la coordonnée verticale ci-après (en Pa)
                                          numéro de canal pour tovs
                                          numéro de canal à partir de 1 pour level 1c (cf tovclr.f90)
    MDBPRL               10          coordonnée verticale issue de la B.D.M.
                                          numéro de canal pour tovs/atovs
    MDBVAR               11          obsvalue valeur observée
    MDBDEV2              13          code événements, deuxième partie        = 0
    MDBSYPC              14          pour NSYNOP    code pression            = RABSO
    MDBTELID             15          pour NTEMP    identificateur du niveau
    MDBPILID             15          idem pour PILOT
    MDB_aux1_AT_body     12          valeurs ff et dd respectivement pour wagons u et v

III.2. Table RTOVS_BODY

  "table"  SATBODY
  NSATEM (NGTHR1,NGTHR2) :
   tableau implicite   SATBODY( nb d'obs du type,2)  RABSO  ->  fichier   rtovs_body

III.3. Table ERRSTAT

  Cette table contient les valeurs de la partie fixe du wagon du fichier CMAFOC liées aux erreurs.
  "table"  ERRSTAT   ->
       tableau implicite   ROBODY( nb total de wagons ,6)  ->  fichier   errstat

    pointeur       valeur du       signification
                    pointeur

    MDBFOE             1       erreur d'observation finale
    MDBOER             2       erreur d'observation   = MDBFOE
    MDBRER             3       erreur de représentativité     = 0
    MDBPER             4       erreur de persistance          = 0

III.4. Table UPDATE

  Cette table contient les valeurs de la partie canari du wagon du fichier CMAFOC.
  "table"  UPDATE   ->
       tableau implicite   ROBODY( nb total de wagons,16)  ->  fichier   update

    pointeur       valeur du       signification
                    pointeur

    MDBRBVC            13        type de coordonnée verticale


IV. Gestion des listes noires

IV.1. liste LISTE_NOIRE_DIAP

  Le fichier LISTE_NOIRE_DIAP contient une liste de données blacklistées transmise par COMPAS.

transformation
  Avec le passage a odb, le format de cette liste a changé : rajout du code message. Le programme transform_ln.F90 permet de passer de l'ancien au nouveau format (fichier sans les "%code").
      transform_ln :   fichier d'entrée  LISTE_NOIRE_DIAP     fichier de sortie  LISTE_NOIRE_DIAP.odb
fichier LISTE_NOIRE_DIAP  sur ~mxpt001/arpege/france/${chaine}/const/autres
programme transform_ln.F90   sur kami:~mrpa660/SRC/CY24    compilable avec commande frt

format de LISTE_NOIRE_DIAP      les champs sont séparés par 1x
   champ 1 : type d'observation                         i2     REF_LN(j)%iotp
   champ 2 : code message format lettre simplifie      10x     pas lu
   champ 3 : code message                               i3     REF_LN(j)%icodmes
   champ 4 : numero de variable "NVNUMB"                i3     REF_LN(j)%ivarno
   champ 5 : indicatif                                  a8     REF_LN(j)%cident
   champ 6 : date - non utilise                         8x     pas lu
 facultatif
   champ 7 : code liste_locale/nb                      a4/i1   REF_LN(j)%code (i4), REF_LN(j)%vref(:) (i1)
   champs suivants : voir spécificités des codes

lecture dans batodb_leclndiap
   INBLNDIAP(iotp)   nb de messages liste-noire par type d'observation

traitement dans batodb_ecriture
   - au niveau du header de l'observation -> ilndiap(ivarno)   0 = aucune action
                                                              -1 = blacklisting
                                                              >0 = test supplémentaire au niveau du wagon
   - au niveau du wagon -> ilndiapw  0 = aucune action
                                    -1 = blacklisting
les codes
  SYNOP varno=39 (t2m) -> blacklisting varno=39, 58 (Hu2m), 7 (q)
  SYNOP varno=58 (Hu2m) -> blacklisting varno=58, 7 (q)
  NTEMP varno=1 (géop.) -> blacklisting varno=1, 29 (Hu), 2 (T), 59 (Td), 19 (Hu), 7 (q)
  NTEMP varno=2 (T) -> blacklisting varno=2,  29 (Hu),  7 (q)
  NTEMP varno=29 (Hu) > blacklisting varno=29, 7 (q)

  PROFx P1 ... Px  i i ... i (x+1 fois) Hxx ...
    permet de definir des couches de pression P1 a Px  (MDBPRL)
    de définir blacklisting=1 ou 0 pour chaque couche "i ... i (x+1 fois)"

Exemple de liste noire diapason
 1 SHIP        21   1 3ECI8    01031999
 1 SHIP        21  11 3EBW4    02032001
 1 SHIP        21  39 3FCS8    01012000
 1 SHIP        21  41 3BIX     01031997
 1 SYNOP       11   1 01360    01071999
 1 SYNOP       11  11 01092    01092001
 1 SYNOP       11  39 06748    01121997
 1 SYNOP       11  58 60010    01052001
 2 ACAR       145   2 0ZZYCMZA 01112001
 2 ACAR       145   3 0GGL3QZA 01121999
 2 AMDAR      144   2 AR007EPZ 01091999
 2 AMDAR      144   3 AN0051   01111999
 4 BUOY       165   1 14603    03102001
 4 BUOY       165  11 14911    01072001
 4 BUOY       165  39 25521    01021999
 4 BUOY       165  41 15539    02081999
 5 TEMP        35   1 07137    25051998
 5 TEMP        35   2 20674    01112001
 5 TEMP        35   3 06447    01012002
 5 TEMP        35  29 42314    01012001
 5 TEMPSHIP    36   1 OXYH2    01112001
 6 PILOT       32   3 07008    01112001
 6 profileur   34   4 70197    0        PROF2  700  400 1 1 0
 6 profileur   34   3 70197    0        PROF2  700  400 1 1 1 H06 H18
 6 profileur   34   3 70197    0        PROF2  700  400 0 0 1 H00 H12

IV.2. liste LISTE_LOC

  Le fichier LISTE_LOC contient une liste de données fournies par l'utilisateur du programme.  Cette liste permet de définir des données a blacklister ou forcer.

format de LISTE_LOC
   champ 1 : action                 a1         LN_LOC(j)%iaction
   champ 2 : type d'observation     i3         LN_LOC(j)%iotp
 facultatif
   champ 3 : code message           i4         LN_LOC(j)%icodmes
   champ 4 : indicatif              a9         LN_LOC(j)%cident
   champ 5 : numéro de variable     a9         LN_LOCj)%ivarno
             pour option 'TOVS' numéro de "sensor" (MDBSSIA)
   champ 6 : code liste_locale/nb   a4/i1      LN_LOC(j)%code, nb -> LN_LOC(j)%vref(1:nb)
 obligatoire
   dernier champ  :     !

action :        O = forçage  (-> 1)        N = noirlistage (-> -1)       (logique o/n)
code liste_locale :
         PPPPx =  xx pressions  ou numéro de canaux dans valeurs suivantes
         ZONx4   = zonage

lecture dans batodb_leclloc, remplissage de LN_LOC, type défini dans batodb_module

traitement dans batodb_ecriture
  * au niveau du header de l'observation, retour sur ilnloc  abs(ilnloc) = num dans LN_LOC
         0 = aucune action
         <0  action sur l'ensemble de l'observation
         >0  action spécifique par wagon
  * au niveau du wagon de l'observation, entrée/retour sur ilnloc
         -1 = noirlistage
          1 = forçage
          0 = aucune action
les codes
PPPPxblacklist si "MDBPPP" = 1 valeur dans les x références
ZONB4  (lat < lat_min .or. lat > lat_max .or. lon < lon_min .or. lon > lon_max )
                      -> action     extérieur - extérieur
ZONC4  (lat < lat_min .or. lat > lat_max .or. (lon > lon_min .and. lon < lon_max))
                      -> action     extérieur - intérieur
TOVSxblacklist si "MDBPPP" = 1 valeur dans les x références (numéros de canaux)
          pour le "sensor" défini dans LN_LOC(j)%ivarno
PROFxx P1 ... Px  i i ... i (x+1 fois) Hxx ...
    permet de definir des couches de pression P1 a Px  (MDBPRL)
    de définir blacklisting=1 ou 0 pour chaque couche "i ... i (x+1 fois)"
 

Exemple de liste noire locale
!--------------------------------------------------------------------------------------------------------
! action (1) / obstype (2) / [ codetype (3) / ident (8) / varno (3) / code (a3i2) / liste ] / ! commentaire
x xx xxx xxxxxxxx xxx ........
!                     PPPxx xxxxxxx xxxxxxx (1x,x7)
!--------------------------------------------------------------------------------------------------------
N  6  34              ! nwppcd   profileur de vent
N  2 141           29 ! airep   hu
N  2 144           29 ! airep   hu
N  2 145           29 ! airep   hu
N  5 135            1 ! temp drop
N  9                  ! scatt
N  1  16              ! radome
N  3  88      052     ZONB4     -50      50      13     113
N  3  88      054     ZONB4     -50      50     -50      50
N  3  88      252     ZONC4     -50      50     -25     175
N  3  88      254     ZONC4     -50     50     -25     175
N  3  88      152     ZONC4     -50      50    -170      90
N  7 210      206   3 TOVS1      11
N  6 134            3 PROF2     700     400 1 0 1
 

IV.3. Remarques

 * profileurs    nvnumb=3   profileurs européens
                 nvnumb=4   profileurs américains


V. Annexes

V.1. Tableaux de travail

  ZDATALOC ( INBOBS , 11 )
     1 : nb total de wagon
     2 :type de message
     3 : type d'obs
     4 : code terre/ mer
     5 : numéro de time-slot
     6 : code présence sst =1   (sinon 0)
     11 : ncmsoe / ncmscla   (pré-processées / brutes)
     12 : ncmchu / ncmfova
     13 : ncmdpt / ncmstha
     14 : ncmslc / ncmsaza
     15 : ncmozo / ncmsaba
     16 : ncmpp1 / ncmsoza
     17 : ncmclc / ncmsoba
     18 : ncmlsq
     19 : ncmhls ou ncmvs4
     20 : ncmskt
     21 : ncmpp2

  ZDATAWAG ( INLVT , 5 )
     1 : mdbvnm
     2 : mdbprl
     3 : mdbppp
     4 : mdbfoe/mdboer
     5 : mdbrbvc

V.2. Nameliste

  La nameliste NADIRS donne accès a :
    - LLPRINT : impressions complémentaires
    - ECTERO, ETEOST, ETEOHU

V.3. obschar   MDBOCH

  type instrument : position 11
       pour airep = systeme de navigation   position 11
                    phase de vol  position 16
  retrieval type :
     pour synop, dribu, temp et pilot = sst   1=terre sinon 0

  zone geographique : position 27
     pour satem = indice terre/mer