Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
53b111f
Update data path for 30km externalanalyses (#325)
junmeiban Oct 16, 2024
0daf7b3
Change obs error for some GNSSRO files, update build, and
ibanos90 Nov 21, 2024
aa8a007
Fix scenario scenarios/3denvar_O30kmIE60km_WarmStart.yaml
ibanos90 Nov 25, 2024
bf0b140
Update obsspace yaml
ibanos90 Nov 26, 2024
5be085b
Changes for all-sky amsua
ibanos90 Nov 26, 2024
7ef379c
Change obs error for GNSSRO bending angle and update build (#331)
ibanos90 Nov 26, 2024
da52d4a
Changes to scenario for all-sky amsua
ibanos90 Nov 26, 2024
552df14
Merge branch 'release/3.0.0' into feature/changes4GNSSRO_3.0.2_allsky…
ibanos90 Nov 26, 2024
4ddfddf
Remove blank space and comment out restart point, change back the
ibanos90 Dec 5, 2024
c6df2c3
Remove amsua-cld from benchmark observations and remove updated files…
ibanos90 Dec 12, 2024
262d045
Add yamls for using Harnish obs error as obs error model and varbc
ibanos90 Jan 28, 2025
f08a9b3
Add MHS clear-sky assimilation using raw observations to replace the …
junmeiban Jan 28, 2025
a539d79
Add "reduce obs space" in thining to reduce memory usage. (#347)
mos3r3n Feb 3, 2025
3334d2a
Remove commit accidentally merged (#348)
ibanos90 Feb 3, 2025
21a5d44
Remove job specification for forecast entry in scenarios and verifyob…
ibanos90 Feb 4, 2025
574d838
Remove abi/ahi settings (#351)
ibanos90 Feb 4, 2025
fa0da6e
Add missing InvariantStream to GenerateExternalAnalyses.py (#357)
st-ncar Feb 28, 2025
6f72498
Use built-in error tables for PrepBUFR files (#366)
st-ncar Apr 23, 2025
e458b86
Update build path and ObsToIODA for new obs2ioda-v3 code (#369)
ibanos90 May 7, 2025
7257bda
Use crtm-2.4.1's coeffs and mpas-bundle-3.0.3-based code build
liujake Jul 6, 2025
34c9395
Add amsua cloudy radiance DA yamls
liujake Jul 12, 2025
883f441
This tool is to handle 15km-3km/15km DA analysis I/O issue
liujake Jul 12, 2025
02ab871
Add new scenarios for 3d/4dhybrid for 15km/30km and 15km-3km/15km
liujake Jul 12, 2025
58b8319
Not sure about 3d/4dhybrid_v3.yaml
liujake Jul 12, 2025
bf8ec90
Add 15km/30km, 15km-3km/30km EnVar setting and 30km LETKF/LGETKF
liujake Jul 12, 2025
b881e75
modified: bin/ExternalAnalysisToMPAS.csh
liujake Jul 12, 2025
8dd352c
modified: initialize/applications/EnKF.py
liujake Jul 12, 2025
6aa7301
Modified for amsua allsky:
junmeiban Jul 17, 2025
beba1bd
Add an exp for all-sky amsua (all chan in one yaml) + clear-sky mhs
liujake Jul 18, 2025
dda4009
Add 2nd exp for all-sky ama + all-sky mhs
liujake Jul 18, 2025
3788137
Add 3rd exp by adding all-sky atms upon all-sky amsua+mhs
liujake Jul 18, 2025
5cb5406
Revise iasi setting: add inter-channel correlation
liujake Jul 19, 2025
6e93300
Add 2 test cases for using rttov12 or rttov14 to assimilate
liujake Jul 21, 2025
557a84a
Add job 'priority' setting and use NMMM0043 in scenario yaml files
liujake Jul 22, 2025
ff58286
Rename exp #3
liujake Jul 22, 2025
5d96ad5
1. Changes to be committed:
liujake Jul 22, 2025
31ae61d
Add a hybrid-4DEnVar exp with all obs assimilated
liujake Jul 22, 2025
8504060
Switch back to use copy for templateFields files
liujake Jul 23, 2025
188b828
Add two debug test cases for crtm241 vs. rttov14
liujake Jul 24, 2025
05973e9
Clean obsolette ensemble input dataset
liujake Jul 25, 2025
f5919e4
Change back to use separate yaml sections for clear-sky/all-sky amsua
liujake Jul 25, 2025
7f19cfe
Add benchmark exp for clear-sky amsua + clear-sky mhs
liujake Jul 25, 2025
8fbaf7e
We have T/U/V degradation over tropical region (mainly ocean) in prev…
junmeiban Jul 25, 2025
3dc1447
Switch back to use separate yamls for clear/all-sky amsua
liujake Jul 25, 2025
583be6f
add yaml key to skip covariance constructor step fron 2nd outer loop
liujake Jul 25, 2025
6c17602
Update expt name.
junmeiban Jul 25, 2025
fabba25
rename exp-name,use input from /glade/derecho/scratch/liuz/pandac_co…
liujake Aug 3, 2025
d1064ea
Use new dataset identifiers for rda/data files. (#377) (#381)
jim-p-w Aug 6, 2025
7ca835e
Turn off surface jacobian check (inflate err) for clear-sky amsua; as…
junmeiban Aug 8, 2025
626cb53
Turn on surface jacobian check (inflate err) for clear-sky amsua.
junmeiban Aug 8, 2025
e8b992d
Add 'reduce obs space' for amsua-cld settings
liujake Aug 9, 2025
e563705
renamed: 7_4dhyb_asrama_asrmhs_atms_iasi.yaml -> 4_4dhyb_asrama_a…
liujake Aug 9, 2025
9e2a030
modified: 4_4dhyb_asrama_asrmhs_atms_iasi.yaml
liujake Aug 9, 2025
7c6a6ee
add 2025 obs for observations.yaml
zhumingying Aug 14, 2025
0ef8949
Update operational GFS/GDAS/obs data paths and change CrIS names from…
zhumingying Aug 14, 2025
42f9182
add yaml files for CrIS
zhumingying Aug 14, 2025
93358ed
add yaml files for atms_n21
zhumingying Aug 14, 2025
25fad6a
add yaml files for mhs_metop-c
zhumingying Aug 14, 2025
d1e0f41
Turn on Transmittnace Top Check for RTTOV v14; Turn on const and view…
njujlp Aug 21, 2025
4deb438
Turn off emissJacobian predictor as it is only applied over land and…
liujake Aug 22, 2025
5a7e920
Technically work for all QC procedures and VarBC predictors in RTTOVC…
njujlp Aug 26, 2025
a2118e5
Add a 15km-30km scenario for clear-sky amsua+mhs using rttovcpp
liujake Aug 27, 2025
44a3481
Fixed a typo
liujake Aug 27, 2025
296c711
Add a test with iasi DA using rttovcpp
liujake Aug 27, 2025
1fc116b
Fixed a bug in using a wrong rttov coef file.
liujake Aug 29, 2025
d6166bc
Turn off emissivity Jacobian predictor for VarBC with rttov
liujake Aug 29, 2025
1190295
reduce IASI channels from 88 to 66, and begin cycling from 18UTC 04/24
liujake Aug 30, 2025
32ee260
beginning VarBC files link to 2018042412's ones in exp3
liujake Aug 30, 2025
c4bdf1d
modified: scenarios/0_3dhyb_csrama_csrmhs_rttovcpp.yaml
liujake Sep 6, 2025
97df9db
Remove 5 more IASI channels and limite IASI data to 50S-50N.
liujake Sep 9, 2025
fdc4c91
adding yaml files for amsua-cld_metop-c
zhumingying Sep 9, 2025
956c390
adding Observation Range Sanity Check for atms
zhumingying Sep 9, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions bin/ExternalAnalysisToMPAS.csh
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ ln -sfv ${ExternalAnalysesDir}/${externalanalyses__UngribPrefix}* ./
## link MPAS mesh graph info
rm ./x${ArgRatio}.${ArgNCells}.graph.info*
ln -sfv $GraphInfoDir/x${ArgRatio}.${ArgNCells}.graph.info* .
echo $GraphInfoDir/x${ArgRatio}.${ArgNCells}.graph.info

## Link MPAS invariant field
if ( $ArgType == "Outer" ) then
Expand Down
3 changes: 2 additions & 1 deletion bin/GetGDASAnalysisFromFTP.csh
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ set fhour = 000

echo "Getting GDAS atm and sfc analyses from the NCEP FTP"
# url for GDAS data
set gdas_ftp = https://www.ftp.ncep.noaa.gov/data/nccf/com/gfs/prod/gdas.${ccyymmdd}/${hh}/atmos
#set gdas_ftp = https://www.ftp.ncep.noaa.gov/data/nccf/com/gfs/prod/gdas.${ccyymmdd}/${hh}/atmos
set gdas_ftp = https://nomads.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gdas.${ccyymmdd}/${hh}/atmos
set gdasAnaInfix = (atm sfc sfluxgrb)

foreach anaInfix ($gdasAnaInfix)
Expand Down
3 changes: 2 additions & 1 deletion bin/GetGFSAnalysisFromFTP.csh
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ set hh = `echo ${thisValidDate} | cut -c 9-10`
set res = 0p25
set fhour = 000
# url for GFS data
set gfs_ftp = https://www.ftp.ncep.noaa.gov/data/nccf/com/gfs/prod/gfs.${ccyymmdd}/${hh}/atmos
#set gfs_ftp = https://www.ftp.ncep.noaa.gov/data/nccf/com/gfs/prod/gfs.${ccyymmdd}/${hh}/atmos
set gfs_ftp = https://nomads.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.${ccyymmdd}/${hh}/atmos
set gribFile = gfs.t${hh}z.pgrb2.${res}.f${fhour}

set WorkDir = ${ExperimentDirectory}/`echo "$ArgWorkDir" \
Expand Down
2 changes: 1 addition & 1 deletion bin/GetGFSAnalysisFromRDA.csh
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ rm -rf GRIBFILE.*

echo "Getting GFS analysis from RDA"
# RDA GFS forecasts directory
set GFSgribdirRDA = /glade/campaign/collections/rda/data/ds084.1
set GFSgribdirRDA = /glade/campaign/collections/rda/data/d084001

if ( ! -e ${GFSgribdirRDA}/${gribFile} ) then
set preVyymmdd = `echo ${prevValidDate} | cut -c 1-8`
Expand Down
24 changes: 5 additions & 19 deletions bin/GetObs.csh
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@ cd ${self_WorkDir}
# ================================================================================================

set dataRoot = /glade/campaign/collections
set defaultBUFRDirectory = $dataRoot//rda/data/ds735.0
set satwndBUFRDirectory = $dataRoot/rda/data/ds351.0
set PrepBUFRDirectory = $dataRoot/rda/data/ds337.0
set defaultBUFRDirectory = $dataRoot/rda/data/d735000
set satwndBUFRDirectory = $dataRoot/rda/data/d351000
set PrepBUFRDirectory = $dataRoot/rda/data/d337000

foreach inst ( ${convertToIODAObservations} )
if ( "${observations__resource}" == "GladeRDAOnline" ) then
Expand All @@ -68,13 +68,6 @@ foreach inst ( ${convertToIODAObservations} )
echo "Source file: ${satwndBUFRDirectory}/bufr/${ccyy}/${THIS_FILE}"
cp -p ${satwndBUFRDirectory}/bufr/${ccyy}/${THIS_FILE} .
endif
# link the GDAS observation error table
if ( -e ${GDASObsErrtable} ) then
ln -sf ${GDASObsErrtable} obs_errtable
else
echo "ERROR: ${GDASObsErrtable} does NOT exist" > ./FAIL
exit 1
endif
# for prepbufr observations
else if ( ${inst} == prepbufr ) then
setenv THIS_FILE prepbufr.gdas.${ccyymmdd}.t${hh}z.nr.48h
Expand All @@ -88,14 +81,6 @@ foreach inst ( ${convertToIODAObservations} )
cp -p ${PrepBUFRDirectory}/prepnr/${ccyy}/${THIS_FILE} .
endif
endif
# use obs errors embedded in prepbufr file
if ( -e obs_errtable ) then
rm -f obs_errtable
endif
# use external obs error table
#if ( -e ${GDASObsErrtable} ) then
# ln -sf ${GDASObsErrtable} obs_errtable
#endif
# for all other observations
else
# set the specific file to be extracted from the tar file
Expand Down Expand Up @@ -155,7 +140,8 @@ foreach inst ( ${convertToIODAObservations} )
else if ( "${observations__resource}" == "NCEPFTPOnline" ) then
echo "Getting ${inst} from the NCEP FTP"
# url for GDAS data
set gdas_ftp = https://ftpprd.ncep.noaa.gov/data/nccf/com/obsproc/prod/gdas.${ccyymmdd}
#set gdas_ftp = https://ftpprd.ncep.noaa.gov/data/nccf/com/obsproc/prod/gdas.${ccyymmdd}
set gdas_ftp = https://nomads.ncep.noaa.gov/pub/data/nccf/com/obsproc/prod/gdas.${ccyymmdd}
# set name for the observation type
if ( ${inst} == prepbufr ) then
set THIS_FILE = gdas.t${hh}z.${inst}.nr
Expand Down
181 changes: 32 additions & 149 deletions bin/ObsToIODA.csh
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.

#Convert CISL RDA archived NCEP BUFR files to IODA-v2 format based on Jamie Bresch (NCAR/MMM) script rda_obs2ioda.csh
#Convert CISL RDA archived NCEP BUFR files to IODA-v3 format based on Jamie Bresch (NCAR/MMM) script rda_obs2ioda.csh

# Process arguments
# =================
Expand Down Expand Up @@ -79,7 +79,7 @@ foreach gdasfile ( *"gdas."* )
if ( ${gdasfile} =~ *"cris"* && ${ccyy} >= '2021' ) then
ln -sf ${CRTMTABLES}/cris-fsr431_npp.SpcCoeff.bin ./cris_npp.SpcCoeff.bin
ln -sf ${CRTMTABLES}/cris-fsr431_n20.SpcCoeff.bin ./cris_n20.SpcCoeff.bin
#ln -sf ${CRTMTABLES}/cris-fsr431_n21.SpcCoeff.bin ./cris_n21.SpcCoeff.bin
ln -sf ${CRTMTABLES}/cris-fsr431_n21.SpcCoeff.bin ./cris_n21.SpcCoeff.bin
else if ( ${gdasfile} =~ *"cris"* && ${ccyy} < '2021' ) then
ln -sf ${CRTMTABLES}/cris399_npp.SpcCoeff.bin ./cris_npp.SpcCoeff.bin
ln -sf ${CRTMTABLES}/cris399_n20.SpcCoeff.bin ./cris_n20.SpcCoeff.bin
Expand All @@ -89,7 +89,7 @@ foreach gdasfile ( *"gdas."* )
ln -sf ${CRTMTABLES}/iasi616_metop-c.SpcCoeff.bin ./iasi_metop-c.SpcCoeff.bin
endif

# Run the obs2ioda executable to convert files from BUFR to IODA-v2
# Run the obs2ioda executable to convert files from BUFR to IODA-v3
# ==================
rm ./${obs2iodaEXE}
ln -sfv ${obs2iodaBuildDir}/${obs2iodaEXE} ./
Expand All @@ -102,6 +102,10 @@ foreach gdasfile ( *"gdas."* )
#./${obs2iodaEXE} ${SPLIThourly} ${gdasfile} >&! $log
./${obs2iodaEXE} ${gdasfile} >&! $log
else if ( ${gdasfile} =~ *"prepbufr"* ) then
# use obs errors embedded in prepbufr file
if ( -e obs_errtable ) then
rm -f obs_errtable
endif
set inst = `echo "$gdasfile" | cut -d'.' -f1`
# run obs2ioda for preburf with additional QC as in GSI
./${obs2iodaEXE} ${gdasfile} >&! $log
Expand All @@ -114,6 +118,15 @@ foreach gdasfile ( *"gdas."* )
mv -f sfc_obs_${thisCycleDate}.h5 ../sfc_obs_${thisCycleDate}.h5
cd ..
rm -rf sfc
else if ( ${gdasfile} =~ *"satwnd"* ) then
# link the GDAS observation error table
if ( -e ${GDASObsErrtable} ) then
ln -sf ${GDASObsErrtable} obs_errtable
else
echo "ERROR: ${GDASObsErrtable} does NOT exist" > ./FAIL
exit 1
endif
./${obs2iodaEXE} ${gdasfile} >&! $log
else
./${obs2iodaEXE} ${gdasfile} >&! $log
endif
Expand All @@ -122,7 +135,7 @@ foreach gdasfile ( *"gdas."* )
# ============
grep "all done!" $log
if ( $status != 0 ) then
echo "$0 (ERROR): Pre-processing observations to IODA-v2 failed" > ./FAIL-converter_${inst}
echo "$0 (ERROR): Pre-processing observations to IODA-v3 failed" > ./FAIL-converter_${inst}
exit 1
endif

Expand All @@ -132,163 +145,33 @@ foreach gdasfile ( *"gdas."* )
end # gdasfile loop

# need to change to mainScriptDir in order for environmentJEDI.csh to be sourced
cd ${mainScriptDir}
source config/environmentJEDI.csh
cd -

# upgrade from IODA v1 to v2 (convert char to string for /MetaData/stationIdentification & /MetaData/variable_names)

set V1toV2 = ( \
aircraft \
satwind \
satwnd \
sfc \
sondes \
ascat \
profiler \
)

if ( "${convertToIODAObservations}" =~ *"prepbufr"* || "${convertToIODAObservations}" =~ *"satwnd"* ) then
# Run the ioda-upgrade executable to upgrade to get string station_id and string variable_names
# ==================

#foreach exec ($iodaUpgradeEXE1 $iodaUpgradeEXE2)
# rm ./${exec}
# ln -sfv ${iodaUpgradeBuildDir}/${exec} ./
#end
rm -f $iodaUpgradeEXE1
ln -sfv ${iodaUpgradeBuildDir}/${iodaUpgradeEXE1} ./

foreach ty ( ${V1toV2} )
echo 'begin ioda-upgrade-v1-to-v2 ' $ty
if ( -f ${ty}_obs_${thisValidDate}.h5 ) then
set ty_obs = ${ty}_obs_${thisValidDate}.h5
set ty_obs_base = `echo "$ty_obs" | cut -d'.' -f1`

set log = logs/log-upgradeV1-to-V2_${ty}
rm $log

./${iodaUpgradeEXE1} ${ty_obs} ${ty_obs_base}_tmp.h5 >&! $log
rm -f ${ty_obs}
mv ${ty_obs_base}_tmp.h5 ${ty_obs}

# Check status
# ============
grep "Success!" $log
if ( $status != 0 ) then
echo "$0 (ERROR): ${exec} failed for $ty" > ./FAIL-upgradeV1-to-V2_${ty}
exit 1
endif
endif
end
#cd ${mainScriptDir}
#source config/environmentJEDI.csh
#cd -

endif
if ( "${convertToIODAObservations}" =~ *"cris"* ) then

# upgrade for IODA v2 to v3

set V2toV3 = ( $V1toV2 \
amsua_n15 \
amsua_n18 \
amsua_n19 \
amsua_aqua \
amsua_metop-a \
amsua_metop-b \
amsua_metop-c \
gnssro \
mhs_n18 \
mhs_n19 \
mhs_metop-a \
mhs_metop-b \
mhs_metop-c \
iasi_metop-a \
iasi_metop-b \
iasi_metop-c \
# Name update
set NameUpdate = ( \
cris_npp \
cris_n20 \
#cris_n21 \
cris_n21 \
)

set iodaUpgradeV3Config = ${ConfigDir}/jedi/obsProc/ObsSpaceV2-to-V3.yaml
rm -f $iodaUpgradeEXE2
ln -sfv ${iodaUpgradeBuildDir}/${iodaUpgradeEXE2} ./

foreach ty ( ${V2toV3} )
echo 'begin ioda-upgrade-v2-to-v3 ' $ty
foreach ty ( ${NameUpdate} )
echo 'begin NameUpdate' $ty
if ( -f ${ty}_obs_${thisValidDate}.h5 ) then

set ty_obs = ${ty}_obs_${thisValidDate}.h5
set ty_obs_base = `echo "$ty_obs" | cut -d'.' -f1`

set log = logs/log-upgradeV2-to-V3_${ty}
rm $log

./${iodaUpgradeEXE2} ${ty_obs} ${ty_obs_base}_tmp.h5 $iodaUpgradeV3Config >&! $log
rm -f ${ty_obs}
mv ${ty_obs_base}_tmp.h5 $ty_obs

# Check status
# ============
grep "Success!" $log
if ( $status != 0 ) then
echo "$0 (ERROR): ${exec} failed for $ty" > ./FAIL-upgradeV2-to-V3_${ty}
exit 1
endif

endif
end

# upgrade for sensorScanPosition

set ScanPositionUpdate = ( \
amsua_n15 \
amsua_n18 \
amsua_n19 \
amsua_aqua \
amsua_metop-a \
amsua_metop-b \
amsua_metop-c \
mhs_n18 \
mhs_n19 \
mhs_metop-a \
mhs_metop-b \
mhs_metop-c \
iasi_metop-a \
iasi_metop-b \
iasi_metop-c \
cris_npp \
cris_n20 \
#cris_n21 \
)

ln -fs ${pyDir}/update_sensorScanPosition.py .
ln -fs ${pyDir}/fix_float2int.py .

foreach ty ( ${ScanPositionUpdate} )
echo 'begin ScanPositionUpdate' $ty

if ( -f ${ty}_obs_${thisValidDate}.h5 ) then

set ty_obs = ${ty}_obs_${thisValidDate}.h5
setenv fname ${ty_obs}

set log = logs/log-update_sensorScanPosition_${ty}
rm $log

python update_sensorScanPosition.py

if ( ${ty} =~ *"cris"* && ${ccyy} >= 2021 ) then
#if ( ${ty} =~ *"cris"* && ${ccyy} >= 2021 ) then
if ( ${ccyy} >= 2021 ) then
if ( ${ty} == "cris_npp" ) set tyy = "cris-fsr_npp"
if ( ${ty} == "cris_n20" ) set tyy = "cris-fsr_n20"
#if ( ${ty} == "cris_n21" ) set tyy = "cris-fsr_n21"
mv -f ${ty_obs}.modified ${tyy}_obs_${thisValidDate}.h5
else
mv -f ${ty_obs}.modified ${ty_obs}
if ( ${ty} == "cris_n21" ) set tyy = "cris-fsr_n21"
mv -f ${ty}_obs_${thisValidDate}.h5 ${tyy}_obs_${thisValidDate}.h5
endif

endif

echo 'end of ScanPositionUpdate' $ty
echo 'end of NameUpdate' $ty
end
endif

date

Expand Down
Loading