Skip to content

Commit 3cb5b4a

Browse files
Merge BRIDGE into main in prep of release v3.1.0 (#128)
2 parents 59205df + cae626c commit 3cb5b4a

28 files changed

+3230
-760
lines changed

CHANGELOG.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2121

2222
-----------------------------
2323

24+
## [v3.1.0] - 2025-06-26
25+
26+
- 0-diff vs. v3.0.0.
27+
28+
### Added
29+
30+
- Added python package for post-processing ObsFcstAna output into data assimilation diagnostics ([PR #87](https://github.com/GEOS-ESM/GEOSldas_GridComp/pull/87), [PR #111](https://github.com/GEOS-ESM/GEOSldas_GridComp/pull/111)).
31+
- Support for 2d output from EASE tile space and 2d output on EASE grid:
32+
- Switched EASE grid handling to new MAPL EASE Grid Factory ([PR #115](https://github.com/GEOS-ESM/GEOSldas_GridComp/pull/115)).
33+
- Revised pre-processing of HISTORY template ([PR #118](https://github.com/GEOS-ESM/GEOSldas_GridComp/pull/118)).
34+
- Support for tile space of stretched cube-sphere grids ([PR #109](https://github.com/GEOS-ESM/GEOSldas_GridComp/pull/109)).
35+
36+
### Changed
37+
38+
- Revised experiment setup for coupled land-atm DAS ([PR #102](https://github.com/GEOS-ESM/GEOSldas_GridComp/pull/102)).
39+
- Updated defaults in LDASsa_DEFAULT_inputs_*.nml files ([PR #104](https://github.com/GEOS-ESM/GEOSldas_GridComp/pull/104)).
40+
- Added optional SLURM "constraint" ([PR #112](https://github.com/GEOS-ESM/GEOSldas_GridComp/pull/112)).
41+
- Specify only "ntasks_model" in SLURM resource request ([PR #106](https://github.com/GEOS-ESM/GEOSldas_GridComp/pull/106)).
42+
43+
### Fixed
44+
45+
- UDUNITS error ([PR #101](https://github.com/GEOS-ESM/GEOSldas_GridComp/pull/101), [PR #123](https://github.com/GEOS-ESM/GEOSldas_GridComp/pull/123)).
46+
47+
-----------------------------
48+
2449
## [v3.0.0] - 2025-05-28
2550

2651
- 0-diff vs. v2.0.0.

GEOS_LdasGridComp.F90

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,15 @@ module GEOS_LdasGridCompMod
77
! !USES
88

99
use ESMF
10-
use MAPL_Mod
11-
10+
use MAPL
11+
1212
use GEOS_MetforceGridCompMod, only: MetforceSetServices => SetServices
1313
use GEOS_LandGridCompMod, only: LandSetServices => SetServices
1414
use GEOS_LandPertGridCompMod, only: LandPertSetServices => SetServices
1515
use GEOS_EnsGridCompMod, only: EnsSetServices => SetServices
1616
use GEOS_LandAssimGridCompMod, only: LandAssimSetServices => SetServices
1717
use GEOS_LandiceGridCompMod, only: LandiceSetServices => SetServices
1818

19-
use EASE_conv, only: ease_inverse
2019
use LDAS_TileCoordType, only: tile_coord_type , T_TILECOORD_STATE, TILECOORD_WRAP
2120
use LDAS_TileCoordType, only: grid_def_type, io_grid_def_type, operator (==)
2221
use LDAS_TileCoordRoutines, only: get_minExtent_grid, get_ij_ind_from_latlon, io_domain_files
@@ -537,12 +536,12 @@ subroutine Initialize(gc, import, export, clock, rc)
537536
call ESMF_GRID_INTERIOR(agrid,I1,IN,J1,JN)
538537

539538
do I = 1,size(centerX,1)
540-
call ease_inverse(gridname,1.0*(I+I1-2),0.0,lat,lon)
539+
call MAPL_ease_inverse(gridname,1.0*(I+I1-2),0.0,lat,lon)
541540
centerX(I,:) = lon * MAPL_DEGREES_TO_RADIANS
542541
enddo
543542

544543
do J = 1,size(centerY,2)
545-
call ease_inverse(gridname,0.0,1.0*(J+J1-2),lat,lon)
544+
call MAPL_ease_inverse(gridname,0.0,1.0*(J+J1-2),lat,lon)
546545
centerY(:,J) = lat * MAPL_DEGREES_TO_RADIANS
547546
enddo
548547

GEOSlandassim_GridComp/clsm_ensupd_enkf_update.F90

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ module clsm_ensupd_enkf_update
7474
use nr_ran2_gasdev, ONLY: &
7575
NRANDSEED
7676

77-
use ease_conv, ONLY: &
78-
ease_convert
77+
use MAPL, ONLY: &
78+
MAPL_ease_convert
7979

8080
use my_matrix_functions, ONLY: &
8181
row_std
@@ -2235,7 +2235,7 @@ subroutine write_smapL4SMaup( option, date_time, exp_id, N_ens, &
22352235
)
22362236

22372237
if (index(tile_grid_g%gridtype, 'M09') /=0) then
2238-
call ease_convert(trim(tile_grid_g%gridtype), this_lat, this_lon, col_ind, row_ind)
2238+
call MAPL_ease_convert(trim(tile_grid_g%gridtype), this_lat, this_lon, col_ind, row_ind)
22392239
endif
22402240

22412241
! col_ind and row_ind are zero-based, need one-based index here
@@ -2254,7 +2254,7 @@ subroutine write_smapL4SMaup( option, date_time, exp_id, N_ens, &
22542254
)
22552255

22562256
if (index(tile_grid_g%gridtype, 'M09') /=0) then
2257-
call ease_convert(trim(tile_grid_g%gridtype), this_lat, this_lon, col_ind, row_ind)
2257+
call MAPL_ease_convert(trim(tile_grid_g%gridtype), this_lat, this_lon, col_ind, row_ind)
22582258
endif
22592259

22602260
! col_ind and row_ind are zero-based, need one-based index here
@@ -2278,7 +2278,7 @@ subroutine write_smapL4SMaup( option, date_time, exp_id, N_ens, &
22782278
if (index(tile_grid_g%gridtype, 'M09') /=0) then
22792279
! subindex (1:7) to get the string EASEvx_
22802280
gridname_tmp = tile_grid_g%gridtype(1:7)//'M36'
2281-
call ease_convert(gridname_tmp, this_lat, this_lon, col_ind, row_ind)
2281+
call MAPL_ease_convert(gridname_tmp, this_lat, this_lon, col_ind, row_ind)
22822282
endif
22832283

22842284
! col_ind and row_ind are zero-based, need one-based index here

GEOSlandassim_GridComp/clsm_ensupd_read_obs.F90

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ module clsm_ensupd_read_obs
2525
use io_hdf5, ONLY: &
2626
hdf5read
2727

28-
use EASE_conv, ONLY: &
29-
ease_convert, &
30-
ease_extent
28+
use MAPL, ONLY: &
29+
MAPL_ease_convert, &
30+
MAPL_ease_extent
3131

3232
use LDAS_ensdrv_globals, ONLY: &
3333
logit, &
@@ -5542,12 +5542,12 @@ subroutine read_obs_SMOS( date_time, N_catd, this_obs_param, &
55425542

55435543
if (tmp_tile_num(ii)>0) then
55445544

5545-
call ease_convert('EASEv2_M36', &
5545+
call MAPL_ease_convert('EASEv2_M36', &
55465546
tile_coord(tmp_tile_num(ii))%com_lat, &
55475547
tile_coord(tmp_tile_num(ii))%com_lon, &
55485548
M36_col_ind_tile, M36_row_ind_tile )
55495549

5550-
call ease_convert('EASEv2_M36', &
5550+
call MAPL_ease_convert('EASEv2_M36', &
55515551
tmp_lat(ii), &
55525552
tmp_lon(ii), &
55535553
M36_col_ind_obs, M36_row_ind_obs )
@@ -7159,12 +7159,12 @@ subroutine read_obs_SMAP_FT( date_time, N_catd, this_obs_param, &
71597159

71607160
if (tmp_tile_num(ii)>0) then
71617161

7162-
call ease_convert('EASEv2_M09', &
7162+
call MAPL_ease_convert('EASEv2_M09', &
71637163
tile_coord(tmp_tile_num(ii))%com_lat, &
71647164
tile_coord(tmp_tile_num(ii))%com_lon, &
71657165
M09_col_ind_tile, M09_row_ind_tile )
71667166

7167-
call ease_convert('EASEv2_M09', &
7167+
call MAPL_ease_convert('EASEv2_M09', &
71687168
tmp_lat(ii), &
71697169
tmp_lon(ii), &
71707170
M09_col_ind_obs, M09_row_ind_obs )
@@ -8229,12 +8229,12 @@ subroutine read_obs_SMAP_halforbit_Tb( date_time, N_catd, this_obs_param, &
82298229

82308230
if (tmp_tile_num(ii)>0) then
82318231

8232-
call ease_convert('EASEv2_M36', &
8232+
call MAPL_ease_convert('EASEv2_M36', &
82338233
tile_coord(tmp_tile_num(ii))%com_lat, &
82348234
tile_coord(tmp_tile_num(ii))%com_lon, &
82358235
M36_col_ind_tile, M36_row_ind_tile )
82368236

8237-
call ease_convert('EASEv2_M36', &
8237+
call MAPL_ease_convert('EASEv2_M36', &
82388238
tmp_lat(ii), &
82398239
tmp_lon(ii), &
82408240
M36_col_ind_obs, M36_row_ind_obs )
@@ -8529,7 +8529,7 @@ subroutine turn_off_assim_SMAP_L1CTb(N_obs_param, obs_param, N_obsl, Observation
85298529
!
85308530
! assemble 36 km EASEv2 mask of L2AP_Tb obs
85318531

8532-
call ease_extent( 'EASEv2_M36', N_cols, N_rows )
8532+
call MAPL_ease_extent( 'EASEv2_M36', N_cols, N_rows )
85338533

85348534
allocate( mask_h_A(N_cols,N_rows) )
85358535
allocate( mask_h_D(N_cols,N_rows) )
@@ -8551,7 +8551,7 @@ subroutine turn_off_assim_SMAP_L1CTb(N_obs_param, obs_param, N_obsl, Observation
85518551

85528552
if (Observations_f(ii)%species==species_L2AP_Tbh_A) then
85538553

8554-
call ease_convert('EASEv2_M36', Observations_f(ii)%lat, Observations_f(ii)%lon, &
8554+
call MAPL_ease_convert('EASEv2_M36', Observations_f(ii)%lat, Observations_f(ii)%lon, &
85558555
col, row)
85568556

85578557
! set mask=.true. for the M36 grid cell that contains the L2AP_Tb obs;
@@ -8573,7 +8573,7 @@ subroutine turn_off_assim_SMAP_L1CTb(N_obs_param, obs_param, N_obsl, Observation
85738573

85748574
if (Observations_f(ii)%species==species_L2AP_Tbh_D) then
85758575

8576-
call ease_convert('EASEv2_M36', Observations_f(ii)%lat, Observations_f(ii)%lon, &
8576+
call MAPL_ease_convert('EASEv2_M36', Observations_f(ii)%lat, Observations_f(ii)%lon, &
85778577
col, row)
85788578

85798579
! set mask=.true. for the M36 grid cell that contains the L2AP_Tb obs;
@@ -8595,7 +8595,7 @@ subroutine turn_off_assim_SMAP_L1CTb(N_obs_param, obs_param, N_obsl, Observation
85958595

85968596
if (Observations_f(ii)%species==species_L2AP_Tbv_A) then
85978597

8598-
call ease_convert('EASEv2_M36', Observations_f(ii)%lat, Observations_f(ii)%lon, &
8598+
call MAPL_ease_convert('EASEv2_M36', Observations_f(ii)%lat, Observations_f(ii)%lon, &
85998599
col, row)
86008600

86018601
! set mask=.true. for the M36 grid cell that contains the L2AP_Tb obs;
@@ -8617,7 +8617,7 @@ subroutine turn_off_assim_SMAP_L1CTb(N_obs_param, obs_param, N_obsl, Observation
86178617

86188618
if (Observations_f(ii)%species==species_L2AP_Tbv_D) then
86198619

8620-
call ease_convert('EASEv2_M36', Observations_f(ii)%lat, Observations_f(ii)%lon, &
8620+
call MAPL_ease_convert('EASEv2_M36', Observations_f(ii)%lat, Observations_f(ii)%lon, &
86218621
col, row)
86228622

86238623
! set mask=.true. for the M36 grid cell that contains the L2AP_Tb obs;
@@ -8652,7 +8652,7 @@ subroutine turn_off_assim_SMAP_L1CTb(N_obs_param, obs_param, N_obsl, Observation
86528652

86538653
if (Observations_l(ii)%species==species_L1C_Tbh_A) then
86548654

8655-
call ease_convert('EASEv2_M36', &
8655+
call MAPL_ease_convert('EASEv2_M36', &
86568656
Observations_l(ii)%lat, Observations_l(ii)%lon, col, row)
86578657

86588658
! note conversion to one-based indices
@@ -8671,7 +8671,7 @@ subroutine turn_off_assim_SMAP_L1CTb(N_obs_param, obs_param, N_obsl, Observation
86718671

86728672
if (Observations_l(ii)%species==species_L1C_Tbh_D) then
86738673

8674-
call ease_convert('EASEv2_M36', &
8674+
call MAPL_ease_convert('EASEv2_M36', &
86758675
Observations_l(ii)%lat, Observations_l(ii)%lon, col, row)
86768676

86778677
! note conversion to one-based indices
@@ -8692,7 +8692,7 @@ subroutine turn_off_assim_SMAP_L1CTb(N_obs_param, obs_param, N_obsl, Observation
86928692

86938693
if (Observations_l(ii)%species==species_L1C_Tbv_A) then
86948694

8695-
call ease_convert('EASEv2_M36', &
8695+
call MAPL_ease_convert('EASEv2_M36', &
86968696
Observations_l(ii)%lat, Observations_l(ii)%lon, col, row)
86978697

86988698
! note conversion to one-based indices
@@ -8711,7 +8711,7 @@ subroutine turn_off_assim_SMAP_L1CTb(N_obs_param, obs_param, N_obsl, Observation
87118711

87128712
if (Observations_l(ii)%species==species_L1C_Tbv_D) then
87138713

8714-
call ease_convert('EASEv2_M36', &
8714+
call MAPL_ease_convert('EASEv2_M36', &
87158715
Observations_l(ii)%lat, Observations_l(ii)%lon, col, row)
87168716

87178717
! note conversion to one-based indices

GEOSldas_App/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ configure_file(${file} ${file} @ONLY)
3939
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${file} DESTINATION bin)
4040

4141
file(GLOB rc_files GEOSldas_*rc)
42-
file(GLOB nml_files LDASsa_DEFAULT*nml)
42+
file(GLOB nml_files LDASsa_DEFAULT*nml LandAtmDAS_nml/LDASsa_SPECIAL*nml )
4343

4444
install(
4545
FILES ${rc_files} ${nml_files}

GEOSldas_App/GEOSldas_HIST.rc

Lines changed: 42 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,23 @@
11
# Sample HISTORY.rc file for GEOSldas
22
#
33
# This HISTORY template is edited by "ldas_setup" via "process_hist.csh".
4-
# The strings '#ASSIM', '#EASE', and '#CUBE' are *not* linked to MAPL HISTORY
5-
# functionality. For example, the line
6-
# "#CUBE 'tavg24_2d_lnd_Nx'"
7-
# does *not* mean that the 'lnd' output will be on a cube-sphere grid.
84

9-
#CUBE VERSION: 1
5+
VERSION: 1
6+
7+
# Must edit 'EXPID' manually if HISTORY file is re-used without going through "ldas_setup".
108

11-
# Must edit 'EXPID' manually if HISTORY file is re-used without going
12-
# through "ldas_setup".
13-
#
149
EXPID: GEOSldas_expid
1510

11+
# ------------------------------------------------------------------------------------------------
12+
13+
# pre-defined Collections
14+
1615
COLLECTIONS:
17-
#EASE 'tavg24_1d_lfs_Nt'
18-
#CUBE 'tavg24_2d_lfs_Nx'
19-
#EASE 'tavg24_1d_lnd_Nt'
20-
#CUBE 'tavg24_2d_lnd_Nx'
21-
#ASSIM 'SMAP_L4_SM_gph'
16+
#OUT1d 'tavg24_1d_lfs_Nt'
17+
#OUT2d 'tavg24_2d_lfs_Nx'
18+
#OUT1d 'tavg24_1d_lnd_Nt'
19+
#OUT2d 'tavg24_2d_lnd_Nx'
20+
# 'SMAP_L4_SM_gph'
2221
# 'inst1_1d_lnr_Nt'
2322
# 'catch_progn_incr'
2423
# 'inst3_1d_lndfcstana_Nt'
@@ -29,24 +28,34 @@ COLLECTIONS:
2928
# 'tavg24_1d_glc_Nt'
3029
::
3130

32-
#CUBE GRID_LABELS: PC720x361-DC
33-
#CUBE PC1440x721-DC
31+
# --------------------------------------------------------------------------------------------------
32+
33+
# 2d output can be on the following grids (see [COLLECTION_NAME].grid_label])
34+
35+
GRID_LABELS: PC720x361-DC
36+
PC1440x721-DC
37+
EASEv2_M36
38+
::
39+
40+
PC720x361-DC.GRID_TYPE: LatLon
41+
PC720x361-DC.IM_WORLD: 720
42+
PC720x361-DC.JM_WORLD: 361
43+
PC720x361-DC.POLE: PC
44+
PC720x361-DC.DATELINE: DC
45+
PC720x361-DC.LM: 1
3446

35-
#CUBE ::
47+
PC1440x721-DC.GRID_TYPE: LatLon
48+
PC1440x721-DC.IM_WORLD: 1440
49+
PC1440x721-DC.JM_WORLD: 721
50+
PC1440x721-DC.POLE: PC
51+
PC1440x721-DC.DATELINE: DC
52+
PC1440x721-DC.LM: 1
3653

37-
#CUBE PC720x361-DC.GRID_TYPE: LatLon
38-
#CUBE PC720x361-DC.IM_WORLD: 720
39-
#CUBE PC720x361-DC.JM_WORLD: 361
40-
#CUBE PC720x361-DC.POLE: PC
41-
#CUBE PC720x361-DC.DATELINE: DC
42-
#CUBE PC720x361-DC.LM: 1
54+
EASEv2_M36.GRID_TYPE: EASE
55+
EASEv2_M36.GRIDNAME: EASEv2_M36
56+
EASEv2_M36.LM: 1
4357

44-
#CUBE PC1440x721-DC.GRID_TYPE: LatLon
45-
#CUBE PC1440x721-DC.IM_WORLD: 1440
46-
#CUBE PC1440x721-DC.JM_WORLD: 721
47-
#CUBE PC1440x721-DC.POLE: PC
48-
#CUBE PC1440x721-DC.DATELINE: DC
49-
#CUBE PC1440x721-DC.LM: 1
58+
# --------------------------------------------------------------------------------------------------
5059

5160
# Detailed definition of the collections listed above
5261
#
@@ -219,15 +228,16 @@ COLLECTIONS:
219228

220229
tavg24_2d_lnd_Nx.format: 'CFIO',
221230
tavg24_2d_lnd_Nx.descr: '2d,Daily,Time-Averaged,Single-Level,Assimilation,Land Surface Diagnostics',
222-
tavg24_2d_lnd_Nx.nbits: 12,
231+
tavg24_2d_lnd_Nx.nbits: 12,
223232
tavg24_2d_lnd_Nx.template: '%y4%m2%d2_%h2%n2z.nc4',
224233
tavg24_2d_lnd_Nx.mode: 'time-averaged',
225234
tavg24_2d_lnd_Nx.frequency: 240000,
226235
tavg24_2d_lnd_Nx.ref_time: 000000,
227-
tavg24_2d_lnd_Nx.regrid_exch: '../input/tile.data'
228-
tavg24_2d_lnd_Nx.regrid_name: 'GRIDNAME'
236+
tavg24_2d_lnd_Nx.regrid_exch: '../input/tile.data',
237+
tavg24_2d_lnd_Nx.regrid_name: 'GRIDNAME',
229238
# tavg24_2d_lnd_Nx.regrid_method: 'BILINEAR_MONOTONIC' ,
230-
tavg24_2d_lnd_Nx.grid_label: PC720x361-DC
239+
tavg24_2d_lnd_Nx.grid_label: PC720x361-DC,
240+
# tavg24_2d_lnd_Nx.grid_label: EASEv2_M36,
231241
tavg24_2d_lnd_Nx.deflate: 2,
232242
tavg24_2d_lnd_Nx.fields: 'GRN' , 'VEGDYN' ,
233243
'LAI' , 'VEGDYN' ,

GEOSldas_App/LDASsa_DEFAULT_inputs_ensprop.nml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,8 @@ coarsen_force_pert%wind = .false.
188188
! (limits on range of random numbers: specify max absolute value
189189
! allowed to be drawn from a standard normal distribution)
190190

191-
std_normal_max_force_pert%pcp = 2.5
192-
std_normal_max_force_pert%sw = 2.5
191+
std_normal_max_force_pert%pcp = 3.
192+
std_normal_max_force_pert%sw = 3.
193193
std_normal_max_force_pert%lw = 2.5
194194
std_normal_max_force_pert%tair = 2.5
195195
std_normal_max_force_pert%qair = 2.5

0 commit comments

Comments
 (0)