Skip to content

Commit bdc308b

Browse files
Revisions for handling of Nens and special nml and mwtrm path/files in coupled land-atm DAS (#102)
2 parents b82570f + af22d9a commit bdc308b

File tree

5 files changed

+703
-108
lines changed

5 files changed

+703
-108
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1313

1414
### Changed
1515

16+
- Revisions for handling of Nens and special nml and mwtrm path/files in coupled land-atm DAS.
17+
1618
### Fixed
1719

1820
- Fixed error from MAPL's ApplicationSupport.F90 to init UDUNITS

GEOSldas_App/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ configure_file(${file} ${file} @ONLY)
3939
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${file} DESTINATION bin)
4040

4141
file(GLOB rc_files GEOSldas_*rc)
42-
file(GLOB nml_files LDASsa_DEFAULT*nml)
42+
file(GLOB nml_files LDASsa_DEFAULT*nml LandAtmDAS_nml/LDASsa_SPECIAL*nml )
4343

4444
install(
4545
FILES ${rc_files} ${nml_files}
Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
!
2+
! namelist of EnKF inputs
3+
!
4+
! CUSTOM version for coupled land-atm DAS with soil moisture analysis based on SMAP Tb obs
5+
!
6+
! --------------------------------------------------------------------
7+
8+
&ens_prop_inputs
9+
10+
progn_pert_dtstep = 10800 ! time step for generation of AR(1) prognostics perts [s]
11+
12+
force_pert_dtstep = 10800 ! time step for generation of AR(1) forcing perts [s]
13+
14+
! ---------------------------------------------------------------------
15+
!
16+
! forcing error (or forcing perturbation) parameters
17+
!
18+
19+
descr_force_pert%pcp = 'pcp'
20+
descr_force_pert%sw = 'sw'
21+
descr_force_pert%lw = 'lw'
22+
descr_force_pert%tair = 'tair'
23+
descr_force_pert%qair = 'qair'
24+
descr_force_pert%wind = 'wind'
25+
26+
! specify whether forcing perturbations are additive or multiplicative
27+
!
28+
! additive: typ = 0.
29+
! multiplicative and lognormal: typ = 1.
30+
!
31+
32+
typ_force_pert%pcp = 1.
33+
typ_force_pert%sw = 1.
34+
typ_force_pert%lw = 0.
35+
36+
37+
std_force_pert%pcp = 0.5 ! units if additive: [kg/m2/s], if multiplicative: [fraction]
38+
std_force_pert%sw = 0.3 ! units if additive: [W/m^2] , if multiplicative: [fraction]
39+
std_force_pert%lw = 20. ! units if additive: [W/m^2] , if multiplicative: [fraction]
40+
41+
! read error std-dev from file? (if .false., default values above apply)
42+
43+
stdfromfile_force_pert%pcp = .false.
44+
stdfromfile_force_pert%sw = .false.
45+
stdfromfile_force_pert%lw = .false.
46+
47+
! specify file name (with full path) that contains std-dev values
48+
49+
stdfilename_force_pert = ''
50+
51+
! enforce zero (sample) mean across ensemble?
52+
53+
zeromean_force_pert%pcp = .true.
54+
zeromean_force_pert%sw = .true.
55+
zeromean_force_pert%lw = .true.
56+
57+
! allow perturbations to be computed on coarsened grid?
58+
59+
coarsen_force_pert%pcp = .true.
60+
coarsen_force_pert%sw = .true.
61+
coarsen_force_pert%lw = .true.
62+
63+
! max perturbation relative to standard normal
64+
! (limits on range of random numbers: specify max absolute value
65+
! allowed to be drawn from a standard normal distribution)
66+
67+
std_normal_max_force_pert%pcp = 3.
68+
std_normal_max_force_pert%sw = 3.
69+
std_normal_max_force_pert%lw = 2.5
70+
71+
! spatial correlation of forcing perturbations
72+
73+
xcorr_force_pert%pcp = 0.5 ! [deg]
74+
xcorr_force_pert%sw = 0.5 ! [deg]
75+
xcorr_force_pert%lw = 0.5 ! [deg]
76+
77+
ycorr_force_pert%pcp = 0.5 ! [deg]
78+
ycorr_force_pert%sw = 0.5 ! [deg]
79+
ycorr_force_pert%lw = 0.5 ! [deg]
80+
81+
! temporal correlation of forcing perturbations
82+
83+
tcorr_force_pert%pcp = 86400. ! [s]
84+
tcorr_force_pert%sw = 86400. ! [s]
85+
tcorr_force_pert%lw = 86400. ! [s]
86+
87+
! correlation coefficients -1 <= rho <= 1
88+
!
89+
! specify only essential information, the other side of off-diagonals and
90+
! the diagonal will be filled in later (subroutines read_ens_prop_inputs
91+
! and get_force_pert_inputs)
92+
93+
ccorr_force_pert%pcp%sw = -.8
94+
ccorr_force_pert%pcp%lw = .5
95+
96+
ccorr_force_pert%sw%lw = -.5
97+
98+
99+
! ---------------------------------------------------------------------
100+
!
101+
! model error (or progn_pert) parameters
102+
!
103+
! the mean is computed according to "typ" for unbiased perturbations
104+
! and not specified here
105+
106+
! string that describes the prognostics to be perturbed
107+
! (see subroutine apply_progn_pert() for details)
108+
109+
descr_progn_pert%catdef = 'catdef'
110+
descr_progn_pert%srfexc = 'srfexc'
111+
112+
113+
! specify whether model error is additive or multiplicative
114+
!
115+
! additive: typ = 0.
116+
! multiplicative and lognormal: typ = 1.
117+
!
118+
! real numbers are used so that "assemble_state()" can
119+
! be used to assemble the model error parameters
120+
121+
typ_progn_pert%catdef = 0.
122+
typ_progn_pert%srfexc = 0.
123+
124+
125+
! The perturbation (or error) std-dev can be specified as a spatially constant
126+
! (default) value. Alternatively, perturbation std-dev values can be read from
127+
! a netcdf-4 input file (where they may be spatially constant or distributed).
128+
! See subroutines get_progn_pert_param() and get_force_pert_param().
129+
!
130+
! Turn off all perturbations by setting std-dev values to zero and
131+
! "stdfromfile" to false.
132+
!
133+
! Default, spatially homogeneous perturbations std-dev
134+
! (used unless std-devs are read from file, see below)
135+
136+
std_progn_pert%catdef = 0.24 ! units if additive: [kg/m2/HOUR], if multiplicative: [fraction/HOUR]
137+
std_progn_pert%srfexc = 0.16 ! units if additive: [kg/m2/HOUR], if multiplicative: [fraction/HOUR]
138+
139+
140+
! read error std-dev from file? (if .false., default values above apply)
141+
142+
stdfromfile_progn_pert%catdef = .false.
143+
stdfromfile_progn_pert%srfexc = .false.
144+
145+
! specify file name (with full path) that contains std-dev values
146+
147+
stdfilename_progn_pert = ''
148+
149+
! enforce zero (sample) mean across ensemble?
150+
151+
zeromean_progn_pert%catdef = .true.
152+
zeromean_progn_pert%srfexc = .true.
153+
154+
! allow perturbations to be computed on coarsened grid?
155+
156+
coarsen_progn_pert%catdef = .false.
157+
coarsen_progn_pert%srfexc = .false.
158+
159+
! max perturbation relative to standard normal
160+
! (limits on range of random numbers: specify max absolute value
161+
! allowed to be drawn from a standard normal distribution)
162+
163+
std_normal_max_progn_pert%catdef = 2.5
164+
std_normal_max_progn_pert%srfexc = 2.5
165+
166+
! model error spatial correlation [deg]
167+
! (x runs east-west, y runs north-south)
168+
169+
xcorr_progn_pert%catdef = 0.3 ! [deg]
170+
xcorr_progn_pert%srfexc = 0.3 ! [deg]
171+
172+
ycorr_progn_pert%catdef = 0.3 ! [deg]
173+
ycorr_progn_pert%srfexc = 0.3 ! [deg]
174+
175+
! model error temporal correlation [s]
176+
177+
tcorr_progn_pert%catdef = 10800. ! [s]
178+
tcorr_progn_pert%srfexc = 10800. ! [s]
179+
180+
! correlation coefficients -1 <= rho <= 1
181+
!
182+
! specify only essential information, the other side of off-diagonals and
183+
! the diagonal will be filled in later (subroutines read_ens_prop_inputs
184+
! and get_force_pert_inputs)
185+
!
186+
! (the default input list below was put together with matlab
187+
! script create_ccorr_cat_progn_default.m)
188+
189+
ccorr_progn_pert%catdef%srfexc = 0.0
190+
191+
/
192+
193+
! =========================== EOF =======================================

0 commit comments

Comments
 (0)