Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
79375de
step 1. add A
metdyn May 27, 2026
278409b
merged M files
metdyn May 27, 2026
e87abbb
+ self.jedi_rendering.add_key('saber_central_block', self.conf…
metdyn May 28, 2026
3918af3
update new
metdyn May 29, 2026
d83347c
update eda fn from variational ymal input
metdyn May 30, 2026
8372556
add suite_name to utilities/render_jedi_interface_files.py
metdyn Jun 1, 2026
46846b8
swell/suites/eda/flow.cylc
metdyn Jun 2, 2026
ff980e5
Merge branch 'develop' into feature/ygyu/temp_A_mix
metdyn Jun 2, 2026
f3b6fb6
Add:
metdyn Jun 3, 2026
0972762
add `ensmeanvariance_spec` to question defaults
metdyn Jun 4, 2026
02eb8bd
I find there are problems with using
metdyn Jun 8, 2026
359b48b
wip: eorr in diffstates
metdyn Jun 8, 2026
98f6ee6
For configuration/jedi/interfaces/geos_atmosphere/model/two_states.py
metdyn Jun 9, 2026
87a3ca3
checked swell create, filter, eda imem, mean_variance, diffstate
metdyn Jun 9, 2026
9e08792
Merge branch 'develop' into feature/ygyu/temp_A_mix
metdyn Jun 9, 2026
d92c5e5
Add ebkg_time_offset to get ensemble geos experiment
metdyn Jun 9, 2026
aeeb8dd
adjust 3dvar config, e.g., npx, number_of_iteration, etc
metdyn Jun 9, 2026
90726ee
move obs and fv3-jedi files into analysis/mem00x and change correspon…
metdyn Jun 10, 2026
1fa54c8
eda: iter=100; norm_reduction=1.e-8
metdyn Jun 10, 2026
465190f
Add background_error_eda_gsiB.py
metdyn Jun 10, 2026
abe060a
add tasks/clean_eda.py to eda/flow.cylc
metdyn Jun 10, 2026
b1a6075
comment out EvaJediLog and EvaObservations from eda/flow.cylc
metdyn Jun 11, 2026
8a0862c
Merge branch 'develop' into feature/ygyu/PR_EDA
metdyn Jun 11, 2026
1c01bc7
fix issues from pycodestyle_run
metdyn Jun 11, 2026
26337c6
fix some ctest errors
metdyn Jun 11, 2026
9f23c08
1. 'local_background_time_iso'
metdyn Jun 12, 2026
04e5f71
.
metdyn Jun 12, 2026
77f1f67
Merge branch 'feature/ygyu/fix_lensda_background_time' into feature/y…
metdyn Jun 12, 2026
ee7f598
.
metdyn Jun 12, 2026
35e846c
Due to forthcoming implementation changes in swell localensembleda,
metdyn Jun 12, 2026
7cf8272
deleted replica codes and commented lines; fix typos
metdyn Jun 17, 2026
18ef3ad
Merge branch 'develop' into feature/ygyu/PR_EDA
metdyn Jun 25, 2026
e885d36
update with additional_param
metdyn Jun 25, 2026
542bb0a
step 1
metdyn Jul 7, 2026
79ad11d
s1
metdyn Jul 7, 2026
6664a92
- where did model dependent task disappear in for loop
metdyn Jul 8, 2026
c1846ee
fixed the problem for parsing in flow.cylc
metdyn Jul 8, 2026
625232d
Add models[model_component]['ensemble_num_chunks'] to dict
metdyn Jul 8, 2026
48de41f
add ensemble_num_chunks to render_dictionary
metdyn Jul 9, 2026
84f9cbd
add interfaces/geos_atmosphere/model/eda_analysis_control_pert.py
metdyn Jul 9, 2026
c5b0277
link or copy ebkg_chunk [analysis_chunk] / chunkx /memy / xb, yo
metdyn Jul 10, 2026
a84926d
.
metdyn Jul 13, 2026
067dba5
Only related to ensmeanvariance_spec / diffstates_spec
metdyn Jul 14, 2026
c244f4e
Merge branch 'develop' into feature/ygyu/PR_EDA
metdyn Jul 14, 2026
39580fb
- rename suite/eda to suite/eda_atmos
metdyn Jul 15, 2026
7d36f4b
- add to minizer DRPLanczos
metdyn Jul 15, 2026
310c355
- add eda_atmos = QuestionList to suite_config.py
metdyn Jul 15, 2026
8a71c32
add back `air_pressure_levels` to analysis variables in eda_atmos
metdyn Jul 16, 2026
ded0a29
many modifications/corrections from reviewers' suggestions
metdyn Jul 16, 2026
8a90027
Merge branch 'feature/ygyu/PR_EDA' of github.com:GEOS-ESM/swell into …
metdyn Jul 16, 2026
06b7a04
small corrections to codes
metdyn Jul 16, 2026
20e0c79
Add obs_pert_amplitude to config
metdyn Jul 17, 2026
7e1b083
bypass the problem in flow.cylc which reads
metdyn Jul 17, 2026
166aabc
fix pycodestyle issues
metdyn Jul 17, 2026
9a191db
Merge branch 'develop' into feature/ygyu/PR_parse_model_dep_to_suite_str
metdyn Jul 18, 2026
7179854
Merge branch 'feature/ygyu/PR_parse_model_dep_to_suite_str' into feat…
metdyn Jul 20, 2026
9b8b725
Merge branch 'feature/ygyu/PR_EDA' into feature/ygyu/superset_eda_Lan…
metdyn Jul 20, 2026
7e81211
Merge branch 'develop' into feature/ygyu/superset_eda_Lanczos
metdyn Jul 20, 2026
5ee5427
many debug info for prepare_config_and_suite
metdyn Jul 20, 2026
f0c78ee
.
metdyn Jul 20, 2026
527b3fd
- ichunk=1 for ShuffleAnaMembers
metdyn Jul 21, 2026
5485008
add eva dir to eda_controlpert_atmos
metdyn Jul 21, 2026
f76658b
Merge branch 'develop' into feature/ygyu/PR_EDA
metdyn Jul 22, 2026
abae041
fix eda error on suite_name in eva_increment
metdyn Jul 22, 2026
8ea73bc
.
metdyn Jul 22, 2026
93d9f4a
set slurm directives
metdyn Jul 22, 2026
d82a798
link multiple ebkg files
metdyn Jul 23, 2026
d071859
Handle eda control pert case in clean_eda.py
metdyn Jul 23, 2026
a8b6673
.
metdyn Jul 23, 2026
c0c927b
add EDA_start, EDA_end as sync point to workflow
metdyn Jul 23, 2026
da9dbd0
Merge branch 'develop' into feature/ygyu/superset_eda_Lanczos
metdyn Jul 23, 2026
58edb9a
Merge branch 'feature/ygyu/PR_EDA' into feature/ygyu/superset_eda_Lan…
metdyn Jul 23, 2026
2154cb9
change back deployment to develop
metdyn Jul 23, 2026
216b3c4
add comment to clean_eda
metdyn Jul 23, 2026
ed675e0
increase node to 4 for control pert
metdyn Jul 23, 2026
ba0b9eb
set controlpert to nchunk=16 and with sonde only
metdyn Jul 30, 2026
eee7851
Merge branch 'develop' into feature/ygyu/PR_EDA
metdyn Aug 4, 2026
6bddb75
add eda_atmos_tier1_fast to qd
metdyn Aug 4, 2026
257a804
fix errors found by pycodestyle
metdyn Aug 4, 2026
93b9336
Merge branch 'feature/ygyu/PR_EDA' into feature/ygyu/superset_eda_Lan…
metdyn Aug 4, 2026
6566cca
proof concept: add eda_controlpert_atmos_tier1_fast
metdyn Aug 5, 2026
1d0c259
delete obsdataout
metdyn Aug 5, 2026
f2bb2d4
Merge branch 'feature/ygyu/PR_EDA' into feature/ygyu/superset_eda_Lan…
metdyn Aug 5, 2026
d7f2e32
fix warnings from python code style
metdyn Aug 5, 2026
56a4703
fix warnings from code tests
metdyn Aug 5, 2026
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
Expand Up @@ -11,3 +11,7 @@ executables:
localensembleda: fv3jedi_letkf.x
ensmeanvariance: fv3jedi_ensmeanvariance.x
obsfilters: test_ObsFilters.x
eda3D: fv3jedi_var.x
eda4D: fv3jedi_var.x
edaControlPert: fv3jedi_controlpert.x
diffstates: fv3jedi_diffstates.x
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# (C) Copyright 2021- United States Government as represented by the Administrator of the
# National Aeronautics and Space Administration. All Rights Reserved.
#
# 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.

# --------------------------------------------------------------------------------------------------

from collections.abc import Mapping
from swell.configuration.jedi.interfaces.geos_atmosphere.model.shared import \
field_io_names

# --------------------------------------------------------------------------------------------------

state_variables = [
'eastward_wind',
'northward_wind',
'air_temperature',
'air_pressure_at_surface',
'air_pressure_levels',
'water_vapor_mixing_ratio_wrt_moist_air',
'cloud_liquid_ice',
'cloud_liquid_water',
'rain_water',
'snow_water',
'mole_fraction_of_ozone_in_air',
'geopotential_height_times_gravity_at_surface',
'initial_mass_fraction_of_large_scale_cloud_condensate',
'initial_mass_fraction_of_convective_cloud_condensate',
'convective_cloud_area_fraction',
'fraction_of_ocean',
'fraction_of_land',
'isotropic_variance_of_filtered_topography',
'surface_velocity_scale',
'surface_buoyancy_scale',
'planetary_boundary_layer_height',
'surface_exchange_coefficient_for_momentum',
'surface_exchange_coefficient_for_heat',
'surface_exchange_coefficient_for_moisture',
'KCBL_before_moist',
'surface_temp_before_moist',
'lower_index_where_Kh_greater_than_2',
'upper_index_where_Kh_greater_than_2',
'fraction_of_lake',
'fraction_of_ice',
'vtype',
'stype',
'vfrac',
'sheleg',
'skin_temperature_at_surface',
'soilt',
'soilm',
'eastward_wind_at_surface',
'northward_wind_at_surface',
# 'sea_surface_temperature',
# 'mole_fraction_of_carbon_dioxide_in_air',
]

# --------------------------------------------------------------------------------------------------


def background_eda(template_dict: Mapping) -> Mapping:
horizontal_resolution = template_dict['horizontal_resolution']
imem = template_dict['ensemble_imember']

background = {
'datetime': template_dict['local_background_time_iso'],
'filetype': 'cube sphere history',
'provider': 'geos',
'compute edge pressure from surface pressure': True,
'max allowable geometry difference': 1e-3,
'datapath': template_dict['cycle_dir'],
'filenames': [
f'./ebkg/mem{imem:03d}/geos.mem{imem:03d}.%yyyy%mm%dd_%hh%MM%ssz.nc4',
f'./fv3-jedi/bkg/geos.crtmsrf.{horizontal_resolution}.nc4'
],
'state variables': state_variables,
'field io names': field_io_names,
}

return background

# --------------------------------------------------------------------------------------------------
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# (C) Copyright 2021- United States Government as represented by the Administrator of the
# National Aeronautics and Space Administration. All Rights Reserved.
#
# 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.

# --------------------------------------------------------------------------------------------------

from collections.abc import Mapping
from swell.configuration.jedi.interfaces.geos_atmosphere.model.shared import \
field_io_names

# --------------------------------------------------------------------------------------------------

state_variables = [
'eastward_wind',
'northward_wind',
'air_temperature',
'air_pressure_at_surface',
'air_pressure_levels',
'water_vapor_mixing_ratio_wrt_moist_air',
'cloud_liquid_ice',
'cloud_liquid_water',
'rain_water',
'snow_water',
'mole_fraction_of_ozone_in_air',
'geopotential_height_times_gravity_at_surface',
'initial_mass_fraction_of_large_scale_cloud_condensate',
'initial_mass_fraction_of_convective_cloud_condensate',
'convective_cloud_area_fraction',
'fraction_of_ocean',
'fraction_of_land',
'isotropic_variance_of_filtered_topography',
'surface_velocity_scale',
'surface_buoyancy_scale',
'planetary_boundary_layer_height',
'surface_exchange_coefficient_for_momentum',
'surface_exchange_coefficient_for_heat',
'surface_exchange_coefficient_for_moisture',
'KCBL_before_moist',
'surface_temp_before_moist',
'lower_index_where_Kh_greater_than_2',
'upper_index_where_Kh_greater_than_2',
'fraction_of_lake',
'fraction_of_ice',
'vtype',
'stype',
'vfrac',
'sheleg',
'skin_temperature_at_surface',
'soilt',
'soilm',
'eastward_wind_at_surface',
'northward_wind_at_surface',
# 'sea_surface_temperature',
# 'mole_fraction_of_carbon_dioxide_in_air',
]

# --------------------------------------------------------------------------------------------------


def background_eda_control_pert(template_dict: Mapping) -> Mapping:
horizontal_resolution = template_dict['horizontal_resolution']
ichunk = template_dict['ensemble_ichunk']
cycle_dir = template_dict['cycle_dir']
background = {
'datetime': template_dict['local_background_time_iso'],
'filetype': 'cube sphere history',
'provider': 'geos',
'compute edge pressure from surface pressure': True,
'max allowable geometry difference': 1e-3,
'datapath': f'{cycle_dir}/ebkg_chunk/chunk{ichunk:03d}/geos.mem%mem_pad%/',
'filenames': [
f'%yyyy%mm%dd_%hh%MM%ssz.nc4',
f'../../../fv3-jedi/bkg/geos.crtmsrf.{horizontal_resolution}.nc4'
],
'state variables': state_variables,
'field io names': field_io_names,
}

return background

# --------------------------------------------------------------------------------------------------
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ def background_ensemble(template_dict: Mapping) -> Mapping:
horizontal_resolution = template_dict['horizontal_resolution']

background_ensemble = {
'date': template_dict['window_begin_iso'],
'date': template_dict['local_background_time_iso'],
'members from template': {
'template': {
'datetime': template_dict['local_background_time_iso'],
Expand All @@ -41,4 +41,7 @@ def background_ensemble(template_dict: Mapping) -> Mapping:

return background_ensemble

# Note: 4D-window
# 'date': template_dict['window_begin_iso'],

# --------------------------------------------------------------------------------------------------
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# (C) Copyright 2021- United States Government as represented by the Administrator of the
# National Aeronautics and Space Administration. All Rights Reserved.
#
# 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.

# --------------------------------------------------------------------------------------------------

from collections.abc import Mapping

# --------------------------------------------------------------------------------------------------

state_variables_to_inverse = [
'eastward_wind',
'northward_wind',
'air_temperature',
'air_pressure_at_surface',
'air_pressure_levels',
'water_vapor_mixing_ratio_wrt_moist_air',
'cloud_liquid_ice',
'cloud_liquid_water',
'rain_water',
'snow_water',
'mole_fraction_of_ozone_in_air',
'fraction_of_ocean',
'fraction_of_lake',
'fraction_of_ice',
'geopotential_height_times_gravity_at_surface',
'skin_temperature_at_surface',
]

# --------------------------------------------------------------------------------------------------


def background_error_eda_gsiB(template_dict: Mapping) -> Mapping:
vertical_resolution = template_dict['vertical_resolution']
gsibec_nlons = template_dict['gsibec_nlons']
gsibec_nlats = template_dict['gsibec_nlats']
gsibec_configuration = template_dict['gsibec_configuration']
gsibec_npx_proc = template_dict['gsibec_npx_proc']
gsibec_npy_proc = template_dict['gsibec_npy_proc']

background_error = {
'covariance model': 'SABER',
'covariance type': 'gsi hybrid covariance',
'saber central block': {
'saber block name': 'gsi hybrid covariance',
'read': {
'gsi akbk': f'./fv3-jedi/fv3files/akbk{vertical_resolution}.nc4',
'gsi error covariance file':
f'./fv3-jedi/gsibec/gsi-coeffs-gmao-global-l{vertical_resolution}x{gsibec_nlons}y{gsibec_nlats}.nc4', # noqa
'gsi berror namelist file':
f'./fv3-jedi/gsibec/{gsibec_configuration}_l{vertical_resolution}x{gsibec_nlons}y{gsibec_nlats}.nml', # noqa
'processor layout x direction': gsibec_npx_proc,
'processor layout y direction': gsibec_npy_proc,
'debugging mode': False
}
},
'saber outer blocks': [
{'saber block name': 'interpolation',
'inner geometry': {
'function space': 'StructuredColumns',
'custom grid matching gsi': {
'type': 'latlon',
'lats': int(gsibec_nlats),
'lons': int(gsibec_nlons),
},
'custom partitioner matching gsi': {
'bands': gsibec_npy_proc
},
'halo': 1,
},
'forward interpolator': {
'local interpolator type': 'oops unstructured grid interpolator',
},
'inverse interpolator': {
'local interpolator type': 'oops unstructured grid interpolator',
},
'state variables to inverse': state_variables_to_inverse}
],
'linear variable change': {
'linear variable change name': 'Control2Analysis',
'input variables': state_variables_to_inverse,
'output variables': template_dict['analysis_variables']
}
}

return background_error

# --------------------------------------------------------------------------------------------------
Loading
Loading