TNO Intern

Commit f58ab34e authored by Arjo Segers's avatar Arjo Segers
Browse files

Updates for CrIS/NH3 processing.

parent 8d8fc4f9
Loading
Loading
Loading
Loading
+477 −444

File changed.

Preview size limit exceeded, changes collapsed.

+61 −7
Original line number Diff line number Diff line
@@ -31,15 +31,26 @@ my.cso.convention : CF-1.7
! - map plots
!

!! region name:
!my.region                       :  CAMS
!! CAMS regional ensemble domain:
!my.region.west                  :  -30.0
!my.region.east                  :   45.0
!my.region.south                 :   30.0
!my.region.north                 :   76.0
!! size of map figures for this region:
!my.region.figsize               :   (6,5)

! region name:
my.region                       :  CAMS
my.region                       :  xEMEP
! CAMS regional ensemble domain:
my.region.west                  :  -30.0
my.region.east                  :   45.0
my.region.east                  :   90.0
my.region.south                 :   30.0
my.region.north                 :   76.0
my.region.north                 :   82.0
! size of map figures for this region:
my.region.figsize               :   (6,6)
my.region.figsize               :   (8,6)


!! region name:
!my.region                       :  globe
@@ -60,24 +71,67 @@ my.region.figsize : (6,6)
my.inquire.timerange.start      :  2011-10-01 00:00
my.inquire.timerange.end        :  2026-12-31 23:59

! testing 3 days
my.timerange.start              :  2023-03-01 00:00
my.timerange.end                :  2023-03-03 23:59
!! testing 3 days
!my.timerange.start              :  2024-03-01 00:00
!my.timerange.end                :  2024-03-03 23:59

! Reporting2026
my.timerange.start              :  2024-01-01 00:00
my.timerange.end                :  2024-12-31 23:59

! SESAM archive
!!~ completion of CrIS2 archive:
!my.timerange.start              :  2019-03-01 00:00
!my.timerange.end                :  2023-12-31 23:59


!----------------------------------------------------------
! user specific settings:
!----------------------------------------------------------

!..............................
#if "${USER}" == "you"
!..............................

! Attributes written to output files.
my.attr.author                  :  Your Name
my.attr.institution             :  CSO
my.attr.email                   :  Your.Name@cso.org

! base location for work directories:
my.work                         :  /Scratch/${USER}/CSO-Test-CrIS

!..............................
#elif "${USER}" == "arjos"
!..............................

! Attributes written to output files.
my.attr.author                  :  Arjo Segers
my.attr.institution             :  MET Norway
my.attr.email                   :  arjos@met.no

! base location for work directories:
!my.work                         :  /work/${USER}/CSO-Test-CrIS
my.work                         :  /lustre/storeB/project/fou/kl/sesam/work/users/${USER}/CSO-Test-CrIS

!..............................
#elif "${USER}" == "segersaj"
!..............................

! Attributes written to output files.
my.attr.author                  :  Arjo Segers
my.attr.institution             :  TNO
my.attr.email                   :  Arjo.Segers@tno.nl

! base location for work directories:
my.work                         :  ${SCRATCH}/CSO-Test-CrIS

!..............................
#else
#error unsupported USER "${USER}"
#endif
!..............................


!----------------------------------------------------------
! job step defaults
+41 −26
Original line number Diff line number Diff line
@@ -114,13 +114,9 @@ cso._PRODUCT_.class : utopya.UtopyaJobTree
!cso._PRODUCT_.elements                          :  inquire download download-listing convert listing
!~ one by one ...
!cso._PRODUCT_.elements                          :  inquire
cso._PRODUCT_.elements                          :  convert
cso._PRODUCT_.elements                          :  convert listing
!cso._PRODUCT_.elements                          :  listing

! NO DOWNLOAD, do while converting ...
!cso._PRODUCT_.elements                          :  download
!cso._PRODUCT_.elements                          :  inquire download
!cso._PRODUCT_.elements                          :  download-listing
!cso._PRODUCT_.elements                          :  catalogue

! *

@@ -151,13 +147,32 @@ cso._PRODUCT_.convert.task.class : cso.CSO_CrIS_Convert
cso._PRODUCT_.convert.task.args                 :  '${my.work}/rc/cso-cris-nh3.rc', \
                                                      rcbase='cso.convert', \
                                                      env={ 'MY_PRODUCT' : '_PRODUCT_' }
!! single step:
!cso._PRODUCT_.listing.class                     :  utopya.UtopyaJobStep
!! listing task:
!cso._PRODUCT_.listing.task.class                :  cso.CSO_XXX_Listing
!cso._PRODUCT_.listing.task.args                 :  '${my.work}/rc/cso-cris-nh3.rc', \
!                                                      rcbase='cso.listing', \
!                                                      env={ 'MY_PRODUCT' : '_PRODUCT_' }
! single step:
cso._PRODUCT_.listing.class                     :  utopya.UtopyaJobStep
! listing task:
cso._PRODUCT_.listing.task.class                :  cso.CSO_CrIS_Listing
cso._PRODUCT_.listing.task.args                 :  '${my.work}/rc/cso-cris-nh3.rc', \
                                                      rcbase='cso.listing', \
                                                      env={ 'MY_PRODUCT' : '_PRODUCT_' }

! *

! single step:
cso._PRODUCT_.catalogue.class                   :  utopya.UtopyaJobStep
! two tasks:
cso._PRODUCT_.catalogue.tasks                   :  figs index
!cso._PRODUCT_.catalogue.tasks                   :  figs
!cso._PRODUCT_.catalogue.tasks                   :  index
! catalogue creation task:
cso._PRODUCT_.catalogue.figs.class              :  cso.CSO_Catalogue
cso._PRODUCT_.catalogue.figs.args               :  '${my.work}/rc/cso-cris-nh3.rc', \
                                                     rcbase='cso.catalogue', \
                                                      env={ 'MY_PRODUCT' : '_PRODUCT_' }
! indexer task:
cso._PRODUCT_.catalogue.index.class             :  utopya.Indexer
cso._PRODUCT_.catalogue.index.args              :   '${my.work}/rc/cso-cris-nh3.rc', \
                                                      rcbase='cso.catalogue-index', \
                                                      env={ 'MY_PRODUCT' : '_PRODUCT_' }

#endfor
! _PRODUCT_
@@ -307,26 +322,26 @@ cso._PRODUCT_.convert.task.args : '${my.work}/rc/cso-cris-nh3.r
!                                                   rcbase='cso.cris2.TRACER.gridded-catalogue-index'
!
!#endfor
!
!
!!----------------------------------------------------------
!! job step defaults
!!----------------------------------------------------------
!


!----------------------------------------------------------
! job step defaults
!----------------------------------------------------------

!! run jobs in foreground:
!*.script.class                      :  utopya.UtopyaJobScriptForeground
!

!! search path for python modules:
!*.pypath                            :  ${PWD}/py
!        
        
!! work directory for jobs; 
!! here path including subdirectories for job name elements:
!*.workdir                           :  ${my.work}/__NAME2PATH__
!
!! jobtree settings from this file:
!*.rcfile                            :  ${__filename__}
!
!
!!----------------------------------------------------------
!! end
!!----------------------------------------------------------


!----------------------------------------------------------
! end
!----------------------------------------------------------
+226 −0
Original line number Diff line number Diff line
netcdf Combined_NH3_n020_0_n010_0_n010_0_n005_0_20230301 {
dimensions:
	Observations = 942 ;
	Layers = 15 ;
	RVMRLen = 5 ;
	nerr = 2 ;
variables:
	double Quality_Flag(Observations) ;
		Quality_Flag:long_name = "" ;
		Quality_Flag:units = "" ;
		Quality_Flag:description = "# 5 qflag_thres=4 & DOF > 0.1\n 4  qflag_thres=2 & chisq < 5 & (SNR >=1 or TCON > 0)\n 3  qflag_thres=2 & chisq < 20\n 2: qflag_thres=1 & retv < 200 ppbv\n 1: converged\n -1: did not converge" ;
		Quality_Flag:_Storage = "contiguous" ;
		Quality_Flag:_Endianness = "little" ;
	double pressure(Observations, Layers) ;
		pressure:long_name = "Retrieval Pressure Levels " ;
		pressure:units = "mbar" ;
		pressure:_Storage = "contiguous" ;
		pressure:_Endianness = "little" ;
	double tm(Observations, Layers) ;
		tm:long_name = "Temperature Profile " ;
		tm:units = "K" ;
		tm:_Storage = "contiguous" ;
		tm:_Endianness = "little" ;
	double zm(Observations, Layers) ;
		zm:long_name = "Altitude " ;
		zm:units = "km" ;
		zm:_Storage = "contiguous" ;
		zm:_Endianness = "little" ;
	double h2o(Observations, Layers) ;
		h2o:long_name = "Water Vapour Profile " ;
		h2o:units = "ppmv" ;
		h2o:_Storage = "contiguous" ;
		h2o:_Endianness = "little" ;
	double xa(Observations, Layers) ;
		xa:long_name = "Apriori Species Concentration " ;
		xa:units = "ppmv" ;
		xa:_Storage = "contiguous" ;
		xa:_Endianness = "little" ;
	double xretv(Observations, Layers) ;
		xretv:long_name = "Retrieved Species Concentration " ;
		xretv:units = "ppmv" ;
		xretv:_Storage = "contiguous" ;
		xretv:_Endianness = "little" ;
	double xretv_meas_error(Observations, Layers, nerr) ;
		xretv_meas_error:long_name = "Retrieved Species Measurement Error: (Minus,Plus)" ;
		xretv_meas_error:units = "ppmv" ;
		xretv_meas_error:_Storage = "contiguous" ;
		xretv_meas_error:_Endianness = "little" ;
	double xretv_total_error(Observations, Layers, nerr) ;
		xretv_total_error:long_name = "Retrieved Species Total Error: (Minus,Plus)" ;
		xretv_total_error:units = "ppmv" ;
		xretv_total_error:_Storage = "contiguous" ;
		xretv_total_error:_Endianness = "little" ;
	double avg_kernel(Observations, Layers, Layers) ;
		avg_kernel:long_name = "The averaging kernel is the sensitivity of the estimated state to variations in the atmospheric state. The averaging kernel matrix is stored in [col,row] notation.  The rows of the averaging kernel represent the sensitivity of the estimated state at a specific pressure level to variations in the atmospheric state at all levels. The columns of averaging kernel represent the sensitivity of the estimated state at all levels to variations in the atmospheric state at specific pressure level.  For atmospheric species this is the sensitivity of retrieved ln(vmr) to the true ln(vmr)." ;
		avg_kernel:units = "unitless in ln space for species and linear space for temperature" ;
		avg_kernel:_Storage = "contiguous" ;
		avg_kernel:_Endianness = "little" ;
	double total_covariance_error(Observations, Layers, Layers) ;
		total_covariance_error:long_name = "The total error covariance matrix is the sum of smoothing and measurement error (systmatic not included at this time). For atmospheric temperature, it represents the covariance of the error of temperature. For Atmospheric Species, it is the covariance of the error of ln(vmr)" ;
		total_covariance_error:units = "ln(vmr)^2" ;
		total_covariance_error:_Storage = "contiguous" ;
		total_covariance_error:_Endianness = "little" ;
	double noise_error_covariance(Observations, Layers, Layers) ;
		noise_error_covariance:long_name = "The Measurement error covariance matrix from the radiances.  Presently it is also used as a lower limit on the Observation error covariance matrix (Measurement + systematic + cross-state errors) as systematic and cross-state are not explicitly derived at this time.  The utility of the observation error is for comparisons with other measurements and for assimilation.  The smoothing error is accounted for when one applies the averaging kernel, so the observation error accounts for everything else." ;
		noise_error_covariance:units = "ln(vmr)^2" ;
		noise_error_covariance:_Storage = "contiguous" ;
		noise_error_covariance:_Endianness = "little" ;
	double tot_col(Observations) ;
		tot_col:long_name = "Retrieved Species Total Column" ;
		tot_col:units = "molec/cm2" ;
		tot_col:_Storage = "contiguous" ;
		tot_col:_Endianness = "little" ;
	double tot_col_meas_error(Observations) ;
		tot_col_meas_error:long_name = "Retrieved Species Total Column Measurement Error" ;
		tot_col_meas_error:units = "molec/cm2" ;
		tot_col_meas_error:_Storage = "contiguous" ;
		tot_col_meas_error:_Endianness = "little" ;
	double tot_col_total_error(Observations) ;
		tot_col_total_error:long_name = "Retrieved Species Total Column Total Error" ;
		tot_col_total_error:units = "molec/cm2" ;
		tot_col_total_error:_Storage = "contiguous" ;
		tot_col_total_error:_Endianness = "little" ;
	double tsfc(Observations) ;
		tsfc:long_name = "Surface Temperature" ;
		tsfc:units = "K" ;
		tsfc:_Storage = "contiguous" ;
		tsfc:_Endianness = "little" ;
	double tsfc_ap(Observations) ;
		tsfc_ap:long_name = "Surface temperature apriori and initial guess for each FOV (pixel)" ;
		tsfc_ap:units = "K" ;
		tsfc_ap:_Storage = "contiguous" ;
		tsfc_ap:_Endianness = "little" ;
	double tstd_ap(Observations) ;
		tstd_ap:long_name = "Standard deviation of the FOV (pixel) surface temperature apriori and initial guess over the FOR (9-pixels): Used for diagnostics" ;
		tstd_ap:units = "K" ;
		tstd_ap:_Storage = "contiguous" ;
		tstd_ap:_Endianness = "little" ;
	double tsfc_for(Observations) ;
		tsfc_for:long_name = "Input Level2 (e.g. NUCAPS) surface temperature over FOR (9-FOVs): Used for diagnostics" ;
		tsfc_for:units = "K" ;
		tsfc_for:_Storage = "contiguous" ;
		tsfc_for:_Endianness = "little" ;
	double dt_nh3(Observations) ;
		dt_nh3:long_name = "Spectral brightness temperature difference:  window [981.25 cm-1] - ammonia [967.5 cm-1]: Used for diagnostics" ;
		dt_nh3:units = "K" ;
		dt_nh3:_Storage = "contiguous" ;
		dt_nh3:_Endianness = "little" ;
	double rvmr(Observations, RVMRLen) ;
		rvmr:long_name = "Representative Volume Mixing Ratio" ;
		rvmr:units = "ppmv" ;
		rvmr:_Storage = "contiguous" ;
		rvmr:_Endianness = "little" ;
	double rvmr_press(Observations, RVMRLen) ;
		rvmr_press:long_name = "RVMR Pressure Levels " ;
		rvmr_press:units = "mbar" ;
		rvmr_press:_Storage = "contiguous" ;
		rvmr_press:_Endianness = "little" ;
	double rvmr_fwhm(Observations, RVMRLen) ;
		rvmr_fwhm:long_name = "RVMR Resolution " ;
		rvmr_fwhm:units = "mbar" ;
		rvmr_fwhm:_Storage = "contiguous" ;
		rvmr_fwhm:_Endianness = "little" ;
	double rvmr_wgt(Observations, Layers, RVMRLen) ;
		rvmr_wgt:long_name = "" ;
		rvmr_wgt:units = "" ;
		rvmr_wgt:_Storage = "contiguous" ;
		rvmr_wgt:_Endianness = "little" ;
	double rvmr_error(Observations, RVMRLen) ;
		rvmr_error:long_name = "RVMR Error " ;
		rvmr_error:units = "ppmv" ;
		rvmr_error:_Storage = "contiguous" ;
		rvmr_error:_Endianness = "little" ;
	string File_Creation_Timestamp(Observations) ;
		File_Creation_Timestamp:_Storage = "contiguous" ;
	double Version(Observations) ;
		Version:_Storage = "contiguous" ;
		Version:_Endianness = "little" ;
	string Run_ID(Observations) ;
		Run_ID:_Storage = "contiguous" ;
	double Latitude(Observations) ;
		Latitude:_Storage = "contiguous" ;
		Latitude:_Endianness = "little" ;
	double Longitude(Observations) ;
		Longitude:_Storage = "contiguous" ;
		Longitude:_Endianness = "little" ;
	double SatelliteZenithAngle(Observations) ;
		SatelliteZenithAngle:_Storage = "contiguous" ;
		SatelliteZenithAngle:_Endianness = "little" ;
	double SatelliteAzimuthAngle(Observations) ;
		SatelliteAzimuthAngle:_Storage = "contiguous" ;
		SatelliteAzimuthAngle:_Endianness = "little" ;
	double SatelliteRange(Observations) ;
		SatelliteRange:_Storage = "contiguous" ;
		SatelliteRange:_Endianness = "little" ;
	double LandFraction(Observations) ;
		LandFraction:_Storage = "contiguous" ;
		LandFraction:_Endianness = "little" ;
	string SurfaceReflection(Observations) ;
		SurfaceReflection:_Storage = "contiguous" ;
	string Date(Observations) ;
		Date:_Storage = "contiguous" ;
	string Time_UTC(Observations) ;
		Time_UTC:_Storage = "contiguous" ;
	double Day_Night_Flag(Observations) ;
		Day_Night_Flag:_Storage = "contiguous" ;
		Day_Night_Flag:_Endianness = "little" ;
	string L2_file_source(Observations) ;
		L2_file_source:_Storage = "contiguous" ;
	double Number_of_L2_files_per_L1(Observations) ;
		Number_of_L2_files_per_L1:_Storage = "contiguous" ;
		Number_of_L2_files_per_L1:_Endianness = "little" ;
	double Number_of_iterations(Observations) ;
		Number_of_iterations:_Storage = "contiguous" ;
		Number_of_iterations:_Endianness = "little" ;
	double CHISQ(Observations) ;
		CHISQ:_Storage = "contiguous" ;
		CHISQ:_Endianness = "little" ;
	double CHISQ_0(Observations) ;
		CHISQ_0:_Storage = "contiguous" ;
		CHISQ_0:_Endianness = "little" ;
	double DOF(Observations) ;
		DOF:_Storage = "contiguous" ;
		DOF:_Endianness = "little" ;
	string xa_Type(Observations) ;
		xa_Type:_Storage = "contiguous" ;
	string x0_Type(Observations) ;
		x0_Type:_Storage = "contiguous" ;
	double surf_Type(Observations) ;
		surf_Type:_Storage = "contiguous" ;
		surf_Type:_Endianness = "little" ;
	double nedt(Observations) ;
		nedt:_Storage = "contiguous" ;
		nedt:_Endianness = "little" ;
	double snr(Observations) ;
		snr:_Storage = "contiguous" ;
		snr:_Endianness = "little" ;
	double mdate(Observations) ;
		mdate:long_name = "Date in python datetime" ;
		mdate:units = "Days since 1970-01-01: e.g. 2013,1,1 = 15706.0" ;
		mdate:_Storage = "contiguous" ;
		mdate:_Endianness = "little" ;
	double Retrieval_Status(Observations) ;
		Retrieval_Status:_Storage = "contiguous" ;
		Retrieval_Status:_Endianness = "little" ;
	double Daylight_Flag(Observations) ;
		Daylight_Flag:_Storage = "contiguous" ;
		Daylight_Flag:_Endianness = "little" ;
	double Local_solar_mdate(Observations) ;
		Local_solar_mdate:_Storage = "contiguous" ;
		Local_solar_mdate:_Endianness = "little" ;
	string Time_local_solar(Observations) ;
		Time_local_solar:_Storage = "contiguous" ;
	double Cloud_Flag(Observations) ;
		Cloud_Flag:_Storage = "contiguous" ;
		Cloud_Flag:_Endianness = "little" ;

// global attributes:
		:total_FOVs = 2236LL ;
		:satellite = "noaa20" ;
		:version = "1.6.4" ;
		:_NCProperties = "version=2,netcdf=4.7.4,hdf5=1.12.0," ;
		:_SuperblockVersion = 0 ;
		:_IsNetcdf4 = 1 ;
		:_Format = "netCDF-4" ;
}
+130 −107

File changed.

Preview size limit exceeded, changes collapsed.

Loading