Home page  
Home   Your Room   Login   Contact   Feedback   Site Map   Search:  
Discover this product  
About Us
Overview
Getting here
Committees
Products
Forecasts
Order Data
Order Software
Services
Computing
Archive
PrepIFS
Research
Modelling
Reanalysis
Seasonal
Publications
Newsletters
Manuals
Library
News&Events
Calendar
Employment
Open Tenders
   
Home > Research > Ifsdocs > TECHNICAL >  
   


IFS documentation front page


Table of contents




Chapter 1. Technical overview

Chapter 2. FULL-POS post-processing and interpolation

Chapter 3. Parallel implementation

REFERENCES


 
  Next Section
Previous Section


2.7 Organigram




When not precised, directory is pp_obs (except for LFI... routines which are in the auxiliary library).


Routines ending by SM (ex. SPECFITASM, SPECFITGSM, SCAN2MSM, SPEREESM, REESPESM, UVSPESM, SPECRTSM ) are written as they are in cycle 18. The suffix SM disappears in cycle 17.


2.7.1 Setup routines and arborescence above STEPO.




General architecture under CNT0:


Only features concerning FULL-POS are mentioned.


control/CNT0
  •   setup/SU0YOMA
  •   setup/SUCT0
  •   setup/SUAFN
  •   setup/SUAFN1
  •   setup/SUAFN2
  •   setup/SUFPC
  •   setup/SUDIM setup/SUFPDIM
  •   setup/SUFPDYN setup/SUFPDOM
  •   setup/SUFPCONF
  •   transform/UPDVPOS setup/SUVPOS
  •   setup/SUFPFIT
  •   pp_obs/CPVPOSPR
  •   setup/SUFPD utility/EGGX
  •   utility/EGGRVS
  •   ALADIN routine EGGMLT
  •   setup/SUCFU setup/SUCFUFP
  •   setup/SUXFU setup/SUXFUFP
  •   setup/SUGPPRP pp_obs/FPINIPHY
  •   setup/SUAFPOS
  •   setup/SURFPDS
  •   setup/SUWFPDS
  •   setup/SUAFPDS
  •   setup/SUALLO setup/SUALFPOS
  •   setup/SU0YOMB
  •   setup/SUMP
  •   setup/SUALMP2
  •   some other routines which do not contain any FULL-POS feature.
  •   setup/SUFPG
  •   setup/SUFPG1
  •   setup/DFLTVV1
  •   setup/SUGAW (arborescence is not described in detail).
  •   setup/SUNMEN
  •   setup/SUFPG2
  •   utility/EGGX utility/EGGRVS and ALADIN routine EGGMLT
  •   transform/TRACARE
  •   setup/SUGENORD
  •   utility/EGGDIR
  •   utility/EGGRVS
  •   transform/TRARECA
  •   setup/SUSC2
  •   setup/SUSIZBUF
  •   ARPEGE: setup/SUFPCSET setup/SUFPRSET processor communication routines MPE_SEND and MPE_RECV.
  •   Some multitasking routines.
  •   Some transposition routines (do not touch FULL-POS).
  •   Some MIO... routines (do not touch FULL-POS).
  •   setup/SUBFPOS
  •   setup/SUFPF
  •   setup/SUFPOPH setup/SUFRAME FACADE (or SUEFRAME if plane geometry, or SUFPGRIB if GRIB files).
  •   setup/SUFPSC2
  •   setup/SUFPIOS MIOOPEN
  •   setup/SUFPSC2B
  •   control/CNT1 (see below arborescence under CNT1).


General architecture under CNT1:


Only features concerning FULL-POS are mentioned. For arborescence under transform/REESPESM, transform/SPEREESM, transform/UVSPESM see documentation about spectral transforms. control/CNT1
  •   setup/SU1YOM
  •   setup/SUINIF
  •   pp_obs/SPECFITASM
  •   utility/CHIEN (or the ALADIN routine CCHIEN if ALADIN).
  •   LFI... and FA... routines.
  •   transform/REESPESM (ARPEGE) or transform/EREESPE (ALADIN)
  •   transform/SPEREESM (ARPEGE) or transform/ESPEREE (ALADIN)
  •   transform/UVSPESM
  •   pp_obs/SPECFITADM
  •   utility/CHIEN or utility/CCHIEN
  •   LFI... and FA... routines.
  •   processor communication routines parallel/DISGRID, parallel/ DIWRGRID, parallel/DIWRSPE, parallel/FPDISPVECTOR, which call MPE_SEND and MPE_RECV.
  •   transform/REESPESM (ARPEGE) or transform/EREESPEDM (ALADIN)
  •   transform/SPEREESM (ARPEGE) or transform/ESPEREEDM (ALADIN)
  •   transform/UVSPESM
  •   pp_obs/SPECFITGSM (GRIB version of SPECFITASM, arborescence not detailed)
  •   pp_obs/SPECFITGDM (GRIB version of SPECFITADM, arborescence not detailed)
  •   setup/SUSPEC, setup/SUGRIDF, setup/SUGRIDU, adiab/SPECRTSM, adiab/ SPECRTDM, setup/SUGRCFU, setup/SUGRXFU (arborescence not detailed)
  •   other routines without any relationship with FULL-POS.
  •   control/CNT2 control/CNT3 (see below arborescence under CNT3).


General architecture under CNT3:


Only features concerning FULL-POS are mentioned. control/CNT3
  •   setup/SU3FPOS
  •   ARPEGE: setup/SUHOW1
  •   setup/SURFPBUF
  •   pp_obs/CPCLIMO
  •   ARPEGE: setup/SUHOW2
  •   pp_obs/FPSCAW
  •   utility/SC2RDG utility/EMPTB and "MIO" routines.
  •   parallel/FPADD3P (DM)
  •   parallel/FPWRIT (DM) processor communication routine MPE_SEND.
  •   parallel/FPREAD (DM) processor communication routine MPE_RECV.
  •   parallel/FPEXTPOL (DM)
  •   adiab/EXTMERB (no DM)
  •   adiab/INIPEX (no DM)
  •   adiab/EXTPOLB (no DM)
  •   pp_obs/FPINT12
  •   "MIO" routines.
  •   c9xx/RDCLIMO utility/CHIEN, "LFI" end "FA" routines.
  •   c9xx/RDECCLIMO (GRIB version of RDCLIMO) GRIB routines.
  •   utility/SC2WRG utility/FILLB
  •   processor communication routines parallel/FPSENDTOPROC1, parallel/ FPDISPTOPROC1, which call MPE_SEND and MPE_RECV for cycle 17 (do not work properly).
  •   processor communication routines parallel/OSNDGPFFP, parallel/ORCVGPFFP, parallel/ISNDGPFFP, parallel/IRCVGPFFP, which call MPE_SEND and MPE_RECV; processor communication routine MPE_BARRIER for cycle 18.
  •   setup/SUWFPBUF
  •   pp_obs/CPCLIMI
  •   pp_obs/FPSCAW
  •   utility/SC2RDG utility/EMPTB and "MIO" routines.
  •   parallel/FPADD3P (DM)
  •   parallel/FPWRIT (DM) processor communication routine MPE_SEND.
  •   parallel/FPREAD (DM) processor communication routine MPE_RECV.
  •   parallel/FPEXTPOL (DM)
  •   adiab/EXTMERB (no DM)
  •   adiab/INIPEX (no DM)
  •   adiab/EXTPOLB (no DM)
  •   "MIO" routines.
  •   pp_obs/CPCLIMO
  •   ARPEGE: setup/SUHOW2
  •   pp_obs/FPSCAW
  •   utility/SC2RDG utility/EMPTB and "MIO" routines.
  •   parallel/FPADD3P (DM)
  •   parallel/FPWRIT (DM) processor communication routine MPE_SEND.
  •   parallel/FPREAD (DM) processor communication routine MPE_RECV.
  •   parallel/FPEXTPOL (DM)
  •   adiab/EXTMERB (no DM)
  •   adiab/INIPEX (no DM)
  •   adiab/EXTPOLB (no DM)
  •   pp_obs/FPINT12
  •   "MIO" routines.
  •   utility/EXTGPF (utility/SC2RDG utility/EMPTB) and "MIO" routines.
  •   c9xx/RDCLIMO utility/CHIEN, "LFI" end "FA" routines.
  •   c9xx/RDECCLIMO (GRIB version of RDCLIMO) GRIB routines.
  •   processor communication routine parallel/FPDISPTOPROC1, which calls MPE_SEND and MPE_RECV for cycle 17 (do not work properly).
  •   processor communication routines parallel/ISNDGPFFP, parallel/IRCVGPFFP, which call MPE_SEND and MPE_RECV; processor communication routine MPE_BARRIER for cycle 18.
  •   ARPEGE: setup/SUHOW2
  •   ARPEGE: setup/SUHOWLSM
  •   "MIO" routines.
  •   utility/SC2WRG utility/FILLB
  •   pp_obs/FPFILTER
  •   control/CNT4 (see below arborescence under CNT4).
  •   setup/SU4FPOS
  •   pp_obs/PPREQ
  •   setup/SUFPPHY setup/SUFPDOM
  •   setup/SUFPDYN setup/SUFPDOM
  •   control/CPREP4 (see below arborescence under CPREP4).


Remark: SU4FPOS and CPREP4 are also called by var/ARCHFP when using FULL-POS mode 927 to truncate the trajectory from high resolution to low resolution.


General architecture under CNT4:


Only features concerning FULL-POS are mentioned. control/CNT4
  •   setup/SU4FPOS
  •   pp_obs/PPREQ
  •   setup/SUFPPHY setup/SUFPDOM
  •   setup/SUFPDYN setup/SUFPDOM
  •   pp_obs/GRIDFPOS (see below arborescence under GRIDFPOS).
  •   pp_obs/DYNFPOS (see below arborescence under DYNFPOS).
  •   control/CPREP4 (see below arborescence under CPREP4).


General architecture under GRIDFPOS:


Only features concerning FULL-POS are mentioned. pp_obs/GRIDFPOS
  •   utility/CPGRIDF
  •   utility/SC2RDG utility/EMPTB
  •   utility/SC2WRG utility/FILLB
  •   some "MIO" routines.
  •   utility/PKGRIDA (or PKGRIDG if use of GRIB files, not described in detail)
  •   some "FA" and "LFI" routines.
  •   processor communication routines parallel/FPSENDTOPROC2, parallel/ FPDISPTOPROC2, which call MPE_SEND and MPE_RECV (do not work properly).
  •   utility/SC2RDG utility/EMPTB
  •   utility/SC2WRG utility/FILLB
  •   utility/EXTGPF (no DM) (utility/SC2RDG utility/EMPTB) and "MIO" routines.
  •   utility/INCGPF (no DM)
  •   utility/SC2RDG utility/EMPTB
  •   utility/SC2WRG utility/FILLB
  •   some "MIO" routines.
  •   pp_obs/FPMODCFU pp_obs/FPMODPREC
  •   utility/SC2RDG utility/EMPTB
  •   utility/SC2WRG utility/FILLB
  •   utility/EXTGPF (no DM) (utility/SC2RDG utility/EMPTB) and "MIO" routines.
  •   utility/INCGPF (no DM)
  •   utility/SC2RDG utility/EMPTB
  •   utility/SC2WRG utility/FILLB
  •   some "MIO" routines.
  •   parallel/FPADD3P (DM)
  •   parallel/FPREAD (DM) processor communication routine MPE_RECV.
  •   parallel/FPWRIT (DM) processor communication routine MPE_SEND.
  •   parallel/FPEXTPOL (DM)
  •   adiab/EXTMERB (no DM)
  •   adiab/INIPEX (no DM)
  •   adiab/EXTPOLB (no DM)
  •   pp_obs/FPSCAW2
  •   pp_obs/FPOLIS
  •   some "MIO" routines.
  •   pp_obs/FPMODXFU pp_obs/FPMODPREC
  •   utility/SC2RDG utility/EMPTB
  •   utility/SC2WRG utility/FILLB
  •   utility/EXTGPF (no DM) (utility/SC2RDG utility/EMPTB) and "MIO" routines.
  •   utility/INCGPF (no DM)
  •   utility/SC2RDG utility/EMPTB
  •   utility/SC2WRG utility/FILLB
  •   some "MIO" routines.
  •   parallel/FPADD3P (DM)
  •   parallel/FPREAD (DM) processor communication routine MPE_RECV.
  •   parallel/FPWRIT (DM) processor communication routine MPE_SEND.
  •   parallel/FPEXTPOL (DM)
  •   adiab/EXTMERB (no DM)
  •   adiab/INIPEX (no DM)
  •   adiab/EXTPOLB (no DM)
  •   pp_obs/FPSCAW2
  •   pp_obs/FPOLIS
  •   some "MIO" routines.
  •   utility/MAXGPFV
  •   processor communication routines parallel/FPSENDTOPROC2, parallel/ FPDISPVECTOR, which call MPE_SEND and MPE_RECV for cycle 17 (do not work properly).
  •   processor communication routines parallel/OSNDGPF, parallel/ORCVGPF which call MPE_SEND and MPE_RECV; processor communication routines MPE_SEND, MPE_RECV and MPE_BARRIER for cycle 18.
  •   utility/SC2RDG utility/EMPTB
  •   utility/EXTGPF (no DM) (utility/SC2RDG utility/EMPTB) and "MIO" routines.
  •   control/SCAN2H control/SCAN2MSM (SM) or control/SCAN2MDM (DM) (see below arborescence under CPREP4).
  •   dia/WRHFP (WRMLFPL or WRMLFP if use of GRIB files, not described in detail)
  •   some "FA" and "LFI" routines.
  •   utility/EXTFPF (utility/SC2RDG utility/EMPTB) and "MIO" routines.
  •   processor communication routines parallel/FPSENDTOPROC1, which calls MPE_SEND and MPE_RECV (does not work properly).
  •   pp_obs/FPBIPER library routines ESPLIN, ESMOOTH and ESHFT.
  •   dia/FPNORM


General architecture under DYNFPOS:


Only features concerning FULL-POS are mentioned.


pp_obs/DYNFPOS
  •   setup/SUFPCONF
  •   setup/SUVFPOS
  •   transform/UPDVPOS setup/SUVPOS
  •   setup/SUFPFIT
  •   pp_obs/CPVPOSPR
  •   setup/CPFPDS setup/FPFINDS setup/SUFPDS
  •   setup/SUVFPOSL
  •   control/STEPO (see below arborescence under STEPO).


General architecture under CPREP4:


Only features concerning FULL-POS are mentioned. CPREP4 is divided in two parts calling the same routines.


control/CPREP4
  •   control/STEPO (see below arborescence under STEPO).
  •   pp_obs/GRIDFPOS (see above arborescence under GRIDFPOS).
  •   pp_obs/DYNFPOS (see above arborescence under DYNFPOS).
  •   utility/ENDIOS several "MIO" routines and library routine HPSHRINK
  •   utility/MATCLOSE "LFI" routine LFIFER.
  •   utility/FREEMEM several utility/DEAL... routines (DEALLO, DEALFPOS, DEALDDH, DEALCOS, DEALCTV, DEALGES, DEALCAN, DEALSPA, DEALSC2, DEALSCR, DEALMOD, DEALNMI) and utility/DEELLO for ALADIN.
  •   control/CNT0 (see above arborescence under CNT0).


General architecture under STEPO:


Only features concerning FULL-POS are mentioned.


control/STEPO
  •   Gestion of IO: utility/IOPACK (see below arborescence under IOPACK).
  •   Inverse Legendre transforms: transform/LTINVH
  •   utility/CPGRIDF
  •   utility/SC2RDG utility/EMPTB
  •   utility/SC2WRG utility/FILLB
  •   some "MIO" routines.
  •   Inverse Fourier transforms + grid point computations + direct Fourier transforms: control/ SCAN2H control/SCAN2MSM (SM) or control/SCAN2MDM (DM) : (see below arborescence under SCAN2MSM/SCAN2MDM).
  •   Direct Legendre transforms: transform/LTDIRH
  •   Spectral computations: control/SPCH (see below).


General architecture under IOPACK:


Part 6 of IOPACK concerns FULL-POS.


utility/IOPACK
  •   dia/WRPLFP for GRIB files, not described in detail.
  •   dia/WRPVLFP for GRIB files, not described in detail.
  •   dia/WRTHLFP for GRIB files, not described in detail.
  •   dia/WRMLFP for GRIB files, not described in detail.
  •   dia/ESPFP (for ALADIN)
  •   dia/WRSFP
  •   "LFI" and "FA" routines.
  •   processor communication routine parallel/DIWRSPE, parallel/FPSENDTOPROC2, which call MPE_SEND and MPE_RECV (do not properly work).
  •   dia/SPNORMBL for ARPEGE (arborescence not described in detail)
  •   dia/SPNORMAVE for ARPEGE (arborescence not described in detail)
  •   dia/ESPNORMBL for ALADIN (arborescence not described in detail)
  •   utility/SC2RDG utility/EMPTB
  •   utility/EXTGPF (utility/SC2RDG utility/EMPTB) and "MIO" routines.
  •   dia/WRSFPMIO
  •   "LFI" and "FA" routines.
  •   dia/SPNORMBL (arborescence not described in detail)
  •   dia/SPNORMAVE (arborescence not described in detail)
  •   transform/SPEREESM (arborescence not described in detail, see documentation about spectral transforms).
  •   transform/REESPESM (arborescence not described in detail, see documentation about spectral transforms).
  •   utility/EXTGPF (utility/SC2RDG utility/EMPTB) and "MIO" routines.
  •   utility/FILLB
  •   utility/WRSPBUF "MIO" routines.
  •   "MIO" routines.
  •   dia/WRHFP
  •   some "FA" and "LFI" routines.
  •   processor communication routine parallel/FPSENDTOPROC1, which calls MPE_SEND and MPE_RECV.
  •   utility/EXTFPF (utility/SC2RDG utility/EMPTB) and "MIO" routines.
  •   pp_obs/FPBIPER library routines ESPLIN, ESMOOTH and ESHFT.
  •   dia/FPNORM


2.7.2 Grid-point computations.




General architecture of SCAN2MSM (shared memory) and SCAN2MDM (distributed memory):


control/SCAN2H control/SCAN2MSM (SM) or control/SCAN2MDM (DM) :
  •   Inverse Fourier transforms: transform/FTINVH.
  •   Some memory transfers and pointer computations before grid-point computations.
  •   Comparison with observations (non-lagged part, then information communication between processors, then lagged part).
  •   Model grid-point computations (non-lagged part, then information communication between processors, then lagged part).
  •   Post-processing (grid-point part, see below for more details).
  •   Grid-point computations for analysis.
  •   Direct Fourier transforms: transform/FTDIRH.


General architecture concerning FULL-POS in SCAN2MSM and SCAN2MDM:


FULL-POS under control/SCAN2MSM or control/SCAN2MDM includes:
  •   Vertical interpolations. VPOS
  •   utility/SC2RDG utility/EMPTB
  •   CPVPOSR
  •   POS (see below).
  •   utility/SC2WRG utility/FILLB
  •   GPOS adiab/GPPRE and CTSTAR.
  •   Non lagged part of horizontal interpolations. HPOS
  •   Function utility/MGETBUF
  •   utility/SC2RDG utility/EMPTB
  •   adiab/EXTMERB (no DM)
  •   adiab/INIPEX (no DM)
  •   adiab/EXTPOLB (no DM)
  •   For distributed memory, some routines doing halo constitution and communications between processors before performing interpolations under HPOSLAG.
  •   parallel/FPADD3P
  •   parallel/FPWRIT processor communication routine MPE_SEND.
  •   parallel/FPREAD processor communication routine MPE_RECV.
  •   parallel/FPEXTPOL
  •   Lagged part of horizontal interpolations and some vertical interpolations made after horizontal interpolations. HPOSLAG
  •   Function utility/MFINDBUF
  •   FPOSHOR (see below)
  •   Function utility/MDONEBUF
  •   Diagnostic of the post-processable variables which are computed from the post-processed model variables (height or -levels post-processing and change of horizontal geometry). ENDVPOS
  •   utility/SC2RDG utility/EMPTB
  •   CPVPOSPR
  •   ENDPOS
  •   Several adiab/GP... routines: GPRCP, GPPREH, GPXYB, GPPREF, GPGEO, GPRH, GPTET, GPEPT.
  •   PPTHPW
  •   utility/SC2WRG utility/FILLB


Organigram of POS:
  •   Several adiab/GP... routines: GPRCP, GPPREH, GPXYB, GPPREF, GPGEO, GPPVO, GPEPT.
  •   CTSTAR
*** A series of routines computing intermediate quantities and weights for vertical interpolations.
  •   PPINITZ
  •   PPZHLEV
  •   PPPS PPINTZ and EXPBESU
  •   PPLTP
  •   PPLTETA
  •   PPLETA adiab/GPPREH, adiab/GPXYB and adiab/GPPREF
  •   PPINIT
  •   PPFLEV
*** A series of interpolation routines.
  •   PPUV
  •   PPUV_OLD PPINTP and PPITPQ
  •   PPINTP
  •   (PPITPQ) (currently commented).
  •   PPT
  •   PPT_OLD PPINTP
  •   PPSTA
  •   PPINTP
  •   PPQ PPINTP
  •   c9xx/APACHE (see below)
  •   PPGEOP
  •   PPGEOP_OLD PPSTA, adiab/GPGEO, PPITPQ and PPINTP.
  •   PPSTA
  •   adiab/GPGEO
  •   PP2DINT
  •   PPRH adiab/GPRH and PPINTP
  •   adiab/GPRH
  •   PPVVEL adiab/GPCTY and PPINTP
  •   adiab/GPCTY
  •   PPPMER
  •   PPLTP
  •   PPTHPW
  •   POAERO
  •   TJQUD
  •   TJCUBI
  •   TJQUAA
  •   Storage of post-processed fields.


Organigram of FPOSHOR:
  •   utility/SC2RDG utility/EMPTB
  •   FPSCAW
  •   FPSURF FPINT12
  •   FPINTDYN FPINT12, FPHOR12 and FPAERO
  •   FPINTPHY FPINT12 and FPMIMAX
  •   FPGEO
  •   FPVERT
  •   CPVPOSPR
  •   FPPS
  •   adiab/GPRCP
  •   adiab/GPPREH, adiab/GPXYB and adiab/GPPREF
  •   adiab/GPGEO
  •   PPINITZ
  •   PPZHLEV
  •   PPPS PPINTZ and EXPBESU
  •   adiab/GPPRE
  •   c9xx/APACHE (see below)
  •   utility/SC2WRG utility/FILLB
  •   utility/SC2WRG utility/FILLB


Organigram of c9xx/APACHE:
  •   Several adiab/GP... routines: GPPREH, GPXYB, GPPREF, GPRCP and GPPRE
  •   PPINIT
  •   c9xx/VEINE adiab/GPGEO, CTSTAR, PPPMER, adiab/GPPREH, adiab/GPXYB and adiab/GPPREF
  •   c9xx/AVAL
  •   CTSTAR
  •   PPFLEV
  •   PPT
  •   PPT_OLD PPINTP
  •   PPSTA
  •   PPINTP
  •   PPQ PPINTP
  •   PPRH adiab/GPRH and PPINTP
  •   PPUV
  •   PPUV_OLD PPINTP and PPITPQ
  •   PPINTP
  •   (PPITPQ) (currently commented).
  •   PPGEOP
  •   PPGEOP_OLD PPSTA, adiab/GPGEO, PPITPQ and PPINTP.
  •   PPSTA
  •   adiab/GPGEO
  •   Several adiab/GP... routines: GPPREH, GPXYB, GPPREF and GPRCP
  •   c9xx/BOB PPINTP


2.7.3 Spectral transforms.




See documentation about spectral transforms of model fields. There are additional routines to treat FULL-POS fields (transform/SC2FPFSC, transform/UPDSPFP, pp_obs/PRFIP, parallel/SUFPTRDIR, parallel/SUFPTRINV, are called instead of transform/SC2FSC, transform/UPDSP, transform/PRFI1) parallel/SUTRDIR, parallel/SUTRINV.


2.7.4 Spectral computations.




control/STEPO
  •   control/SPCH control/SPCM pp_obs/SPOS utility/MXMAOP.


2.7.5 Action and brief description of each routine.


  •   Expression "full level" is synonym of "middle of layer".
  •   Expression "half level" is synonym of "interlayer".
  •   For meaning of [L5] see section "Sequences of calls of post-processing".
  •   Expression "DM-local" for a quantity means "local to the couple of processors (proca,procb)": each processor has its own value for the quantity. Expression "DM-local computations" means that the computations are made independently in each processor on "DM-local" quantities, leading to results internal to each processor, which can be different from a processor to another one.
  •   Expression "DM-global" for a quantity means that it has a unic value available in all the processors. Expression "DM-global computations" means that the computations are either made in one processor, then the results are dispatched in all the processors, or the same computations are made in all the processors, leading to the same results in all the processors.
  •   In a routine description the mention "For distributed memory computations are DM-local" means that all calculations made by this routine are DM-local; the mention "For distributed memory computations are DM-global" means that all calculations made by this routine are DM-global; when no information is provided it means that a part of calculations are DM-local and the other part is DM-global.
  •   Expression "main" processor currently refers to the processor number 1: (proca,procb)=(1,1).


Grid-point and spectral routines of directory "adiab":
  •   EXTMERB: computes fields for extra-longitudes 0, NLOENG(jgl+1) and NLOENG(jgl+2). This routine is used only for shared memory.
  •   EXTPOLB: computes fields for extra-polar latitudes. This routine is used only for shared memory.
  •   GP... routines computing some dynamical grid-point quantities; for distributed memory computations are DM-local.
  •   GPCTY: computes quantities linked to vertical velocities at half levels.
  •   GPEPT: computes the equivalent potential temperature at full levels. Is currently in directory pp_obs but has to be moved later in directory adiab.
  •   GPGEO: computes geopotential at half and full levels.
  •   GPPRE: computes hydrostatic pressures at half and full levels.
  •   GPPREF: computes hydrostatic pressures at full levels.
  •   GPPREH: computes hydrostatic pressures at half levels.
  •   GPPVO: computes potential vorticity and potential temperature at full levels.
  •   GPRCP: computes cp, R and \frac Rcp at full levels.
  •   GPRH: computes saturation vapour pressure and relative humidity from temperature and specific humidity at full levels.
  •   GPTET: computes potential temperature at full levels.
  •   GPXYB: computes auxiliary quantities related to the hybrid cooordinate, for example pressure depths, coefficients to compute vertical integrals, etc.
  •   INIPEX: computes intermediate quantities for call to EXTPOLB (extra-polar latitudes indices where information has to be copied). This routine is used only for shared memory.
  •   SPECRTSM: spectral space conversions between real temperature and virtual temperature for shared memory.
  •   SPECRTDM: spectral space conversions between real temperature and virtual temperature for distributed memory.


Routines of directory "c9xx".
  •   APACHE: interface routine for some vertical interpolations, called if post-processing on height or -levels and change of horizontal geometry. For distributed memory computations are DM-local.
  •   AVAL: inner interface routine for some vertical interpolations. For distributed memory computations are DM-local.
  •   BOB: vertical interpolation of the B-coefficients of the vertical hybrid coordinate, to the levels of post-processing. For distributed memory computations are DM-local.
  •   RDCLIMO (RDECCLIMO at ECMWF if GRIB files used): opens output climatology files and reads the needed fields. In case of a file ARPEGE, poles values are not read. For distributed memory computations are DM-global.
  •   VEINE: vertical interpolations linked to difference of orographies between two systems. For distributed memory computations are DM-local.


Control routines of directory "control":
  •   CNT0: controls integration job at level 0.
  •   CNT1: controls integration job at level 1.
  •   CNT2: controls integration job at level 2.
  •   CNT3: controls integration job at level 3.
  •   CNT4: controls integration job at level 4.
  •   CPREP4: control routine called only if post-processing needs a change of horizontal geometry and if spectral fit or computations are made in the arrival geometry: pseudo configurations 927 (for example file ARPEGE file ARPEGE), E927 (for example file ALADIN file ALADIN). Calls twice CNT0 after other routines, the first call of CNT0 to manage post-processing computations in the arrival geometry and the second call to CNT0 if required to return to the departure (model) geometry.
  •   SCAN2H: control routine for grid-point computations.
  •   SCAN2MSM: multitasking interface for grid-point computations for shared memory calculations.
  •   SCAN2MDM: interface for grid-point computations for distributed memory calculations.
  •   SPCH: control routine for spectral computations.
  •   SPCM: multitasking interface for spectral computations.
  •   STEPO: control routine for one time integration step.


Routines of directory "dia".
  •   ESPFP: ALADIN routine writing vertical post-processed data on a FA file, equivalent of WRSFP.
  •   ESPNORMBL: ALADIN version of routine (SPNORMBL+SPNORMAVE).
  •   FPNORM: writes out norms on the horizontally post-processed fields (including mean value and extrema). For distributed memory this routine is not parallelised and can do computations for all data on one processor only, so data have to be previously collected on one processor.
  •   SPNORMAVE: computes the average of norms in spectral space for each level and for all levels, uses data computed in SPNORMBL. For distributed memory computations are DM-global.
  •   SPNORMBL: computes norms in spectral space, multitasking interface. For distributed memory this routine is not parallelised and can do computations for all data on one processor only, so data have to be previously collected on one processor.
  •   WRHFP: writes out the horizontally post-processed fields, sorts out the output points for each domain, then writes records on files. Only grid-point data are written. If distributed memory, each processor reads its own data in buffers GDFPBUF and GPFPBUF, then all data are communicated to the "main" processor. Operation such as norm computation, polar value computation, biperiodicisation (for ALADIN domain), writing on ARPEGE or ALADIN file, are made in the "main" processor for all data.
  •   WRHFPG: GRIB version of WRHFP. No longer used in cycle 18.
  •   WRMLFP: GRIB routine used instead of WRHFPG in some cases (especially in FULL-POS configurations other than 927-type ones). Writes data on model layers.
  •   WRPLFP: GRIB routine used instead of WRHFPG in some cases (especially in FULL-POS configurations other than 927-type ones). Writes data on pressure layers.
  •   WRPVLFP: GRIB routine. Writes data on potential vorticity layers.
  •   WRSFP: writes out the vertically post-processed dynamical fields to ARPEGE/ALADIN file. Spectral fields are written out as spectral coefficients (if spectral output is wanted), grid-point fields are written out as grid-point fields. The horizontal grid is the model one. If distributed memory, each processor reads its own data in buffers GAUXBUF, then all data are communicated to the "main" processor. Operation such as norm computation, polar value computation, biperiodicisation (for ALADIN domain), writing on ARPEGE or ALADIN file, are made in the "main" processor for all data.
  •   WRSFPG: GRIB version of WRSFP. No longer called in cycle 18.
  •   WRSFPMIO: writes out the vertically post-processed dynamical fields at the target resolution on a MIO file for the upper air fields, and on standard FULL-POS files for the surface fields. Spectral fields are written out as spectral coefficients. This routine is called only when FULL-POS is used in a variational analysis. This routine is not called in a configuration 1, and is not completely parallelised in the cycles 17 and 18.
  •   WRTHLFP: GRIB routine. Writes data on potential temperature layers.


Distributed memory environment routines (directory "parallel"):
  •   FPADD3P: memory transfer routine which adds extra-longitudes points: one assumes that there are one western extra-longitude and 2 eastern extra-longitudes. Equivalent of the old routine SLADD3P (no longer used in cycles 17 and 18) previously used in the semi-Lagrangian scheme or the observation interpolator but works with a width band of NFPWIDE instead of NSLWIDE.
  •   FPDISPTOPROC1: communication between processors; dispatches data of several fields stored in a DM-global array from the "main" processor and for each processor stores data in a DM-local array. For each field the number of grid-points to dispatch is not necessary equal to the number of model grid points.
  •   FPDISPTOPROC2: communication between processors; particular case of FPDISPTOPROC1 when the number of grid-points to dispatch is equal to the number of model grid points.
  •   FPDISPVECTOR: communication between processors; communicates a scalar or a vector to all processors.
  •   FPEXTPOL: fills the halo of width band NFPWIDE for non polar extra-polar latitudes. Equivalent to the routine SLEXTPOL used in the semi-Lagrangian scheme or the observation interpolator but works with a width band of NFPWIDE instead of NSLWIDE. Coded only without points at the poles.
  •   FPREAD: communication between processors; receives data from the other processors to constitute the halo of width band NFPWIDE. Equivalent of the old routine SLREAD (no longer used in cycles 17 and 18) previously used in the semi-Lagrangian scheme or the observation interpolator but works with a width band of NFPWIDE instead of NSLWIDE.
  •   FPSENDTOPROC1: communication between processors; sends data of several fields stored in a DM-local array to the "main" processor and collects data in the "main" processor in a DM-global array. For each field the number of grid-points to send is not necessary equal to the number of model grid points.
  •   FPSENDTOPROC2: communication between processors; particular case of FPSENDTOPROC1 when the number of grid-points to send is equal to the number of model grid points.
  •   FPWRIT: communication between processors; sends data to the other processors to constitute the halo of width band NFPWIDE. Equivalent to the old routine SLWRIT (no longer used in cycles 17 and 18) previously used in the semi-Lagrangian scheme or the observation interpolator but works with a width band of NFPWIDE instead of NSLWIDE.
  •   IRCVGPF: routine to receive a distributed model grid point field from another processor. DM- local fields are dimensioned with NGPTOT (=NBDYSZ for DM), DM-global fields are dimensioned with NGPTOTG.
  •   IRCVGPFFP: routine to receive a distributed FULL-POS grid point field from another processor. DM-local fields are dimensioned with NFPRGPL, DM-global fields are dimensioned with NFPRGPG.
  •   ISNDGPF: routine to send a distributed model grid point field to other processors. DM-local fields are dimensioned with NGPTOT (=NBDYSZ for DM), DM-global fields are dimensioned with NGPTOTG.
  •   ISNDGPFFP: routine to send a distributed FULL-POS grid point field to other processors. DM- local fields are dimensioned with NFPRGPL, DM-global fields are dimensioned with NFPRGPG.
  •   MPE_BARRIER: auxiliary library routine for communication between processors: waits for the end of communication between all processors before starting another action.
  •   MPE_RECV: auxiliary library routine for communication between processors: reception of data from other processors.
  •   MPE_SEND: auxiliary library routine for communication between processors: sends data to other processors.
  •   SUFPTRDIR: initialise data structures for transposition of grid point data from column structure to latitudinal, for FULL-POS post-processed fields which are spectrally fitted.
  •   SUFPTRINV: initialise data structures for transposition of grid point data from latitudinal structure to column, for FULL-POS post-processed fields which are spectrally fitted.


Remark: routines FPDISPTOPROC1, FPDISPTOPROC2, FPDISPVECTOR, FPSENDTOPROC1 and FPSENDTOPROC2 are not validated (still bugged) and are close to the ORCV..., OSND..., IRCV..., ISND... communication routines used at ECMWF, it is planned to use only the last ones in a future cycle.


Routines of directory "pp_obs".
  •   CPCLIMI: fills interpolation buffers with some surface fields (land-sea mask) previous to compute weights with land-sea mask.
  •   CPCLIMO: computes output climatology from input one (orography and land-sea mask): extracts fields from model buffer/work file or array, then performs horizontal interpolations.
  •   CPVPOSPR: computes field pointers for vertical post-processing. Computes the pointers of the post-processing fields so that the fields are stored one after the others in the arrays GT0 (fitted fields) and GAUX (unfitted fields). The fields are stored in the following order: 1) underived 3D fields; 2) underived 2D fields; 3) derived 3D fields; 4) derived 2D fields.
  •   CTSTAR: computes the standard surface temperature and the surface temperature to be used for extrapolations of temperature and geopotential. For distributed memory computations are DM- local.
  •   DYNFPOS: interface routine managing vertical then horizontal interpolations for post-processing on dynamical 3D and 2D fields, calls several sequences of STEPO.
  •   ENDPOS: finish post-processing calculations for output height levels or -levels. For distributed memory computations are DM-local.
  •   ENDVPOS: interface routine managing all post-processing computations which can be done only after horizontal interpolations. Called if dynamical variables other than model variables are post- processed on height or -levels. For distributed memory computations are DM-local.
  •   EXPBESU: extrapolates pressure below surface. For distributed memory computations are DM- local.
  •   FPAERO: 12 points horizontal interpolations or taking nearest available value if data are missing. Used for aeronautic jet. For distributed memory computations are DM-local.
  •   FPBIPER: FULL-POS interface for double periodicisation (ALADIN). Calls the following library externals: ESHFT (ensuring correct results when conservation domain is shifted), ESPLIN (spline extension), ESMOOTH (smoothing across to get isotropy). For distributed memory this routine is not parallelised and can do computations for all data on one processor only, so data have to be previously collected on one processor.
  •   FPFILTER: set-up routine which computes a matrical operator which is a product of a transformation from computational sphere to "equivalent" not dilated sphere, a "THX"-filtering and the inverse transformation from "equivalent" not dilated sphere to computational sphere. The operator is stored in the array RFPMAT. Sphere to sphere transformations are made by reading a LFI file containing dilatation/contraction matrixes which can be initialised by a configuration 911 (see the ad-hoc documentation). FPFILTER is called only in the following cases:
  •   filtering in spectral space activated, LFPFIL=.TRUE. (if ARPEGE) or LFPBED=.TRUE. (if ALADIN) in NAMFPF.
  •   the geometry where the spectral fit is done is a stretched one: for example the initial geometry if not 927-type FULL-POS configurations, and CFPFMT is not 'MODEL'.
  •   post-processing for any variable if potential vorticity vertical coordinate.
  •   post-processing of horizontal derivatives (vorticity, divergence, vertical velocity, deformations) for other vertical coordinates.


For distributed memory computations are DM-global.
  •   FPGEO: transforms the post-processed fields into the output geometry. For distributed memory computations are DM-local.
  •   FPHOR12: 12-points horizontal interpolations for derivatives: interpolations are done subdomain by subdomain. For distributed memory computations are DM-local.
  •   FPINIPHY: controls that the pointers of physical fields to be post-processed are defined.
  •   FPINTDYN: interface for 12-points horizontal interpolations, for fields coming from the dynamics. For distributed memory computations are DM-local.
  •   FPINTPHY: interface for 12-points horizontal interpolations, for fields coming from the physics. Land-sea mask is taken into account for the surface variables. For distributed memory computations are DM-local.
  •   FPINT12: 12 points horizontal interpolations, with different options: after the 12 points horizontal interpolations, additional corrections can be done according to the values of the dummy arguments LDAMLY, KORR2 and KORR.
  •   LDAMLY=.TRUE.: add to the interpolated field the value of another (already computed) field specified at the interpolation points. This option is used if the field is an anomaly; in this case a correcting field is added to recover the absolute value of the field.
  •   (KORR2,KORR)=(1,1): interpolated value is bounded over zero if land, is reset to zero if sea. Option used for skin reservoir contents,snow depth.
  •   (KORR2,KORR)=(1,2): interpolated value is bounded between PMIN and PMAX. Option used for soil wetness.
  •   (KORR2,KORR)=(2,1): interpolated value is replaced by a pre-defined value over seas; then all interpolated values are multiplied by a rescaling factor PSCAL. Option used for deep soil temperature.
  •   (KORR2,KORR)=(2,2): interpolated value is filtered in order to remain above zero; then it is reset to zero over sea, and also over land if the surface temperature at this point is below a threshold; then all interpolated values are multiplied by a rescaling factor PSCAL. Option used for snow cover.
  •   (KORR2,KORR)=(2,3): interpolated value is filtered in order to remain between PMIN and PMAX; then it is reset to the maximum value PMAX over sea; then all interpolated values are multiplied by a rescaling factor PSCAL. Option used for wetness.
  •   (KORR2,KORR)=(2,4): interpolated value is filtered in order to remain above PMIN. Option used for positive fields.
  •   (KORR2,KORR)=(2,5): interpolated value is reset to 0 if lower than 0.5, and 1 if above 0.5. Option used for fields which can take only the values 0 or 1, like the land-sea mask.
  •   (KORR2,KORR)=(2,6): interpolated value is filtered in order to remain between PMIN and PMAX. Option used for normed fields.
  •   (KORR2,KORR)=(2,7): add a monotonic constraint to avoid overshoots and undershoots; interpolated value is reset to something between the values of the four adjacent grid-points. This is the same monotonic constraint which is used in the semi-Lagrangian interpolation routine LAIDQM. Used for precipitations.


For distributed memory computations are DM-local.
  •   FPMIMAX: 12 points interpolation, search for the nearest point. Used to interpolate the maximum of a field (such as temperature). For distributed memory computations are DM-local.
  •   FPMODCFU: preliminary modification of cumulated fluxes for post-processing: prepares input fields before horizontal interpolations.
  •   FPMODPREC: to modify precipitation fields before horizontal post-processing: to avoid enlargement of the precipitation areas, input fields are transformed so that there are negative values at the points with no precipitations. Output fields will be filtered after horizontal interpolations. This negative value is computed as the opposite of the maximum value of the nearest points: 4 points if the grid is regular; 5 or 6 points is the grid is reduced. Poles rows are ignored in the post- processing. For distributed memory computations are DM-local. The way to modify values is coded like horizontal interpolations, but in this particular case the interpolation points are model grid- points, so weights computations are useless, one only needs to know the grid-point coordinates of the surrounding points.
  •   FPMODXFU: preliminary modification of instantaneous fluxes for post-processing: prepares input fields before horizontal interpolations.
  •   FPOLIS: routine modifying some zero values by negative values according to the positive values of the surrounding points; is coded like an interpolation routine; works only for positive quantities, like rainfall amount. For distributed memory computations are DM-local.
  •   FPOSHOR: inner interface routine managing lagged part of horizontal interpolations. For distributed memory computations are DM-local.
  •   FPPS: interface to PPPS, to compute pressures corresponding to heights levels or -levels of post- processing. For distributed memory computations are DM-local.
  •   FPSCAW: for horizontal interpolations of FULL-POS, finds the indices in interpolation buffers where information of the surrounding model grid points can be found. For distributed memory computations are DM-local.
  •   FPSCAW2: particular case of FPSCAW, where the interpolation points are the grid-points themselves, and where interpolations are replaced by value change according to the values of the surrounding points; finds the indices in interpolation buffers where information of the surrounding model grid points can be found. For distributed memory computations are DM-local.
  •   FPSURF: 12 points horizontal interpolations, then altitude correction if necessary. Applied to auxiliary surface fields. For distributed memory computations are DM-local.
  •   FPVERT: interface to APACHE, to perform vertical post-processing from model levels to height or -levels, just after horizontal interpolations to take account of the difference of orography between the departure geometry and the arrival geometry. For distributed memory computations are DM-local.
  •   GPOS: saves in grid-point arrays the spectral fields that will be needed for post-processing on height levels above an outside orography. For distributed memory computations are DM-local.
  •   GRIDFPOS: interface routine managing post-processing of grid point fields. Performs horizontal post-processing on physical fields and fluxes and writes post-processed fields on a file.
  •   HPOS: interface routine managing non lagged part of horizontal interpolations. Works like the sequence adiab/CPG adiab/LACDYN (subroutines) for semi-Lagrangian scheme. Fills buffers for quantities to be interpolated (arrays PFPBUF1 and PFPBUF2). PFPBUF2 contains only surface physical fields, horizontally interpolated fields can be used before interpolations of the other fields stored in buffer PFPBUF1. Treats: 1) fitted fields coming from vertical interpolations, 2) unfitted fields coming from vertical interpolations, 3) physical fields and auxiliary surface fields, 4) cumulated fluxes, 5) instantaneous fields. A memory transfer by calling routine SC2RDG is generally necessary to get quantities for series 2 to 5. For monotasking or multitasking modes, computations for extra-longitudes are made by calling EXTMERB and computations for extra-latitudes are made by calling EXTPOLB (option with points at the pole is not coded). For distributed memory computations are DM-local.
  •   HPOSLAG: interface routine managing lagged part of horizontal interpolations and some vertical interpolations made after horizontal interpolations. Works like the sequence adiab/CPGLAG adiab/LAPINE (subroutines) for semi-Lagrangian scheme, but code is simpler because there is no trajectory computation: points where quantities have to be interpolated are already known, so coordinates and weights for interpolations can be precomputed in a set-up routine. First surface fields are interpolated (if post-processing on height or -levels), then dynamical fields and physical fields. If post-processing is made on height or -levels there are additional vertical interpolations to take account of the difference of orography between the departure geometry and the arrival geometry. For distributed memory computations are DM-local.
  •   POAERO: post-processing of jet and tropopause heights. For distributed memory computations are DM-local.
  •   POS: inner interface for vertical post-processing. For distributed memory computations are DM- local.
  •   PPFLEV: finds full or half levels under specified pressures. Called if post-processing on pressure, potential vorticity or potential temperature levels ([L5]='B', 'V' or 'T'). For distributed memory computations are DM-local.
  •   PPGEOP: vertical interpolations on pressure levels for geopotential. For distributed memory computations are DM-local.
  •   PPGEOP_OLD: old version of routine PPGEOP used at ECMWF. For distributed memory computations are DM-local.
  •   PPINIT: computes intermediate quantities connected with full levels and half levels pressures, prior to vertical interpolations on pressure or height levels. Called in all cases except the case where post-processing is done on model -levels ([L5]='M' or 'S'). For distributed memory computations are DM-local.
  •   PPINITZ: computes intermediate quantities connected with full levels and half levels geopotential, prior to vertical interpolations on height levels. Called if post-processing on height levels ([L5]='H'). For distributed memory computations are DM-local.
  •   PPINTP: vertical linear interpolation on pressure levels. For distributed memory computations are DM-local.
  •   PPINTZ: vertical linear interpolation on height levels. For distributed memory computations are DM-local.
  •   PPITPQ: vertical quadratic 3 points interpolation. For distributed memory computations are DM- local.
  •   PPLETA: computes the pressures of post-processing on -levels. Called if post-processing on - levels ([L5]='S'). For distributed memory computations are DM-local.
  •   PPLTETA: computes the pressures of post-processing on -levels. Called if post-processing on potential temperature levels ([L5]='T'). For distributed memory computations are DM-local.
  •   PPLTP: computes the pressures of post-processing on potential vorticity levels. Called if post- processing on potential vorticity levels ([L5]='V'). For distributed memory computations are DM- local.
  •   PPPMER: computes mean sea level pressure. For distributed memory computations are DM-local.
  •   PPPS: computes surface pressure at a given height, called if post-processing on height levels ([L5]='H'). For distributed memory computations are DM-local.
  •   PPQ: vertical interpolations on pressure levels for humidity, liquid water, ice, cloudiness, passive scalars. For distributed memory computations are DM-local.
  •   PPREQ: search for a suitable post-processing namelist file and reads it.
  •   PPRH: vertical interpolations on pressure levels or height levels for relative humidity. For distributed memory computations are DM-local.
  •   PPSTA: integrates standard atmosphere for geopotential. For distributed memory computations are DM-local.
  •   PPT: vertical interpolations on pressure levels for temperature. For distributed memory computations are DM-local.
  •   PPT_OLD: old version of routine PPT used at ECMWF. For distributed memory computations are DM-local.
  •   PPTHPW: computation of the moist irreversible adiabatic potential temperature, vertical interpolation on pressure or height levels. For distributed memory computations are DM-local.
  •   PPUV: vertical interpolations on pressure levels for wind components. For distributed memory computations are DM-local.
  •   PPUV_OLD: old version of routine PPUV used at ECMWF. For distributed memory computations are DM-local.
  •   PPVVEL: vertical interpolations on pressure levels or height levels for variables linked to vertical velocity. For distributed memory computations are DM-local.
  •   PPZHLEV: finds full or half levels under specified geopotential heights. Called if post-processing on height levels ([L5]='H'). For distributed memory computations are DM-local.
  •   PP2DINT: vertical linear interpolation (on pressure levels or height levels): used for potential vorticity, potential temperature, equivalent potential temperature, divergence, vorticity, stretching deformation, shearing deformation, stream function, velocity potential, absolute vorticity, wet potential vorticity. For distributed memory computations are DM-local.
  •   SPECFITASM: spectral transformation of model fields (except wind components) and surface orography read on a grid-point field, computation of spectral stream function and velocity potential on model -levels, writing of all these fields on a file. This routine is called in the second part of a 927-type FULL-POS configuration. Used for shared memory.
  •   SPECFITADM: distributed memory version of SPECFITASM.
  •   SPECFITGSM: GRIB version of SPECFITASM.
  •   SPECFITGDM: distributed memory version of SPECFITGSM.
  •   SPOS: filters some spectral quantities in model spectral space.
  •   TJCUBI: post-processing of jet and tropopause: finds coefficients of a cubic expression. For distributed memory computations are DM-local.
  •   TJQUAA: post-processing of jet and tropopause: performs the least square fit by a quadratic function. For distributed memory computations are DM-local.
  •   TJQUD: post-processing of jet and tropopause: finds coefficients of a quadratic expression. For distributed memory computations are DM-local.
  •   VPOS: interface routine managing all vertical interpolations which can be done before horizontal interpolations. VPOS does one call to POS for "basic" variables, and special separate calls to POS for variables linked with the wind field, such as divergence, (relative) vorticity, absolute vorticity, stream function and velocity potential. For distributed memory computations are DM-local.


Set-up routines of directory "setup":
  •   CPFPDS: initialises the list of fields to be post-processed. For distributed memory computations are DM-global.
  •   DFLTVV1: initialises default values of functions A and B of hybrid vertical coordinate of the arrival geometry of FULL-POS. For distributed memory computations are DM-global.
  •   FPFINDS: computes full post-processing descriptors of dynamics. For distributed memory computations are DM-global.
  •   SUAFN: initialises ARPEGE field descriptors. Reads namelist NAMAFN, initialises YOMAFN. For distributed memory computations are DM-global.
  •   SUAFN1: initialises ARPEGE field descriptors: part of calculations done before the namelist reading. For distributed memory computations are DM-global.
  •   SUAFN2: initialises ARPEGE field descriptors: part of calculations done after the namelist reading. For distributed memory computations are DM-global.
  •   SUAFPDS: initialise pointers of the basic fields which have been horizontally then vertically post- processed, initialises YOMAFPDS. For distributed memory computations are DM-global.
  •   SUAFPOS: interface routine, initialise relative pointers and descriptors for post-processing help arrays. For distributed memory computations are DM-global.
  •   SUALFPOS: memory allocation for FULL-POS arrays.
  •   SUALLO: memory allocation: general interface routine.
  •   SUALMP2: allocation of arrays used for distributed memory; includes quantities used in the distributed memory version of FULL-POS.
  •   SUBFPOS: interface routine, initialise some commons/modules:
  •   YOMFPF which describes the spectral filter to be applied.
  •   YOMFPOP which contains post-processing file-handling parameters.
  •   YOMFPSC2 which contains the control arrays for horizontal post-processing rows.
  •   YOMFPIOS which contains the parameters for IO scheme on post-processing buffers.
  •   YOMFPSC2B which contains the control arrays for horizontal post-processing sub-rows.
  •   initialise start address of each row within every input/output post-processing buffer.
  •   SUCFU: initialises the control of cumulated fluxes.
  •   SUCFUFP: initialises cumulated fluxes switches for FULL-POS. For distributed memory computations are DM-global.
  •   SUCT0: routine to initialize level 0 control common.
  •   SUDIM: initialises dimensioning quantities, reads namelist NAMDIM, initialises YOMDIM.
  •   SUFPC: initialises FULL-POS post-processing scientific and technical options, reads namelist NAMFPC, initialises YOMFPC. For distributed memory computations are DM-global.
  •   SUFPCONF: initialise FULL-POS configuration letters for STEPO. Initialise for each scan the configuration letters for vertical post-processing, horizontal post-processing and for IOPACK. For distributed memory computations are DM-global.
  •   SUFPCSET: initialises parallel environment for FULL-POS necessary for horizontal interpolations. Works with a lateral band of NFPWIDE latitudes in the halo. For distributed memory computations are DM-local. Some quantities are computed in SUFPRSET called by SUFPCSET.
  •   SUFPD: initialise FULL-POS horizontal subdomains. Computes total number of output points (including the poles if the output grid is Gaussian). Reads namelist NAMFPD, initialises YOMFPD. For distributed memory computations are DM-global.
  •   SUFPDIM: initialise dimensioning quantities for FULL-POS. Computes number of derived/ underived fields, number of fitted/unfitted fields, number of scalar/vector fields as if for a given post-processing time step, all the fields were requested at all levels for all subdomains. For distributed memory computations are DM-global.
  •   SUFPDOM: initialise list of FULL-POS post-processing subdomains. To read the list of subdomains as a character string and convert it into an integer array. In the string, the subdomain names are separated with a ":". If the string is blank, all the subdomains are required. For distributed memory computations are DM-global.
  •   SUFPDS: set up FULL-POS descriptors for dynamics. For distributed memory computations are DM-global.
  •   SUFPDYN: initialise dynamical part of YOMFP4 and PTRFP4, which contains the requests on post-processing at a given time-step. In this routine, we consider that, for a given level type, all the fields are post-processed at all levels and for all subdomains. Reads namelists containing local variables (NAMFPDY2, NAMFPDYP, NAMFPDYH, NAMFPDYV, NAMFPDYT and NAMFPDYS).
  •   SUFPF: initialises the profile of the spectral post-processing filter. Reads namelist NAMFPF and initialises YOMFPF.
  •   SUFPFIT: initialise spectral fit option for post-processing. Initialises for each scan the logical switches to decide if spectral fields should be fitted or not. For distributed memory computations are DM-global.
  •   SUFPG1: initialise output geometry: sets default values, then reads namelist NAMFPG and checks it. For distributed memory computations are DM-global.
  •   SUFPG2: initialise output geometry: computes DM-global quantities containing the coordinates of the output points in the model geometry, the output mapping factor, and the relative rotation matrix. When an output point is at a geographical pole, the equation of the compass is degenerating, so a direct (and exact) computation is needed. For distributed memory computations are DM-global.
  •   SUFPG: initialise output geometry: calls SUFPG1 and SUFPG2, makes some additional tests then computes the DM-local versions of the DM-global quantities computed in SUFPG2. Initialises YOMFPG.
  •   SUFPIOS: set-up for using work files on post-processing buffers. To set-up YOMFPIOS which contains parameters for using the MIO package on work files. Opens work files.
  •   SUFPOPH: initialise post-processing file-handling parameters (YOMFPOP). For distributed memory computations are DM-global.
  •   SUFPPHY: initialise physical part of YOMFP4 and PTRFP4, which contain the requests on post- processing at a given time-step. In this routine, we consider that, for a given level type, all the fields are post-processed at all levels and for all subdomains. Reads namelist containing local variables (NAMFPPHY).
  •   SUFPRSET: initialises parallel environment for FULL-POS necessary for horizontal interpolations: communication tables and test. Works with a lateral band of NFPWIDE latitudes in the halo. This routine is called only if distributed memory, and computations are DM-local.
  •   SUFPSC2: reads namelist NAMFPSC2 and sets-up YOMFPSC2 which contains the control parameters and arrays to scan the post-processing buffers per row.
  •   SUFPSC2B: computes start address of each row within every input/output post-processing buffer. Initialise control arrays on sub-rows (YOMFPSC2B). Also initialises YOMRFPB, YOMWFPB, YOMDFPB, YOMPFPB, YOMAFPB, YOMFPT0 and PTRFPB2.
  •   SUFRAME (or SUEFRAME if plane geometry, or SUFPGRIB if GRIB files): sets-up the frame of ARPEGE file, in the current case for the FULL-POS files. For distributed memory computations are DM-global.
  •   SUGAW: initialises the Gaussian/Lobatto latitudes and weights for the geometry of FULL-POS grid. Called if the FULL-POS grid is a global Gaussian/Lobatto one. For distributed memory computations are DM-global.
  •   SUGENORD: computes the rotation matrix to find the geographical north, from grid-points of a computational transformed sphere; this matrix is necessary to convert vectors which are initially given in the repere of the model (transformed) geometry (for example after the horizontal interpolations) towards the geographical repere. For distributed memory computations are DM- global.
  •   SUGPPRP: initialises relative pointers for physics arrays. For distributed memory computations are DM-global.
  •   SUGRCFU: reads the cumulated fluxes on ARPEGE files. For distributed memory computations are DM-global.
  •   SUGRXFU: reads the instantaneous fluxes on ARPEGE files. For distributed memory computations are DM-global.
  •   SUGRIDF: interface for reading the surface grid point fields of the departure files. For distributed memory computations are DM-global.
  •   SUGRIDU: interface for reading the upper air grid point fields of the departure files. For distributed memory computations are DM-global.
  •   SUHOW1 (SUEHOW1 for ALADIN): initialises the coordinates of the nearest model grid point of the FULL-POS interpolation points: the general rule is to take the grid-point which is immediately at the north-west (relative to the transformed geometry) of the interpolation point, except in the case where the north-western point is the pole, in this case one takes the south-western model grid-point. Additional coordinates are computed. For distributed memory computations are DM-local.
  •   SUHOW2 (SUEHOW2 for ALADIN): computes weights without land-sea mask and surface temperature for bilinear or 12 points horizontal interpolations used in FULL-POS. For distributed memory computations are DM-local.
  •   SUHOWLSM (SUEHOWLSM for ALADIN): computes weights for bilinear or 12 points horizontal interpolations used in FULL-POS. Possibility to use the land/sea/ice mask or the surface temperature. For distributed memory computations are DM-local.
  •   SUINIF: interface routine for reading the departure files.
  •   SUMP: initialises quantities and arrays controling distributed memory.
  •   SUNMEN: initialises array NFPMEN which contains for each Gaussian/Lobatto latitude of the FULL-POS grid the highest zonal wave number represented. Called if the FULL-POS grid is a global Gaussian/Lobatto one.
  •   SURFPBUF: initialise buffer RFPBUF of YOMRFPB, which contains the output climatology and geometry.
  •   If variable NFPCLI is 1,2 or 3 the output geometry climatology is read on a file by routine RDCLIMO or RDECCLIMO according to use of ARPEGE or GRIB files.
  •   If variable NFPCLI is 0 the output geometry is interpolated from the input geometry by routine CPCLIMO, at least for orography.
  •   Output geometry is stored in the array ZFIELD for orography, mapping factor, local repere (north direction).
  •   These data are stored on a MIO file or in the buffer array RFPBUF according to the value of LIOFPR.
  •   Remark: for distributed memory, all computations are DM-local (each processor treats its interpolation points) but diagnostic prints and reading climatology on a file is made on the "main" processor for all the grid-points, so processor communication is necessary after reading climatologies to dispatch data in all the processors and to collect data in the "main" processor to do diagnostics on orography.
  •   SURFPDS: initialises the descriptors of the auxiliary fields needed for horizontal post-processing, initialises YOMRFPDS. For distributed memory computations are DM-global.
  •   SUSC2: initialises some control variables required in routine SCAN2MSM and SCAN2MDM: interpolation buffers quantities, some multitasking quantities but also some distributed memory quantities.
  •   SUSIZBUF: initialises the number of buffers required to store some quantities from the non-lagged grid-point computations (for example computations done in HPOS for FULL-POS) towards the lagged grid-point computations (for example computations done in HPOSLAG for FULL-POS). Also used for model, semi-Lagrangian interpolations buffers, observation interpolation buffers. Some quantities are in YOMSC2. For distributed memory computations are DM-global.
  •   SUSPEC: interface for reading the spectral fields of the departure files.
  •   SUVFPOS: initialises and sorts the list of the dynamical fields to post-process for a given level type of post-processing. Fields are stored as follows: 1) fitted underivated 3D fields; 2) fitted derivated 3D fields; 3) fitted underivated 2D fields; 4) fitted derivated 2D fields; 5) unfitted 3D fields; 6) unfitted 2D fields.
  •   SUVFPOSL: initialises YOMFP4L which contains the working variables and arrays to write out the dynamical post-processed fields.
  •   SUVPOS: initialises YOMVPOS which contains control variables for vertical post-processing.
  •   SUWFPBUF: initialises buffer WFPBUF of YOMWFPB, which contains the working fields for horizontal interpolations: size of the box, indexes and weights. Reads or computes input/output land-sea mask, computes weights and index, then fills buffer.
  •   Fills interpolation buffers containing the model grid-point land-sea mask and surface temperature (currently surface temperature is not used in weight computations, so the array is filled with -999) in routine CPCLIMI.
  •   Fills the output geometry land-sea mask and surface temperature (currently surface temperature is not used in weight computations, so the array is filled with -999): such quantities can be read on a file if NFPCLI=1,2 or 3 by routines RDCLIMO or RDECCLIMO or interpolated if NFPCLI=0 by routine CPCLIMO.
  •   Computes weights for horizontal interpolations: a set of weights without land-sea mask and a set to weights with land-sea mask.
  •   Stores the weights on an MIO file or in the buffer WFPBUF according to the value of LIOFPW. Some additional quantities can be stored: model Gaussian/Lobatto latitude index immediately at the north of the interpolation point (lowerly bounded by 1), longitudes indices of the points denoted by B0, B1, B2 and B3, number of the FULL-POS subdomain to which belongs each interpolation point.
  •   Remark: for distributed memory, all computations are DM-local (each processor treats its interpolation points) but reading climatology on a file is made on the "main" processor for all the grid-points, so processor communication is necessary after reading climatologies to dispatch data in all the processors.
  •   SUWFPDS: initialises the FULL-POS working fields descriptors needed for horizontal post- processing, initialises YOMWFPDS. For distributed memory computations are DM-global.
  •   SUXFU: initialises the control of instantaneous fluxes.
  •   SUXFUFP: initialises instantaneous fluxes switches for FULL-POS. For distributed memory computations are DM-global.
  •   SU0YOMA: 0-level interface routine for set-up: first part.
  •   SU0YOMB: 0-level interface routine for set-up: second part.
  •   SU1YOM: 1-level interface routine for set-up.
  •   SU3FPOS: 3-level interface routine for set-up of FULL-POS features. Initialises buffers RFPBUF and WFPBUF.
  •   SU4FPOS: 4-level interface routine for set-up of FULL-POS features. Initialises blocks YOM4FPOS, YOMFP4 and PTRFP4, which contain the requests for post-processing at a given time-step. The grid-point fields are stored in the following order: physics, then cumulated fluxes CFU, then instantaneous fluxes XFU.


Routines of directory "transform".


See documentation about spectral transforms, only specific FULL-POS routines are here described.
  •   FTDIRH: interface routine for direct Fourier transforms.
  •   FTINVH: interface routine for inverse Fourier transforms.
  •   LTDIRH: interface routine for direct Legendre transforms.
  •   LTINVH: interface routine for inverse Legendre transforms.
  •   PRFIP: FULL-POS spectral fit version of PRFI1. In inverse Legendre transforms, when transforming FULL-POS fields, pp_obs/PRFIP is called instead of transform/PRFI1 for fields preparation. PRFIP has to be moved later in directory transform.
  •   REESPESM: spectral transformation from grid point space to spectral space. For more details see documentation about spectral transforms.
  •   SC2FPFSC: FULL-POS spectral fit version of SC2FSC. In inverse Fourier transforms, when transforming FULL-POS fields, transform/SC2FPFSC is called instead of transform/SC2FSC.
  •   SPEREESM: spectral transformation from spectral space to grid-point space. For more details see documentation about spectral transforms.
  •   TRACARE: computes geographical coordinates, once given the computational sphere coordinates.
  •   TRARECA: computes the computational sphere coordinates, once given the geographical coordinates.
  •   UPDSPFP: FULL-POS spectral fit version of UPDSP. After direct Legendre transforms, when transforming FULL-POS fields, transform/UPDSPFP is called instead of transform/UPDSP (final memory transfer in spectral array containing all coefficients).
  •   UPDVPOS: updates YOMVPOS which contains control variables for vertical post-processing.
  •   UVSPESM: spectral transformation from grid point space to spectral space: takes the grid-point wind components, transform them into the spectral divergence/vorticity or velocity potential/stream function. For more details see documentation about spectral transforms.


Routines of directory "utility".
  •   CHIEN (or CCHIEN if ALADIN): It controls consistency between defined geometry and ARPEGE file. In the case of inconsistency it calls ABOR1. For distributed memory computations are DM-global.
  •   CPGRIDF: copies a grid point buffer/work file on another buffer/work file. For distributed memory computations are DM-local.
  •   DEALFPOS, DEALDDH, DEALCOS, DEALCTV, DEALGES, DEALCAN, DEALSPA, DEALSC2, DEALSCR, DEALMOD, DEALNMI, DEALLO: deallocate space for global variables. Respectively for:
  •   Full-POS variables.
  •   DDH variables.
  •   Cost function variables.
  •   Control variables (arrays depending on the size of the control variable).
  •   Arrays needed for first guess constraint and for CANARI OI.
  •   Analysis grid and diagnostic fields.
  •   Spectral arrays.
  •   Model grid-point buffers and other arrays allocated in SUSC2.
  •   Screening of observations.
  •   Model fields for screening.
  •   Other arrays.
Remark: DEALCAN is provisionally in directory canari and has to be moved later in directory utility.
  •   EGGDIR: see SUGENORD but used for ALADIN: the departure geometry is the ALADIN one. For distributed memory computations are DM-global.
  •   EGGRVS: geography of grid-points, inversion from grid to geographical sphere ARPEGE- ALADIN. For distributed memory computations are DM-global.
  •   EGGX: geography of grid-points ARPEGE-ALADIN. For distributed memory computations are DM-global.
  •   EMPTB: memory transfer routine; calls EXPAND21, EXPAND31 or EXPAND41 if unpacking is required. For distributed memory computations are DM-local.
  •   ENDIOS: closes "MIO" files and deletes them.
  •   EXTFPF: extracts 2D fields from grid-point post-processing file. Writes out the post-processed fields of the post-processing grid-point buffer. Performs a transpose from ordering by the NFPROMAL based sub-rows of packets used in the grid-point calculations to an ordering by fields. The result is in the form of an array PREAL containing the extracted fields sorted out from the first subdomain to the last subdomain. For distributed memory this routine performs DM-local computations on the current processor data only.
  •   EXTGPF: extracts 2D fields from grid-point file. Writes out the model level fields of the model grid-point buffer. Performs a transpose from ordering by the NPROMA based packets used in the grid-point calculations to an ordering by fields. The result is in the form of an array PREAL containing the extracted fields stored from the North pole to the South pole (including the poles) stored in a compact way taking into account the reduced grid. The result is suitable for being fed directly to the output routines FAIENC or grib packing routines GRIBEX. This routine can be used only for shared memory.
  •   FILLB: memory transfer routine; calls PACK21, PACK31 or PACK41 if packing is required. Does the inverse operation of routine EMPTB. For distributed memory computations are DM- local.
  •   FREEMEM: interface routine to free memory used by pointer allocations.
  •   INCGPF: includes 2D fields into array/work file. Writes in model fields into the model grid-point buffer. Performs a transpose from ordering by fields to an ordering by the NPROMA based packets used in the grid-point calculations. Warning: it is considered that PREAL contains the poles values in case ARPEGE/IFS. This routine can be used only for shared memory.
  •   IOPACK: interface for writing data on ARPEGE, ALADIN or GRIB files.
  •   MATCLOSE: routine to close rotation or contraction/dilatation matrixes.
  •   MAXGPFV: computes maximum value of a grid-point field. Extracts a field from model work file or array, then computes its maximum value. If the field is not found, nothing is done. In distributed memory, each processor reads its own data in the buffer GPPBUF, then data are collected in the "main" processor, then the maximum of the field is computed in the "main" processor and communicated to all the other processors.
  •   Function MGETBUF: selects and reserves a free buffer ibuf in a non-lagged routine to store information about a package of latitude iproc. This routine is used only for shared memory.
  •   Function MFINDBUF: finds the buffer ibuf in a lagged routine. This routine is used only for shared memory.
  •   Function MDONEBUF: releases the buffer ibuf in a lagged routine when information about the package of latitude iproc becomes useless. This routine is used only for shared memory.
  •   MXMAOP: product matrix times matrix, also used in spectral computations and spectral transforms.
  •   PKGRIDA: packs model grid point variables by writing to then reading from an ARPEGE file. At the beginning and the end of the routine data are in a buffer or an MIO file. If distributed memory destoring from buffer or MIO file is DM-local, then a communication between processors collects data in the "main" processor, then packing by writing/reading on an ARPEGE file is made in the "main" processor, then packed data are dispatched in all the processors, then each processor stores its own data on a buffer or an MIO file.
  •   PKGRIDG: the same as PKGRIDA but for GRIB files.
  •   SC2RDG: memory transfer routine; reads data in a buffer or an IO file and copies it in a grid-point array. For distributed memory computations are DM-local.
  •   SC2WRG: memory transfer routine; reads data in a grid-point array and copies it in a buffer or an MIO file. Does the inverse operation of routine SC2RDG. For distributed memory computations are DM-local.
  •   WRSPBUF: writes additional spectral data on MIO files.


Next Section
Previous Section



 

Top of page 23.04.2002
 
   Page Details         © ECMWF
shim shim shim