Skip to content

Commit a319913

Browse files
danholdawayDooruk
andauthored
Add workflow and tasks for performing 3DVar (tested with SOCA) (#152)
* Add shell for the new tasks (#133) * add shell for all the new tasaks * rename b clim task * update registry Co-authored-by: danholdaway <[email protected]> * Feature/3dvar generateb (#136) * fetch bump or execution with seg fault * Feature/3dvar standalone godas (#138) * Add the basis for running standalone 3DVar * add bclim to flow * changes in executable * 3dvar is executing now, seg fault is fixed * hofx fix * changes in eva * GODAS observations and golden period * SPECIAL case in executable and modifications for 3dvar EVA * changes in flow * changes in flow and codestyle fixes * trailing spaces Co-authored-by: danholdaway <[email protected]> * write logs in the executable tasks * update YAML files to ioda v3 * Feature/3dvar bump eva (#140) * Add the basis for running standalone 3DVar * add bclim to flow * changes in executable * 3dvar is executing now, seg fault is fixed * hofx fix * changes in eva * GODAS observations and golden period * SPECIAL case in executable and modifications for 3dvar EVA * changes in flow * changes in flow and codestyle fixes * trailing spaces * bump SABER update works * ioda_v3 changes * changes in eva * yaml fixes * yaml fixes --------- Co-authored-by: danholdaway <[email protected]> * refactor eva to allow plotting jedi log things * fixes to workflow files * add new task for generating static b by linking (#147) * add new task for generating static b by linking. * remove prints * correct py norms * yaml norms --------- Co-authored-by: danholdaway <[email protected]> * Feature/3dvar lowres (#151) * fixing workflow * linking changes * lowres works * hofx working * 3dvar workflow running * DA recommended changes --------- Co-authored-by: danholdaway <[email protected]> Co-authored-by: Doruk Ardağ <[email protected]>
1 parent dc971c1 commit a319913

Some content is hidden

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

57 files changed

+2402
-128
lines changed

src/swell/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@
99
repo_directory = os.path.dirname(__file__)
1010

1111
# Set the version for swell
12-
__version__ = '1.1.3'
12+
__version__ = '1.2.0'
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
- link_files:
22
directories:
3-
- ['{{swell_static_files}}/jedi/fv3-jedi/geos_atmosphere/GEOS_CRTM_Surface/geos.crtmsrf.{{horizontal_resolution}}.nc4', '{{experiment_dir}}/stage/fv3-jedi/geos_atmosphere/bkg/']
3+
- ['{{swell_static_files}}/jedi/interfaces/geos_atmosphere/GEOS_CRTM_Surface/geos.crtmsrf.{{horizontal_resolution}}.nc4', '{{experiment_dir}}/stage/fv3-jedi/geos_atmosphere/bkg/']
44
- ['{{experiment_dir}}/jedi_bundle/source/fv3-jedi/test/Data/fieldmetadata/*', '{{experiment_dir}}/stage/fv3-jedi/geos_atmosphere/fieldmetadata/']
55
- ['{{experiment_dir}}/jedi_bundle/source/fv3-jedi/test/Data/fv3files/*', '{{experiment_dir}}/stage/fv3-jedi/geos_atmosphere/fv3files/']

src/swell/configuration/jedi/interfaces/geos_ocean/geos_ocean.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ executables:
33
hofx3d: soca_hofx3d.x
44
hofx: soca_hofx.x
55
var: soca_var.x
6+
bump: soca_staticbinit.x
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
datadir: ./
2+
exp: {{experiment_id}}
3+
type: an
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
date: '{{local_background_time_iso}}'
22
read_from_file: 1
3-
basename: '{{cycle_dir}}/'
3+
basename: './'
44
ocn_filename: 'MOM6.res.{{local_background_time}}.nc'
5-
state variables: [socn, tocn, ssh, hocn, uocn, vocn]
5+
state variables: [socn, tocn, ssh, hocn, mld, layer_depth]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
covariance model: 'SocaError'
2+
analysis variables: {{analysis_variables}}
3+
date: '{{local_background_time_iso}}'
4+
bump:
5+
io:
6+
data directory: '{{cycle_dir}}/background_error_model/'
7+
drivers:
8+
multivariate strategy: 'univariate'
9+
read local nicas: true
10+
11+
correlation:
12+
- name: 'ocn'
13+
variables: {{analysis_variables}}
14+
15+
linear variable change:
16+
input variables: {{analysis_variables}}
17+
output variables: {{analysis_variables}}
18+
linear variable changes:
19+
- linear variable change name: BkgErrFILT
20+
ocean_depth_min: 1000 # [m]
21+
rescale_bkgerr: 1.0
22+
efold_z: 2500.0 # [m]
23+
24+
- linear variable change name: BkgErrGODAS
25+
sst_bgerr_file: '{{cycle_dir}}/soca/godas_sst_bgerr.nc'
26+
t_min: 0.1
27+
t_max: 2.0
28+
t_dz: 20.0
29+
t_efold: 500.0
30+
s_min: 0.0
31+
s_max: 0.25
32+
ssh_min: 0.0 # value at EQ
33+
ssh_max: 0.1 # value in Extratropics
34+
ssh_phi_ex: 20 # lat of transition from extratropics
35+
cicen_min: 0.1
36+
cicen_max: 0.5
37+
hicen_min: 10.0
38+
hicen_max: 100.0
39+
40+
- linear variable change name: VertConvSOCA
41+
Lz_min: 2.0
42+
Lz_mld: 1
43+
Lz_mld_max: 500.0
44+
scale_layer_thick: 1.5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
covariance model: 'SocaError'
2+
analysis variables: {{analysis_variables}}
3+
date: '{{local_background_time_iso}}'
4+
bump:
5+
io:
6+
data directory: '{{cycle_dir}}/background_error_model'
7+
drivers:
8+
multivariate strategy: 'univariate'
9+
compute nicas: true
10+
write local nicas: true
11+
model:
12+
do not cross mask boundaries: true
13+
nicas:
14+
resolution: 6.0
15+
correlation:
16+
- name: 'ocn'
17+
base value: 840336.134453782
18+
rossby mult: 0.280112045
19+
variables: {{analysis_variables}}
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
mom6_input_nml: '{{experiment_dir}}/stage/soca/geos_ocean/socafiles/input.nml'
2-
fields metadata: '{{experiment_dir}}/stage/soca/geos_ocean/fieldmetadata/fields_metadata.yaml'
3-
geom_grid_file: '{{experiment_dir}}/stage/soca/geos_ocean/gridfiles/soca_gridspec.nc'
1+
mom6_input_nml: 'soca/input.nml'
2+
fields metadata: 'soca/fields_metadata.yaml'
3+
geom_grid_file: 'INPUT/soca_gridspec.nc'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
mom6_input_nml: 'soca/input.nml'
2+
fields metadata: 'soca/fields_metadata.yaml'
3+
geom_grid_file: 'INPUT/soca_gridspec.nc'

src/swell/configuration/jedi/interfaces/geos_ocean/model/stage.yaml

-7
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
- copy_files:
2+
directories:
3+
- ['{{swell_static_files}}/jedi/interfaces/geos_ocean/model/geometry/common/*', '{{cycle_dir}}/soca/']
4+
- ['{{swell_static_files}}/jedi/interfaces/geos_ocean/model/geometry/{{horizontal_resolution}}x{{vertical_resolution}}/socafiles/*', '{{cycle_dir}}/soca/']
5+
link_files:
6+
directories:
7+
- ['{{swell_static_files}}/jedi/interfaces/geos_ocean/model/geometry/{{horizontal_resolution}}x{{vertical_resolution}}/INPUT/*', '{{cycle_dir}}/INPUT']
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
obs space:
2+
name: adt_3a_egm2008
3+
obsdatain:
4+
engine:
5+
type: H5File
6+
obsfile: '{{cycle_dir}}/adt_3a_egm2008.{{window_begin}}.nc4'
7+
obsdataout:
8+
engine:
9+
type: H5File
10+
obsfile: '{{cycle_dir}}/{{experiment_id}}.adt_3a_egm2008.{{window_begin}}.nc4'
11+
simulated variables: [absoluteDynamicTopography]
12+
obs operator:
13+
name: ADT
14+
obs error:
15+
covariance model: diagonal
16+
obs filters:
17+
- filter: Domain Check
18+
where:
19+
- variable: {name: GeoVaLs/sea_area_fraction}
20+
minvalue: 0.9
21+
- filter: Domain Check
22+
where:
23+
- variable: { name: GeoVaLs/sea_surface_temperature}
24+
minvalue: 15.0
25+
- filter: Background Check
26+
absolute threshold: 0.2
27+
- filter: Domain Check
28+
where:
29+
- variable: {name: GeoVaLs/sea_floor_depth_below_sea_surface}
30+
minvalue: 500
31+
# - filter: Perform Action
32+
# action:
33+
# name: assign error
34+
# error function:
35+
# name: ObsFunction/LinearCombination
36+
# options:
37+
# variables: [{name: GeoVaLs/mesoscale_representation_error},
38+
# {name: ObsError/absolute_dynamic_topography}]
39+
# # variables: [mesoscale_representation_error@GeoVaLs,
40+
# # absolute_dynamic_topography@ObsError]
41+
# coefs: [0.1,
42+
# 0.5]
43+
- filter: BlackList
44+
where:
45+
- variable:
46+
name: MetaData/latitude
47+
minvalue: -65
48+
maxvalue: -30
49+
- variable:
50+
name: MetaData/longitude
51+
minvalue: -125
52+
maxvalue: -90
53+
- filter: BlackList
54+
where:
55+
- variable:
56+
name: MetaData/latitude
57+
minvalue: -65
58+
maxvalue: -30
59+
- variable:
60+
name: MetaData/longitude
61+
minvalue: 60
62+
maxvalue: 110
63+
# - filter: Domain Check
64+
# where:
65+
# - variable: { name: GeoVaLs/sea_ice_area_fraction}
66+
# maxvalue: 0.00001
67+
- filter: Domain Check
68+
where:
69+
- variable: { name: GeoVaLs/distance_from_coast}
70+
minvalue: 100e3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
obs space:
2+
name: adt_3b_egm2008
3+
obsdatain:
4+
engine:
5+
type: H5File
6+
obsfile: '{{cycle_dir}}/adt_3b_egm2008.{{window_begin}}.nc4'
7+
obsdataout:
8+
engine:
9+
type: H5File
10+
obsfile: '{{cycle_dir}}/{{experiment_id}}.adt_3b_egm2008.{{window_begin}}.nc4'
11+
simulated variables: [absoluteDynamicTopography]
12+
obs operator:
13+
name: ADT
14+
obs error:
15+
covariance model: diagonal
16+
obs filters:
17+
- filter: Domain Check
18+
where:
19+
- variable: {name: GeoVaLs/sea_area_fraction}
20+
minvalue: 0.9
21+
- filter: Domain Check
22+
where:
23+
- variable: { name: GeoVaLs/sea_surface_temperature}
24+
minvalue: 15.0
25+
- filter: Background Check
26+
absolute threshold: 0.2
27+
- filter: Domain Check
28+
where:
29+
- variable: {name: GeoVaLs/sea_floor_depth_below_sea_surface}
30+
minvalue: 500
31+
# - filter: Perform Action
32+
# action:
33+
# name: assign error
34+
# error function:
35+
# name: ObsFunction/LinearCombination
36+
# options:
37+
# variables: [mesoscale_representation_error@GeoVaLs,
38+
# absolute_dynamic_topography@ObsError]
39+
# coefs: [0.1,
40+
# 0.5]
41+
- filter: BlackList
42+
where:
43+
- variable:
44+
name: MetaData/latitude
45+
minvalue: -65
46+
maxvalue: -30
47+
- variable:
48+
name: MetaData/longitude
49+
minvalue: -125
50+
maxvalue: -90
51+
- filter: BlackList
52+
where:
53+
- variable:
54+
name: MetaData/latitude
55+
minvalue: -65
56+
maxvalue: -30
57+
- variable:
58+
name: MetaData/longitude
59+
minvalue: 60
60+
maxvalue: 110
61+
# - filter: Domain Check
62+
# where:
63+
# - variable: { name: GeoVaLs/sea_ice_area_fraction}
64+
# maxvalue: 0.00001
65+
- filter: Domain Check
66+
where:
67+
- variable: {name: GeoVaLs/distance_from_coast}
68+
minvalue: 100e3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
obs space:
2+
name: adt_c2_egm2008
3+
obsdatain:
4+
engine:
5+
type: H5File
6+
obsfile: '{{cycle_dir}}/adt_c2_egm2008.{{window_begin}}.nc4'
7+
obsdataout:
8+
engine:
9+
type: H5File
10+
obsfile: '{{cycle_dir}}/{{experiment_id}}.adt_c2_egm2008.{{window_begin}}.nc4'
11+
simulated variables: [absoluteDynamicTopography]
12+
obs operator:
13+
name: ADT
14+
obs error:
15+
covariance model: diagonal
16+
obs filters:
17+
- filter: Domain Check
18+
where:
19+
- variable: {name: GeoVaLs/sea_area_fraction}
20+
minvalue: 0.9
21+
- filter: Domain Check
22+
where:
23+
- variable: { name: GeoVaLs/sea_surface_temperature}
24+
minvalue: 15.0
25+
- filter: Background Check
26+
absolute threshold: 0.2
27+
- filter: Domain Check
28+
where:
29+
- variable: {name: GeoVaLs/sea_floor_depth_below_sea_surface}
30+
minvalue: 500
31+
# - filter: Perform Action
32+
# action:
33+
# name: assign error
34+
# error function:
35+
# name: ObsFunction/LinearCombination
36+
# options:
37+
# variables: [mesoscale_representation_error@GeoVaLs,
38+
# absolute_dynamic_topography@ObsError]
39+
# coefs: [0.1,
40+
# 0.5]
41+
- filter: BlackList
42+
where:
43+
- variable:
44+
name: MetaData/latitude
45+
minvalue: -65
46+
maxvalue: -30
47+
- variable:
48+
name: MetaData/longitude
49+
minvalue: -125
50+
maxvalue: -90
51+
- filter: BlackList
52+
where:
53+
- variable:
54+
name: MetaData/latitude
55+
minvalue: -65
56+
maxvalue: -30
57+
- variable:
58+
name: MetaData/longitude
59+
minvalue: 60
60+
maxvalue: 110
61+
# - filter: Domain Check
62+
# where:
63+
# - variable: { name: GeoVaLs/sea_ice_area_fraction}
64+
# maxvalue: 0.00001
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
obs space:
2+
name: adt_coperl4
3+
obsdatain:
4+
engine:
5+
type: H5File
6+
obsfile: '{{cycle_dir}}/adt_coperl4.{{window_begin}}.nc4'
7+
obsdataout:
8+
engine:
9+
type: H5File
10+
obsfile: '{{cycle_dir}}/{{experiment_id}}.adt_coperl4.{{window_begin}}.nc4'
11+
simulated variables: [absoluteDynamicTopography]
12+
obs operator:
13+
name: ADT
14+
obs error:
15+
covariance model: diagonal
16+
obs filters:
17+
# - filter: Domain Check
18+
# where:
19+
# - variable: {name: GeoVaLs/sea_area_fraction}
20+
# minvalue: 0.9
21+
# Reject obs where ocean fraction is < 90%
22+
- filter: Domain Check
23+
action:
24+
name: reject
25+
where:
26+
- variable: {name: GeoVaLs/sea_area_fraction}
27+
minvalue: 0.9
28+
# Passivate obs where ocean fraction is > 90%
29+
- filter: Domain Check
30+
action:
31+
name: passivate
32+
where:
33+
- variable: {name: GeoVaLs/sea_area_fraction}
34+
maxvalue: 0.9
35+
# Reject obs outside of [-4.0m,4.0m]
36+
- filter: Bounds Check
37+
action:
38+
name: reject
39+
minvalue: -4.0
40+
maxvalue: 4.0
41+
- filter: Domain Check
42+
where:
43+
- variable: {name: GeoVaLs/distance_from_coast}
44+
minvalue: 100e3

0 commit comments

Comments
 (0)