Namelists used in MIDAS fortran software

Code in directory: ./programs

NAMELIST: NAMADT (in file adjointTest.f90)

test character(len=20) :: test ! adjoint test type ('Bhi','Bens','advEns','advGSV','loc')

NAMELIST: NAMCONF (in file calcStats.f90)

mode character(len=60) :: mode ! can be 'BHI', 'TOOLBOX', 'STDDEV or 'POWERSPEC'

NAMELIST: NAMENS (in file calcStats.f90)

ip2 integer :: ip2 ! Ensemble lead time (hour) selected within the file
nens integer :: nens ! Ensemble size

NAMELIST: NAMDIAG (in file diagBmatrix.f90)

nrandseed integer :: nrandseed ! initial random seed value
numperturbations integer :: numperturbations ! number of perturbations for randomization estimate of stddev
oneobs_levs integer :: oneobs_levs(100) ! list of level indexes where B matrix columns are computed
oneobs_lonlat integer :: oneobs_lonlat(100,2) ! list of lon,lat index pairs where B matrix columns are computed
oneobs_timeStep character(len=128) :: oneobs_timeStep ! can be 'first', 'last' or 'middle'
oneobs_varName character(len=4) :: oneobs_varName ! can be 'all' or a specific variable name (default='all')
writeEnsAmplitude logical :: writeEnsAmplitude ! choose to write ensemble amplitude fields (for ensemble B)
writePsiChiStddev logical :: writePsiChiStddev ! choose to also write stddev of Psi/Chi in addition to UU/VV
writeTextStddev logical :: writeTextStddev ! choose to write stddev to text file in addition to standard file

NAMELIST: NAMENSEMBLEH (in file ensembleH.f90)

ensPathName character(len=256) :: ensPathName ! path of ensemble member files
fileMemberIndex1 integer :: fileMemberIndex1 ! first member index in ensemble set to be read
nEns integer :: nEns ! ensemble size
numFullEns integer :: numFullEns ! number of full ensemble set (needed only for modulated ensemble)
numRetainedEigen integer :: numRetainedEigen ! number of retained eigen modes used for modulated ensemble
obsTimeInterpType character(len=20) :: obsTimeInterpType ! type of time interpolation to obs time
readEnsMeanFromFile logical :: readEnsMeanFromFile ! choose to read ens mean from file (when reading subset of members)
vLocalize real(8) :: vLocalize ! vertical localization lengthscale (needed only for modulated ensemble)

NAMELIST: NAMENSPOSTPROC (in file ensPostProcess.f90)

hInterpolationDegree character(len=12) :: hInterpolationDegree ! select degree of horizontal interpolation (if needed)
nEns integer :: nEns ! ensemble size
readAnlEnsemble logical :: readAnlEnsemble ! activate reading of analysis ensemble
readTrlEnsemble logical :: readTrlEnsemble ! activate reading of trial ensemble
writeTrlEnsemble logical :: writeTrlEnsemble ! activate writing of the trial ensemble (useful when it's interpolated)

NAMELIST: NAMEXTRACT (in file extractBmatrixFor1Dvar.f90)

extractdate integer :: extractdate ! date for the B matrix extracted
lonlatExtract integer :: lonlatExtract(nmaxLevs,2) ! lon lat pairs definining the locations where the B matrix is to be extracted
stepBinExtract character(len=128) :: stepBinExtract ! number of step bins to extract (1 typically for B NMC)
varNameExtract character(len=4) :: varNameExtract ! variable to extract (all to extract everything in namstate)

NAMELIST: NAMLETKF (in file letkf.f90)

algorithm character(len=20) :: algorithm ! name of the chosen LETKF algorithm: 'LETKF', 'CVLETKF'
backgroundCheck logical :: backgroundCheck ! apply additional background check using ensemble spread
debug logical :: debug ! debug option to print values to the listings.
ensPathName character(len=256) :: ensPathName ! absolute or relative path to ensemble directory
ensPostProcessing logical :: ensPostProcessing ! do all post-processing of analysis ensemble
etiket_anl character(len=12) :: etiket_anl ! etiket for output files
hLocalize real(8) :: hLocalize(4) ! horizontal localization radius (in km)
hLocalizePressure real(8) :: hLocalizePressure(3) ! pressures where horizontal localization changes (in hPa)
huberize logical :: huberize ! apply huber norm quality control procedure
ignoreEnsDate logical :: ignoreEnsDate ! when reading ensemble, ignore the date
maxNumLocalObs integer :: maxNumLocalObs ! maximum number of obs in each local volume to assimilate
minDistanceToLand real(8) :: minDistanceToLand ! for ice/ocean DA: minimum distance to land for assimilating obs
modifyAmsubObsError logical :: modifyAmsubObsError ! reduce AMSU-B obs error stddev in tropics
mpiDistribution character(len=20) :: mpiDistribution ! type of mpiDistribution for weight calculation ('ROUNDROBIN' or 'TILES')
nEns integer :: nEns ! ensemble size
numRetainedEigen integer :: numRetainedEigen ! number of retained eigenValues/Vectors of vertical localization matrix
numSubEns integer :: numSubEns ! number of sub-ensembles to split the full ensemble
obsTimeInterpType character(len=20) :: obsTimeInterpType ! type of time interpolation to obs time
outputEnsObs logical :: outputEnsObs ! to write trial and analysis ensemble members in observation space to sqlite
outputOnlyEnsMean logical :: outputOnlyEnsMean ! when writing ensemble, can choose to only write member zero
randomShuffleSubEns logical :: randomShuffleSubEns ! choose to randomly shuffle members into subensembles
readEnsObsFromFile logical :: readEnsObsFromFile ! instead of computing innovations, read ensObs%Yb from file.
recenterInputEns logical :: recenterInputEns ! read a deterministic state to recenter ensemble
rejectHighLatIR logical :: rejectHighLatIR ! reject all IR observations at high latitudes
rejectRadNearSfc logical :: rejectRadNearSfc ! reject radiance observations near the surface
vLocalize real(8) :: vLocalize ! vertical localization radius (units: ln(Pressure in Pa) or meters)
weightLatLonStep integer :: weightLatLonStep ! separation of lat-lon grid points for weight calculation
writeLocalEnsObsToFile logical :: writeLocalEnsObsToFile ! Controls writing the ensObs to file.

NAMELIST: NAMOBSSELECTION (in file obsSelection.f90)

doThinning logical :: doThinning ! Control whether or not thinning is done

NAMELIST: NAMOMF (in file oMinusF.f90)

addHBHT logical :: addHBHT ! choose to add the value of HBHT to obsSpaceData so it can be output
addSigmaO logical :: addSigmaO ! choose to add the value of sigma_obs to obsSpaceData so it can be output
nEns integer :: nEns ! ensemble size

NAMELIST: NAMPREPCMA (in file prepcma.f90)

applySatUtil logical :: applySatUtil ! choose to reject satellite obs based on 'util' column of stats_tovs
brpform character(len=256) :: brpform ! should not be used anymore
cmabdy character(len=256) :: cmabdy ! should not be used anymore
cmadim character(len=256) :: cmadim ! should not be used anymore
cmahdr character(len=256) :: cmahdr ! should not be used anymore
modifyAmsubObsError logical :: modifyAmsubObsError ! choose to modify the obs error stddev for AMSUB/MHS in the tropics
obsClean logical :: obsClean ! choose to remove rejected observations from files
obsout character(len=256) :: obsout ! file name for ascii output
rejectHighLatIR logical :: rejectHighLatIR ! choose to reject IR data in high latitudes
rejectOutsideTimeWindow logical :: rejectOutsideTimeWindow ! choose to reject obs outside time window
suprep logical :: suprep ! choose to execute 'suprep' obs filtering
thinning logical :: thinning ! choose to apply 'extra' thinning of some obs types
writeAsciiCmaFiles logical :: writeAsciiCmaFiles ! choose to write ascii output
writeObsFiles logical :: writeObsFiles ! choose to update the (burp or sqlite) observation files

NAMELIST: PSEUDOSSTOBS (in file pseudoSSTobs.f90)

iceFractionThreshold real(4) :: iceFractionThreshold ! consider no ice condition below this threshold
outputFileName character(len=100) :: outputFileName ! name of the file containing the generated observations
outputFreshWaterST real(4) :: outputFreshWaterST ! output fresh water surface temperature for pseudo obs.
outputSST real(4) :: outputSST ! output SST value for pseudo observations
seaiceThinning integer :: seaiceThinning ! generate pseudo obs in every 'seaiceThinning' points
seaWaterThreshold real(4) :: seaWaterThreshold ! to distinguish inland water from sea water

NAMELIST: NAMENKF (in file randomPert.f90)

iceFractionThreshold real(4) :: iceFractionThreshold ! ice fraction threshold to use in combination with 'setPertZeroUnderIce'
mpiTopoIndependent logical :: mpiTopoIndependent ! choose to compute random numbers with mpi-topology-independent method
nens integer :: nens ! number of perturbations to compute
numBits integer :: numBits ! number of bits to use when writing to standard files
out_etiket character(len=12) :: out_etiket ! the 'etiket' to write to standard files
previousDateFraction real(4) :: previousDateFraction ! relative amount of previous date perturbations to include in current perturbations
readEnsMean logical :: readEnsMean ! choose to read ens mean and add this to the perturbations
remove_mean logical :: remove_mean ! choose to remove mean from perturbations
seed integer :: seed ! initial value of the random seed
setPertZeroUnderIce logical :: setPertZeroUnderIce ! choose to set perturbation to zero under sea ice (for SST)
smoothVariances logical :: smoothVariances ! choose to impose horizontally constant perturbation variances

NAMELIST: NAMSSTTRIAL (in file sstTrial.f90)

alphaClim real(4) :: alphaClim ! scaling factor to relax towards climatology
datestampClim integer :: datestampClim(12) ! datestamps of input climatology fields
etiketAnalysis character(len=10) :: etiketAnalysis ! etiket in the analysis file for grid setup

NAMELIST: NAMVAR (in file var.f90)

computeFinalNlJo logical :: computeFinalNlJo ! compute final cost function using non-linear H()
limitHuInOuterLoop logical :: limitHuInOuterLoop ! impose humidity limits on each outer loop iteration
numIterMaxInnerLoop integer :: numIterMaxInnerLoop(maxNumOuterLoopIter) ! number of each inner loop iterations
numOuterLoopIterations integer :: numOuterLoopIterations ! number of outer loop iterations (default=1)

Code in directory: ./modules

NAMELIST: NAMAER (in file analysisErrorOI_mod.f90)

analysisEtiket character(len=12) :: analysisEtiket ! analysis field etiket in a standard file
anlErrorStdEtiket character(len=12) :: anlErrorStdEtiket ! analysis error standard deviation field etiket in the input/output standard files
errorGrowth real(4) :: errorGrowth ! seaice: fraction of ice per hour, SST: estimated growth
hoursSinceLastAnalysis integer :: hoursSinceLastAnalysis ! number of hours since the last analysis
inputTypeVar character(len=2) :: inputTypeVar ! typvar of the analysis error field in the input file
maxAnalysisErrorStdDev real(8) :: maxAnalysisErrorStdDev ! maximum limit imposed on analysis error stddev
multFactorLcorr real(4) :: multFactorLcorr ! multiplication scaling factor to increase the correlation length scale field
outputTypeVar character(len=2) :: outputTypeVar ! typvar of the analysis error field for the output file
propagateAnalysisError logical :: propagateAnalysisError ! choose to propagate analysis error
propagateDSLO logical :: propagateDSLO ! choose to propagate Days Since Last Obs field
saveTrlStdField logical :: saveTrlStdField ! choose to save trial standard deviation field
trlErrorStdEtiket character(len=12) :: trlErrorStdEtiket ! background error standard deviation field etiket in the input/output standard files

NAMELIST: NAMBGCKCONV (in file backgroundCheck_mod.f90)

new_bgck_sw logical :: new_bgck_sw ! choose to use the 'new' background check for SW obs

NAMELIST: NAMBCHM (in file bCovarSetupChem_mod.f90)

CrossCornsVarKindCH character(len=4) :: CrossCornsVarKindCH(vnl_numvarmax) ! not sure what this is for...
getPhysSpaceHCorrel logical :: getPhysSpaceHCorrel ! calculate correlation lengths from spectral cov (needed for some CH obs operator settings)
getPhysSpaceStats logical :: getPhysSpaceStats ! choose to calculate/save physical space cov (stddev, corverti)
IncludeAnlVarKindCH character(len=4) :: IncludeAnlVarKindCH(vnl_numvarmax) ! list of CH variable names to consider
ntrunc integer :: ntrunc ! spectral truncation
numModeZero integer :: numModeZero ! number of eigenmodes to set to zero
ReadWrite_sqrt logical :: ReadWrite_sqrt ! choose to read and/or write sqrt of correlations
rpor real(8) :: rpor(vnl_numvarmax) ! horizontal localization distance (Gaussian)
rvloc real(8) :: rvloc(vnl_numvarmax) ! vertical localization distance (GC)
scaleFactor real(8) :: scaleFactor(vnl_numvarmax,vco_maxNumLevels) ! variable and level dependent scale factor applied to variances
stddevMode character(len=4) :: stddevMode ! can be 'GD2D', 'GD3D' or 'SP2D'
TransformVarKindCH character(len=20) :: TransformVarKindCH ! name of variable transform to apply to chemistry variables
WritePhysSpaceStats logical :: WritePhysSpaceStats ! choose to output physical space stats in 'bCovarSetupChem_out.fst'

NAMELIST: NAMCSR (in file bgckCSR_mod.f90)

burpSatName character (len=9) :: burpSatName(maxNumSat) ! list of platform names to treat (BURP file station id)
satCloudCoverLimit integer :: satCloudCoverLimit(maxNumSat,maxNumchan) ! maximum limit of cloud cover (careful this is an integer!)

NAMELIST: NAMOCEANBGCHECK (in file bgckOcean_mod.f90)

checkWinds logical :: checkWinds = .false. ! check winds for last 4 days to amplify error in zone of max wind speed
globalSelectCriteria real(8) :: globalSelectCriteria(3) = (/5.d0, 25.d0, 30.d0/) ! global selection criteria
inlandWaterSelectCriteriaInsitu real(8) :: inlandWaterSelectCriteriaInsitu(3) = (/5.d0, 25.d0, 30.d0/) ! inland water, insitu selection criteria
inlandWaterSelectCriteriaSatData real(8) :: inlandWaterSelectCriteriaSatData(3) = (/5.d0, 25.d0, 30.d0/) ! inland water, satellite selection criteria
maxLatExceptionNH real(4) :: maxLatExceptionNH = 45. ! max lat of N. hemisphere lat band allows TS to penetrate further North in some months
maxLatNH real(4) :: maxLatNH = 40. ! max lat of N. hemisphere lat band where TS is detected
maxLatSH real(4) :: maxLatSH = -10. ! max lat of Southern hemisphere latutude band where TS is detected
minLatNH real(4) :: minLatNH = 10. ! min lat of N. hemisphere lat band where TS is detected
minLatSH real(4) :: minLatSH = -35. ! min lat of Southern hemisphere latutude band where TS is detected
monthExceptionNH character(len=3) :: monthExceptionNH(12) = ' ' ! exceptional months where TS allowed to penetrated further North
ndaysWinds integer :: ndaysWinds = 4 ! number of days in the 'winds' file to detect tropical storm (TS)
nmonthsExceptionNH integer :: nmonthsExceptionNH = 0 ! MUST NOT BE INCLUDED IN NAMELIST!
numObsBatches integer :: numObsBatches = 20 ! number of batches for calling interp setup
seaWaterSelectCriteriaInsitu real(8) :: seaWaterSelectCriteriaInsitu(3) = (/5.d0, 25.d0, 30.d0/) ! sea water, insitu selection criteria
seaWaterSelectCriteriaSatData real(8) :: seaWaterSelectCriteriaSatData(3) = (/5.d0, 25.d0, 30.d0/) ! sea water, satellite selection criteria
seaWaterThreshold real(4) :: seaWaterThreshold = 0.1 ! threshold to distinguish inland water from sea water
separateSelectCriteria logical :: separateSelectCriteria = .false. ! apply separate selection criteria: sea/inland waters; insitu/satellite
smoothLenghtScale real(8) :: smoothLenghtScale = 50000. ! length scale. in m, to smooth the amplification error field
timeInterpType_nl character(len=20) :: timeInterpType_nl = 'NEAREST' ! 'NEAREST' or 'LINEAR'
timeStepWinds integer :: timeStepWinds = 6 ! in hours, winds are available every timeStepWinds-hours
windForecastLeadtime integer :: windForecastLeadtime = 6 ! in hours, lead time of wind forecast in the input file

NAMELIST: NAMICEBGCHECK (in file bgckOcean_mod.f90)

idStation character(len=12) :: idStation(numStationMax) = 'null' ! list of obsSpaceData 'idStation' values to consider
maxPerSwath integer :: maxPerSwath = 200000 ! maximum number of data per swath
maxSwath integer :: maxSwath = 10 ! maximum number of swaths
numStation integer :: numStation = MPC_missingValue_INT ! MUST NOT BE INCLUDED IN NAMELIST!
OmpRmsdThresh real :: OmpRmsdThresh(numStationMax) = 0.0 ! rejection threshold applied to RMS of O-P for entire swath

NAMELIST: NAMBIASCONV (in file biasCorrectionConv_mod.f90)

aiBiasActive logical :: aiBiasActive ! Control if bias correction is applied to aircraft data
aiRevOnly logical :: aiRevOnly ! Don't apply new correction but simply reverse any old corrections for AI
gpBiasActive logical :: gpBiasActive ! Control if bias correction is applied to ground-based GPS data
gpRevOnly logical :: gpRevOnly ! Don't apply new correction but simply reverse any old corrections for GP
uaBiasActive logical :: uaBiasActive ! Control if bias correction is applied to radiosonde data
uaNbiasCat integer :: uaNbiasCat ! Number of bias profile categories in UA bcor files, e.g. 1, or 2 for "asc" and "desc" phase categories
uaNlatBands integer :: uaNlatBands ! Number of latitude bands in ua_bcors_stype bcor file (= 5 or 1). Set to 1 if there are no latitude bands in file
uaNprofsMin integer :: uaNprofsMin ! Min number of bias profiles required for a station/stype/time-of-day to use biases 'ua_bcors_stn' as corrections
uaRejUnBcor logical :: uaRejUnBcor ! Set DATA QC flag bit 11 on to exclude uncorrected UA observations from assimilation
uaRevOnly logical :: uaRevOnly ! Don't apply new correction but simply reverse any old corrections for UA

NAMELIST: NAMSONDETYPES (in file biasCorrectionConv_mod.f90)

nlNbSondes integer :: nlNbSondes ! Number of radiosonde types in lists
nlSondeCodes integer :: nlSondeCodes(nSondesMax,20) ! List of radiosonde type codes
nlSondeTypes character(len=8) :: nlSondeTypes(nSondesMax) ! List of radiosonde type names

NAMELIST: NAMBIASSAT (in file biasCorrectionSat_mod.f90)

allModeCsr logical :: allModeCsr ! flag to select "ALL" mode for CSR (GOES, SEVIRI, MVIRI, ABI, etc..)
allModeHyperIr logical :: allModeHyperIr! flag to select "ALL" mode for hyperSpectral Infrared (AIRS, IASI, CrIS)
allModeSsmis logical :: allModeSsmis ! flag to select "ALL" mode for SSMIS
allModeTovs logical :: allModeTovs ! flag to select "ALL" mode for TOVS (AMSU-A, AMSU-B, MHS, ATMS, MWHS-2)
bg_stddev real(8) :: bg_stddev(NumPredictors) ! background error for predictors ("varbc" mode)
biasActive logical :: biasActive ! logical variable to activate the module
biasMode character(len=5) :: biasMode ! "varbc" for varbc, "reg" to compute bias correction coefficients by regression, "apply" to compute and apply bias correction
centerPredictors logical :: centerPredictors ! flag to transparently remove predictor mean in "reg" mode (more stable problem; very little impact on the result)
cglobal character(len=3) :: cglobal(maxNumInst) ! a "global" parameter and
cinst character(len=7) :: cinst(maxNumInst) ! to read the bcif file for each instrument in cinst
dumpToSqliteAfterThinning logical :: dumpToSqliteAfterThinning ! option to output all usefull parameters to sqlite files after thinning
filterObs logical :: filterObs ! flag to activate additional observation filtering in "reg" mode. If it is .false. only observations selected for assimilation will be used in the linear regression
mimicSatbcor logical :: mimicSatbcor ! in "reg" mode compute regression coefficients the same way as the original satbcor program
nbscan integer :: nbscan(maxNumInst) ! the number of scan positions are necessary
offlineMode logical :: offlineMode ! flag to select offline mode for bias correction computation
outCoeffCov logical :: outCoeffCov ! flag to activate output of coefficients error covariance (useful for EnKF system)
outOmFPredCov logical :: outOmFPredCov ! flag to activate output of O-F/predictors coefficients covariances and correlations
outstats logical :: outstats ! flag to activate output of residual statistics in "reg" mode
passiveChannelList integer :: passiveChannelList(maxNumInst, maxPassiveChannels)
refreshBiasCorrection logical :: refreshBiasCorrection !flag to replace an existing bias correction with a new one
removeBiasCorrection logical :: removeBiasCorrection ! flag to activate removal of an already present bias correction
scanBiasCorLength real(8) :: scanBiasCorLength ! if positive and .not. mimicSatBcor use error correlation between scan positions with the given correlation length
weightedEstimate logical :: weightedestimate ! flag to activate radiosonde weighting for bias correction computation in "reg" mode

NAMELIST: NAMBMAT1D (in file bMatrix1DVar_mod.f90)

doAveraging logical :: doAveraging ! flag to control output the average instead of the invidual B matrices
dumpBmatrixTofile logical :: dumpBmatrixTofile ! flag to control output of B matrices to Bmatrix.bin binary file
includeAnlVar character(len=4) :: includeAnlVar(vnl_numvarmax) ! list of variable names to include in B matrix
latMax real(8) :: latMax ! maximum latitude of the Bmatrix latitude-longitude output box
latMin real(8) :: latMin ! minimum latitude of the Bmatrix latitude-longitude output box
lonMax real(8) :: lonMax ! maximum longitude of the Bmatrix latitude-longitude output box
lonMin real(8) :: lonMin ! minimum longitude of the Bmatrix latitude-longitude output box
nEns integer :: nEns ! ensemble size
numIncludeAnlVar integer :: numIncludeAnlVar ! MUST NOT BE INCLUDED IN NAMELIST!
scaleFactorENs real(8) :: scaleFactorEns(vco_maxNumLevels) ! scaling factors for Ens variances
scaleFactorEnsHumidity real(8) :: scaleFactorEnsHumidity(vco_maxNumLevels) ! scaling factors for Ens humidity variances
scaleFactorHI real(8) :: scaleFactorHI(vco_maxNumLevels) ! scaling factors for HI variances
scaleFactorHIHumidity real(8) :: scaleFactorHIHumidity(vco_maxNumLevels) ! scaling factors for HI humidity variances
vLocalize real(8) :: vlocalize ! vertical localization length scale

NAMELIST: NAMBDIFF (in file bMatrixDiff_mod.f90)

corr_len real :: corr_len( maxNumVars ) ! Horizontal correlation length scale (km)
homogeneous_std real(8) :: homogeneous_std(maxNumVars) ! homogeneous standard deviation (when stddevMode is 'HOMO')
latIgnoreFraction real(8) :: latIgnoreFraction ! Relative zonal grid spacing limit where lats near each numerical pole are ignored
nsamp integer :: nsamp(maxNumVars) ! Number of samples in the estimation of the normalization factors by randomization
scaleFactor real(8) :: scaleFactor(maxNumVars) ! scale factor applied to variances
stab real :: stab( maxNumVars ) ! Stability criteria (definitely < 0.5)
stddevMode character(len=4) :: stddevMode ! can be 'GD2D' or 'HOMO'
useImplicit logical :: useImplicit(maxNumVars) ! choose to use implicit formulation of diffusion operator (.true.) or explicit version (.false.)

NAMELIST: NAMBEN (in file bMatrixEnsemble_mod.f90)

advDiagnostic logical :: advDiagnostic ! when `.true.` write diagnostic info related to advection to files
advectFactorAssimWindow real(8) :: advectFactorAssimWindow(vco_maxNumLevels) ! level-dependent scaling of winds used to advect localization
advectFactorFSOFcst real(8) :: advectFactorFSOFcst(vco_maxNumLevels) ! level-dependent scaling of winds used to advect localization
advectStartTimeIndexAssimWindow character(len=32) :: advectStartTimeIndexAssimWindow ! time index where advection originates from "first" or "middle"
advectTypeAssimWindow character(len=32) :: advectTypeAssimWindow ! what is advected in assim. window: "amplitude" or "ensPertAnlInc"
ctrlVarHumidity character(len=2) :: ctrlVarHumidity ! name of humidity variable used for ensemble perturbations (LQ or HU)
ensContainsFullField logical :: ensContainsFullField ! indicates full fields and not perturbations are in the ens. files
ensDateOfValidity integer :: ensDateOfValidity ! when set to -1, date in ens. files is ignored (only for 3D ens.)
ensDiagnostic logical :: ensDiagnostic ! when `.true.` write diagnostic info related to ens. to files
enspathname character(len=256) :: enspathname ! path where ensemble members are located (usually ./ensemble)
footprintRadius real(8) :: footprintRadius ! parameter for variance smoothing (in meters)
footprintTopoThreshold real(8) :: footprintTopoThreshold ! parameter for variance smoothing (in meters)
hInterpolationDegree character(len=12) :: hInterpolationDegree ! select degree of horizontal interpolation (if needed)
hLocalize real(8) :: hLocalize(maxNumLocalLength) ! horiz. localization length scale for each waveband (in km)
huMinValue real(8) :: huMinValue ! minimum humidity value imposed on ensemble members
IncludeAnlVar character(len=4) :: includeAnlVar(vnl_numvarmax) ! list of state variables for this ensemble B matrix; use all if blank
keepAmplitude logical :: keepAmplitude ! activate storage of ens. amplitudes in instance of struct_ens
LocalizationType character(len=256) :: localizationType ! "LevelDependent", "ScaleDependent" or "ScaleDependentWithSpectralLoc"
nEns integer :: nEns ! number of ensemble members
ntrunc integer :: ntrunc ! spectral truncation used for horizontal localization function
removeSubEnsMeans logical :: removeSubEnsMeans ! remove mean of each subsensemble defined by "subEnsembleIndex.txt"
scaleFactor real(8) :: scaleFactor(vco_maxNumLevels) ! level-dependent scaling of variances for all variables
scaleFactorHumidity real(8) :: scaleFactorHumidity(vco_maxNumLevels) ! level-dependent scaling of variances for humidity
transformVarKindCH character(len=20) :: transformVarKindCH ! name of transform performed on chemistry-related variables in ens.
useCmatrixOnly logical :: useCmatrixOnly ! activate normalization of ens. perturbations by ens. stddev
varianceSmoothing character(len=24) :: varianceSmoothing ! "none", "horizMean", "footprint" or "footprintLandSeaTopo"
vLocalize real(8) :: vLocalize(maxNumLocalLength) ! vert. localization length scale for each waveband (in scale heights)
waveBandIndexSelected integer :: waveBandIndexSelected ! for multiple NAMBEN blocks, waveband index of this block
waveBandPeaks integer :: waveBandPeaks(maxNumLocalLength) ! total wavenumber corresponding to peak of each waveband for SDL

NAMELIST: NAMBHI (in file bMatrixHI_mod.f90)

ntrunc integer :: ntrunc ! spectral trunction
numModeZero integer :: numModeZero ! number of eigenmodes to set to zero
ReadWrite_sqrt logical :: ReadWrite_sqrt ! choose to read or write the sqrt of correlations
scaleFactor real(8) :: scaleFactor(vco_maxNumLevels) ! scale factor applied to variances (all variables)
scaleFactorCC real(8) :: scaleFactorCC(vco_maxNumLevels) ! scale factor applied to velocity potential
scaleFactorLQ real(8) :: scaleFactorLQ(vco_maxNumLevels) ! scale factor applied to humidity
scaleTG logical :: scaleTG ! scale factor applied to skin temperature
squareSqrt logical :: squareSqrt ! choose to use the 'square' formulation of corr matrix (not used)
stddevMode character(len=4) :: stddevMode ! can be 'GD2D' or 'SP2D'
TweakTG logical :: TweakTG ! adjust skin temp variance based on land-sea mask and sea ice

NAMELIST: NAMBURP_FILTER_CONV (in file burpRead_mod.f90)

BLISTELEMENTS INTEGER :: BLISTELEMENTS(maxElements) ! list of bufr element ids to read
ENFORCE_CLASSIC_SONDES LOGICAL :: ENFORCE_CLASSIC_SONDES ! choose to ignore high-res raobs lat/lon/time information
NELEMS INTEGER :: NELEMS ! MUST NOT BE INCLUDED IN NAMELIST!
READ_QI_GA_MT_SW LOGICAL :: READ_QI_GA_MT_SW ! read additional QC-related elements for AMV obs
UA_FLAG_HIGH_PRECISION_TT_ES LOGICAL :: UA_FLAG_HIGH_PRECISION_TT_ES ! choose to read flag of higher precision elements for raobs
UA_HIGH_PRECISION_TT_ES LOGICAL :: UA_HIGH_PRECISION_TT_ES ! choose to use higher precision elements for raobs

NAMELIST: NAMBURP_FILTER_SFC (in file burpRead_mod.f90)

BLISTELEMENTS_SFC INTEGER :: BLISTELEMENTS_SFC(maxElements) ! list of bufr element ids to read
LISTE_ELE_GPS INTEGER :: LISTE_ELE_GPS(maxElements) ! list of bufr element ids to read
NELEMS_GPS INTEGER :: NELEMS_GPS ! MUST NOT BE INCLUDED IN NAMELIST!
NELEMS_SFC INTEGER :: NELEMS_SFC ! MUST NOT BE INCLUDED IN NAMELIST!

NAMELIST: NAMBURP_FILTER_TOVS (in file burpRead_mod.f90)

BLISTELEMENTS INTEGER :: BLISTELEMENTS(maxElements) ! list of bufr element ids to read
NELEMS INTEGER :: NELEMS ! MUST NOT BE INCLUDED IN NAMELIST!

NAMELIST: NAMBURP_FILTER_CHM_SFC (in file burpRead_mod.f90)

BLISTELEMENTS_SFC INTEGER :: BLISTELEMENTS_SFC(maxElements) ! list of bufr element ids to read
NELEMS_SFC INTEGER :: NELEMS_SFC ! MUST NOT BE INCLUDED IN NAMELIST!

NAMELIST: NAMBURP_UPDATE (in file burpRead_mod.f90)

BITEMLIST CHARACTER(len=3) :: BITEMLIST(maxItems) ! list of blocks to include in updated file (e.g. 'OMP','OMA')
BN_ITEMS INTEGER :: BN_ITEMS ! MUST NOT BE INCLUDED IN NAMELIST!
TYPE_RESUME CHARACTER(len=7) :: TYPE_RESUME = 'UNKNOWN' ! can be 'BGCKALT', 'POSTALT' or 'DERIALT'

NAMELIST: NAMADDTOBURP (in file burpRead_mod.f90)

addBtClearToBurp logical :: addBtClearToBurp ! choose to write clear-sky radiance to file in all-sky mode
btClearElementId integer :: btClearElementId ! bufr element id of clear-sky radiance in all-sky mode
clwFgElementId integer :: clwFgElementId ! bufr element id of cloud liquid water from background in all-sky mode
siFgElementId integer :: siFgElementId ! bufr element id of scattering index in all-sky mode

NAMELIST: NAMCALCSTATS_GLB (in file calcStatsGlb_mod.f90)

ntrunc integer :: ntrunc
vertWaveBandPeaks integer :: vertWaveBandPeaks(maxNumLocalLength) ! For vertical wave band decomposition
waveBandPeaks integer :: waveBandPeaks(maxNumLocalLength) ! For horizontal wave band decomposition

NAMELIST: NAMCOMPUTEBHI (in file calcStatsGlb_mod.f90)

formulation character(len=12) :: formulation ! Bhi formulation

NAMELIST: NAMTOOLBOX (in file calcStatsGlb_mod.f90)

ctrlVarHumidity character(len=2) :: ctrlVarHumidity
doSpectralFilter logical :: doSpectralFilter
ensContainsFullField logical :: ensContainsFullField
tool character(len=60) :: tool
vertModesLengthScale real(8) :: vertModesLengthScale(2)

NAMELIST: NAMHVCORREL_LOCAL (in file calcStatsGlb_mod.f90)

blockpadding integer :: blockpadding
nirefpoint integer :: nirefpoint
njrefpoint integer :: njrefpoint

NAMELIST: NAMCALCSTATS_LAM (in file calcStatsLam_mod.f90)

correlatedVariables character(len=4) :: correlatedVariables(vnl_numvarmax)
grd_ext_x integer :: grd_ext_x
grd_ext_y integer :: grd_ext_y
hlocalize_humidity real(8) :: hlocalize_humidity ! horizontal length scale (in km)
hlocalize_mass real(8) :: hlocalize_mass ! horizontal length scale (in km)
hLocalize_other real(8) :: hlocalize_other ! horizontal length scale (in km)
hLocalize_wind real(8) :: hlocalize_wind ! horizontal length scale (in km)
NormByStdDev logical :: NormByStdDev
nTrunc integer :: nTrunc
scaleFactor real(8) :: scaleFactor(vco_maxNumLevels)
SetTGtoZero logical :: SetTGtoZero
SpectralWeights character(len=12) :: SpectralWeights
vlocalize_humidity real(8) :: vlocalize_humidity ! vertical length scale (in units of ln(Pressure))
vlocalize_mass real(8) :: vlocalize_mass ! vertical length scale (in units of ln(Pressure))
vlocalize_other real(8) :: vlocalize_other ! vertical length scale (in units of ln(Pressure))
vLocalize_wind real(8) :: vLocalize_wind ! vertical length scale (in units of ln(Pressure))
WindTransform character(len=12) :: WindTransform
writeEnsPert logical :: writeEnsPert

NAMELIST: NAMCODTYP (in file codtyp_mod.f90)

cnames character(len=codtyp_name_length) :: cnames(codtyp_maxNumber) ! names for new additions to standard codtype list
icod integer :: icod (codtyp_maxNumber) ! codes for new additions to standard codtype list

NAMELIST: NAMSTATE (in file columnData_mod.f90)

abortOnMpiImbalance logical :: abortOnMpiImbalance ! choose to abort program when MPI imbalance is too large
addHeightSfcOffset logical :: addHeightSfcOffset ! choose to add non-zero height offset to diagnostic (sfc) levels
anltime_bin character(len=8) :: anltime_bin ! can be 'MIDDLE', 'FIRST' or 'LAST'
anlvar character(len=4) :: anlvar(vnl_numvarmax) ! list of state variable names
conversionVarKindCHtoMicrograms logical :: conversionVarKindCHtoMicrograms ! activate unit conversion for CH variables
minValVarKindCH real(8) :: minValVarKindCH(vnl_numVarMax) ! variable-dependent minimum value applied to chemistry variables
rhumin real(8) :: rhumin ! minimum humidity value imposed after interpolation to columns

NAMELIST: NAMENSOBS (in file ensembleObservations_mod.f90)

psvCodTypName character(len=codtyp_name_length) :: psvCodTypName(ofl_numFamily,codtyp_maxNumber) ! codtyp names for psv. obs families
psvObsFamily character(len=2) :: psvObsFamily(ofl_numFamily) ! observation families for passive assimilation
psvVarName character(len=4) :: psvVarName(ofl_numFamily,vnl_numvarmax) ! varName(s) for psv. obs families
simCodTypName character(len=codtyp_name_length) :: simCodTypName(ofl_numFamily,codtyp_maxNumber) ! codtyp names for sim. obs families
simObsFamily character(len=2) :: simObsFamily(ofl_numFamily) ! observation families for simulation
simVarName character(len=4) :: simVarName(ofl_numFamily,vnl_numvarmax) ! varName(s) for sim. obs families

NAMELIST: NAMENSPOSTPROCMODULE (in file ensPostProcess_mod.f90)

alphaRandomPert real(8) :: alphaRandomPert ! Random perturbation additive inflation coeff (0->1)
alphaRandomPertSubSample real(8) :: alphaRandomPertSubSample ! Random pert. additive inflation coeff for medium-range fcsts
alphaRTPP real(8) :: alphaRTPP ! RTPP coefficient (between 0 and 1; 0 means no relaxation)
alphaRTPS real(8) :: alphaRTPS ! RTPS coefficient (between 0 and 1; 0 means no relaxation)
etiket_anl character(len=8) :: etiket_anl ! etiket for ensemble output files (member number will be appended)
etiket_anlmean character(len=12) :: etiket_anlmean ! etiket for mean of analyses and mean of increments files
etiket_anlmeanpert character(len=12) :: etiket_anlmeanpert ! etiket for mean of perturbed analyses
etiket_anlmean_raw character(len=12) :: etiket_anlmean_raw ! etiket for mean of raw analyses
etiket_anlrms character(len=12) :: etiket_anlrms ! etiket for rms of analyses files
etiket_anlrmspert character(len=12) :: etiket_anlrmspert ! etiket for rms of perturbed analyses
etiket_anlrms_raw character(len=12) :: etiket_anlrms_raw ! etiket for rms of raw analyses
etiket_inc character(len=8) :: etiket_inc ! etiket for ensemble output files (member number will be appended)
etiket_trl character(len=8) :: etiket_trl ! etiket for ensemble output files (member number will be appended)
etiket_trlmean character(len=12) :: etiket_trlmean ! etiket for mean of trials
etiket_trlrms character(len=12) :: etiket_trlrms ! etiket for rms of trials
huLimitsBeforeRecenter logical :: huLimitsBeforeRecenter ! Choose to apply humidity limits before recentering
imposeRttovHuLimits logical :: imposeRttovHuLimits ! switch for choosing to impose the RTTOV limits on humidity
imposeSaturationLimit logical :: imposeSaturationLimit ! switch for choosing to impose saturation limit of humidity
includeYearInSeed logical :: includeYearInSeed ! switch for choosing to include year in default random seed
numBits integer :: numBits ! number of bits when writing ensemble mean and spread
numMembersToRecenter integer :: numMembersToRecenter ! number of members that get recentered on supplied analysis
randomSeed integer :: randomSeed ! seed used for random perturbation additive inflation
useAnalIncMask logical :: useAnalIncMask ! mask out the increment on the pilot zone
useMemberAsHuRefState logical :: useMemberAsHuRefState ! use each member as reference state for variable transforms
useOptionTableRecenter logical :: useOptionTableRecenter ! use values in the optiontable file
weightRecenter real(8) :: weightRecenter(vco_maxNumLevels) ! weight applied to recentering increment (between 0 and 1; 0 means no recentering)
weightRecenterLand real(8) :: weightRecenterLand ! weight applied to recentering increment for land variables
writeRawAnalStats logical :: writeRawAnalStats ! write mean and standard deviation of the raw analysis ensemble
writeSubSample logical :: writeSubSample ! write sub-sample members for initializing medium-range fcsts
writeSubSampleUnPert logical :: writeSubSampleUnPert ! write unperturbed sub-sample members for medium-range fcsts

NAMELIST: NAMFSO (in file fsoi_mod.f90)

forecastPath character(len=256) :: forecastPath ! relative path where forecast files are stored
fsoMode character(len=4) :: fsoMode ! type of FSOI algorithm: can be 'HFSO' or 'EFSO'
includeHUnorm logical :: includeHUnorm ! choose to include humidity in forecast error norm
includeP0norm logical :: includeP0norm ! choose to include surface pressure in forecast error norm
includeTGnorm logical :: includeTGnorm ! choose to include surface skin temperature in forecast error norm
includeTTnorm logical :: includeTTnorm ! choose to include temperature in forecast error norm
includeUVnorm logical :: includeUVnorm ! choose to include winds in forecast error norm
latMaxNorm real(8) :: latMaxNorm ! maximum latitude for area included in forecast error norm (in degrees)
latMinNorm real(8) :: latMinNorm ! minimum latitude for area included in forecast error norm (in degrees)
leadTime real(8) :: leadTime ! lead time of forecast (in hours)
lonMaxNorm real(8) :: lonMaxNorm ! maximum longitude for area included in forecast error norm (in degrees)
lonMinNorm real(8) :: lonMinNorm ! minimum longitude for area included in forecast error norm (in degrees)
nitermax integer :: nitermax ! maximum number of minimization iterations
nsimmax integer :: nsimmax ! maximum number of cost function evaluations during minimization
nvamaj integer :: nvamaj ! number of vector pairs to store in memory for Hessian approximation
rdf1fac real(8) :: rdf1fac ! factor applied to initial cost function value to approximate final value
repsg real(8) :: repsg ! relative gradient amplitude used as stopping criteria
StratoNorm logical :: StratoNorm ! choose for forecast error norm from 100hPa to 1hPa,default from surface to 100hPa

NAMELIST: NAMGPSRO (in file gps_mod.f90)

BGCKBAND REAL(8) :: BGCKBAND ! Maximum allowed deviation abs(O-P)/P (default 0.05)
gpsroBNorm LOGICAL :: gpsroBNorm ! Choose to normalize based on B=H(x) (default=.True.), or approximate exponential reference
gpsroEotvos LOGICAL :: gpsroEotvos ! Add an operator-only Eotvos correction to local gravity (shift of altitudes, default False)
gpsroError character(len=20) :: gpsroError ! key for using dynamic/static refractivity error estimation (default 'DYNAMIC')
GPSRO_MAXPRFSIZE INTEGER :: GPSRO_MAXPRFSIZE ! Maximal number of data that is expected from a profile (default 300)
gpsroNsigma REAL(8) :: gpsroNsigma ! Factor applied to observation error for background departure check when gpsroBNorm is .true. (default 1.d6)
HSFMIN REAL(8) :: HSFMIN ! Minimum allowed MSL height of an obs (default 0 m)
HTPMAX REAL(8) :: HTPMAX ! Maximum allowed MSL height of an obs (default 70000 m)
HTPMAXER REAL(8) :: HTPMAXER ! Maximum MSL height to evaluate the obs error (default to HTPMAX)
LEVELGPSRO INTEGER :: LEVELGPSRO ! Data level to use (1 for bending angle, 2 for refractivity)
SURFMIN REAL(8) :: SURFMIN ! Minimum allowed distance to the model surface (default 0 m)
WGPS REAL(4) :: WGPS(0:1023,4) ! WGPS values for each satellite sensor

NAMELIST: NAMGPSGB (in file gps_mod.f90)

DZMAX REAL(8) :: DZMAX = 1000.0D0 ! Maximum DZ (m) over which ZTD rejected due to topography (when LTOPOFILT = .TRUE.)
DZMIN REAL(8) :: DZMIN ! Minimum DZ = Zobs-Zmod (m) for which DZ adjustment to ZTD will be made
IREFOPT INTEGER :: IREFOPT ! 1 = conventional expression for N using k1,k2,k3; 2 = Aparicio & Laroche N (incl. compressibility)
IZTDOP INTEGER :: IZTDOP ! 1 = use stored ZTD profiles to get ZTDmod; 2 = Vedel & Huang ZTD formulation: ZTDmod = ZHD(Pobs) + ZWD
L1OBS LOGICAL :: L1OBS ! Choose to select a single ZTD observation
LASSMET LOGICAL :: LASSMET ! Choose to assimilate GPS Met surface P, T, T-Td
LBEVIS logical , intent(in) :: lbevis ! determines which set of refractivity constants to use (Bevis or Rueger)
LLBLMET LOGICAL :: LLBLMET ! Indicate that surface met data blacklisted for GPS sites close to surface weather stations.
LTESTOP LOGICAL :: LTESTOP ! Choose to test ZTD observation operator (Omp and Bgck modes only)
YSFERRWGT REAL(8) :: YSFERRWGT ! Scale factor for GPS surface met errors (account for time series obs with error correlations)
YZDERRWGT REAL(8) :: YZDERRWGT ! Scale factor for GPS ZTD errors (account for time series obs with error correlations)
YZTDERR REAL(8) :: YZTDERR ! If < 0 use errors in input files; if > 0 use value as constant error (m); if 0 compute error as f(ZWD)

NAMELIST: NAMSTIO (in file gridStateVectorFileIO_mod.f90)

interpToPhysicsGrid logical :: interpToPhysicsGrid ! for LAM grid, choose to keep physics variables on their original grid

NAMELIST: NAMQLIM (in file humidityLimits_mod.f90)

maxValueCLDR real(8) :: maxValueCLDR ! maximum CLDR value
maxValueIWCR real(8) :: maxValueIWCR ! maximum IWCR value
maxValueLWCR real(8) :: maxValueLWCR ! maximum LWCR value
maxValueRF real(8) :: maxValueRF ! maximum RF value
maxValueSF real(8) :: maxValueSF ! maximum SF value
minValueCLDR real(8) :: minValueCLDR ! minimum CLDR value
minValueIWCR real(8) :: minValueIWCR ! minimum IWCR value
minValueLWCR real(8) :: minValueLWCR ! minimum LWCR value
minValueRF real(8) :: minValueRF ! minimum RF value
minValueSF real(8) :: minValueSF ! minimum SF value

NAMELIST: NAMINC (in file increment_mod.f90)

applyLiebmann logical :: applyLiebmann ! choose to apply Liebmann extrapolation to SST and/or sea ice
etiket_anlm character(len=12) :: etiket_anlm ! 'etiket' used when writing the analysis
etiket_rebm character(len=12) :: etiket_rebm ! 'etiket' used when writing the low-res increment
etiket_rehm character(len=12) :: etiket_rehm ! 'etiket' used when writing the high-res increment
hInterpolationDegree character(len=12) :: hInterpolationDegree ! type of interpolation to use: 'LINEAR' or 'CUBIC'
imposeRttovHuLimits logical :: imposeRttovHuLimits ! choose to impose "rttov" humidity limits to analysis
SSTSpread logical :: SSTSpread ! choose to apply spatial spreading of the SST increment onto land
SSTSpreadMaxBoxSize integer :: SSTSpreadMaxBoxSize ! control the amount of SST increment spreading
SSTSubgrid character(len=10) :: SSTSubgrid ! select subgrid on which to apply spreading: 'Yin' or 'Yan'
useAnalIncMask logical :: useAnalIncMask ! for LAM only, choose to apply scale factor from a mask file to the increment
writeHiresIncrement logical :: writeHiresIncrement ! choose to write the high-res increment to a file
writeNumBits integer :: writeNumBits ! number of bits to use when writing analysis and high-res increment

NAMELIST: NAMINN (in file innovation_mod.f90)

numObsBatches integer :: numObsBatches ! number of batches for calling interp setup
timeInterpType_nl character(len=20) :: timeInterpType_nl ! 'NEAREST' or 'LINEAR'

NAMELIST: NAMINT (in file interpolation_mod.f90)

checkCloudToGridUnassigned logical :: checkCloudToGridUnassigned ! abort if unmasked points not assigned from cloudToGrid interp
maxBoxSize integer :: maxBoxSize ! max size used to fill values for cloudToGrid interpolation
vInterpCopyLowestLevel logical :: vInterpCopyLowestLevel ! overwrite values at lowest level to avoid extrapolation

NAMELIST: NAMLOCALIZATIONRADII (in file menetrierDiag_mod.f90)

hLoc logical :: hLoc
horizPadding integer :: horizPadding
strideForHLoc integer :: strideForHLoc
strideForVloc integer :: strideForVloc
vLoc logical :: vLoc

NAMELIST: NAMMSG (in file message_mod.f90)

arrayVertical logical :: arrayVertical ! choose to use array vertical representation by default
verbosity integer :: verbosity ! maximum verbosity level of messages to be printed in the listing

NAMELIST: PTOPO (in file midasMpi_mod.f90)

npex integer :: npex ! number of MPI tasks in 'x' direction (set automatically by launch script)
npey integer :: npey ! number of MPI tasks in 'y' direction (set automatically by launch script)

NAMELIST: NAMMIN (in file minimization_mod.f90)

LGRTEST logical :: lgrtest ! choose to perform the 'gradient test" before and after minimization
LVARQC logical :: lvarqc ! choose to activate varQC
lvazx logical :: lvazx ! generally not used any longer
lwrthess logical :: lwrthess ! choose to write the Hessian approximation
lxbar logical :: lxbar ! generally not used any longer
NITERMAX integer :: NITERMAX ! maximum number of minimization iterations
NSIMMAX integer :: NSIMMAX ! maximum number of cost function evaluations during minimization
NVAMAJ integer :: NVAMAJ ! number of vector pairs to store in memory for Hessian approximation
NWOQCV integer :: nwoqcv ! number of iterations to initially perform without varQC
rdf1fac real(8) :: rdf1fac ! factor applied to initial cost function value to approximate final value
REPSG real(8) :: REPSG ! relative gradient amplitude used as stopping criteria

NAMELIST: NAMBGCKIR (in file multiIRbgck_mod.f90)

crisCloudFractionThreshold real(8) :: crisCloudFractionThreshold ! threshold for CrIS cloud detection from VIIRS cloud mask
dtl real(8) :: dtl ! Max delta allowed btwn guess and true skin temp over land
dtw real(8) :: dtw ! Max delta allowed btwn guess and true skin temp over water
ilist1 integer :: ilist1(nmaxinst,nch_he) ! Chan numbers for cloud top height detection: background profile matching
ilist2 integer :: ilist2(nmaxinst,nco2) ! Chan numbers for cloud top height detection: CO2-slicing
ilist2_pair integer :: ilist2_pair(nmaxinst,nco2) ! Chan number pairs for cloud top height detection: CO2-slicing
inst character(len=7) :: inst(nmaxinst) ! List of instrument names
iwindow integer :: iwindow(nmaxinst) ! Ref window channel for clear/cloudy profile detection
iwindow_alt integer :: iwindow_alt(nmaxinst) ! Alternate window channel for clear/cloudy profile detection
night_ang real(8) :: night_ang ! Min solar zenith angle for night (between 90 and 180)
ninst integer :: ninst ! MUST NOT BE INCLUDED IN NAMELIST!
pco2max real(8) :: pco2max ! Max RTTOV level for lev_start variable entering CO2 slicing in mb
pco2min real(8) :: pco2min ! Min RTTOV level for lev_start variable entering CO2 slicing in mb

NAMELIST: NAMOBSDB (in file obsdbFiles_mod.f90)

elemIdList integer :: elemIdList(maxElementNumber) ! list of bufr element IDs to read from file
numElemIdList integer :: numElemIdList ! MUST NOT BE INCLUDED IN NAMELIST!

NAMELIST: NAMOBSDBMIDASHEADERUPDATE (in file obsdbFiles_mod.f90)

numberUpdateItems integer, save :: numberUpdateItems ! MUST NOT BE INCLUDED IN NAMELIST!
updateItemList character(len=4), save :: updateItemList(maxItemNumber) ! obsSpace column names used to update the file

NAMELIST: NAMOBSDBMIDASBODYUPDATE (in file obsdbFiles_mod.f90)

numberUpdateItems integer, save :: numberUpdateItems ! MUST NOT BE INCLUDED IN NAMELIST!
updateItemList character(len=4), save :: updateItemList(maxItemNumber) ! obsSpace column names used to update the file

NAMELIST: NAMOBSDBCLEAN (in file obsdbFiles_mod.f90)

useVacuum logical, save :: useVacuum ! choose to 'vacuum' the file after cleaning to reduce file size

NAMELIST: NAMOER (in file obsErrors_mod.f90)

amsuaClearCldPredThresh real(8) :: amsuaClearCldPredThresh(5) ! cloud threshold for considering obs as clear sky
amsuaInflateErrAllskyCoeff real(8) :: amsuaInflateErrAllskyCoeff ! state dependent obs error inflation factor
mwAllskyHuInflateByOmp logical :: mwAllskyHuInflateByOmp ! choose to inflate all sky HU radiance errors by an amount related to O-P
mwAllskyHuInflateBySiDiff logical :: mwAllskyHuInflateBySiDiff ! choose to inflate all sky HU radiance errors by an amount related to cloud O-P
mwAllskyTtInflateByClwDiff logical :: mwAllskyTtInflateByClwDiff ! choose to inflate all sky TT radiance errors by an amount related to cloud O-P
mwAllskyTtInflateByOmp logical :: mwAllskyTtInflateByOmp ! choose to inflate all sky TT radiance errors by an amount related to O-P
new_oer_sw logical :: new_oer_sw ! use the 'new' method to compute errors for AMV observations
obsfile_oer_sw logical :: obsfile_oer_sw ! choose to read errors for AMV from the obs files
readOldSymmetricObsErrFile logical :: readOldSymmetricObsErrFile ! choose to read 'old style' obs error file, when only AMSU-A was all sky
visAndGustAdded logical :: visAndGustAdded ! choose to read visibility and gust errors in addition to other conv variables

NAMELIST: NAMSSTOBSERRORS (in file obsErrors_mod.f90)

numberSSTDatasets integer :: numberSSTDatasets = MPC_missingValue_INT ! MUST NOT BE INCLUDED IN NAMELIST!
SSTdataParams type(SSTdataParamsType) :: SSTdataParams(maxNumberSSTDatasets) ! list of SSTdataParamsType defining SST obs errors

NAMELIST: NAMWRITEDIAG (in file obsFiles_mod.f90)

addFSOdiag logical :: addFSOdiag ! choose to include FSO column in body table
lwritediagsql logical :: lwritediagsql ! choose to write 'diag' sqlite observation files
onlyAssimObs logical :: onlyAssimObs ! choose to not include unassimilated obs in 'diag' sqlite files
writeObsDb logical :: writeObsDb ! write obDB file from scratch

NAMELIST: NAMFILT (in file obsFilter_mod.f90)

discardlandsfcwind logical :: discardlandsfcwind ! choose to reject surface wind obs over land
list_altDiffMax integer :: list_altDiffMax(numElem) ! list of bufr element IDs to apply maximum altitude difference
list_topoFilt character(len=2) :: list_topoFilt(nTopoFiltFam) ! list of obs family names for applying max altitude
nelems integer :: nelems ! MUST NOT BE INCLUDED IN NAMELIST!
nelems_altDiffMax integer :: nelems_altDiffMax ! MUST NOT BE INCLUDED IN NAMELIST!
nflags integer :: nflags ! MUST NOT BE INCLUDED IN NAMELIST!
nlist integer :: nlist(nelemsMax) ! list of bufr element IDs to consider for assimilation
nlistflg integer :: nlistflg(nFLagsMax) ! list of flag 'reference numbers' to use for rejecting obs
rejectGZforAnalysis logical :: rejectGZforAnalysis ! whether to reject geopotential height for analysis update
rlimlvhu real(8) :: rlimlvhu ! pressure level (in hPa) above which humidity (ES) obs are rejected
surfaceBufferZone_Height real(8) :: surfaceBufferZone_Height ! height of buffer zone (in m) for rejecting obs near sfc
surfaceBufferZone_Pres real(8) :: surfaceBufferZone_Pres ! height of buffer zone (in Pa) for rejecting obs near sfc
useEnkfTopoFilt logical :: useEnkfTopoFilt ! choose to use simpler approach (originally in EnKF) for rejecting obs near sfc
value_altDiffMax real(8) :: value_altDiffMax(numElem) ! value of maximum difference between model sfc and obs altitude

NAMELIST: NAMRADVEL (in file obsFilter_mod.f90)

maxRangeInterp real(8), save :: maxRangeInterp ! max allowable horizontal distance between levels (in m) for radar winds

NAMELIST: NAMPLATFORMICE (in file obsFilter_mod.f90)

listPlatformIce character(len=12), save :: listPlatformIce(maxPlatformIce) ! list of ice obs 'platforms' (station IDs) to assimilate
nPlatformIce integer, save :: nPlatformIce ! MUST NOT BE INCLUDED IN NAMELIST!

NAMELIST: NAMCHEM (in file obsOperatorsChem_mod.f90)

assim_all logical :: assim_all(assim_maxfamnum) ! Choose to assimilate all obs of specified family
assim_exclude_flag integer :: assim_exclude_flag(assim_maxfamnum,assim_maxsize) ! Number of bits for excluding obs
assim_exclude_nflag integer :: assim_exclude_nflag(assim_maxfamnum) ! List of bits for excluding obs from assimilation
assim_fam character(len=2) :: assim_fam(assim_maxfamnum) ! List of families to which filt_diagnOnly is to apply
assim_nlev integer :: assim_nlev(assim_maxfamnum,assim_maxsize) ! 0: multi- and uni-lev; 1: uni-lev; >1 multi-lev
assim_num integer :: assim_num(assim_maxfamnum) ! Number of combinations identified for assimilation
assim_stnid character(len=9) :: assim_stnid(assim_maxfamnum,assim_maxsize) ! List of stnid to assimilation '*' for wild card
assim_varno integer :: assim_varno(assim_maxfamnum,assim_maxsize) ! List of bufr elements to assimilate (0 means all)
genOperConstraintType character(len=5) :: genOperConstraintType(0:oopc_constituentsSize) ! Strong constraint for generalized obs operator (see oopc_genOper)
genOperHCorrlenExpnt real(8) :: genOperHCorrlenExpnt(0:oopc_constituentsSize) ! Exponent for horiz. correl. length weighting in oopc_genOper
genOperOmAStatsFactor real(8) :: genOperOmAStatsFactor(0:oopc_constituentsSize) ! Additional OmAStats normalization factor for oopc_genOper
modelName character(len=10) :: modelName = 'GEM-MACH' ! Identification of the model
obsdata_maxsize integer :: obsdata_maxsize ! Max number of obs associated with ordered obs indices
operatorSubType character(len=20) :: operatorSubType(2,assim_maxsize) ! Operator sub-type name
storeOperators logical :: storeOperators ! Choose to store linear operators for re-use in TL/AD
tropo_bound integer :: tropo_bound(0:oopc_constituentsSize) ! Indicate which column top value used for special treatment
tropo_column_top real(8) :: tropo_column_top(0:oopc_constituentsSize) ! Default for column boundary (in Pa) of total column obs
tropo_mode integer :: tropo_mode(0:oopc_constituentsSize) ! Special treatment for troposphere of total column obs

NAMELIST: NAMALADIN_OBS (in file obsOperators_mod.f90)

do_adjust_aladin logical :: do_adjust_aladin ! choose to adjust obs value as if it was retrieved using our temp and pressure

NAMELIST: NAMSURFACEOBS (in file obsOperators_mod.f90)

adjustTemperature logical, save :: adjustTemperature ! choose to adjust near-sfc temperature using lapse rate and height difference

NAMELIST: NAMDIMO (in file obsSpaceData_mod.f90)

ndatamx integer :: ndatamx ! maximum number of rows in 'body' table (used for initial allocation)
nmxobs integer :: nmxobs ! maximum number of rows in 'header' table (used for initial allocation)

NAMELIST: NAMOSD (in file obsSpaceDiag_mod.f90)

deltaHeight real(8) :: deltaHeight ! Size of vertical bins for diagnostics (meters)
deltaLat real(8) :: deltaLat ! Size of latitude bins for diagnostics (degrees)
deltaLon real(8) :: deltaLon ! Size of longitude bins for diagnostics (degrees)
deltaPressure real(8) :: deltaPressure ! Size of vertical bins for diagnostics (Pascal)
diagn_all logical :: diagn_all(ofl_numFamily) ! Choose to use all combinations specified by diagn_nset
diagn_nset integer :: diagn_nset(ofl_numFamily) ! Choose to group by 1: stnid, 2: stnid,bufr, 3: stnid,bufr,nlev
diagn_num integer :: diagn_num(ofl_numFamily) ! Prescribed (starting) number of (stnid, bufr, nlev) for diag calc
diagn_pressmin real(8) :: diagn_pressmin(ofl_numFamily) ! Bottom of top layer for diagnostics (in Pa)
diagn_save logical :: diagn_save(ofl_numFamily) ! Choose to save gridded info in ascii file
diagn_stnid character(len=9) :: diagn_stnid(ofl_numFamily,max_cfg_size) ! List of stnid for diag calc
diagn_unilev logical :: diagn_unilev(ofl_numFamily,max_cfg_size) ! List indicating if uni-lev obs for diag calc
diagn_varno integer :: diagn_varno(ofl_numFamily,max_cfg_size) ! List of bufr element ids for diag calc
elementList integer :: elementList(ofl_numFamily) ! List of bufr element ids to consider
familyList character(len=2) :: familyList(ofl_numFamily) ! List of family names to consider
lrandom logical :: lrandom ! Perform diagnostics from random perturbations
nrandseed integer :: nrandseed ! Random seed value
numElement integer :: numElement ! MUST NOT BE INCLUDED IN NAMELIST!
numFamily integer :: numFamily ! MUST NOT BE INCLUDED IN NAMELIST!

NAMELIST: NAMHBHT (in file obsSpaceErrorStdDev_mod.f90)

hybrid_mode character(len=12) :: hybrid_mode ! can be 'WEIGHTED_SUM' or 'MAX_VALUE'

NAMELIST: NAMPHY (in file physicsFunctions_mod.f90)

saturationCurve character(len=20) :: saturationCurve ! saturationCurve must be one of 'Tetens_1930', 'Tetens_2018a', 'Tetens_2018'

NAMELIST: NAMRMAT (in file rMatrix_mod.f90)

rmat_lnonDiagR logical :: rmat_lnondiagr ! choose to use non-diagonal R matrix (i.e. non-zero correlations)

NAMELIST: NAMSLANTPATH (in file slantProfileLatLon_mod.f90)

maxNumIteration integer :: maxNumIteration ! maximum number of iterations for determining slant path
toleranceHeightDiff real(4) :: toleranceHeightDiff ! threshold of height diff (in m) for convergence of slant path

NAMELIST: NAMSQLTOVS (in file sqliteRead_mod.f90)

listElem character(len=256) :: listElem ! list of bufr element ids to read
numberElem integer :: numberElem ! MUST NOT BE INCLUDED IN NAMELIST!
sqlExtraDat character(len=256) :: sqlExtraDat ! can be used e.g. for ' and id_obs in (select id_obs from header where...) '
sqlExtraHeader character(len=256) :: sqlExtraHeader ! can be used e.g. for ' id_stn in (...) '
sqlNull character(len=256) :: sqlNull ! can be used e.g. for ' and obsvalue is not null '

NAMELIST: NAMSQLUA (in file sqliteRead_mod.f90)

listElem character(len=256) :: listElem ! list of bufr element ids to read
numberElem integer :: numberElem ! MUST NOT BE INCLUDED IN NAMELIST!
sqlExtraDat character(len=256) :: sqlExtraDat ! can be used e.g. for ' and id_obs in (select id_obs from header where...) '
sqlExtraHeader character(len=256) :: sqlExtraHeader ! can be used e.g. for ' id_stn in (...) '
sqlNull character(len=256) :: sqlNull ! can be used e.g. for ' and obsvalue is not null '

NAMELIST: NAMSQLAI (in file sqliteRead_mod.f90)

listElem character(len=256) :: listElem ! list of bufr element ids to read
numberElem integer :: numberElem ! MUST NOT BE INCLUDED IN NAMELIST!
sqlExtraDat character(len=256) :: sqlExtraDat ! can be used e.g. for ' and id_obs in (select id_obs from header where...) '
sqlExtraHeader character(len=256) :: sqlExtraHeader ! can be used e.g. for ' id_stn in (...) '
sqlNull character(len=256) :: sqlNull ! can be used e.g. for ' and obsvalue is not null '

NAMELIST: NAMSQLSW (in file sqliteRead_mod.f90)

listElem character(len=256) :: listElem ! list of bufr element ids to read
numberElem integer :: numberElem ! MUST NOT BE INCLUDED IN NAMELIST!
sqlExtraDat character(len=256) :: sqlExtraDat ! can be used e.g. for ' and id_obs in (select id_obs from header where...) '
sqlExtraHeader character(len=256) :: sqlExtraHeader ! can be used e.g. for ' id_stn in (...) '
sqlNull character(len=256) :: sqlNull ! can be used e.g. for ' and obsvalue is not null '

NAMELIST: NAMSQLRO (in file sqliteRead_mod.f90)

listElem character(len=256) :: listElem ! list of bufr element ids to read
numberElem integer :: numberElem ! MUST NOT BE INCLUDED IN NAMELIST!
sqlExtraDat character(len=256) :: sqlExtraDat ! can be used e.g. for ' and id_obs in (select id_obs from header where...) '
sqlExtraHeader character(len=256) :: sqlExtraHeader ! can be used e.g. for ' id_stn in (...) '
sqlNull character(len=256) :: sqlNull ! can be used e.g. for ' and obsvalue is not null '

NAMELIST: NAMSQLSFC (in file sqliteRead_mod.f90)

listElem character(len=256) :: listElem ! list of bufr element ids to read
numberElem integer :: numberElem ! MUST NOT BE INCLUDED IN NAMELIST!
sqlExtraDat character(len=256) :: sqlExtraDat ! can be used e.g. for ' and id_obs in (select id_obs from header where...) '
sqlExtraHeader character(len=256) :: sqlExtraHeader ! can be used e.g. for ' id_stn in (...) '
sqlNull character(len=256) :: sqlNull ! can be used e.g. for ' and obsvalue is not null '

NAMELIST: NAMSQLSC (in file sqliteRead_mod.f90)

listElem character(len=256) :: listElem ! list of bufr element ids to read
numberElem integer :: numberElem ! MUST NOT BE INCLUDED IN NAMELIST!
sqlExtraDat character(len=256) :: sqlExtraDat ! can be used e.g. for ' and id_obs in (select id_obs from header where...) '
sqlExtraHeader character(len=256) :: sqlExtraHeader ! can be used e.g. for ' id_stn in (...) '
sqlNull character(len=256) :: sqlNull ! can be used e.g. for ' and obsvalue is not null '

NAMELIST: NAMSQLPR (in file sqliteRead_mod.f90)

listElem character(len=256) :: listElem ! list of bufr element ids to read
numberElem integer :: numberElem ! MUST NOT BE INCLUDED IN NAMELIST!
sqlExtraDat character(len=256) :: sqlExtraDat ! can be used e.g. for ' and id_obs in (select id_obs from header where...) '
sqlExtraHeader character(len=256) :: sqlExtraHeader ! can be used e.g. for ' id_stn in (...) '
sqlNull character(len=256) :: sqlNull ! can be used e.g. for ' and obsvalue is not null '

NAMELIST: NAMSQLAL (in file sqliteRead_mod.f90)

listElem character(len=256) :: listElem ! list of bufr element ids to read
numberElem integer :: numberElem ! MUST NOT BE INCLUDED IN NAMELIST!
sqlExtraDat character(len=256) :: sqlExtraDat ! can be used e.g. for ' and id_obs in (select id_obs from header where...) '
sqlExtraHeader character(len=256) :: sqlExtraHeader ! can be used e.g. for ' id_stn in (...) '
sqlNull character(len=256) :: sqlNull ! can be used e.g. for ' and obsvalue is not null '

NAMELIST: NAMSQLGL (in file sqliteRead_mod.f90)

listElem character(len=256) :: listElem ! list of bufr element ids to read
numberElem integer :: numberElem ! MUST NOT BE INCLUDED IN NAMELIST!
sqlExtraDat character(len=256) :: sqlExtraDat ! can be used e.g. for ' and id_obs in (select id_obs from header where...) '
sqlExtraHeader character(len=256) :: sqlExtraHeader ! can be used e.g. for ' id_stn in (...) '
sqlNull character(len=256) :: sqlNull ! can be used e.g. for ' and obsvalue is not null '

NAMELIST: NAMSQLRADAR (in file sqliteRead_mod.f90)

listElem character(len=256) :: listElem ! list of bufr element ids to read
numberElem integer :: numberElem ! MUST NOT BE INCLUDED IN NAMELIST!
sqlExtraDat character(len=256) :: sqlExtraDat ! can be used e.g. for ' and id_obs in (select id_obs from header where...) '
sqlExtraHeader character(len=256) :: sqlExtraHeader ! can be used e.g. for ' id_stn in (...) '
sqlNull character(len=256) :: sqlNull ! can be used e.g. for ' and obsvalue is not null '

NAMELIST: NAMSQLSST (in file sqliteRead_mod.f90)

codtyp_sat integer :: codtyp_sat(10) ! list of codtyp values of SST satellite obs (default is 88)
listElem character(len=256) :: listElem ! list of bufr element ids to read
numberElem integer :: numberElem ! MUST NOT BE INCLUDED IN NAMELIST!
sqlExtraDat character(len=256) :: sqlExtraDat ! can be used e.g. for ' and id_obs in (select id_obs from header where...) '
sqlExtraDat_sat character(len=256) :: sqlExtraDat_sat ! same as sqlExtraDat, but only for SST satellite obs
sqlExtraHeader character(len=256) :: sqlExtraHeader ! can be used e.g. for ' id_stn in (...) '
sqlExtraHeader_sat character(len=256) :: sqlExtraHeader_sat! same as sqlExtraHeader, but only for SST satellite obs
sqlNull character(len=256) :: sqlNull ! can be used e.g. for ' and obsvalue is not null '

NAMELIST: NAMSQLUPDATE (in file sqliteRead_mod.f90)

itemUpdateList character(len=3) :: itemUpdateList(maxNumberUpdate) ! List of columns to be updated (e.g.'OMA','OMP')
itemUpdateListRadar character(len=3) :: itemUpdateListRadar(maxNumberUpdate) ! List of columns to be updated for Radar data
numberUpdateItems integer :: numberUpdateItems ! MUST NOT BE INCLUDED IN NAMELIST!
numberUpdateItemsRadar integer :: numberUpdateItemsRadar ! MUST NOT BE INCLUDED IN NAMELIST!

NAMELIST: NAMSQLINSERT (in file sqliteRead_mod.f90)

itemInsertList integer :: itemInsertList(maxNumberInsertItems) ! List of bufr element ids to insert in sql file data table
numberInsertItems integer :: numberInsertItems ! MUST NOT BE INCLUDED IN NAMELIST!

NAMELIST: NAMSSTBIASESTIMATE (in file sstBias_mod.f90)

bgTermZeroBias real(4) :: bgTermZeroBias ! background term of zero bias estimate
iceFractionThreshold real(4) :: iceFractionThreshold ! consider no ice condition below this threshold
maxBias real(4) :: maxBias ! max acceptable difference (insitu - satellite)
numberPointsBG integer :: numberPointsBG ! parameter, number of matchups of the background bias estimation
numberSensors integer :: numberSensors ! MUST NOT BE INCLUDED IN NAMELIST!
numObsBatches integer :: numObsBatches ! number of batches for calling interp setup
saveAuxFields logical :: saveAuxFields ! to store or not auxiliary fields: nobs and weight
searchRadius real(8) :: searchRadius ! horizontal search radius, in km, for obs gridding
sensorList character(len=10) :: sensorList(maxNumberSensors) ! list of sensors
timeInterpType_nl character(len=20) :: timeInterpType_nl ! 'NEAREST' or 'LINEAR'
weightMax real(4) :: weightMax ! maximum value of weight for the current day bias
weightMin real(4) :: weightMin ! minimum value of weight for the current day bias

NAMELIST: NAMS2C (in file stateToColumn_mod.f90)

calcHeightPressIncrOnColumn logical :: calcHeightPressIncrOnColumn ! choose to compute Z and P increment on column, instead of grid
rejectObsNonMonotonicPressure logical :: rejectObsNonMonotonicPressure ! choose to reject obs when interpolated column pressure is non-monotonic
slantPath_RA_nl logical :: slantPath_RA_nl ! choose to use slant path for non-linear radar operator
slantPath_RO_nl logical :: slantPath_RO_nl ! choose to use slant path for non-linear GPS-RO operator
slantPath_TO_nl logical :: slantPath_TO_nl ! choose to use slant path for non-linear radiance operator
slantPath_TO_tlad logical :: slantPath_TO_tlad ! choose to use slant path for linearized radiance operators
useFootprintForTovs logical :: useFootprintForTovs ! choose to use a horizontal footprint operator for radiance obs

NAMELIST: THIN_SURFACE (in file thinning_mod.f90)

considerSHIPstnID logical :: considerSHIPstnID ! signal if SHIP stn ID should be considered in thinning
deltmax integer :: deltmax ! maximum time difference (in minutes)
doThinning logical :: doThinning ! if false, we return immediately
step real(8) :: step ! time resolution (in hours)
useBlackList logical :: useBlackList ! signal if blacklist file should be read and used

NAMELIST: THIN_RAOBS (in file thinning_mod.f90)

ecmwfRejetsES logical :: ecmwfRejetsES ! choose to do filtering of T-Td obs with approach similar to ECMWF
toleranceFactor real(4) :: toleranceFactor ! Tolerance factor for TAC vs BUFR selection
verticalThinningES logical :: verticalThinningES ! choose to do vertical thinning of humidity obs

NAMELIST: THIN_AIRCRAFT (in file thinning_mod.f90)

deltmax integer :: deltmax ! maximum time difference (in minutes)

NAMELIST: THIN_SATWIND (in file thinning_mod.f90)

deldist integer :: deldist ! minimal distance in km between adjacent observations
deltemps integer :: deltemps ! number of time bins between adjacent observations

NAMELIST: THIN_GPSRO (in file thinning_mod.f90)

gpsroVarNo integer :: gpsroVarNo ! bufr element id to be used
heightMax real(8) :: heightMax ! niveau a partir du quel on rejette les donnees
heightMin real(8) :: heightMin ! niveau a partir du quel on accepte les donnees
heightSpacing real(8) :: heightSpacing ! epaisseur minimale entre deux niveaux

NAMELIST: THIN_GBGPS (in file thinning_mod.f90)

deldist integer :: deldist ! minimal distance in km between adjacent observations
deltemps integer :: deltemps ! number of time bins between adjacent observations
rejectNoZTDScore logical :: rejectNoZTDScore ! reject GB-GPS obs if no ZTD quality score available
removeUncorrected logical :: removeUncorrected ! remove obs that are not bias corrected (bit 6)

NAMELIST: THIN_ALADIN (in file thinning_mod.f90)

keepNthVertical integer :: keepNthVertical ! keep every nth vertical datum

NAMELIST: THIN_CSR (in file thinning_mod.f90)

deltax integer :: deltax ! thinning (dimension of box sides) (in km)
deltrad integer :: deltrad ! radius around box center for chosen obs (in km)

NAMELIST: THIN_SCAT (in file thinning_mod.f90)

deltax integer :: deltax ! thinning (dimension of box sides) (in km)
deltmax integer :: deltmax ! maximum time difference (in minutes)

NAMELIST: THIN_TOVS (in file thinning_mod.f90)

delta integer :: delta ! thinning (dimension of box sides) (in km)
deltrad integer :: deltrad ! radius around box center for chosen obs (in km)

NAMELIST: THIN_HYPER (in file thinning_mod.f90)

deltax integer :: deltax ! thinning (dimension of box sides) (in km)
deltmax integer :: deltmax ! maximum time difference (in minutes)
deltrad integer :: deltrad ! radius around box center for chosen obs (in km)
removeUnCorrected logical :: removeUncorrected ! remove obs that are not bias corrected (bit 6)

NAMELIST: NAMGEM (in file thinning_mod.f90)

numlev integer :: numlev ! MUST NOT BE INCLUDED IN NAMELIST!
rcoefinc real(8) :: rcoefinc ! parameter for defining fixed set of model levels for vertical thinning
rprefinc real(8) :: rprefinc ! parameter for defining fixed set of model levels for vertical thinning
rptopinc real(8) :: rptopinc ! parameter for defining fixed set of model levels for vertical thinning
vlev real(4) :: vlev(maxNumLev) ! parameter for defining fixed set of model levels for vertical thinning

NAMELIST: THIN_SATSST (in file thinning_mod.f90)

dataSetSST character(len=10) :: dataSetSST(maxNumDataSetSST) ! array of SST dataset names considered in thinning
deltmax integer :: deltmax ! maximum time difference (in minutes)
doThinning logical :: doThinning ! if false, we return immediately
fractionGridCell real(4) :: fractionGridCell ! keep data only inside a fraction of the grid cell size
numTimesteps integer :: numTimesteps ! thinning number of timesteps

NAMELIST: NAMTIME (in file timeCoord_mod.f90)

dstepobs real(8) :: dstepobs ! time step length for background state (in hours)
dstepobsinc real(8) :: dstepobsinc ! time step length for increment and/or B matrix (in hours)
dwindowsize real(8) :: dwindowsize ! length of assimilation window (in hours)
fullyUseExtremeTimeBins logical :: fullyUseExtremeTimeBins ! choose to use full-size bins at both ends of window (usually only half size)
referencetime character(len=6) :: referencetime ! location of 'date' within the window: 'middle' or 'start'

NAMELIST: NAMTOV (in file tovsNL_mod.f90)

cinstrumentid character(len=15) :: cinstrumentid(tvs_maxNumberOfSensors) ! List of incstrument names
cloudScaleFactor real(8) :: cloudScaleFactor ! Scale factor applied to model produced clouds to account for bias
crtmodl character(len=8) :: crtmodl ! For now, must equal 'RTTOV'
csatid character(len=15) :: csatid(tvs_maxNumberOfSensors) ! List of satellite names
doAzimuthCorrection logical :: doAzimuthCorrection(tvs_maxNumberOfSensors) ! Choose to apply correction to azimuth angle
instrumentNamesUsingCLW character(len=15) :: instrumentNamesUsingCLW(tvs_maxNumberOfSensors) ! List of inst names using CLW
instrumentNamesUsingHydrometeors character(len=15) :: instrumentNamesUsingHydrometeors(tvs_maxNumberOfSensors) ! List of inst name using full set of hydromet variables
isAzimuthValid logical :: isAzimuthValid(tvs_maxNumberOfSensors) ! Indicate if azimuth angle is valid
ldbgtov logical :: ldbgtov ! Choose to print simulated and observed Tb to listing
mpiTask0ReadCoeffs logical :: mpiTask0ReadCoeffs ! Choose to read coeffs only on task 0 and broadcast
mwAllskyAssim logical :: mwAllskyAssim ! High-level key to activate all-sky treatment of MW radiances
mWAtlasId integer mWAtlasId ! MW Atlas Id used when useMWEmissivityAtlas == .true. ; 1 TELSEM2, 2 CNRM atlas
mwInstrumUsingCLW_tl logical :: mwInstrumUsingCLW_tl ! Choose to use CLW increment in TL/AD if exists as state variable
mwInstrumUsingHydrometeors_tl logical :: mwInstrumUsingHydrometeors_tl ! Choose to all hydomet variables in TL/AD if exist as state variables
nsensors integer :: nsensors ! MUST NOT BE INCLUDED IN NAMELIST!
regLimitExtrap logical :: regLimitExtrap ! Choose to use RTTOV reg_limit_extrap option
useMWEmissivityAtlas logical useMWEmissivityAtlas ! Flag to activate use of RTTOV built-in MW emissivity Atlases
useO3Climatology logical :: useO3Climatology ! Choose to use ozone climatology (otherwise model field)
userDefinedDoAzimuthCorrection logical :: userDefinedDoAzimuthCorrection ! Indicate if user defined azimuth correction is to be used
userDefinedIsAzimuthValid logical :: userDefinedIsAzimuthValid ! Indicate if user defined azimuth angle is valid
useUofWIREmiss logical useUofWIREmiss ! Flag to activate use of RTTOV U of W IR emissivity Atlases

NAMELIST: NAMCHANOFFSET (in file tovsNL_mod.f90)

listinstrum character(len=8) :: listinstrum(0:ninst-1) ! List of instrument names
listoffset integer :: listoffset(0:ninst-1) ! Corresponding list of channel offset values

NAMELIST: NAMTOVSINST (in file tovsNL_mod.f90)

inst_names character(len=22) :: inst_names(ninst) ! List of instrument names for all radiance types

NAMELIST: NAMHYPER (in file tovsNL_mod.f90)

name_inst character(len=22) :: name_inst(ninst) ! List of instrument names for hyperspectral IR

NAMELIST: NAMGEO (in file tovsNL_mod.f90)

name_inst character(len=22) :: name_inst(ninst) ! List of instrument names for hyperspectral IR

NAMELIST: NAMINST (in file tovsNL_mod.f90)

listburp integer, save :: listburp(mxinstrumburp) ! List of instrument ID values from obs file
listinstrum character(len=8) :: listinstrum(0:ninst-1) ! List of instrument names

NAMELIST: NAMGEOBUFR (in file tovsNL_mod.f90)

name_inst character(len=22) :: name_inst(ninst) ! List of instrument names for hyperspectral IR

NAMELIST: NAMSAT (in file tovsNL_mod.f90)

listburp integer, save :: listburp(mxinstrumburp) ! List of instrument ID values from obs file
listplat character(len=8), save :: listplat(mxsatburp) ! Table of RTTOV platform identifier
listsat integer, save :: listsat (mxsatburp) ! Table of RTTOV satellite identifier

NAMELIST: NAMVNL (in file varNameList_mod.f90)

forceSfcOnly character(len=4), save :: forceSfcOnly(vnl_numVarMax) ! List of 3D variable names only allocated at the surface