Flux Processing Chain

Flux Processing Chain#

Info

Flux processing follows the Swiss Fluxnet Flux Processing Chain

Description#

Half-hourly eddy covariance (EC) fluxes of CO2, N2O, and CH4 were computed from 20Hz raw data using EddyPro (v7.0.9), following established community guidelines (Aubinet et al., 2012; Sabbatini et al., 2018). Post-processing, including quality control and gap-filling, utilized the Python library diive (v0.87.1; Hörtnagl, 2025) ; for quality assessment and gap-filling) and the R package ReddyProc (v???, Wutzler et al., 2018; for NEE partitioning). The processing workflow involved several key stages: flux calculation (Level-1), quality flagging (Level-2) encompassing steady-state, gas completeness, spectral correction, signal strength, raw data statistical screening, and angle-of-attack tests, and storage correction (Level-3.1). Subsequent outlier flagging (Level-3.2) employed a suite of statistical tests and absolute limits. Low-turbulence periods were filtered using three different USTAR thresholds (Level-3.3). An overall quality flag was calculated from all individual tests and then applied to reject flux records of low quality. Gaps in the quality-filtered data were then filled using the long-term random forest approach as implemented in diive (for random forest see Breiman, 2001), with exceptions handled by the MDS method (Reichstein et al., 2005) where appropriate (Level-4.1). Net ecosystem exchange (NEE) was subsequently partitioned into gross primary production (GPP) and ecosystem respiration (RECO) using both nighttime and daytime methods (Level-4.2; Lasslop et al., 2010; Reichstein et al., 2005). Additional details about specific processing steps and settings are given in the respective sections of this documentation, and in the Jupyter notebooks.

Flowchart#

        flowchart
	ecbin[EC binary raw data]
    eccsv[EC ASCII raw data]
    met[meteo data]
    L0F[L0 fluxes]
    L1F[L1 fluxes]
	L42F[L4.2 partitioned fluxes]
    bico[bico]
    EP[fluxrun/EddyPro]

    %% ---------------- diive
    subgraph diive_scripts
    	diive[diive]
        L2QCF[L2 quality flags]
        L32QCF[L3.2 quality flags]
        L33QCF[L3.3 quality flags]
        QCF[overall quality flag QCF]
        L31F[L3.1 fluxes]
        L31QCF[L3.1 fluxes filtered]        
	    L31Ffiltered[L3.1 fluxes filtered]
        L41F[L4.1 gap-filled fluxes]
    end
    

	ecbin --> bico --> eccsv --> EP
    EP --> L0F -- informs --> L1F
    met -- informs --> L1F
    
    L1F --> diive    
    diive --> L2QCF
    diive --> L31F
    diive --> L33QCF
	L2QCF --> L31Ffiltered
    L2QCF --> QCF
    L32QCF --> QCF
    L33QCF --> QCF
    QCF --> L31QCF
    L31F --> L31QCF        
    L31QCF -- gap-filling --> L41F
    L31F --> L31Ffiltered
    L31Ffiltered --> L32QCF
    L41F -- partitioning (NEE) --> L42F

    classDef orange fill:#FFE0B2,stroke:#E65100,stroke_width:4px,color:#E65100
    class L2QCF,L32QCF,L33QCF,QCF orange

    classDef green fill:#DCEDC8,stroke:#33691E,stroke_width:4px,color:#33691E
    class L0F,L1F,L31F,L31Ffiltered,L31QCF,L41F,L42F green

    classDef blue fill:#E1F5FE,stroke:#01579B,stroke_width:4px,color:#01579B
    class bico,EP,diive blue

    classDef white fill:#FFFFFF,stroke:#000000,stroke_width:4px,color:#000000
    class diive_scripts white

    

Processing steps#

  • Raw data EC are the eddy covariance raw data files.

  • Level-0 are preliminary calculations, used to fine-tune final processing settings.

  • Level-1 are final flux calculations that are used in all subsequent steps.

  • Level-2 creates additional quality flags based on Level-1 output

  • Level-3.1 adds the storage term to the respective flux

  • Level-3.2 detects outliers and creates additional quality flags

  • Level-3.3 creates additional quality flags based on three different constant USTAR thresholds, previously detected by FLUXNET (Pastorello et al., 2020)

  • Level-4.1 performs gap-filling (long-term random forest)

  • Level-4.2 partitions NEE fluxes (gap-filled with random forest) into GPP and RECO