Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add incremental analysis update capability #2151

Merged
merged 7 commits into from
Jan 29, 2025

Conversation

weiwangncar
Copy link
Collaborator

@weiwangncar weiwangncar commented Jan 7, 2025

TYPE: new feature

KEYWORDS: data assimilation, incremental analysis update

SOURCE: Min Chen of IUM/CMA and internal

DESCRIPTION OF CHANGES:
Add incremental analysis update capability. In the DA code, code is added to write out analysis increments for all variables in WRF netCDF format using auxiliary history output stream #5. In the model, analysis increments are divided by the number of time steps in a specified time window and added to the model similar to physics tendencies. The input stream for the model is 15. The capability is turned on by adding iau = 1 and iau_time_window_sec in &time_control. For example:

 auxinput15_inname                   = "wrfiauinp_d01"
 io_form_auxinput15                  = 2
 auxinput15_interval                 = 360,
 iau                                 = 1
 iau_time_window_sec                 = 3600.

LIST OF MODIFIED FILES:
M Registry/Registry.EM_COMMON.var
M Registry/Registry.wrfvar
M Registry/registry.em_shared_collection
A Registry/registry.iau
M dyn_em/module_em.F
M dyn_em/module_first_rk_step_part2.F
M phys/module_physics_addtendc.F
M var/build/da.make
M var/build/depend.txt
M var/da/da_main/da_solve.inc
M var/da/da_main/da_wrfvar_io.f90
M var/da/da_main/da_wrfvar_top.f90
A var/da/da_main/da_write_anaincrements.inc
M var/da/da_transfer_model/da_transfer_xatowrf.inc

TESTS CONDUCTED:
The Jenkins tests have passed.

RELEASE NOTE: This PR adds an incremental analysis update capability. In the DA code, code is added to write out analysis increments for all variables in WRF netCDF format using auxiliary history output stream #5. In the model, analysis increments are divided by the number of time steps in a specified time window and added to the model similar to physics tendencies. The input stream for the model is 15. The capability is turned on by adding iau = 1 and iau_time_window_sec in &time_control. The way the increments are added to the model is similar to what described by the paper by Chen et al. (https://doi-org.cuucar.idm.oclc.org/10.1175/WAF-D-22-0127.1).

@weiwangncar weiwangncar requested review from a team as code owners January 7, 2025 09:43
@weiwangncar weiwangncar changed the base branch from master to develop January 7, 2025 09:49
@weiwangncar
Copy link
Collaborator Author

The regression test results:

Test Type              | Expected  | Received |  Failed
= = = = = = = = = = = = = = = = = = = = = = = =  = = = =
Number of Tests        : 23           24
Number of Builds       : 60           57
Number of Simulations  : 158           150        0
Number of Comparisons  : 95           86        0

Failed Simulations are: 
None
Which comparisons are not bit-for-bit: 
None

@dudhia
Copy link
Collaborator

dudhia commented Jan 9, 2025

How is input stream 15 created?

@weiwangncar
Copy link
Collaborator Author

@dudhia As described in the PR message, it is written out in DA.

Comment on lines 1132 to 1134
!mchen@ium.cn---
call da_write_anaincrements (grid, config_flags)
!mchen@ium.cn---
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should you delete two commented-out lines with mchen?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should make this IAU writing optional.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@liujake The analysis increment file is only written out if several namliests associated with auxhist5 are added in the namelist.input file, for example, auxhist5_interval, io_form_auxhist5.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok. Looks like controlling optional writing is inside the write subroutine.

@dudhia
Copy link
Collaborator

dudhia commented Jan 22, 2025

I am confused why 3d variables like u_iau are in two registries.

@weiwangncar
Copy link
Collaborator Author

I am confused why 3d variables like u_iau are in two registries.

@dudhia One of the set is for WRFDA to write date out, and the other is for WRF model to read.

Copy link
Collaborator

@dudhia dudhia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, I now see that one set is in Registry*.var. I assume this Registry is not used with regsitry.iau.
Also surprised that microphysical variables can be nudged. It seems unlikely that an analysis would have those.

@weiwangncar
Copy link
Collaborator Author

OK, I now see that one set is in Registry*.var. I assume this Registry is not used with regsitry.iau. Also surprised that microphysical variables can be nudged. It seems unlikely that an analysis would have those.

Indeed, the hydrometeors’ analysis increments are the products of radar reflectivity assimilation, but it may not be available in general.

@dudhia
Copy link
Collaborator

dudhia commented Jan 24, 2025

Hopefully the nudging of hydrometeors is not active when they are not in the analysis.

@weiwangncar
Copy link
Collaborator Author

Hopefully the nudging of hydrometeors is not active when they are not in the analysis.

The increment arrays for hydrometeors will be zero when analysis is not available.

@weiwangncar weiwangncar merged commit 6741f01 into wrf-model:develop Jan 29, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants