Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
filetype: fms restart
is restart: false
datapath: ./anl/mem%{member}%
filename_nonrestart: cubed_sphere_grid_sfcinc.jedi.nc
30 changes: 30 additions & 0 deletions parm/jcb-gdas/model/snow/snow_background_ensemble.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#datetime: '{{ snow_background_time_iso }}'
members from template:
template:
datetime: '{{ snow_background_time_iso }}'
filetype: fms restart
skip coupler file: true
# provider: ufs
state variables:
- totalSnowDepth
- vtype
- slmsk
- sheleg
- filtered_orography
- fraction_of_ice
- fraction_of_land
- stc
field io names:
totalSnowDepth: snodl
filtered_orography: orog_filt
fraction_of_ice: fice
fraction_of_land: land_frac
datapath: {{ snow_background_ensemble_path }}
filename is datetime templated: true
filename_sfcd: '{{ snow_background_time_fv3 }}.sfc_data.nc'
filename_cplr: '{{ snow_background_time_fv3 }}.coupler.res'
filename_orog: '{{ snow_orog_prefix }}_oro_data.nc'
max allowable geometry difference: 1e-4
pattern: "{{ snow_ensemble_pattern | default("%mem%", true) }}"
nmembers: {{ snow_number_ensemble_members }}
zero padding: 3
2 changes: 2 additions & 0 deletions parm/jcb-gdas/model/snow/snow_ensemble_increments_fms.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
prefix: snowinc
{% include 'snow_ensemble_output_fms_common.yaml.j2' %}
10 changes: 10 additions & 0 deletions parm/jcb-gdas/model/snow/snow_ensemble_output_fms_common.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
datapath: ./anl/mem%{member}%
filetype: fms restart
filename_sfcd: '{{ snow_background_time_fv3 }}.sfc_data.nc'
filename_cplr: '{{ snow_background_time_fv3 }}.coupler.res'
state variables:
- totalSnowDepth
- vtype
- slmsk
field io names:
totalSnowDepth: snodl
2 changes: 2 additions & 0 deletions parm/jcb-gdas/model/snow/snow_output_increment_fms.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
prefix: snowinc_ensmean
{% include 'snow_ensemble_output_fms_common.yaml.j2' %}
2 changes: 2 additions & 0 deletions parm/jcb-gdas/model/snow/snow_output_mean_prior_fms.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
prefix: snow_ensmean_prior
{% include 'snow_ensemble_output_fms_common.yaml.j2' %}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
prefix: snow_ensvariance_posterior
{% include 'snow_ensemble_output_fms_common.yaml.j2' %}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
prefix: snow_ensvariance_prior
{% include 'snow_ensemble_output_fms_common.yaml.j2' %}
2 changes: 2 additions & 0 deletions parm/jcb-gdas/model/snow/snow_posterior_output_fms.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
prefix: snow_ens_anl
{% include 'snow_ensemble_output_fms_common.yaml.j2' %}
13 changes: 13 additions & 0 deletions parm/jcb-gdas/observations/snow/ghcn_snow.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@
# -----------------------
obs space:
name: {{observation_from_jcb}}
{% if algorithm == "local_ensemble_da" %}
distribution:
name: {{distribution_type}}
halo size: "{{halo_size}}"
{% endif %}
obsdatain:
engine:
type: H5File
Expand All @@ -21,6 +26,14 @@
obs operator:
name: Identity
#
# localization TODO: generalize this condioned on da algo
# ------------
{% if algorithm == "local_ensemble_da" %}
obs localizations:
- localization method: {{localization_method}}
lengthscale: {{loc_length_scale}}
max nobs: {{max_nobs}}
{% endif %}

# Observation Filters (QC)
# ------------------------
Expand Down
36 changes: 23 additions & 13 deletions parm/snow/jcb-base.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,16 @@ app_path_observation_chronicle: "{{PARMgfs}}/gdas/jcb-gdas/observation_chronicle

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

final_increment_file: snow_final_increment_fms
output_mean_prior_file: snow_output_mean_prior_fms
posterior_output_file: snow_posterior_output_fms
output_ensemble_increments_file: snow_ensemble_increments_fms
output_increment_file: snow_output_increment_fms #snow_ensemblemean_increment_fms.yaml.j2
output_variance_prior_file: snow_output_variance_prior_fms
output_variance_posterior_file: snow_output_variance_posterior_fms
#jedi_increment_output: gaussian

# Assimilation window
# -------------------
Expand All @@ -30,7 +36,6 @@ snow_background_time_julian: "{{ bkg_time_julian }}"
snow_increment_time_iso: "{{ bkg_time_iso }}"
snow_increment_time_fv3: "{{ bkg_time_fv3 }}"


# Analysis standard things
# ------------------------
analysis_variables: [totalSnowDepth]
Expand Down Expand Up @@ -60,12 +65,11 @@ snow_orog_prefix: "{{ CASE }}.mx{{ OCNRES }}"

# Background
snow_background_path: {{snow_bkg_path}}
background_ensemble_path: ./ens/mem%mem%
#background_ensemble_path: ./ens/mem%mem% #TODO: this may not be ncessary
snow_background_ensemble_path: ./bkg/mem%mem%

# Background error
snow_bump_data_directory: "{{ DATA }}/berror"
number_ensemble_members: {{ NMEM_ENS | default(1, true) }}

snow_background_error_file: "{{BERROR_YAML}}"

# Forecasting
Expand Down Expand Up @@ -105,13 +109,14 @@ snow_obsbiascovout_prefix: "{{APREFIX}}"
snow_obsbiascovout_suffix: ".satbias_cov.nc"

# Ensemble mean things
snow_number_ensemble_members: {{NMEM_ENS}}
snow_number_ensemble_members: {{NMEM_ENS | default(1, true) }} #do we need the one below?
#number_ensemble_members: {{ NMEM_ENS | default(1, true) }}

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

increment_variables: [ua,va,DZ,delp,t,ps,sphum,ice_wat,liq_wat,o3mr]
increment_variables: [totalSnowDepth,vtype,slmsk] #[ua,va,DZ,delp,t,ps,sphum,ice_wat,liq_wat,o3mr]

# Veritcal localization for GETKF
vl_fraction_of_retained_variance: 0.750
Expand All @@ -123,12 +128,17 @@ 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_mean: true
driver_save_posterior_ensemble: true
driver_save_posterior_mean_increment: true
driver_save_posterior_ensemble_increments: true
driver_save_prior_variance: true
driver_save_posterior_variance: true
driver_save_prior_mean: true #(default false)
#driver_do_test_prints: false (default true)
#default driver_do_posterior_observer: true
#default driver_use_control_member: false

# Diagnostics
ensemble_increment_prefix: "./anl/mem%{member}%/snowinc."
#ensemble_increment_prefix: "./anl/mem%{member}%/snowinc."
#posterior_output_gaussian: "./mem%{member}%/snowanl."
29 changes: 29 additions & 0 deletions parm/snow/jcb-prototype_lgetkf.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Use observations for lgetkf
# ---------------------------
app_path_observations: {{PARMgfs}}/gdas/jcb-gdas/observations/snow
app_path_observation_chronicle: {{PARMgfs}}/gdas/jcb-gdas/observation_chronicle/snow/{{cycle}}
# Algorithm
# ---------
algorithm: local_ensemble_da

# Model things
# ------------
snow_background_ensemble_path: ./bkg/mem%mem%

# Observation things
# ------------------
{% include OBS_LIST_YAML %}

# Observation distribution and localization
# TODO:
distribution_type: "Halo"
localization_method: "Horizontal Box car"
halo_size: 250e3
loc_length_scale: 250e3
max_nobs: 50

# Testing things
# --------------
{% if DO_TEST_MODE %}
{% include LETKF_JEDI_TEST_YAML %}
{% endif %}
28 changes: 28 additions & 0 deletions parm/snow/jcb-prototype_lgetkf_observer.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Use observations for lgetkf
# ---------------------------
app_path_observations: {{PARMgfs}}/gdas/jcb-gdas/observations/snow
app_path_observation_chronicle: {{PARMgfs}}/gdas/jcb-gdas/observation_chronicle/snow/{{cycle}}

# Algorithm
# ---------
algorithm: local_ensemble_da_observer

# Model things
# ------------
atmosphere_background_ensemble_path: ./bkg/mem%mem%

# Naming conventions for observation files
atmosphere_obsdataout_prefix: diag_lobs_

# Distribution type
distribution_type: RoundRobin

# Observation things
# ------------------
{% include OBS_LIST_YAML %}

# Testing things
# --------------
{% if DO_TEST_MODE %}
{% include OBS_JEDI_TEST_YAML %}
{% endif %}
31 changes: 31 additions & 0 deletions parm/snow/jcb-prototype_lgetkf_solver.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Use observations for lgetkf
# ---------------------------
app_path_observations: {{PARMgfs}}/gdas/jcb-gdas/observations/snow
app_path_observation_chronicle: {{PARMgfs}}/gdas/jcb-gdas/observation_chronicle/snow/{{cycle}}

# Algorithm
# ---------
algorithm: local_ensemble_da_solver

# Model things
# ------------
atmosphere_background_ensemble_path: ./bkg/mem%mem%

# Naming conventions for observation files
snow_obsdatain_path: "{{DATA}}/diags"
snow_obsdatain_prefix: diag_lobs_
snow_obsdatain_suffix: "_{{ current_cycle | to_YMDH }}.nc"
snow_obsdataout_prefix: diag_solv_

# Distribution type
distribution_type: Halo

# Observation things
# ------------------
{% include OBS_LIST_YAML %}

# Testing things
# --------------
{% if DO_TEST_MODE %}
{% include SOL_JEDI_TEST_YAML %}
{% endif %}
16 changes: 16 additions & 0 deletions parm/snow/letkf_apply_incr_nml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
&noahmp_snow
date_str = "{{ current_cycle | to_YMD }}",
hour_str = "{{ current_cycle | strftime('%H') }}",
res = {{ CASE_ENS[1:] }},
frac_grid = .true.,
rst_path = "{{ DATA }}/anl",
inc_path = "{{ DATA }}/anl",
orog_path = "{{ HOMEgfs }}/fix/orog/{{ CASE_ENS }}",
otype = "{{ CASE_ENS }}.mx{{ OCNRES }}_oro_data",
ntiles={{ ntiles }},
ens_size={{ ens_size }},
noincr_threshold={{ noincr_threshold }},
print_summary=.true.,
print_debug={{ print_debug }} ,
truncate={{ truncate_incr }}
/
21 changes: 21 additions & 0 deletions parm/snow/snow_ens_obs_dist_localizations.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
obs_distribution_localizations:
obs_distribution:
name: {{ distribution_type }}
halo size: 250e3
obs_localizations:
- localization method: Horizontal Box car
lengthscale: 250e3
max nobs: 50

#override_obs_distribution_localizations:
# override: false
# ims_snow:
# obs_distribution:
# name: {{ distribution_type }}
# halo size: 250e3
# obs_localizations:
# - localization method: Horizontal SOAR
# lengthscale: 250e3
# soar horizontal decay: 0.000021
##assuming one obs every 40 Km
# max nobs: 6
Loading