Skip to content

Commit 2c797a8

Browse files
authored
Merge branch 'develop' into feature/prep_emis_rework
2 parents dd4d887 + bc69895 commit 2c797a8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+421
-679
lines changed

.github/CODEOWNERS

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ jobs/JGLOBAL_MARINE_* @guillaumevernieres @AndrewEichmann-NOAA
7474
jobs/JGLOBAL_OCEANICE_PRODUCTS @JesseMeng-NOAA @ChristopherHill-NOAA
7575
jobs/JGLOBAL_OFFLINE_ATMOS_ANALYSIS @CoryMartin-NOAA
7676
jobs/JGLOBAL_PREP_EMISSIONS @bbakernoaa
77-
jobs/JGLOBAL_PREP_OBS_AERO @CoryMartin-NOAA
7877
jobs/JGLOBAL_PREP_OCEAN_OBS @guillaumevernieres @AndrewEichmann-NOAA
7978
jobs/JGLOBAL_*SNOW* @jiaruidong2017
8079
jobs/JGLOBAL_STAGE_IC @DavidHuber-NOAA @aerorahul
@@ -161,6 +160,7 @@ ush/gaussian_sfcanl.sh @BrianCurtis-NOAA
161160
ush/getdump.sh @DavidHuber-NOAA @aerorahul
162161
ush/getges.sh @DavidHuber-NOAA @aerorahul
163162
ush/getgfsnctime @CoryMartin-NOAA
163+
ush/getioda.sh @nicholasesposito @CoryMartin-NOAA @RussTreadon-NOAA
164164
ush/getncdimlen @CoryMartin-NOAA
165165
ush/gfs_bfr2gpk.sh @BoCui-NOAA
166166
ush/gfs_bufr.sh @BoCui-NOAA
@@ -209,7 +209,6 @@ ush/python/pygfs/task/__init__.py @aerorahul
209209
ush/python/pygfs/task/aero_analysis.py @DavidNew-NOAA @CoryMartin-NOAA
210210
ush/python/pygfs/task/aero_bmatrix.py @DavidNew-NOAA @CoryMartin-NOAA
211211
ush/python/pygfs/task/aero_emissions.py @bbakernoaa
212-
ush/python/pygfs/task/aero_prepobs.py @CoryMartin-NOAA
213212
ush/python/pygfs/task/analysis.py @DavidNew-NOAA @RussTreadon-NOAA
214213
ush/python/pygfs/task/analysis_stats.py @CoryMartin-NOAA @DavidNew-NOAA
215214
ush/python/pygfs/task/archive.py @DavidHuber-NOAA

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,18 +169,19 @@ ush/fv3gfs_make_orog.sh
169169
ush/global_chgres.sh
170170
ush/global_chgres_driver.sh
171171
ush/global_cycle_driver.sh
172+
ush/gsi_satbias2ioda_all.sh
172173
ush/jediinc2fv3.py
173174
ush/imsfv3_scf2ioda.py
174175
ush/bufr_snocvr_snomad.py
175176
ush/atparse.bash
176-
ush/run_bufr2ioda.py
177177
ush/bufr2ioda_insitu*
178178
ush/python/gsincdiag_to_ioda
179179
ush/python/ufsda
180180
ush/python/pyiodaconv
181181
ush/python/soca
182182
ush/python/gen_bufr2ioda_json.py
183183
ush/python/gen_bufr2ioda_yaml.py
184+
ush/python/run_bufr2ioda.py
184185
ush/spoc
185186
# ush log file
186187
ush/fetch-fix-data.log
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
experiment:
2+
net: gfs
3+
mode: cycled
4+
pslot: {{ 'pslot' | getenv }}
5+
app: ATM
6+
resdetatmos: 96
7+
resensatmos: 48
8+
comroot: {{ 'RUNTESTS' | getenv }}/COMROOT
9+
expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR
10+
icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C96C48/20250808
11+
idate: 2024022318
12+
edate: 2024022406
13+
nens: 2
14+
interval: 24
15+
start: warm
16+
yaml: {{ HOMEgfs }}/dev/ci/cases/yamls/ufsgsi_hybatmDA_defaults.ci.yaml
17+
18+
skip_ci_on_hosts:
19+
- gaeac5
20+
- gaeac6
21+
- orion
22+
- hercules
23+
- awsepicglobalworkflow
24+
25+
workflow:
26+
engine: rocoto
27+
rocoto:
28+
maxtries: 2
29+
cyclethrottle: 3
30+
taskthrottle: 25
31+
verbosity: 2

dev/ci/cases/yamls/gcafs_cycled_defaults_ci.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ defaults:
33
base:
44
DO_TEST_MODE: "NO"
55
AERO_ANL_RUNS: "gcdas"
6+
USE_IODADIR: "YES"

dev/ci/cases/yamls/ufs_hybatmDA_defaults.ci.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ base:
55
DO_JEDIATMVAR: "YES"
66
DO_JEDIATMENS: "YES"
77
DO_TEST_MODE: "NO"
8+
CASE_ANL: "C48"
9+
USE_IODADIR: "YES"
810
atmanl:
911
LAYOUT_X_ATMANL: 4
1012
LAYOUT_Y_ATMANL: 4
@@ -23,5 +25,7 @@ esfc:
2325
DONST: "NO"
2426
nsst:
2527
NST_MODEL: "1"
28+
prepatmiodaobs:
29+
DO_CONVERT_IODA: "YES"
2630
sfcanl:
2731
DONST: "NO"
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
defaults:
2+
!INC {{ HOMEgfs }}/dev/parm/config/gfs/yaml/defaults.yaml
3+
base:
4+
DOIAU: "NO"
5+
DO_JEDIATMVAR: "YES"
6+
DO_JEDIATMENS: "NO"
7+
DO_TEST_MODE: "NO"
8+
CASE_ANL: "C48"
9+
CASE_HIST: "C96"
10+
DONST: "NO"
11+
USE_IODADIR: "YES"
12+
atmanl:
13+
LAYOUT_X_ATMANL: 4
14+
LAYOUT_Y_ATMANL: 4
15+
OBS_LIST_YAML: "${HOMEgfs}/sorc/gdas.cd/test/gw-ci/atm/atm_obs_list_ufs_hybatmDA.yaml.j2"
16+
VAR_JEDI_TEST_YAML: "${HOMEgfs}/sorc/gdas.cd/test/gw-ci/atm/jedi-test_3dvar_ufs_hybatmDA.yaml.j2"
17+
FV3INC_JEDI_TEST_YAML: "${HOMEgfs}/sorc/gdas.cd/test/gw-ci/atm/jedi-test_3dvar-fv3inc_ufs_hybatmDA.yaml.j2"
18+
NUMBER_OUTER_LOOPS: 2
19+
NINNER_LOOP1: 2
20+
NINNER_LOOP2: 4
21+
esfc:
22+
DONST: "NO"
23+
nsst:
24+
NST_MODEL: "1"
25+
prep:
26+
COPY_BIASCOR_SOURCE: "NO"
27+
COPY_BIASCOR_STATIC: "YES"
28+
CONVERT_BIASCOR: "YES"
29+
prepatmiodaobs:
30+
DO_CONVERT_IODA: "YES"
31+
sfcanl:
32+
DONST: "NO"

dev/ci/gitlab-ci-hosts.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
# Template matrices for case lists
2424
.hera_cases_matrix: &hera_cases
25-
- caseName: ["C48_ATM", "C48_S2SW", "C48_S2SWA_gefs", "C48mx500_3DVarAOWCDA", "C48mx500_hybAOWCDA", "C96C48_hybatmDA", "C96C48_hybatmsnowDA", "C96C48_hybatmsoilDA", "C96C48_ufs_hybatmDA", "C96C48mx500_S2SW_cyc_gfs", "C96_atm3DVar", "C96_gcafs_cycled", "C96_gcafs_cycled_noDA", "C96mx100_S2S"]
25+
- caseName: ["C48_ATM", "C48_S2SW", "C48_S2SWA_gefs", "C48mx500_3DVarAOWCDA", "C48mx500_hybAOWCDA", "C96C48_hybatmDA", "C96C48_hybatmsnowDA", "C96C48_hybatmsoilDA", "C96C48_ufsgsi_hybatmDA", "C96C48_ufs_hybatmDA", "C96C48mx500_S2SW_cyc_gfs", "C96_atm3DVar", "C96_gcafs_cycled", "C96_gcafs_cycled_noDA", "C96mx100_S2S"]
2626

2727
.gaeac6_cases_matrix: &gaeac6_cases
2828
- caseName: ["C48_ATM", "C48_S2SW", "C48_S2SWA_gefs", "C48mx500_3DVarAOWCDA", "C48mx500_hybAOWCDA", "C96C48_hybatmDA", "C96C48_hybatmsnowDA", "C96C48_hybatmsoilDA", "C96C48mx500_S2SW_cyc_gfs", "C96_atm3DVar", "C96_gcafs_cycled", "C96_gcafs_cycled_noDA", "C96mx100_S2S"]
@@ -34,7 +34,7 @@
3434
- caseName: ["C48_ATM", "C48_S2SW", "C48_S2SWA_gefs", "C48mx500_3DVarAOWCDA", "C48mx500_hybAOWCDA", "C96C48_hybatmDA", "C96C48mx500_S2SW_cyc_gfs", "C96_atm3DVar", "C96mx100_S2S"]
3535

3636
.ursa_cases_matrix: &ursa_cases
37-
- caseName: ["C48_ATM", "C48_S2SW", "C48_S2SWA_gefs", "C48mx500_3DVarAOWCDA", "C48mx500_hybAOWCDA", "C96C48_hybatmDA", "C96C48_hybatmsnowDA", "C96C48_hybatmsoilDA", "C96C48_ufs_hybatmDA", "C96C48mx500_S2SW_cyc_gfs", "C96_atm3DVar", "C96mx100_S2S"]
37+
- caseName: ["C48_ATM", "C48_S2SW", "C48_S2SWA_gefs", "C48mx500_3DVarAOWCDA", "C48mx500_hybAOWCDA", "C96C48_hybatmDA", "C96C48_hybatmsnowDA", "C96C48_hybatmsoilDA", "C96C48_ufsgsi_hybatmDA", "C96C48_ufs_hybatmDA", "C96C48mx500_S2SW_cyc_gfs", "C96_atm3DVar", "C96mx100_S2S"]
3838

3939
# Host: Hera - Standard Cases
4040
setup_experiments-hera:

dev/jobs/prep.sh

Lines changed: 58 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,32 @@ RUN=${RUN_local} YMD=${PDY} HH=${cyc} declare_from_tmpl -rx \
3232
COMIN_OBS:COM_OBS_TMPL \
3333
COMOUT_OBS:COM_OBS_TMPL \
3434
COMINobsproc:COM_OBSPROC_TMPL \
35-
COMIN_TCVITAL:COM_TCVITAL_TMPL
35+
COMINobsforge:COM_OBSFORGE_TMPL \
36+
COMIN_TCVITAL:COM_TCVITAL_TMPL \
37+
COMOUT_ATMOS_ANALYSIS:COM_ATMOS_ANALYSIS_TMPL
3638

3739
RUN=${GDUMP} YMD=${gPDY} HH=${gcyc} declare_from_tmpl -rx \
3840
COMOUT_OBS_PREV:COM_OBS_TMPL \
39-
COMINobsproc_PREV:COM_OBSPROC_TMPL
41+
COMINobsproc_PREV:COM_OBSPROC_TMPL \
42+
COMOUT_ATMOS_ANALYSIS_PREV:COM_ATMOS_ANALYSIS_TMPL
4043

4144
mkdir -p "${COMOUT_OBS}"
4245

4346
###############################################################
47+
# Copy IODA files to ROTDIR
48+
if [[ ${USE_IODADIR:-"NO"} == "YES" ]]; then
49+
"${HOMEgfs}/ush/getioda.sh" "${PDY}" "${cyc}" "${RUN_local}" "${COMINobsforge}" "${COMOUT_OBS}"
50+
status=$?
51+
if [[ ${status} -ne 0 ]]; then
52+
exit "${status}"
53+
fi
54+
fi
55+
56+
if [[ "${RUN_local}" == "gcdas" ]]; then
57+
echo "GCDAS only needs IODA files; exiting prep.sh"
58+
exit 0
59+
fi
60+
4461
# Copy dump files to ROTDIR
4562
"${HOMEgfs}/ush/getdump.sh" "${PDY}" "${cyc}" "${RUN_local}" "${COMINobsproc}" "${COMOUT_OBS}"
4663
status=$?
@@ -95,6 +112,28 @@ else
95112
cpfs "${COMINobsproc}/${RUN_local}.t${cyc}z.syndata.tcvitals.tm00" "${COMOUT_OBS}/"
96113
fi
97114

115+
116+
###############################################################
117+
# If requested, copy bias correction files from source or stait to analysis directories
118+
# TODO: remove this when JEDI ATM can cycle bias correction coefficents
119+
if [[ ${RUN} == "gdas" && ${COPY_BIASCOR_SOURCE:-"NO"} == "YES" ]]; then
120+
for file in abias abias_pc abias_air; do
121+
if [[ -s "${SOURCE_BIASCOR}/${file}.${GDUMP}.${gPDY}${gcyc}" ]]; then
122+
cpreq "${SOURCE_BIASCOR}/${file}.${GDUMP}.${gPDY}${gcyc}" "${COMOUT_ATMOS_ANALYSIS_PREV}/${GDUMP}.t${gcyc}z.${file}"
123+
cpreq "${SOURCE_BIASCOR}/${file}.${GDUMP}.${gPDY}${gcyc}" "${COMOUT_ATMOS_ANALYSIS_PREV}/${GDUMP}.t${gcyc}z.${file}.txt"
124+
fi
125+
done
126+
fi
127+
if [[ ${RUN} == "gdas" && ${COPY_BIASCOR_STATIC:-"NO"} == "YES" ]]; then
128+
for file in abias abias_pc abias_air; do
129+
if [[ -s "${COMOUT_ATMOS_ANALYSIS_PREV}/${GDUMP}.t${gcyc}z.${file}.txt" ]]; then
130+
mkdir -p "${COMOUT_ATMOS_ANALYSIS}"
131+
cpreq "${COMOUT_ATMOS_ANALYSIS_PREV}/${GDUMP}.t${gcyc}z.${file}.txt" "${COMOUT_ATMOS_ANALYSIS}/${GDUMP}.t${cyc}z.${file}.txt"
132+
fi
133+
done
134+
fi
135+
136+
98137
###############################################################
99138
# Generate prepbufr files from dumps and prior gdas guess
100139
rm -f "${COMOUT_OBS}/${OPREFIX}prepbufr"
@@ -160,6 +199,23 @@ if [[ ${err} -ne 0 ]]; then
160199
err_exit "Failed to obtain/create ${files}, ABORT!"
161200
fi
162201

202+
################################################################################
203+
# If requested, create radiance bias correction files for JEDI
204+
if [[ ${RUN} == "gdas" && ${CONVERT_BIASCOR:-"NO"} == "YES" ]]; then
205+
cd "${DATAROOT}" || true
206+
"${HOMEgfs}/ush/gsi_satbias2ioda_all.sh"
207+
export err=$?
208+
if [[ ${err} -ne 0 ]]; then
209+
err_exit "gsi_satbias2ioda failed, ABORT!"
210+
fi
211+
212+
# Remove temporary working directory
213+
cd "${DATAROOT}" || true
214+
if [[ "${KEEPDATA}" == "NO" ]]; then
215+
rm -rf "${DATA}"
216+
fi
217+
fi
218+
163219
################################################################################
164220
# Exit out cleanly
165221

dev/jobs/prepatmiodaobs.sh

Lines changed: 0 additions & 18 deletions
This file was deleted.

dev/jobs/prepobsaero.sh

Lines changed: 0 additions & 20 deletions
This file was deleted.

0 commit comments

Comments
 (0)