Skip to content

Commit

Permalink
Merge branch 'develop' into feature/cubed_sphere_bkg
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidNew-NOAA committed Jun 28, 2024
2 parents 3dbc743 + 5ae609e commit a123db9
Show file tree
Hide file tree
Showing 20 changed files with 204 additions and 50 deletions.
6 changes: 3 additions & 3 deletions modulefiles/GDAS/hera.intel.lua
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,9 @@ local mpinproc = '-n'
setenv('MPIEXEC_EXEC', mpiexec)
setenv('MPIEXEC_NPROC', mpinproc)

setenv("CRTM_FIX","/scratch1/NCEPDEV/da/Cory.R.Martin/GDASApp/fix/crtm/2.4.0")
setenv("GDASAPP_TESTDATA","/scratch1/NCEPDEV/da/Cory.R.Martin/CI/GDASApp/data")
setenv("GDASAPP_UNIT_TEST_DATA_PATH", "/scratch1/NCEPDEV/da/Cory.R.Martin/CI/GDASApp/data/test")
setenv("CRTM_FIX","/scratch1/NCEPDEV/da/role.jedipara/GDASApp/fix/crtm/2.4.0")
setenv("GDASAPP_TESTDATA","/scratch1/NCEPDEV/da/role.jedipara/GDASApp/testdata")
setenv("GDASAPP_UNIT_TEST_DATA_PATH", "/scratch1/NCEPDEV/da/role.jedipara/GDASApp/unittestdata")
--prepend_path("PATH","/scratch2/NCEPDEV/nwprod/hpc-stack/libs/hpc-stack/intel-18.0.5.274/prod_util/1.2.2/bin")

whatis("Name: ".. pkgName)
Expand Down
6 changes: 3 additions & 3 deletions modulefiles/GDAS/hercules.intel.lua
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,9 @@ local mpinproc = '-n'
setenv('MPIEXEC_EXEC', mpiexec)
setenv('MPIEXEC_NPROC', mpinproc)

setenv("CRTM_FIX","/work2/noaa/da/cmartin/GDASApp/fix/crtm/2.4.0")
setenv("GDASAPP_TESTDATA","/work2/noaa/da/cmartin/CI/GDASApp/data")
setenv("GDASAPP_UNIT_TEST_DATA_PATH", "/work2/noaa/da/cmartin/CI/GDASApp/data/test/")
setenv("CRTM_FIX","/work2/noaa/da/role-da/GDASApp/fix/crtm/2.4.0")
setenv("GDASAPP_TESTDATA","/work2/noaa/da/role-da/GDASApp/testdata")
setenv("GDASAPP_UNIT_TEST_DATA_PATH", "/work2/noaa/da/role-da/GDASApp/unittestdata")
prepend_path("PATH","/apps/contrib/NCEP/libs/hpc-stack/intel-2018.4/prod_util/1.2.2/bin")

execute{cmd="ulimit -s unlimited",modeA={"load"}}
Expand Down
6 changes: 3 additions & 3 deletions modulefiles/GDAS/orion.intel.lua
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,9 @@ local mpinproc = '-n'
setenv('MPIEXEC_EXEC', mpiexec)
setenv('MPIEXEC_NPROC', mpinproc)

setenv("CRTM_FIX","/work2/noaa/da/cmartin/GDASApp/fix/crtm/2.4.0")
setenv("GDASAPP_TESTDATA","/work2/noaa/da/cmartin/CI/GDASApp/data")
setenv("GDASAPP_UNIT_TEST_DATA_PATH", "/work2/noaa/da/cmartin/CI/GDASApp/data/test/")
setenv("CRTM_FIX","/work2/noaa/da/role-da/GDASApp/fix/crtm/2.4.0")
setenv("GDASAPP_TESTDATA","/work2/noaa/da/role-da/GDASApp/testdata")
setenv("GDASAPP_UNIT_TEST_DATA_PATH", "/work2/noaa/da/role-da/GDASApp/unittestdata")
prepend_path("PATH","/apps/contrib/NCEP/libs/hpc-stack/intel-2018.4/prod_util/1.2.2/bin")

execute{cmd="ulimit -s unlimited",modeA={"load"}}
Expand Down
4 changes: 2 additions & 2 deletions modulefiles/GDAS/wcoss2.intel.lua
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ setenv('MPIEXEC_EXEC', mpiexec)
setenv('MPIEXEC_NPROC', mpinproc)

setenv("CRTM_FIX","/lfs/h2/emc/da/noscrub/emc.da/GDASApp/fix/crtm/2.4.0")
setenv("GDASAPP_TESTDATA","/lfs/h2/emc/da/noscrub/emc.da/GDASApp/data")
setenv("GDASAPP_UNIT_TEST_DATA_PATH", "/lfs/h2/emc/da/noscrub/emc.da/GDASApp/data/test")
setenv("GDASAPP_TESTDATA","/lfs/h2/emc/da/noscrub/emc.da/GDASApp/testdata")
setenv("GDASAPP_UNIT_TEST_DATA_PATH", "/lfs/h2/emc/da/noscrub/emc.da/GDASApp/unittestdata")

whatis("Name: ".. pkgName)
whatis("Version: ".. pkgVersion)
Expand Down
10 changes: 5 additions & 5 deletions parm/aero/berror/aero_diffusionparm.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -35,16 +35,16 @@ background error:
saber block name: diffusion
calibration:
normalization:
iterations: {{ diff_iter }}
iterations: {{ aero_diffusion_iter }}
groups:
- horizontal:
fixed value: {{ horiz_len }}
fixed value: {{ aero_diffusion_horiz_len }}
write:
filepath: "{{ DATA }}/berror/diffusion_hz"
filepath: "{{ DATA }}/diffusion/diffusion_hz"
- vertical:
levels: {{ npz_ges }}
fixed value: {{ fixed_val }}
fixed value: {{ aero_diffusion_fixed_val }}
as gaussian: true
write:
filepath: "{{ DATA }}/berror/diffusion_hz"
filepath: "{{ DATA }}/diffusion/diffusion_vt"

137 changes: 137 additions & 0 deletions parm/snow/jcb-base.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
# Search path for model and obs for JCB
# -------------------------------------
algorithm_path: "{{PARMgfs}}/gdas/jcb-algorithms"
app_path_algorithm: "{{PARMgfs}}/gdas/jcb-gdas/algorithm/snow"
app_path_model: "{{PARMgfs}}/gdas/jcb-gdas/model/snow"
app_path_observations: "{{PARMgfs}}/gdas/jcb-gdas/observations/atmosphere"
app_path_observation_chronicle: "{{PARMgfs}}/gdas/jcb-gdas/observation_chronicle/atmosphere"


# Places where we deviate from the generic file name of a yaml
# ------------------------------------------------------------
#final_increment_file: final_increment_gaussian
final_increment_file: final_increment_cubed_sphere
output_ensemble_increments_file: output_ensemble_increments_gaussian
model_file: model_pseudo
initial_condition_file: background # Initial conditions for 4D apps is background


# Assimilation window
# -------------------
window_begin: "{{ SNOW_WINDOW_BEGIN | to_isotime }}"
window_length: "{{ SNOW_WINDOW_LENGTH }}"
bound_to_include: begin

# Default background time is for 3D applications
{% if DOIAU %}
{% set bkg_time_iso = SNOW_WINDOW_BEGIN | to_isotime %}
{% set bkg_time_fv3 = SNOW_WINDOW_BEGIN | to_fv3time %}
{% else %}
{% set bkg_time_iso = current_cycle | to_isotime %}
{% set bkg_time_fv3 = current_cycle | to_fv3time %}
{% endif %}
snow_background_time_iso: "{{ bkg_time_iso }}"
snow_increment_time_iso: "{{ bkg_time_iso }}"
snow_increment_time_fv3: "{{ bkg_time_fv3 }}"


# Analysis standard things
# ------------------------
analysis_variables: [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr]
minimizer: DRPCG
final_diagnostics_departures: anlmob

cost_type: 3D-Var
number_of_outer_loops: 2

# Model things
# ------------
# Geometry
layout_x: {{ layout_x | default(1, true) }}
layout_y: {{ layout_y | default(1, true) }}
npx_ges: {{ npx_ges | default(49, true) }}
npy_ges: {{ npy_ges | default(49, true) }}
npz_ges: {{ npz_ges | default(127, true) }}
npx_anl: {{ npx_anl | default(49, true) }}
npy_anl: {{ npy_anl | default(49, true) }}
npz_anl: {{ npz_anl | default(127, true) }}

fv3jedi_files_path: ./fv3jedi # Ideally this would be {{DATA}}/fv3jedi but FMS

# Background
background_path: ./bkg
background_ensemble_path: ./ens/mem%mem%

# Background error
bump_data_directory: "{{ DATA }}/berror"
gsibec_path: "{{ DATA }}/berror"
number_ensemble_members: {{ NMEM_ENS | default(1, true) }}
layout_gsib_x: {{ layout_gsib_x | default(1, true) }}
layout_gsib_y: {{ layout_gsib_y | default(1, true) }}

background_error_file: "{{BERROR_YAML}}"

# Forecasting
forecast_length: "{{ ATM_WINDOW_LENGTH }}"
forecast_timestep: "{{ BKG_TSTEP }}"

# Write final increment on Guassian grid in variational
final_increment_prefix: "./anl/atminc."


# Observation things
# ------------------
observations: all_observations

crtm_coefficient_path: "{{ DATA }}/crtm/"

# Naming conventions for observational files
atm_obsdatain_path: "{{atm_obsdatain_path}}"
atm_obsdatain_prefix: "{{OPREFIX}}"
atm_obsdatain_suffix: ".tm00.nc"

atm_obsdataout_path: "{{atm_obsdataout_path}}"
atm_obsdataout_prefix: diag_
atm_obsdataout_suffix: "_{{ current_cycle | to_YMDH }}.nc"

# Naming conventions for bias correction files
atm_obsbiasin_path: "{{DATA}}/obs/"
atm_obsbiasin_prefix: "{{GPREFIX}}"
atm_obsbiasin_suffix: ".satbias.nc"
atm_obstlapsein_prefix: "{{GPREFIX}}"
atm_obstlapsein_suffix: ".tlapse.txt"
atm_obsbiascovin_prefix: "{{GPREFIX}}"
atm_obsbiascovin_suffix: ".satbias_cov.nc"

atm_obsbiasout_path: "{{DATA}}/bc/"
atm_obsbiasout_prefix: "{{APREFIX}}"
atm_obsbiasout_suffix: ".satbias.nc"
atm_obsbiascovout_prefix: "{{APREFIX}}"
atm_obsbiascovout_suffix: ".satbias_cov.nc"


# Local Ensemble DA (LETKF)
# -------------------------
local_ensemble_da_solver: GETKF

increment_variables: [ua,va,DZ,delp,t,ps,sphum,ice_wat,liq_wat,o3mr]

# Veritcal localization for GETKF
vl_fraction_of_retained_variance: 0.750
vl_lengthscale: 2.1
vl_lengthscale_units: logp
inflation_rtps: 0.85
inflation_rtpp: 0.0
inflation_mult: 1.0

# Driver
driver_update_obs_config_with_geometry_info: true
driver_save_posterior_mean: false
driver_save_posterior_ensemble: false
driver_save_prior_mean: false
driver_save_posterior_mean_increment: false
driver_save_posterior_ensemble_increments: true

# Diagnostics
ensemble_increment_prefix: "./anl/mem%{member}%/atminc."
#posterior_output_gaussian: "./mem%{member}%/atmanl."
7 changes: 7 additions & 0 deletions parm/snow/jcb-fv3jedi_land_ensrecenter.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Algorithm
# ---------
algorithm: fv3jedi_land_ensrecenter

# Observation things
# ------------------
observations: []
10 changes: 10 additions & 0 deletions parm/snow/letkfoi/ens_apply_incr_nml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
&noahmp_snow
date_str = "{{ current_cycle | to_YMD }}",
hour_str = "{{ current_cycle | strftime('%H') }}",
res = {{ CASE_ENS[1:] }},
frac_grid = .true.,
rst_path = "{{ DATAROOT }}/anl/mem{{ MYMEM }}",
inc_path = "{{ DATAROOT }}/inc/ensmean",
orog_path = "{{ HOMEgfs }}/fix/orog/{{ CASE_ENS }}",
otype = "{{ CASE_ENS }}.mx{{ OCNRES }}_oro_data"
/
12 changes: 6 additions & 6 deletions parm/soca/letkf/letkf_stage.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,14 @@ copy:
# This must be done in a namespace to overcome jinja scoping
# Variables set inside of a for loop are lost at the end of the loop
# unless they are part of a namespace
{% set com_prev_ocn = namespace(COM_OCEAN_HISTORY_MEM = COM_OCEAN_HISTORY_TMPL) %}
{% set com_prev_ice = namespace(COM_ICE_HISTORY_MEM = COM_ICE_HISTORY_TMPL) %}
{% set com_prev_ocn = namespace(COMIN_OCEAN_HISTORY_MEM = COM_OCEAN_HISTORY_TMPL) %}
{% set com_prev_ice = namespace(COMIN_ICE_HISTORY_MEM = COM_ICE_HISTORY_TMPL) %}
{% for key in tmpl_dict.keys() %}
{% set search_term = '${' + key + '}' %}
{% set replace_term = tmpl_dict[key] %}
{% set com_prev_ocn.COM_OCEAN_HISTORY_MEM = com_prev_ocn.COM_OCEAN_HISTORY_MEM.replace(search_term, replace_term) %}
{% set com_prev_ice.COM_ICE_HISTORY_MEM = com_prev_ice.COM_ICE_HISTORY_MEM.replace(search_term, replace_term) %}
{% set com_prev_ocn.COMIN_OCEAN_HISTORY_MEM = com_prev_ocn.COMIN_OCEAN_HISTORY_MEM.replace(search_term, replace_term) %}
{% set com_prev_ice.COMIN_ICE_HISTORY_MEM = com_prev_ice.COMIN_ICE_HISTORY_MEM.replace(search_term, replace_term) %}
{% endfor %}
- ["{{ com_prev_ocn.COM_OCEAN_HISTORY_MEM }}/{{ GDUMP_ENS }}.ocean.t{{ gcyc }}z.inst.f006.nc", "{{ DATA }}/ens/mem{{ '%03d' % mem }}/{{ GDUMP_ENS }}.ocean.t{{ gcyc }}z.inst.f006.nc"]
- ["{{ com_prev_ice.COM_ICE_HISTORY_MEM }}/{{ GDUMP_ENS }}.ice.t{{ gcyc }}z.inst.f006.nc", "{{ DATA }}/ens/mem{{ '%03d' % mem }}/{{ GDUMP_ENS }}.ice.t{{ gcyc }}z.inst.f006.nc"]
- ["{{ com_prev_ocn.COMIN_OCEAN_HISTORY_MEM }}/{{ GDUMP_ENS }}.ocean.t{{ gcyc }}z.inst.f006.nc", "{{ DATA }}/ens/mem{{ '%03d' % mem }}/{{ GDUMP_ENS }}.ocean.t{{ gcyc }}z.inst.f006.nc"]
- ["{{ com_prev_ice.COMIN_ICE_HISTORY_MEM }}/{{ GDUMP_ENS }}.ice.t{{ gcyc }}z.inst.f006.nc", "{{ DATA }}/ens/mem{{ '%03d' % mem }}/{{ GDUMP_ENS }}.ice.t{{ gcyc }}z.inst.f006.nc"]
{% endfor %}
2 changes: 1 addition & 1 deletion scripts/exgdas_global_marine_analysis_prep.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ def parse_obs_list_file():
ensroot = os.getenv('COM_OCEAN_HISTORY_PREV')
ensdir = os.path.join(os.getenv('COM_OCEAN_HISTORY_PREV'), '..', '..', '..', '..', '..',
f'enkf{RUN}.{PDY}', f'{gcyc}', f'mem{str(mem).zfill(3)}',
'model_data', domain, 'history')
'model', domain, 'history')
ensdir_real = os.path.realpath(ensdir)
f009 = f'enkfgdas.{domain}.t{gcyc}z.inst.f009.nc'

Expand Down
2 changes: 1 addition & 1 deletion test/aero/global-workflow/jjob_var_init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ done


# Copy model bacgkround on tiles
dpath=gdas.$gPDY/$gcyc/model_data/atmos
dpath=gdas.$gPDY/$gcyc/model/atmos
COM_ATMOS_RESTART_PREV_DIRNAME=$(dirname $COM_ATMOS_RESTART_PREV)
if [ -d $COM_ATMOS_RESTART_PREV_DIRNAME/restart ]; then
rm -rf $COM_ATMOS_RESTART_PREV_DIRNAME/restart
Expand Down
4 changes: 2 additions & 2 deletions test/atm/global-workflow/jjob_ens_init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -95,13 +95,13 @@ for imem in $(seq 1 $NMEM_ENS); do
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_data/atmos
source=$GDASAPP_TESTDATA/lowres/$dpath/$memchar/model/atmos
target=$COM_ATMOS_RESTART_PREV_DIRNAME_ENS
mkdir -p $target
rm -rf $target/restart
ln -fs $source/restart $target/

source=$GDASAPP_TESTDATA/lowres/$dpath/$memchar/model_data/atmos/history
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
Expand Down
8 changes: 4 additions & 4 deletions test/atm/global-workflow/jjob_var_init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -88,15 +88,15 @@ for file in $flist; do
done

# Link atmospheric background on gaussian grid
dpath=gdas.$gPDY/$gcyc/model_data/atmos/history
dpath=gdas.$gPDY/$gcyc/model/atmos/history
mkdir -p $COM_ATMOS_HISTORY_PREV
flist="atmf006.nc"
for file in $flist; do
ln -fs $GDASAPP_TESTDATA/lowres/$dpath/${gprefix}.${file} $COM_ATMOS_HISTORY_PREV/${gprefix}.${file}
done

# Link atmospheric bacgkround on tiles
dpath=gdas.$gPDY/$gcyc/model_data/atmos
dpath=gdas.$gPDY/$gcyc/model/atmos
COM_ATMOS_RESTART_PREV_DIRNAME=$(dirname $COM_ATMOS_RESTART_PREV)
mkdir -p $COM_ATMOS_RESTART_PREV_DIRNAME
flist="restart"
Expand All @@ -115,13 +115,13 @@ for imem in $(seq 1 $NMEM_ENS); do
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_data/atmos
source=$GDASAPP_TESTDATA/lowres/$dpath/$memchar/model/atmos
target=$COM_ATMOS_RESTART_PREV_DIRNAME_ENS
mkdir -p $target
rm -rf $target/restart
ln -fs $source/restart $target/

source=$GDASAPP_TESTDATA/lowres/$dpath/$memchar/model_data/atmos/history
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
Expand Down
2 changes: 1 addition & 1 deletion test/snow/apply_jedi_incr.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ GHR=$(date +%H -d "$YY$MM$DD $HH - 6 hours")

EXECDIR=$project_source_dir/build/bin
WORKDIR=$project_binary_dir/test/snow/apply_jedi_incr
RSTDIR=$GDASAPP_TESTDATA/lowres/gdas.$GYMD/$GHR/model_data/atmos/restart
RSTDIR=$GDASAPP_TESTDATA/lowres/gdas.$GYMD/$GHR/model/atmos/restart
INCDIR=$GDASAPP_TESTDATA/snow/C${RES}

export TPATH="$GDASAPP_TESTDATA/snow/C${RES}"
Expand Down
2 changes: 1 addition & 1 deletion test/snow/create_bkg_ens.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ GYMD=$(date +%Y%m%d -d "$YY$MM$DD $HH - 6 hours")
GHR=$(date +%H -d "$YY$MM$DD $HH - 6 hours")

WORKDIR=$project_binary_dir/test/snow/create_jedi_ens
RSTDIR=$GDASAPP_TESTDATA/lowres/gdas.$GYMD/$GHR/model_data/atmos/restart
RSTDIR=$GDASAPP_TESTDATA/lowres/gdas.$GYMD/$GHR/model/atmos/restart
GFSv17=NO
DAtype=letkfoi_snow

Expand Down
2 changes: 1 addition & 1 deletion test/snow/letkfoi_snowda.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ GHR=$(date +%H -d "$YY$MM$DD $HH - 6 hours")

EXECDIR=$project_source_dir/build/bin
WORKDIR=$project_binary_dir/test/snow/letkfoi_snowda
RSTDIR=$GDASAPP_TESTDATA/lowres/gdas.$GYMD/$GHR/model_data/atmos/restart
RSTDIR=$GDASAPP_TESTDATA/lowres/gdas.$GYMD/$GHR/model/atmos/restart
export OBSDIR=$GDASAPP_TESTDATA/snow

GFSv17=${GFSv17:-"YES"}
Expand Down
2 changes: 1 addition & 1 deletion test/snow/test_imsproc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ DOY=$(date +%j -d "$YY$MM$DD + 1 day")

EXECDIR=$project_source_dir/build/bin
WORKDIR=$project_binary_dir/test/snow/ims_proc
RSTDIR=$GDASAPP_TESTDATA/lowres/gdas.$GYMD/$GHR/model_data/atmos/restart
RSTDIR=$GDASAPP_TESTDATA/lowres/gdas.$GYMD/$GHR/model/atmos/restart

export OBSDIR=$GDASAPP_TESTDATA/snow/snow_ice_cover
export TSTUB="oro_C${RES}.mx100"
Expand Down
Loading

0 comments on commit a123db9

Please sign in to comment.