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_targetas 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_oldfrom init.nc andfdda_newfrom fdda.000.nc that contains FDDA value at t=3. - t=3,
fdda_oldfrom fdda.000.nc andfdda_newfrom fdda.003.nc that contains FDDA value at t=6. - t=6,
fdda_oldfrom fdda.003.nc andfdda_newfrom fdda.006.nc that contains FDDA value at t=9. - t=9,
fdda_oldfrom fdda.006.nc andfdda_newfrom 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 storageusage.
- 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
Spectral Nudging on MPAS
spectral nudging
- Cheng,
Y. and Tang, J.: Scale-selective nudging with a diffusion-based filter
in the variable-resolution Model for Prediction Across Scales version
8.2.2, EGUsphere [preprint], https://doi.org/10.5194/egusphere-2026-176,
2026.
- 南京大学大气科学学院, 汤剑平 教授
- spectral nudging
- The diffusion-based filter developed by Grooms et al. (2021) extends this concept to geometries or grids where Fourier modes are not readily available by leveraging the spectral properties of a discrete Laplacian operator 𝐿.
- Building on the GCM-filter Python implementation (Loose et al., 2022), we developed polynomial coefficients for Taper and Gaussian filter shapes for MPAS-A by applying the diffusion operator.
- The MPAS-A spectral nudging implementation used in this study is
openly available at: https://doi.org/10.5281/zenodo.18229522
- Bullock Jr., O. R., Foroutan, H., Gilliam, R. C., and Herwehe, J. A. (2018):Adding four-dimensional data assimilation by analysis nudging to the Model for Prediction Across Scales – Atmosphere (version 4.0),Geosci. Model Dev., 11, 2897–2922, https://doi.org/10.5194/gmd-11-2897-2018
- Grooms, I. et al. (2021): Diffusion-Based Smoothers for Spatial Filtering of Gridded Geophysical Data,JAMES, 13, e2021MS002552, https://doi.org/10.1029/2021MS002552
- Loose, N. et al. (2022): GCM-Filters: A Python Package for Diffusion-based Spatial Filtering of Gridded Data, JOSS, 7(70), 3947, https://doi.org/10.21105/joss.03947
zenodo
- The MPAS-A spectral nudging implementation used in this study is
openly available at: https://doi.org/10.5281/zenodo.18229522
- MPAS-A spectral nudging v1.0
chmod -R 777 folder- Need to add files
src/core_atmosphere/physics- copy
checkout_data_files.shfrom MPAS-v8.2.2
- copy
- src/core_atmosphere/physics/physics_noahmp/utility
- copy
src/core_atmosphere/physics/physics_noahmpfrom MPAS-v8.2.2
- copy
MPAS | FDDA
https://waipangsze.github.io/2025/03/13/MPAS-FDDA/