Skip to content

Commit

Permalink
Merge branch 'main' into wrf-wrf-chem
Browse files Browse the repository at this point in the history
Latest from main, note keep wrf-wrf-chem version of wrf/model_mod.f90

note need to add #661 #649
  • Loading branch information
hkershaw-brown committed May 29, 2024
2 parents 198e9d0 + 924182f commit 0bd4d47
Show file tree
Hide file tree
Showing 114 changed files with 7,426 additions and 3,960 deletions.
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,5 @@ If your code changes are available on GitHub, please provide the repository.

### Build information
Please describe:
1. The machine you are running on (e.g. windows laptop, NCAR supercomputer Cheyenne).
1. The machine you are running on (e.g. windows laptop, NSF NCAR supercomputer Derecho).
2. The compiler you are using (e.g. gnu, intel).
6 changes: 3 additions & 3 deletions .github/workflows/action_on_pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
options: "--cap-add=SYS_PTRACE"
steps:
- name: Checkout repo
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set checked out repo as a safe git directory
run: git config --global --add safe.directory /__w/${{ github.event.repository.name }}/${{ github.event.repository.name }}
- name: Build and run lorenz_96 with mpi
Expand All @@ -35,7 +35,7 @@ jobs:
options: '--cap-add=SYS_PTRACE'
steps:
- name: Checkout repo
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set checked out repo as a safe git directory
run: git config --global --add safe.directory /__w/${{ github.event.repository.name }}/${{ github.event.repository.name }}
- name: Build and run lorenz_63 with no mpi
Expand All @@ -53,7 +53,7 @@ jobs:
options: '--cap-add=SYS_PTRACE'
steps:
- name: Checkout repo
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set checked out repo as a safe git directory
run: git config --global --add safe.directory /__w/${{ github.event.repository.name }}/${{ github.event.repository.name }}
- name: Build and run lorenz_96 with mpif08
Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,8 @@ gitm_to_netcdf
netcdf_to_gitm_blocks
streamflow_obs_diag
cam_dart_obs_preprocessor
aether_to_dart
dart_to_aether

# Observation converter exectutables
convert_aviso
Expand Down Expand Up @@ -158,6 +160,10 @@ ssec_satwnd
gts_to_dart
littler_tf_dart
rad_3dvar_to_dart
L1_AMSUA_to_netcdf
convert_airs_L2
convert_amsu_L1
convert_L2b

# Test programs built by developer_tests
rttov_test
Expand Down
87 changes: 87 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,93 @@ individual files.

The changes are now listed with the most recent at the top.

**May 16 2024 :: WRF v4. Tag v11.5.0**

- WRF-DART and WRF-DART Tutorial updated to WRFv4. Note, not backwards compatible with WRFv3.9.
- local particle filter default value for pf_enkf_hybrid=.false. *contributed by Jon Poterjoy*

**April 23 2024 :: Bug-fix: WRF hybrid vertical coordinate. Tag v11.4.1**

- DART now detects whether WRF is using Hybrid Vertical Coordinate (HVC) introduced in WRFv3.9 or terrain following (TF) system.
This fix is also compatible with pre WRFv3.9 versions which did not include explicit attribute information for vertical coordinate system.
- Improved obs_impact_tool documentation.

**March 27 2024 :: WRF-Hydro Developments; AIRS converter documentation update; Add citation.cff file. Tag v11.4.0**

- WRF-Hydro:

- Added a new perfect model obs experimental capability to HydroDART
- Modified the Streamflow obs converter to allow for better diagnostics: allows DART to
compute obs space diagnostics on all gauges from the Routelink
- Enhanced performance in the model_mod and noah_hydro_mod when running a full CONUS domain
- Improved HydroDART Diagnostics with new capabilities (saves the hydrographs in a high-resolution
pdf, handles hybrid DA components, separate plots for the hybrid statistics, allows the openloop
to have different ens size and gauges than the DA runs)

- AIRS and AMSU-A observation converters:

- Updated the documentation to use up-to-date build suggestions for the HDFEOS library
- Updated the AIRS converter code to be able to use version 7 of the AIRS data formats
- Removed unused and non-functional code: AIRS/BUILD_HDF-EOS.sh, AIRS/L1_AMSUA_to_netcdf.f90,
AIRS/shell_scripts/Build_HDF_to_netCDF.sh, AIRS/shell_scripts/Convert_HDF_to_netCDF.csh
- Removed the unnecessary entries from obs_def_rttov_nml in the input.nml

- Added a citation.cff file to help users correctly cite DART software - creates a link to cite
the repository on the landing page sidebar on GitHub.

**March 13 2024 :: Update WRF-DART scripts and bug template to Derecho; remove no-op routines in ensemble manager. Tag v11.3.1**

- Updated the csh scripting templates used to run WRF-DART and WRF-DART tutorial from Cheyenne to Derecho
- Updated bug report template to use Derecho instead of Cheyenne
- Removed the following no-op routines from ensemble manager: prepare_to_write_to_vars, prepare_to_write_to_copies,
prepare_to_read_from_vars, prepare_to_read_from_copies, prepare_to_update_vars, prepare_to_update_copies

**March 12 2024 :: MITgcm/N-BLING with Compressed Staggered Grids. Tag v11.3.0**

- The DART-MITgcm code now supports compressed grids, especially suited for areas like
the Red Sea where land occupies more than 90% of the domain.
Built upon work *contributed by Jiachen Liu*.
- Allows writing the BGC fields into MITgcm's pickup files.
- Allows different compression for the regular and staggered grids.

**March 12 2024 :: Aether lat-lon. Tag v11.2.0**

- Aether lat-lon interface added to DART.

**March 11 2024 :: SEIR model for infectious diseases. Tag v11.1.0**

- Added SEIR model which simulates the spread of infectious diseases, for example COVID-19.

**February 13 2024 :: Fortran Standards. Tag v11.0.3**

- Replace f2kcli with Fortran intrinsics for command line arguments.
- AIRS and quikscat mkmf.templates with appropriate HDF, HDFEOS, RTTOV library flags.
- Simplified noah_hydro_mod.f90 number of non-zero element counts.
- WRF pert_sounding_module random iseed now integer.

**February 1 2024 :: RTTOV13 cloud bug-fix. Tag v11.0.2**

- Initialize RTTOV13 profile cloud arrays to zero for profiles.
- Updated docs with RTTOV13 namelist info.
- New obs_def_rttov13_mod.f90 namelist option wfetch_value.
- Updated mkmf.templates for RTTOV on Derecho: HDF5 library flags.

GitHub actions changes:

- checkout action updated to v4.

**January 17 2024 :: CLM bug-fixes. Tag v11.0.1**

- CLM5-DART SourceMods path variable correction

- dart_to_clm:

- Resolved compiler error by changing the arrays for number of snow layers (snlsno and clm_SNLSNO) to integer types

- Forcing h2oliq_po to be slightly larger than zero to be consistent with h2oice_po and dzsno_po

- Adding checks to ensure that the values for h2oliq_po, h2oice_po, dzsno_po, and snowdp_po are never negative

**January 11 2024 :: QCEFF. Tag v11.0.0**

Nonlinear and Non-Gaussian Data Assimilation Capabilities in DART
Expand Down
9 changes: 9 additions & 0 deletions CITATION.cff
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
cff-version: 1.2.0
message: "To cite DART, please use the following metadata. Update the DART version and year as appropriate."
title: "The Data Assimilation Research Testbed"
version: "X.Y.Z"
date-released: "2024-03-13"
doi: "10.5065/D6WQ0202"
authors:
- name: "UCAR/NSF NCAR/CISL/DAReS"
city: "Boulder, Colorado"
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ git clone https://github.com/NCAR/DART.git

To cite DART, please use the following text:

> The Data Assimilation Research Testbed (Version X.Y.Z) [Software]. (2021). Boulder, Colorado: UCAR/NCAR/CISL/DAReS.
> The Data Assimilation Research Testbed (Version X.Y.Z) [Software]. (2021). Boulder, Colorado: UCAR/NSF NCAR/CISL/DAReS.
> http://doi.org/10.5065/D6WQ0202
and update the DART version and year as appropriate.
Expand Down
8 changes: 2 additions & 6 deletions assimilation_code/modules/assimilation/assim_tools_mod.pf.f90
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ module assim_tools_mod

use ensemble_manager_mod, only : ensemble_type, get_my_num_vars, get_my_vars, &
compute_copy_mean_var, get_var_owner_index, &
prepare_to_update_copies, map_pe_to_task
map_pe_to_task

use mpi_utilities_mod, only : my_task_id, broadcast_send, broadcast_recv, &
sum_across_tasks, task_count, start_mpi_timer, &
Expand Down Expand Up @@ -165,7 +165,7 @@ module assim_tools_mod
real(r8) :: pf_alpha = 0.30_r8
integer :: pf_kddm = 0
logical :: sampling_weighted_prior = .true.
logical :: pf_enkf_hybrid = .true.
logical :: pf_enkf_hybrid = .false.
real(r8) :: min_residual = 0.5_r8
integer :: pf_maxiter = 3
real(r8) :: pf_kf_rtps_coeff = 0.0_r8
Expand Down Expand Up @@ -496,10 +496,6 @@ subroutine filter_assim(ens_handle, obs_ens_handle, obs_seq, keys, &
my_state_loc( ens_handle%my_num_vars))
! end alloc

! we are going to read/write the copies array
call prepare_to_update_copies(ens_handle)
call prepare_to_update_copies(obs_ens_handle)

! Initialize assim_tools_module if needed
if (.not. module_initialized) call assim_tools_init()

Expand Down
4 changes: 3 additions & 1 deletion assimilation_code/modules/assimilation/assim_tools_mod.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
.. _assim_tools:

MODULE assim_tools_mod
======================

Expand Down Expand Up @@ -289,7 +291,7 @@ Description of each namelist entry
*type:* character(len=256)

If adjust_obs_impact is true, the name of the file with the observation types and quantities and state quantities
that should have have an additional factor applied to the correlations during assimilation.
that should have an additional factor applied to the correlations during assimilation.

``allow_any_impact_values``
*type:* logical
Expand Down
16 changes: 4 additions & 12 deletions assimilation_code/modules/assimilation/filter_mod.dopplerfold.f90
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,10 @@ module filter_mod
compute_copy_mean, compute_copy_mean_sd, &
compute_copy_mean_var, duplicate_ens, get_copy_owner_index, &
get_ensemble_time, set_ensemble_time, broadcast_copy, &
map_pe_to_task, prepare_to_update_copies, &
copies_in_window, set_num_extra_copies, get_allow_transpose, &
all_copies_to_all_vars, allocate_single_copy, allocate_vars, &
get_single_copy, put_single_copy, deallocate_single_copy, &
print_ens_handle
map_pe_to_task, copies_in_window, set_num_extra_copies, &
get_allow_transpose, all_copies_to_all_vars, &
allocate_single_copy, allocate_vars, get_single_copy, &
put_single_copy, deallocate_single_copy, print_ens_handle

use adaptive_inflate_mod, only : do_ss_inflate, mean_from_restart, sd_from_restart, &
inflate_ens, adaptive_inflate_init, &
Expand Down Expand Up @@ -806,7 +805,6 @@ subroutine filter_main()
call trace_message('Before prior inflation damping and prep')

if (inf_damping(PRIOR_INF) /= 1.0_r8) then
call prepare_to_update_copies(state_ens_handle)
state_ens_handle%copies(PRIOR_INF_COPY, :) = 1.0_r8 + &
inf_damping(PRIOR_INF) * (state_ens_handle%copies(PRIOR_INF_COPY, :) - 1.0_r8)
endif
Expand Down Expand Up @@ -907,7 +905,6 @@ subroutine filter_main()
call trace_message('Before posterior inflation damping')

if (inf_damping(POSTERIOR_INF) /= 1.0_r8) then
call prepare_to_update_copies(state_ens_handle)
state_ens_handle%copies(POST_INF_COPY, :) = 1.0_r8 + &
inf_damping(POSTERIOR_INF) * (state_ens_handle%copies(POST_INF_COPY, :) - 1.0_r8)
endif
Expand Down Expand Up @@ -1549,9 +1546,6 @@ subroutine filter_ensemble_inflate(ens_handle, inflate_copy, inflate, ENS_MEAN_C

integer :: j, group, grp_bot, grp_top, grp_size

! Assumes that the ensemble is copy complete
call prepare_to_update_copies(ens_handle)

! Inflate each group separately; Divide ensemble into num_groups groups
grp_size = ens_size / num_groups

Expand Down Expand Up @@ -2827,8 +2821,6 @@ subroutine update_observations_radar(obs_ens_handle, ens_size, seq, keys, prior_
! for quiet execution, set it to false.
verbose = .true.

call prepare_to_update_copies(obs_ens_handle)

do j = 1, obs_ens_handle%my_num_vars
! get the key number associated with each of my subset of obs
! then get the obs and extract info from it.
Expand Down
14 changes: 4 additions & 10 deletions assimilation_code/modules/assimilation/filter_mod.f90
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,10 @@ module filter_mod
compute_copy_mean, compute_copy_mean_sd, &
compute_copy_mean_var, duplicate_ens, get_copy_owner_index, &
get_ensemble_time, set_ensemble_time, broadcast_copy, &
map_pe_to_task, prepare_to_update_copies, &
copies_in_window, set_num_extra_copies, get_allow_transpose, &
all_copies_to_all_vars, allocate_single_copy, allocate_vars, &
get_single_copy, put_single_copy, deallocate_single_copy, &
print_ens_handle
map_pe_to_task, copies_in_window, set_num_extra_copies, &
get_allow_transpose, all_copies_to_all_vars, &
allocate_single_copy, allocate_vars, get_single_copy, &
put_single_copy, deallocate_single_copy, print_ens_handle

use adaptive_inflate_mod, only : do_ss_inflate, mean_from_restart, sd_from_restart, &
inflate_ens, adaptive_inflate_init, &
Expand Down Expand Up @@ -809,7 +808,6 @@ subroutine filter_main()
call trace_message('Before prior inflation damping and prep')

if (inf_damping(PRIOR_INF) /= 1.0_r8) then
call prepare_to_update_copies(state_ens_handle)
state_ens_handle%copies(PRIOR_INF_COPY, :) = 1.0_r8 + &
inf_damping(PRIOR_INF) * (state_ens_handle%copies(PRIOR_INF_COPY, :) - 1.0_r8)
endif
Expand Down Expand Up @@ -910,7 +908,6 @@ subroutine filter_main()
call trace_message('Before posterior inflation damping')

if (inf_damping(POSTERIOR_INF) /= 1.0_r8) then
call prepare_to_update_copies(state_ens_handle)
state_ens_handle%copies(POST_INF_COPY, :) = 1.0_r8 + &
inf_damping(POSTERIOR_INF) * (state_ens_handle%copies(POST_INF_COPY, :) - 1.0_r8)
endif
Expand Down Expand Up @@ -1566,9 +1563,6 @@ subroutine filter_ensemble_inflate(ens_handle, inflate_copy, inflate, ENS_MEAN_C
real(r8) :: lower_bound, upper_bound
integer :: dist_type

! Assumes that the ensemble is copy complete
call prepare_to_update_copies(ens_handle)

! Inflate each group separately; Divide ensemble into num_groups groups
grp_size = ens_size / num_groups

Expand Down
6 changes: 2 additions & 4 deletions assimilation_code/modules/assimilation/obs_model_mod.f90
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ module obs_model_mod
operator(/=), operator(>), operator(-), &
operator(/), operator(+), operator(<), operator(==), &
operator(<=), operator(>=)
use ensemble_manager_mod, only : get_ensemble_time, ensemble_type, map_task_to_pe, &
prepare_to_update_vars
use ensemble_manager_mod, only : get_ensemble_time, ensemble_type, map_task_to_pe

use mpi_utilities_mod, only : my_task_id, task_sync, block_task, &
sum_across_tasks, shell_execute, my_task_id
use io_filenames_mod, only : file_info_type
Expand Down Expand Up @@ -348,8 +348,6 @@ subroutine advance_state(ens_handle, ens_size, target_time, async, adv_ens_comma
! Ok, this task does need to advance something.
need_advance = 1

call prepare_to_update_vars(ens_handle)

! Increment number of ensemble member copies I have.
my_num_state_copies = my_num_state_copies + 1

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@ module forward_operator_mod
use obs_kind_mod, only : assimilate_this_type_of_obs, evaluate_this_type_of_obs

use ensemble_manager_mod, only : ensemble_type, compute_copy_mean_var, &
prepare_to_read_from_vars, &
prepare_to_write_to_vars, &
get_my_num_copies, copies_in_window, &
get_allow_transpose, all_vars_to_all_copies, &
all_copies_to_all_vars, allocate_single_copy, &
Expand Down Expand Up @@ -127,11 +125,6 @@ subroutine get_obs_ens_distrib_state(ens_handle, obs_fwd_op_ens_handle, &
istatus = 999123
expected_obs = MISSING_R8

! FIXME: these no longer do anything?
! call prepare_to_write_to_vars(obs_fwd_op_ens_handle)
! call prepare_to_write_to_vars(qc_ens_handle)
! call prepare_to_read_from_vars(ens_handle)

! Set up access to the state
call create_state_window(ens_handle, obs_fwd_op_ens_handle, qc_ens_handle)

Expand Down
Loading

0 comments on commit 0bd4d47

Please sign in to comment.