|
Table of contents
Chapter 1. Technical overview
Chapter 2. FULL-POS post-processing
and interpolation
Chapter 3. Parallel implementation
REFERENCES
|
|
Next
Section
Previous Section
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.
General architecture under CNT0:
Only features concerning FULL-POS are mentioned.
control/CNT0
| |
• setup/SU0YOMA
|
| |
• setup/SUAFN
|
| |
• setup/SUDIM
setup/SUFPDIM
|
| |
• setup/SUFPDYN
setup/SUFPDOM |
| |
• transform/UPDVPOS
setup/SUVPOS |
| |
• setup/SUFPD
utility/EGGX
|
| |
• setup/SUCFU
setup/SUCFUFP |
| |
• setup/SUXFU
setup/SUXFUFP |
| |
• setup/SUGPPRP
pp_obs/FPINIPHY |
| |
• setup/SUAFPOS
|
| |
• setup/SUALLO
setup/SUALFPOS |
| |
• setup/SU0YOMB
|
| |
• setup/SUMP
|
| |
• some other routines which do not contain
any FULL-POS feature. |
| |
• setup/SUFPG
|
| |
• setup/SUFPG1
|
| |
• setup/SUGAW
(arborescence is not described in detail). |
| |
• setup/SUFPG2
|
| |
• utility/EGGX
utility/EGGRVS
and ALADIN routine EGGMLT |
| |
• setup/SUSC2
|
| |
• 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/SUFPOPH
setup/SUFRAME
FACADE
(or SUEFRAME if plane geometry, or SUFPGRIB
if GRIB files). |
| |
• setup/SUFPIOS
MIOOPEN |
| |
• 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) |
| |
• 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) |
| |
• 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
|
| |
• setup/SURFPBUF
|
| |
• pp_obs/CPCLIMO
|
| |
• utility/SC2RDG
utility/EMPTB
and "MIO" routines. |
| |
• parallel/FPWRIT
(DM) processor communication
routine MPE_SEND. |
| |
• parallel/FPREAD
(DM) processor communication
routine MPE_RECV. |
| |
• 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
|
| |
• utility/SC2RDG
utility/EMPTB
and "MIO" routines. |
| |
• parallel/FPWRIT
(DM) processor communication
routine MPE_SEND. |
| |
• parallel/FPREAD
(DM) processor communication
routine MPE_RECV. |
| |
• pp_obs/CPCLIMO
|
| |
• utility/SC2RDG
utility/EMPTB
and "MIO" routines. |
| |
• parallel/FPWRIT
(DM) processor communication
routine MPE_SEND. |
| |
• parallel/FPREAD
(DM) processor communication
routine MPE_RECV. |
| |
• 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. |
| |
• utility/SC2WRG
utility/FILLB |
| |
• control/CNT4
(see below arborescence
under CNT4). |
| |
• setup/SU4FPOS
|
| |
• 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
|
| |
• 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 |
| |
• 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 |
| |
• 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 |
| |
• parallel/FPREAD
(DM) processor communication
routine MPE_RECV. |
| |
• parallel/FPWRIT
(DM) processor communication
routine MPE_SEND. |
| |
• 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 |
| |
• parallel/FPREAD
(DM) processor communication
routine MPE_RECV. |
| |
• parallel/FPWRIT
(DM) processor communication
routine MPE_SEND. |
| |
• 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. |
General architecture under DYNFPOS:
Only features concerning FULL-POS are mentioned.
pp_obs/DYNFPOS
| |
• setup/SUVFPOS
|
| |
• transform/UPDVPOS
setup/SUVPOS |
| |
• setup/CPFPDS
setup/FPFINDS
setup/SUFPDS |
| |
• 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 |
| |
• 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/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/WRSPBUF
"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. |
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 |
| |
• 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 |
| |
• For distributed memory, some routines
doing halo constitution and communications between processors before
performing interpolations under HPOSLAG. |
| |
• parallel/FPWRIT
processor communication
routine MPE_SEND. |
| |
• parallel/FPREAD
processor communication
routine MPE_RECV. |
| |
• 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 |
| |
• ENDPOS |
| |
• Several adiab/GP...
routines: GPRCP, GPPREH, GPXYB,
GPPREF, GPGEO, GPRH,
GPTET, GPEPT. |
| |
• utility/SC2WRG
utility/FILLB |
Organigram of POS:
| |
• Several adiab/GP...
routines: GPRCP, GPPREH, GPXYB,
GPPREF, GPGEO, GPPVO,
GPEPT. |
*** A series of routines computing intermediate quantities
and weights for vertical interpolations.
| |
• PPPS PPINTZ
and EXPBESU |
| |
• PPLETA adiab/GPPREH,
adiab/GPXYB and adiab/GPPREF |
*** A series of interpolation routines.
| |
• PPUV |
| |
• PPUV_OLD PPINTP
and PPITPQ |
| |
• (PPITPQ) (currently
commented). |
| |
• PPT |
| |
• PPT_OLD PPINTP |
| |
• PPQ PPINTP |
| |
• c9xx/APACHE
(see below) |
| |
• PPGEOP |
| |
• PPGEOP_OLD PPSTA, adiab/GPGEO,
PPITPQ and PPINTP. |
| |
• PPRH adiab/GPRH
and PPINTP |
| |
• PPVVEL adiab/GPCTY
and PPINTP |
| |
• POAERO |
| |
• Storage of post-processed fields. |
Organigram of FPOSHOR:
| |
• utility/SC2RDG
utility/EMPTB |
| |
• FPSURF FPINT12 |
| |
• FPINTDYN FPINT12,
FPHOR12 and FPAERO |
| |
• FPINTPHY FPINT12
and FPMIMAX |
| |
• FPVERT |
| |
• FPPS |
| |
• adiab/GPPREH,
adiab/GPXYB and adiab/GPPREF |
| |
• PPPS PPINTZ
and EXPBESU |
| |
• 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 |
| |
• c9xx/VEINE
adiab/GPGEO,
CTSTAR, PPPMER, adiab/GPPREH,
adiab/GPXYB and adiab/GPPREF |
| |
• c9xx/AVAL
|
| |
• PPT |
| |
• PPT_OLD PPINTP |
| |
• PPQ PPINTP |
| |
• PPRH adiab/GPRH
and PPINTP |
| |
• PPUV |
| |
• PPUV_OLD PPINTP
and PPITPQ |
| |
• (PPITPQ) (currently
commented). |
| |
• PPGEOP |
| |
• PPGEOP_OLD PPSTA, adiab/GPGEO,
PPITPQ and PPINTP. |
| |
• Several adiab/GP...
routines: GPPREH, GPXYB, GPPREF
and GPRCP |
| |
• c9xx/BOB
PPINTP |
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.
control/STEPO
| |
• control/SPCH
control/SPCM
pp_obs/SPOS
utility/MXMAOP. |
| |
• 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: |
| |
• 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. |
| |
• Model grid-point buffers and other arrays
allocated in SUSC2. |
| |
• Screening of observations. |
| |
• Model fields for screening. |
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
|