Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop' into feature/ss_180
Browse files Browse the repository at this point in the history
* origin/develop:
  Turn on OMA diagnostics after JEDI minimization (NOAA-EMC#1274)
  Adding AHI and SEVIRI satwnd thinning, enrolling AHI-H9, SEVIRI-M9, SEVIRI-M10 (NOAA-EMC#1263)
  add ctest to create yaml for lgetkf observer ctest (NOAA-EMC#1272)
  add soca fix yaml file for 1deg (NOAA-EMC#1270)
  Fix to marine post and archiving (NOAA-EMC#1266)
  Add JPSSRR sea-ice product to ioda converter (NOAA-EMC#1259)
  enable atmospheric lgetkf ctests to run in combined and split modes (NOAA-EMC#1262)
  • Loading branch information
DavidHuber-NOAA committed Sep 9, 2024
2 parents 55c8f74 + b853fe9 commit 10edded
Show file tree
Hide file tree
Showing 28 changed files with 1,882 additions and 5 deletions.
2 changes: 2 additions & 0 deletions parm/aero/variational/3dvar_fgat_gfs_aero.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ variational:
final:
diagnostics:
departures: anlmob
prints:
frequency: PT3H
increment:
geometry:
fms initialization:
Expand Down
2 changes: 2 additions & 0 deletions parm/aero/variational/3dvar_gfs_aero.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,8 @@ variational:
final:
diagnostics:
departures: anlmob
prints:
frequency: PT3H
increment:
geometry:
fms initialization:
Expand Down
1 change: 1 addition & 0 deletions parm/atm/jcb-base.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ window_length: "{{ ATM_WINDOW_LENGTH }}"
bound_to_include: begin
minimizer: DRPCG
final_diagnostics_departures: anlmob
final_prints_frequency: PT3H
number_of_outer_loops: 2
analysis_variables: [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr]

Expand Down
5 changes: 3 additions & 2 deletions parm/ioda/bufr2ioda/bufr2ioda_satwnd_amv_ahi.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@
"dump_directory" : "{{ DMPDIR }}",
"ioda_directory" : "{{ COM_OBS }}",
"subsets" : [ "NC005044", "NC005045", "NC005046" ],
"data_description" : "NC005044 JMA SATWIND, AHI HIM8 IR(LW)/VIS/WV-CT/WV-CS; NC005045 JMA SATWIND, HIMAWARI-8 IR(LW)/VIS/WV-CT/WV-CS; NC005046 JMA SATWIND, HIMAWARI-8 IR(LW)/VIS/WV-CT/WV-CS",
"data_description" : "NC005044 JMA SATWIND, AHI HIMAWARI IR(LW)/VIS/WV-CT/WV-CS; NC005045 JMA SATWIND, AHI HIMAWARI IR(LW)/VIS/WV-CT/WV-CS; NC005046 JMA SATWIND, AHI HIMAWARI IR(LW)/VIS/WV-CT/WV-CS",
"data_provider" : "JMA",
"sensor_info" : { "sensor_name": "AHI", "sensor_full_name": "Advanced Himawari Imager", "sensor_id": 999 },
"satellite_info" : [
{ "satellite_name": "H8", "satellite_full_name": "Himawari-8", "satellite_id": 173, "launch time": "YYYYMMDD" },
]
{ "satellite_name": "H9", "satellite_full_name": "Himawari-9", "satellite_id": 174, "launch time": "YYYYMMDD" },
]
}
2 changes: 2 additions & 0 deletions parm/ioda/bufr2ioda/bufr2ioda_satwnd_amv_seviri.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
"sensor_info" : { "sensor_name": "SEVIRI", "sensor_full_name": "Spinning Enhanced Visible and InfraRed Imager", "sensor_id": 999 },
"satellite_info" : [
{ "satellite_name": "M8", "satellite_full_name": "METEOSAT-8", "satellite_id": 55, "launch time": "YYYYMMDD" },
{ "satellite_name": "M9", "satellite_full_name": "METEOSAT-9", "satellite_id": 56, "launch time": "YYYYMMDD" },
{ "satellite_name": "M10", "satellite_full_name": "METEOSAT-10", "satellite_id": 57, "launch time": "YYYYMMDD" },
{ "satellite_name": "M11", "satellite_full_name": "METEOSAT-11", "satellite_id": 70, "launch time": "YYYYMMDD" },
]
}
2 changes: 1 addition & 1 deletion parm/snow/jcb-base.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ snow_increment_time_fv3: "{{ bkg_time_fv3 }}"
analysis_variables: [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr]
minimizer: DRPCG
final_diagnostics_departures: anlmob

final_prints_frequency: PT3H
cost_type: 3D-Var
number_of_outer_loops: 2

Expand Down
1 change: 1 addition & 0 deletions parm/soca/marine-jcb-base.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ window_length: '{{ATM_WINDOW_LENGTH}}'
bound_to_include: begin
minimizer: RPCG
final_diagnostics_departures: oman
final_prints_frequency: PT3H
number_of_outer_loops: 1
analysis_variables: [cicen, hicen, hsnon, socn, tocn, uocn, vocn, ssh]

Expand Down
25 changes: 25 additions & 0 deletions parm/soca/soca_fix_stage_100.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# TODO(AFE): make resolution dependent
mkdir:
- "{{ DATA }}/INPUT"
######################################
# fix files to copy
######################################
copy:
- ["{{ SOCA_INPUT_FIX_DIR }}/rossrad.nc", "{{ DATA }}/rossrad.nc"]
- ["{{ SOCA_INPUT_FIX_DIR }}/field_table", "{{ DATA }}/field_table"]
- ["{{ SOCA_INPUT_FIX_DIR }}/diag_table", "{{ DATA }}/diag_table"]
- ["{{ SOCA_INPUT_FIX_DIR }}/MOM_input", "{{ DATA }}/MOM_input"]
- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/grid_spec.nc", "{{ DATA }}/INPUT/grid_spec.nc"]
- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/hycom1_75_800m.nc", "{{ DATA }}/INPUT/hycom1_75_800m.nc"]
- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/layer_coord.nc", "{{ DATA }}/INPUT/layer_coord.nc"]
- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/ocean_hgrid.nc", "{{ DATA }}/INPUT/ocean_hgrid.nc"]
- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/ocean_mosaic.nc", "{{ DATA }}/INPUT/ocean_mosaic.nc"]
- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/topog.nc", "{{ DATA }}/INPUT/topog.nc"]
- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/vgrid_75_2m.nc", "{{ DATA }}/INPUT/vgrid_75_2m.nc"]
- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/KH_background_2d.nc", "{{ DATA }}/INPUT/KH_background_2d.nc"]
- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/tidal_amplitude.nc", "{{ DATA }}/INPUT/tidal_amplitude.nc"]
- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/interpolate_zgrid_40L.nc", "{{ DATA }}/INPUT/interpolate_zgrid_40L.nc"]
- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/interpolate_zgrid_46L.nc", "{{ DATA }}/INPUT/interpolate_zgrid_46L.nc"]
- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/topo_edits_011818.nc", "{{ DATA }}/INPUT/topo_edits_011818.nc"]
- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/MOM_channels_SPEAR", "{{ DATA }}/INPUT/MOM_channels_SPEAR"]
- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/seawifs_1998-2006_smoothed_2X.nc", "{{ DATA }}/INPUT/seawifs_1998-2006_smoothed_2X.nc"]
2 changes: 2 additions & 0 deletions parm/soca/variational/3dvarfgat.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ output:
final:
diagnostics:
departures: oman
prints:
frequency: PT3H
increment:
output:
state component:
Expand Down
4 changes: 4 additions & 0 deletions test/atm/global-workflow/3dvar.ref
Original file line number Diff line number Diff line change
Expand Up @@ -88,3 +88,7 @@ sensorScanAngle_order_2: Min= -5.1097259522434877, Max= 2.8632600312042698, N
---------------------------------------------------------------


CostJb : Nonlinear Jb = 0.0000033199535370
CostJo : Nonlinear Jo(AMSUA N19) = 39476.8510817764617968, nobs = 73667, Jo/n = 0.5358824315063252, err = 6.2697697603632934
CostJo : Nonlinear Jo(sondes) = 10639.2476170353256748, nobs = 4255, Jo/n = 2.5004107208073623, err = 10.9811231401273197
CostFunction: Nonlinear J = 50116.0987021317414474
5 changes: 5 additions & 0 deletions test/atm/global-workflow/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ add_test(NAME test_gdasapp_atm_jjob_ens_letkf
${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR}
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/test/atm/global-workflow/testrun)

add_test(NAME test_gdasapp_atm_jjob_ens_init_split
COMMAND ${PROJECT_SOURCE_DIR}/test/atm/global-workflow/jjob_ens_init_split.sh
${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR}
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/test/atm/global-workflow/testrun)

add_test(NAME test_gdasapp_atm_jjob_ens_obs
COMMAND ${PROJECT_SOURCE_DIR}/test/atm/global-workflow/jjob_ens_obs.sh
${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR}
Expand Down
3 changes: 2 additions & 1 deletion test/atm/global-workflow/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ atmanl:
LAYOUT_Y_ATMANL: 1

atmensanl:
JCB_ALGO_YAML: "@srcdir@/test/atm/global-workflow/jcb-prototype_lgetkf.yaml.j2"
JCB_ALGO_YAML_LETKF: "@srcdir@/test/atm/global-workflow/jcb-prototype_lgetkf.yaml.j2"
JCB_ALGO_YAML_OBS: "@srcdir@/test/atm/global-workflow/jcb-prototype_lgetkf_observer.yaml.j2"
LAYOUT_X_ATMENSANL: 1
LAYOUT_Y_ATMENSANL: 1

Expand Down
4 changes: 4 additions & 0 deletions test/atm/global-workflow/jjob_ens_init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,10 @@ for imem in $(seq 1 $NMEM_ENS); do
done
done

# Set lobsdiag_forenkf=.false. to run letkf as single observer and solver job
# NOTE: atmensanlinit creates input yaml for atmensanlletkf job
cp $EXPDIR/config.base_lobsdiag_forenkf_false $EXPDIR/config.base

# Execute j-job
if [[ $machine = 'HERA' || $machine = 'ORION' || $machine = 'HERCULES' ]]; then
sbatch --ntasks=1 --account=$ACCOUNT --qos=batch --time=00:10:00 --export=ALL --wait --output=atmensanlinit-%j.out ${HOMEgfs}/jobs/JGLOBAL_ATMENS_ANALYSIS_INITIALIZE
Expand Down
122 changes: 122 additions & 0 deletions test/atm/global-workflow/jjob_ens_init_split.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
#! /usr/bin/env bash

set -x
bindir=$1
srcdir=$2

# Set g-w HOMEgfs
topdir=$(cd "$(dirname "$(readlink -f -n "${bindir}" )" )/../../.." && pwd -P)
export HOMEgfs=$topdir

# Set variables for ctest
export PSLOT=gdas_test
export EXPDIR=$bindir/test/atm/global-workflow/testrun/experiments/$PSLOT
export PDY=20210323
export cyc=18
export CDATE=${PDY}${cyc}
export ROTDIR=$bindir/test/atm/global-workflow/testrun/ROTDIRS/$PSLOT
export RUN=enkfgdas
export CDUMP=enkfgdas
export DATAROOT=$bindir/test/atm/global-workflow/testrun/RUNDIRS/$PSLOT
export COMIN_GES=${bindir}/test/atm/bkg
export pid=${pid:-$$}
export jobid=$pid
export COMROOT=$DATAROOT
export NMEM_ENS=3
export ACCOUNT=da-cpu
export COM_TOP=$ROTDIR

# Set GFS COM paths
source "${HOMEgfs}/ush/preamble.sh"
source "${HOMEgfs}/parm/config/gfs/config.com"

# Set python path for workflow utilities and tasks
wxflowPATH="${HOMEgfs}/ush/python"
PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}${wxflowPATH}"
export PYTHONPATH

# Detemine machine from config.base
machine=$(echo `grep 'machine=' $EXPDIR/config.base | cut -d"=" -f2` | tr -d '"')

# Set NETCDF and UTILROOT variables (used in config.base)
if [[ $machine = 'HERA' ]]; then
NETCDF=$( which ncdump )
export NETCDF
export UTILROOT="/scratch2/NCEPDEV/ensemble/save/Walter.Kolczynski/hpc-stack/intel-18.0.5.274/prod_util/1.2.2"
elif [[ $machine = 'ORION' || $machine = 'HERCULES' ]]; then
ncdump=$( which ncdump )
NETCDF=$( echo "${ncdump}" | cut -d " " -f 3 )
export NETCDF
export UTILROOT=/work2/noaa/da/python/opt/intel-2022.1.2/prod_util/1.2.2
fi

# Set date variables for previous cycle
GDATE=`date +%Y%m%d%H -d "${CDATE:0:8} ${CDATE:8:2} - 6 hours"`
gPDY=$(echo $GDATE | cut -c1-8)
gcyc=$(echo $GDATE | cut -c9-10)
GDUMP="gdas"

# Set file prefixes
gprefix=$GDUMP.t${gcyc}z
oprefix=$GDUMP.t${cyc}z

# Generate COM variables from templates
RUN=${GDUMP} YMD=${PDY} HH=${cyc} declare_from_tmpl -rx COM_OBS
RUN=${GDUMP} YMD=${gPDY} HH=${gcyc} declare_from_tmpl -rx \
COM_ATMOS_ANALYSIS_PREV:COM_ATMOS_ANALYSIS_TMPL \

# Link observations
dpath=gdas.$PDY/$cyc/obs
mkdir -p $COM_OBS
flist="amsua_n19.$CDATE sondes.$CDATE"
for file in $flist; do
ln -fs $GDASAPP_TESTDATA/lowres/$dpath/${oprefix}.${file}.nc4 $COM_OBS/${oprefix}.${file}.nc
done

# Link radiance bias correction files
dpath=gdas.$gPDY/$gcyc/analysis/atmos
mkdir -p $COM_ATMOS_ANALYSIS_PREV
flist="amsua_n19.satbias amsua_n19.satbias_cov"
for file in $flist; do
ln -fs $GDASAPP_TESTDATA/lowres/$dpath/$gprefix.${file}.nc4 $COM_ATMOS_ANALYSIS_PREV/$gprefix.${file}.nc
done
flist="amsua_n19.tlapse.txt"
for file in $flist; do
ln -fs $GDASAPP_TESTDATA/lowres/$dpath/$gprefix.$file $COM_ATMOS_ANALYSIS_PREV/$gprefix.$file
done

# Link member atmospheric background on tiles and atmf006
dpath=enkfgdas.$gPDY/$gcyc
for imem in $(seq 1 $NMEM_ENS); do
memchar="mem"$(printf %03i $imem)

MEMDIR=${memchar} RUN=${RUN} YMD=${gPDY} HH=${gcyc} declare_from_tmpl -x \
COM_ATMOS_HISTORY_PREV_ENS:COM_ATMOS_HISTORY_TMPL \
COM_ATMOS_RESTART_PREV_ENS:COM_ATMOS_RESTART_TMPL
COM_ATMOS_RESTART_PREV_DIRNAME_ENS=$(dirname $COM_ATMOS_RESTART_PREV_ENS)

source=$GDASAPP_TESTDATA/lowres/$dpath/$memchar/model/atmos/history
target=$COM_ATMOS_HISTORY_PREV_ENS
mkdir -p $target
rm -rf $target/enkfgdas.t${gcyc}z.atmf006.nc
ln -fs $source/enkfgdas.t${gcyc}z.atmf006.nc $target/

source=$GDASAPP_TESTDATA/lowres/$dpath/$memchar/model/atmos/history
target=$COM_ATMOS_HISTORY_PREV_ENS
flist=("cubed_sphere_grid_atmf006.nc" "cubed_sphere_grid_sfcf006.nc")
for file in "${flist[@]}"; do
rm -rf $target/enkf${gprefix}.${file}
ln -fs $source/enkf${gprefix}.${file} $target/
done
done

# Set lobsdiag_forenkf=.true. to run letkf as separate observer and solver jobs
# NOTE: atmensanlinit creates input yaml for atmensanlobs and atmensanlsol jobs
cp $EXPDIR/config.base_lobsdiag_forenkf_true $EXPDIR/config.base

# Execute j-job
if [[ $machine = 'HERA' || $machine = 'ORION' || $machine = 'HERCULES' ]]; then
sbatch --ntasks=1 --account=$ACCOUNT --qos=batch --time=00:10:00 --export=ALL --wait --output=atmensanlinit-%j.out ${HOMEgfs}/jobs/JGLOBAL_ATMENS_ANALYSIS_INITIALIZE
else
${HOMEgfs}/jobs/JGLOBAL_ATMENS_ANALYSIS_INITIALIZE
fi
3 changes: 3 additions & 0 deletions test/atm/global-workflow/jjob_ens_letkf.sh
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ elif [[ $machine = 'ORION' || $machine = 'HERCULES' ]]; then
export UTILROOT=/work2/noaa/da/python/opt/intel-2022.1.2/prod_util/1.2.2
fi

# Set lobsdiag_forenkf=.false. to run letkf as combined observer and solver job
cp $EXPDIR/config.base_lobsdiag_forenkf_false $EXPDIR/config.base

# Execute j-job
if [[ $machine = 'HERA' || $machine = 'ORION' || $machine = 'HERCULES' ]]; then
sbatch --nodes=1 --ntasks=36 --account=$ACCOUNT --qos=batch --time=00:30:00 --export=ALL --wait --output=atmensanlletkf-%j.out ${HOMEgfs}/jobs/JGLOBAL_ATMENS_ANALYSIS_LETKF
Expand Down
3 changes: 3 additions & 0 deletions test/atm/global-workflow/jjob_ens_obs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ elif [[ $machine = 'ORION' || $machine = 'HERCULES' ]]; then
export UTILROOT=/work2/noaa/da/python/opt/intel-2022.1.2/prod_util/1.2.2
fi

# Set lobsdiag_forenkf=.true. to run letkf as stand-alone observer job
cp $EXPDIR/config.base_lobsdiag_forenkf_true $EXPDIR/config.base

# Execute j-job
if [[ $machine = 'HERA' || $machine = 'ORION' || $machine = 'HERCULES' ]]; then
sbatch --nodes=1 --ntasks=36 --account=$ACCOUNT --qos=debug --time=00:30:00 --export=ALL --wait --output=atmensanlobs-%j.out ${HOMEgfs}/jobs/JGLOBAL_ATMENS_ANALYSIS_OBS
Expand Down
3 changes: 3 additions & 0 deletions test/atm/global-workflow/jjob_ens_sol.sh
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ elif [[ $machine = 'ORION' || $machine = 'HERCULES' ]]; then
export UTILROOT=/work2/noaa/da/python/opt/intel-2022.1.2/prod_util/1.2.2
fi

# Set lobsdiag_forenkf=.true. to run letkf as stand-alone solver job
cp $EXPDIR/config.base_lobsdiag_forenkf_true $EXPDIR/config.base

# Execute j-job
if [[ $machine = 'HERA' || $machine = 'ORION' || $machine = 'HERCULES' ]]; then
sbatch --nodes=1 --ntasks=36 --account=$ACCOUNT --qos=debug --time=00:30:00 --export=ALL --wait --output=atmensanlsol-%j.out ${HOMEgfs}/jobs/JGLOBAL_ATMENS_ANALYSIS_SOL
Expand Down
5 changes: 5 additions & 0 deletions test/atm/global-workflow/setup_workflow_exp.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,9 @@ echo " "
echo "$expdir/../config.yaml is"
cat $expdir/../config.yaml

# config.base contains with lobsdiag_forenkf=.true. Create config.base with lobsdiag_forenkf=.false. for jjob_ens_letkf.sh
EXPDIR=$expdir/$pslot
cp $EXPDIR/config.base $EXPDIR/config.base_lobsdiag_forenkf_true
sed 's/export lobsdiag_forenkf=".true."/export lobsdiag_forenkf=".false."/' $EXPDIR/config.base > $EXPDIR/config.base_lobsdiag_forenkf_false

exit $?
Loading

0 comments on commit 10edded

Please sign in to comment.