MPAS | FDDA
Links
- https://mpas-dev.github.io/
- /MPAS-Model/releases
- MPAS-Atmosphere Users' Guide V4.0
- MPAS-Atmosphere Users' Guide V5.3
- MPAS-Atmosphere Users' Guide V6.3
- MPAS-Atmosphere Users' Guide V7.0
- MPAS-Atmosphere Users' Guide V8.2.0
- Joint WRF/MPAS Users Workshop 2024
References
- Bullock Jr, O. R., Foroutan, H., Gilliam, R. C., & Herwehe, J. A. (2018). Adding four-dimensional data assimilation by analysis nudging to the Model for Prediction Across Scales–Atmosphere (version 4.0). Geoscientific model development, 11(7), 2897-2922.
- MPAS-A model source codes used in this study are available in the Supplement and at https://doi.org/10.5281/zenodo.1101204
- Run scripts used to prepare FDDA target fields are also included in the Supplement and at https://doi.org/10.5281/zenodo.1101204.
1
2
3
4
5
6
7
8
9
10.
├── gmd-11-2897-2018-supplement-title-page.pdf
├── Model_code_for_MPAS-A_with_FDDA
│ ├── MPAS Copyright.txt
│ ├── MPAS-Release-4.0_plusFDDA.tar.gz
│ └── README.txt
└── scripts_for_FDDA_file_preparation
├── prepare_FDDA_file_Jan2013.csh
├── prepare_FDDA_file_Jul2013.csh
└── prepare_FDDA_file_README.txt
MPAS-Release-4.0_plusFDDA.tar.gz
- https://doi.org/10.5281/zenodo.1101204
- ./core_atmosphere/Registry.xml
1
2
3
4
5
6
7
8
9
10
11
12<var name="rthfddaten"/>
<var name="rqvfddaten"/>
<var name="rufddaten"/>
<var name="rvfddaten"/>
<var name="th_fdda_old"/>
<var name="qv_fdda_old"/>
<var name="u_fdda_old"/>
<var name="v_fdda_old"/>
<var name="th_fdda_new"/>
<var name="qv_fdda_new"/>
<var name="u_fdda_new"/>
<var name="v_fdda_new"/>
mpas_stream_manager.F
- MPAS_stream_mgr_get_property
▶
MPAS_stream_mgr_get_property
1 |
|
./core_atmosphere/physics/mpas_atmphys_fdda.F
- Author comments,
- !> * Modified to only require reads of "fdda_new" data arrays. "fdda_old" is initially set to initial conditions. At end of FDDA data interval, "fdda_old" is set to "fdda_new" and updated "fdda_new" data comes from FDDA input stream. By O. Russell Bullock Jr. (bullock.russell@epa.gov) / 2016-08-30.
and then,
- Assign value
1 |
|
- No need to generate first time step and obtained FDDA value from init.nc
1 |
|
- define the FDDA target data interval,
tfrac
1 |
|
- take
t_target
as example,
1 |
|
- update old by new if it is on the last time step.
1 |
|
Important issue
The value of fdda_old
is set to fdda_new
, and the updated fdda_new
data is obtained from the FDDA input stream.
At t=0, the fdda_old
values are sourced from init.nc
, and an additional data entry is required for fdda_new
. One straightforward approach is to read the FDDA input file 00.nc
at t=0, which contains data for t=3 (or the next FDDA time) to serve as fdda_new
.
For example,
Take FDDA time interval as 3 hours,
There is no real
fdda.000.nc that contains FDDA data at t=0.
- t=0,
fdda_old
from init.nc andfdda_new
from fdda.000.nc that contains FDDA value at t=3. - t=3,
fdda_old
from fdda.000.nc andfdda_new
from fdda.003.nc that contains FDDA value at t=6. - t=6,
fdda_old
from fdda.003.nc andfdda_new
from fdda.006.nc that contains FDDA value at t=9. - t=9,
fdda_old
from fdda.006.nc andfdda_new
from fdda.009.nc that contains FDDA value at t=12. - ......
- and no final time step FDDA file.
Therefore, we have to prepare the fdda.ttt.nc with ttt + Next FDDA time !!!
The purpose of this approach is to reduce storage usage.
- The simple way is reading FDDA(\(t_0\)) ad \(t=t_0\), and no need to add time shift in code.
- Anothher way is reading FDD(\(t_{next fdda time}\)) at \(t=t_0\), and no need to mismatch FDDA files with time shift.
Which one is better? Up to you. I like the second one la.
FDDA schemes
- 'off'
- 'analysis'
- 'scaled'
WRF namelist
Steps to run analysis nudging in WRF-ARW:
- Set up the analysis nudging fdda namelist. Carefully read test/em_real/README.namelist file to understand the meaning of each namelist variable in the FDDA section, which is also listed below:
&fdda
grid_fdda (max_dom) = 1 ; grid-nudging fdda on (=0 off) for each domain
= 2 ; spectral nudging
gfdda_inname = "wrffdda_d<domain>" ; defined name in real
gfdda_interval_m (max_dom) = 360 ; time interval (in min) between analysis times (must use minutes)
gfdda_end_h (max_dom) = 6 ; time (in hours) to stop nudging after start of forecast
io_form_gfdda = 2 ; analysis data io format (2 = netCDF)
fgdt (max_dom) = 0 ; calculation frequency (minutes) for grid-nudging (0=every step)
if_no_pbl_nudging_uv (max_dom) = 0 ; 1= no nudging of u and v in the pbl, 0=nudging in the pbl
if_no_pbl_nudging_t (max_dom) = 0 ; 1= no nudging of temp in the pbl, 0=nudging in the pbl
if_no_pbl_nudging_q (max_dom) = 0 ; 1= no nudging of qvapor in the pbl, 0=nudging in the pbl
if_zfac_uv (max_dom) = 0 ; 0= nudge u and v in all layers, 1= limit nudging to levels above k_zfac_uv
k_zfac_uv (max_dom) = 10 ; 10=model level below which nudging is switched off for u and v
if_zfac_t (max_dom) = 0 ; 0= nudge temp in all layers, 1= limit nudging to levels above k_zfac_t
k_zfac_t (max_dom) = 10 ; 10=model level below which nudging is switched off for temp
if_zfac_q (max_dom) = 0 ; 0= nudge qvapor in all layers, 1= limit nudging to levels above k_zfac_q
k_zfac_q (max_dom) = 10 ; 10=model level below which nudging is switched off for qvapor
guv (max_dom) = 0.0003 ; nudging coefficient for u and v (sec-1)
gt (max_dom) = 0.0003 ; nudging coefficient for temp (sec-1)
gq (max_dom) = 0.0003 ; nudging coefficient for qvapor (sec-1)
if_ramping = 0 ; 0= nudging ends as a step function, 1= ramping nudging down at end of period
dtramp_min = 60.0 ; time (min) for ramping function, 60.0=ramping starts at last analysis time,
-60.0=ramping ends at last analysis time
The following are for spectral nudging:
fgdtzero (max_dom) = 0, ; 1= nudging tendencies are set to zero in between fdda calls
if_no_pbl_nudging_ph = 0, ; 1= no nudging of ph in the pbl, 0= nuding in the pbl
if_zfac_ph (max_dom) = 0, ; 0= nudge ph in all layers, 1= limit nudging to levels above k_zfac_ph
k_zfac_ph (max_dom) = 10, ; 10= model level below which nudging is switched off for ph
dk_zfac_uv (max_dom) = 1, ; depth in k between k_zfac_X to dk_zfac_X where nudging increases
linearly to full strength
dk_zfac_t (max_dom) = 1,
dk_zfac_ph (max_dom) = 1,
gph (max_dom) = 0.0003,
xwavenum (max_dom) = 3, ; top wave number to nudge in x direction
ywavenum (max_dom) = 3, ; top wave number to nudge in y direction
- Difference between gfdda_interval_m and fgdt | 2024
- Nudging meteorology
- Spectral- vs. Grid Nudging Namelist Options | 2018
- It looks like the code (phys/module_fdda_spnudging.F) first checks if if_no_pbl_nudging_* is set. If they are set to 1, then the weighting function (wpbl) will be set to 0 in the PBL. If those are set to 0, THEN the switches for if_zfac_* are checked, and the weighting function is computed based on the namelist specified k values, so setting if_no_pbl_nudging_* overrides any settings for if_zfac_*.
- "k" in these parameters specifies the vertical level number. So for example, if you have 32 vertical levels, then the first level (closest to the ground) is level
- Yes, setting gq = 0 should turn off all q nudging.
- Issue with multi-domain spectral nudging associated with the namelist variable gph | Apr 30, 2025
- spectral nudging and noticed that geopotential nudging is turned off when the coefficient gph is not defined separately for each domain.
- Sorry for the error in WRF User's Guide. You are right that gph should be defined for each domain.
- Can grid nuding and spectral nudging be used together? | Sep 9, 2024
- You can only run either grid nudging or spectral nudging. The two options cannot work simultaneously.
Defining spectral nudging wave number
- Defining spectral nudging wave number | Aug 30, 2018
- The wave number for spectral nudging is simply (domain width in x or y)/(wave length to be nudged), so if you would like to nudge any waves longer than 1000 km in your 6000 km domain, then your wave number would be 6.
Obs FDDA?
Any Observation FDDA in MPAS is in progress? No
In WRF,





US-EPA
- Add 3-D grid analysis nudging FDDA to MPAS-A #995 | Oct 8, 2022
- from
jherwehe:atmosphere/develop-EPA_FDDA
- This EPA_FDDA PR will add 3-D grid analysis nudging FDDA to MPAS-A as an option to assist in keeping retrospective simulations dynamically on track to improve evaluation against observations. This FDDA development for MPAS-A (Bullock et al., 2018) nudges temperature, humidity, and wind toward target values and is based on the comparable FDDA feature available in WRF, including MPAS-A versions of many of the WRF FDDA options. Enabling grid analysis nudging FDDA in MPAS-A maintains high fidelity to the reference fields while still conserving mass.
- from
- Add the Pleim-Xiu (P-X) LSM and FDDA to MPAS-A #1027 | Jan 26, 2023
MPAS | FDDA
https://waipangsze.github.io/2025/03/13/MPAS-FDDA/