1- # Perturbation routines #
1+ # Atmospheric forcing noise #
22
3- This section describes ** perturbation capabilities for eCLM-PDAF** .
3+ This section describes ** atmospheric forcing noise for eCLM-PDAF** .
44
5- The implementation of the perturbation routines was first introduced
6- by Yorck Ewerdwalbesloh in
7- https://gitlab.jsc.fz-juelich.de/detect/cluster-c/c01/perturbationroutineclm5 .
5+ The implementation of the atmospheric forcing perturbation routines
6+ was first introduced by Yorck Ewerdwalbesloh.
87
9- ## Description
8+ ## General Description
109
1110eCLM implements perturbations for atmospheric forcing variables
1211(temperature, precipitation, longwave radiation, and shortwave
@@ -43,33 +42,7 @@ is adjustable based on application requirements.
4342Perturbation fields are read from preprocessed noise files and applied
4443to atmospheric forcing variables within the eCLM model during runtime.
4544
46- ## Key Components ##
47-
48- ### 1. Soil Parameter Perturbation (` SoilStateInitTimeConstMod.F90 ` ) ###
49-
50- Allows reading perturbed hydraulic parameters from input files instead of computing them via pedotransfer functions.
51-
52- ** Parameters:**
53- - ` THETAS ` - saturated water content
54- - ` SHAPE_PARAM ` - Brooks-Corey shape parameter (` bsw ` )
55- - ` PSIS_SAT ` - saturated matric potential (` sucsat ` )
56- - ` KSAT ` - saturated hydraulic conductivity (` xksat ` )
57-
58- ** Implementation:**
59- - Reads both original parameters (for ` nlevsoifl=10 ` soil layers) and
60- applies organic matter mixing
61- - OR: Reads adjusted parameters with ` _adj ` suffix (for all ` nlevgrnd `
62- layers) and ** overwrites** parameters from organic matter mixing.
63- - Falls back to pedotransfer functions if parameters aren't in the file
64- - Modifies organic matter mixing to preserve perturbed parameter values
65-
66- #### Note about the Brooks-Corey Shape Parameter ####
67-
68- When perturbed soil parameters are read from input files, the organic
69- matter mixing for ` bsw ` uses the file-read value instead of the
70- hard-coded Cosby et al. (1984) Table 5 formula (` 2.91 + 0.159*clay ` ).
71-
72- ### 2. Noise-Based Forcing Perturbation ###
45+ ## 1. Noise-Based Forcing Perturbation ##
7346
7447When having an ensemble run, the memory consumption is too large if
7548the forcing data is perturbed one by one so that I get a file for each
@@ -102,44 +75,18 @@ data assimilation.
10275- Detects noise fields by checking if model field name contains ` "noise" `
10376- Adjusts time coordinate reading to account for ensemble-extended noise files
10477
105- ### 3. DATM Integration (` datm_comp_mod.F90 ` ) ###
106-
107- Passes ensemble information (` inst_index ` , ` dt_option ` , ` ninst ` ) from
108- the data atmosphere (DATM) component to the stream infrastructure,
109- enabling the noise perturbation mechanism to operate correctly within
110- CESM's multi-instance framework.
111-
112- ## Design Rationale ##
113-
114- 1 . ** Dual perturbation approach** :
115- - Parameter perturbation for soil properties (offline preprocessing)
116- - Forcing perturbation via temporal noise patterns (runtime)
117-
118- 2 . ** Backward compatibility** : All changes are guarded by ` USE_PDAF ` preprocessor directives
119-
120- 3 . ** Efficiency** : Uses a single noise file for all ensemble members by time-shifting, avoiding storage duplication
121-
122- 4 . ** Flexibility** : Soil parameters can be perturbed or computed traditionally based on file contents
123-
124- ## Modified Source Code ##
125-
126- - ` src/clm5/biogeophys/SoilStateInitTimeConstMod.F90 `
127- - ` src/csm_share/streams/shr_stream_mod.F90 `
128- - ` src/csm_share/streams/shr_strdata_mod.F90 `
129- - ` src/csm_share/streams/shr_dmodel_mod.F90 `
130- - ` src/datm/datm_comp_mod.F90 `
131-
132- ## Preparing Atmospheric Forcing Noise
78+ ### Preparing Atmospheric Forcing Noise ###
13379
13480This section describes the workflow for generating and configuring
13581spatiotemporally correlated noise fields for atmospheric forcing
13682perturbations.
13783
138- ### Noise Generation Tool
84+ #### Noise Generation Tool ####
13985
140- The ` tools/correlatedNoise.py ` script generates monthly NetCDF files
141- containing spatiotemporally correlated noise fields for all ensemble
142- members.
86+ The ` correlatedNoise.py `
87+ (https://github.com/HPSCTerrSys/eCLM_atm-forcing-generator/pull/8 )
88+ script generates monthly NetCDF files containing spatiotemporally
89+ correlated noise fields for all ensemble members.
14390
14491** Key Configuration Parameters:**
14592
@@ -153,7 +100,7 @@ members.
153100
154101** Output** : One NetCDF file per month containing noise fields for all ensemble members and all perturbed variables.
155102
156- ### Stream File Configuration
103+ #### Stream File Configuration ####
157104
158105Stream files configure how eCLM reads and applies noise fields to
159106atmospheric forcing data. Three separate stream files are required
@@ -168,15 +115,15 @@ file must specify the following metadata fields:
168115- ** Perturbation variables** : ` tbot_noise ` (temperature), ` lwdn_noise ` (longwave radiation), ` precn_noise ` (precipitation), ` swdn_noise ` (shortwave radiation)
169116
170117
171- ### Stream File Examples
118+ #### Stream File Examples ####
172119
173120The following examples demonstrate proper stream file configuration
174121for precipitation, solar radiation, and other atmospheric
175122variables. Each example must be adapted with correct file paths,
176123temporal parameters, and ensemble member IDs for your specific
177124application.
178125
179- #### Precipitation Noise Stream File
126+ ##### Precipitation Noise Stream File #####
180127
181128** File** : ` user_datm.streams.precip_noise.stream_0000.txt `
182129
@@ -235,7 +182,7 @@ application.
235182</fieldInfo >
236183```
237184
238- #### Solar Radiation Noise Stream File
185+ ##### Solar Radiation Noise Stream File #####
239186
240187** File** : ` user_datm.streams.solar_noise.stream_0000.txt `
241188
@@ -294,7 +241,7 @@ application.
294241</fieldInfo >
295242```
296243
297- #### Temperature and Longwave Radiation Noise Stream File
244+ ##### Temperature and Longwave Radiation Noise Stream File #####
298245
299246** File** : ` user_datm.streams.other_noise.stream_0000.txt `
300247
@@ -354,3 +301,26 @@ application.
354301</fieldInfo >
355302
356303```
304+
305+ ## 2. DATM Integration (` datm_comp_mod.F90 ` ) ##
306+
307+ Passes ensemble information (` inst_index ` , ` dt_option ` , ` ninst ` ) from
308+ the data atmosphere (DATM) component to the stream infrastructure,
309+ enabling the noise perturbation mechanism to operate correctly within
310+ CESM's multi-instance framework.
311+
312+ ## Design Rationale ##
313+
314+ 1 . ** Backward compatibility** : All changes are guarded by ` USE_PDAF `
315+ preprocessor directives
316+
317+ 2 . ** Efficiency** : Uses a single noise file for all ensemble members
318+ by time-shifting, avoiding storage duplication
319+
320+ ## Modified Source Code ##
321+
322+ - ` src/csm_share/streams/shr_stream_mod.F90 `
323+ - ` src/csm_share/streams/shr_strdata_mod.F90 `
324+ - ` src/csm_share/streams/shr_dmodel_mod.F90 `
325+ - ` src/datm/datm_comp_mod.F90 `
326+
0 commit comments