Skip to content

Commit 59205df

Browse files
Merge develop into main in prep for release v3.0.0 (#100)
Merge develop into main in prep for release v3.0.0
2 parents 5d6e618 + 7e64aa4 commit 59205df

21 files changed

+2870
-3317
lines changed

.circleci/config.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
version: 2.1
22

33
# Anchors in case we need to override the defaults from the orb
4-
#baselibs_version: &baselibs_version v7.17.0
5-
#bcs_version: &bcs_version v11.4.0
4+
#baselibs_version: &baselibs_version v7.33.0
5+
#bcs_version: &bcs_version v11.6.0
66

77
orbs:
8-
ci: geos-esm/circleci-tools@2
8+
ci: geos-esm/circleci-tools@4
99

1010
workflows:
1111
build-test:

.github/workflows/workflow.yml

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
if: "!contains(github.event.pull_request.labels.*.name, '0 diff trivial')"
2323
runs-on: ubuntu-24.04
2424
container:
25-
image: gmao/ubuntu24-geos-env:v7.32.0-intelmpi_2021.13-ifort_2021.13
25+
image: gmao/ubuntu24-geos-env:v7.33.0-intelmpi_2021.13-ifort_2021.13
2626

2727
env:
2828
OMPI_ALLOW_RUN_AS_ROOT: 1
@@ -56,9 +56,11 @@ jobs:
5656
mepo clone --partial blobless
5757
mepo status
5858
59+
- name: Debug PR branch
60+
run: echo "PR is coming from ${{ github.event.pull_request.head.ref }}"
61+
5962
- name: Update other branches
60-
if:
61-
"!contains('refs/heads/main,refs/heads/develop', github.ref)"
63+
if: ${{ github.event.pull_request.head.ref != 'main' && github.event.pull_request.head.ref != 'develop' }}
6264
run: |
6365
mepo checkout-if-exists ${GITHUB_HEAD_REF}
6466
mepo status
@@ -78,7 +80,7 @@ jobs:
7880
if: "!contains(github.event.pull_request.labels.*.name, '0 diff trivial')"
7981
runs-on: ubuntu-24.04
8082
container:
81-
image: gmao/ubuntu24-geos-env-mkl:v7.32.0-openmpi_5.0.5-gcc_14.2.0
83+
image: gmao/ubuntu24-geos-env-mkl:v7.33.0-openmpi_5.0.5-gcc_14.2.0
8284

8385
env:
8486
OMPI_ALLOW_RUN_AS_ROOT: 1
@@ -112,9 +114,11 @@ jobs:
112114
mepo clone --partial blobless
113115
mepo status
114116
117+
- name: Debug PR branch
118+
run: echo "PR is coming from ${{ github.event.pull_request.head.ref }}"
119+
115120
- name: Update other branches
116-
if:
117-
"!contains('refs/heads/main,refs/heads/develop', github.ref)"
121+
if: ${{ github.event.pull_request.head.ref != 'main' && github.event.pull_request.head.ref != 'develop' }}
118122
run: |
119123
mepo checkout-if-exists ${GITHUB_HEAD_REF}
120124
mepo status

CHANGELOG.md

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

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

24+
## [v3.0.0] - 2025-05-28
25+
26+
- 0-diff vs. v2.0.0.
27+
28+
### Added
29+
30+
- Added functionality to simulate landice tiles ([PR #18](https://github.com/GEOS-ESM/GEOSldas_GridComp/pull/18)).
31+
- Added functionality to read nc4-formatted tile file ([PR #18](https://github.com/GEOS-ESM/GEOSldas_GridComp/pull/18)).
32+
- Added model-based QC of (MODIS) snow cover area fraction observations using layer-1 soil temperature ([PR #96](https://github.com/GEOS-ESM/GEOSldas_GridComp/pull/96)).
33+
- Added default settings and command line args for coupled land-atm DAS ([PR #94](https://github.com/GEOS-ESM/GEOSldas_GridComp/pull/94)).
34+
35+
------------------------------
36+
2437
## [v2.0.0] - 2025-04-15
2538

2639
- 0-diff vs. v1.1.0.

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ esma_add_library(${this}
1111
SRCS GEOS_LdasGridComp.F90
1212
SUBCOMPONENTS ${alldirs}
1313
SUBDIRS LDAS_Shared
14-
DEPENDENCIES GEOSland_GridComp makebcs MAPL
14+
DEPENDENCIES GEOSland_GridComp GEOSlandice_GridComp makebcs MAPL
1515
INCLUDES ${INC_ESMF})
1616

1717
esma_add_subdirectory(GEOSldas_App)

GEOS_LdasGridComp.F90

Lines changed: 338 additions & 247 deletions
Large diffs are not rendered by default.

GEOSlandassim_GridComp/clsm_ensupd_upd_routines.F90

Lines changed: 49 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1213,8 +1213,9 @@ subroutine get_obs_pred( &
12131213

12141214
case('asnow')
12151215

1216-
get_asnow_l = .true.
1217-
get_asnow_lH = .true.
1216+
get_asnow_l = .true.
1217+
get_asnow_lH = .true.
1218+
get_tp_l = .true. ! needed for model-based QC
12181219

12191220
case default
12201221

@@ -1365,7 +1366,7 @@ subroutine get_obs_pred( &
13651366

13661367
! updated to new interface - reichle, 3 Apr 2012
13671368

1368-
call catch_calc_tp( N_catl, cat_param%poros, &
1369+
call catch_calc_tp( N_catl, cat_param%poros, &
13691370
catprogn2ghtcnt(N_catl,cat_progn(:,n_e)), tp_l )
13701371

13711372
end if
@@ -1461,9 +1462,12 @@ subroutine get_obs_pred( &
14611462
call qc_model_based_for_Tb( N_catl, precip, Tb_v_l(:,j,n_e) )
14621463

14631464
end do
1464-
1465+
14651466
end if
14661467

1468+
if (get_asnow_lH) &
1469+
call qc_model_based_for_asnow( N_catl, tp_l(1,:), asnow_l(:,n_e) )
1470+
14671471
end if
14681472

14691473
end do ! loop through ens members
@@ -2254,7 +2258,7 @@ subroutine qc_model_based_for_sat_sfmc( N_cat, precip, SWE, tsurf, &
22542258

22552259
do i=1,N_cat
22562260

2257-
! delete obs
2261+
! delete Obs_pred
22582262
! - if there is snow on the ground
22592263
! - if it is raining/snowing
22602264
! - if surface temperature is around or below freezing
@@ -2337,7 +2341,7 @@ subroutine qc_model_based_for_sat_tsurf( N_cat, precip, SWE, tp1, &
23372341

23382342
do i=1,N_cat
23392343

2340-
! delete obs
2344+
! delete Obs_pred
23412345
! - if there is snow on the ground
23422346
! - if it is raining/snowing
23432347
! - if "avoid_frozen" and frozen
@@ -2391,7 +2395,7 @@ subroutine qc_model_based_for_Tb( N_cat, precip, Tb )
23912395

23922396
do i=1,N_cat
23932397

2394-
! delete obs
2398+
! delete Obs_pred
23952399
! - if there is heavy rain or snow
23962400

23972401
! NOTE: subroutine mwRTM_get_Tb already returns no-data-values
@@ -2412,6 +2416,44 @@ subroutine qc_model_based_for_Tb( N_cat, precip, Tb )
24122416
end do
24132417

24142418
end subroutine qc_model_based_for_Tb
2419+
2420+
! *****************************************************************
2421+
2422+
subroutine qc_model_based_for_asnow( N_cat, tp1, asnow )
2423+
2424+
! Model-based quality control for MODIS SCF observations.
2425+
! Sets "asnow" to no-data when layer-1 soil temperature exceeds a threshold.
2426+
!
2427+
! amfox, 7 May 2025
2428+
!
2429+
! --------------------------------------------------------------
2430+
2431+
implicit none
2432+
2433+
integer, intent(in) :: N_cat
2434+
2435+
real, dimension(N_cat), intent(in) :: tp1 ! layer-1 soil temperature [C]
2436+
2437+
real, dimension(N_cat), intent(inout) :: asnow ! snow cover fraction [0-1]
2438+
2439+
! local variables
2440+
2441+
real, parameter :: temperature_threshold = 10. ! [C]
2442+
2443+
integer :: i
2444+
2445+
! ---------------------------------------
2446+
2447+
do i=1,N_cat
2448+
2449+
! delete Obs_pred
2450+
! - if the layer-1 soil temperature exceeds threshold
2451+
2452+
if (tp1(i) > temperature_threshold) asnow(i) = nodata_generic
2453+
2454+
end do
2455+
2456+
end subroutine qc_model_based_for_asnow
24152457

24162458
! *********************************************************************
24172459

GEOSldas_App/GEOSldas_HIST.rc

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ COLLECTIONS:
2525
# 'inst3_2d_lndfcstana_Nx'
2626
# 'const_1d_lnd_Nt'
2727
# 'const_2d_lnd_Nx'
28+
# 'tavg24_2d_glc_Nx'
29+
# 'tavg24_1d_glc_Nt'
2830
::
2931

3032
#CUBE GRID_LABELS: PC720x361-DC
@@ -543,5 +545,72 @@ COLLECTIONS:
543545
'TPSURF_ANA_ENSSTD' , 'LANDASSIM' , 'TSURF_ANA_ENSSTD' ,
544546
'TP1_ANA_ENSSTD' , 'LANDASSIM' , 'TSOIL1_ANA_ENSSTD'
545547
::
548+
549+
tavg24_2d_glc_Nx.descr: '2d,Daily,Time-Averaged,Single-Level,Land Ice Diagnostics',
550+
tavg24_2d_glc_Nx.nbits: 12,
551+
tavg24_2d_glc_Nx.template: '%y4%m2%d2_%h2%n2z.nc4' ,
552+
tavg24_2d_glc_Nx.mode: 'time-averaged' ,
553+
tavg24_2d_glc_Nx.frequency: 240000 ,
554+
tavg24_2d_glc_Nx.ref_time: 000000 ,
555+
tavg24_2d_glc_Nx.format: 'CFIO' ,
556+
tavg24_2d_glc_Nx.regrid_exch: '../input/tile.data' ,
557+
tavg24_2d_glc_Nx.regrid_name: 'GRIDNAME' ,
558+
tavg24_2d_glc_Nx.grid_label: PC720x361-DC , #comment this line out for cube face output
559+
tavg24_2d_glc_Nx.deflate: 1,
560+
tavg24_2d_glc_Nx.fields: 'ACCUM' , 'LANDICE' ,
561+
'ALBVR' , 'LANDICE' , 'ALBVR_GL' ,
562+
'ALBVF' , 'LANDICE' , 'ALBVF_GL' ,
563+
'ALBNR' , 'LANDICE' , 'ALBNR_GL' ,
564+
'ALBNF' , 'LANDICE' , 'ALBNF_GL' ,
565+
'ASNOW_GL' , 'LANDICE' ,
566+
'DELTS' , 'LANDICE' ,
567+
'DNICFLX' , 'LANDICE' ,
568+
'EVAPOUT' , 'LANDICE' ,
569+
'QH' , 'LANDICE' ,
570+
'GHTSKIN' , 'LANDICE' , 'GHTSKIN_GL' ,
571+
'HLATN' , 'LANDICE' ,
572+
'HLWUP' , 'LANDICE' , 'HLWUP_GL' ,
573+
'IMELT' , 'LANDICE' ,
574+
'LWNDSRF' , 'LANDICE' ,
575+
'MELTWTR' , 'LANDICE' ,
576+
'MELTWTRCONT' , 'LANDICE' ,
577+
'RUNOFF' , 'LANDICE' , 'RUNOFF_GL' ,
578+
'SHOUT' , 'LANDICE' ,
579+
'SMELT' , 'LANDICE' ,
580+
'SNICEALB' , 'LANDICE' ,
581+
'SNOMAS_GL' , 'LANDICE' ,
582+
'SNOWALB' , 'LANDICE' ,
583+
'SNOWDP_GL' , 'LANDICE' ,
584+
'SWNDSRF' , 'LANDICE' ,
585+
'TST' , 'LANDICE' ,
586+
'WESNBOT' , 'LANDICE' ,
587+
'WESNEXT' , 'LANDICE' ,
588+
'WESNPERC' , 'LANDICE' ,
589+
'WESNPREC' , 'LANDICE' ,
590+
::
546591

592+
tavg24_1d_glc_Nt.descr: 'Tile-space,Daily,Time-Averaged,Single-level,Land Ice Diagnostics',
593+
tavg24_1d_glc_Nt.nbits: 12,
594+
tavg24_1d_glc_Nt.template: '%y4%m2%d2_%h2%n2z.bin' ,
595+
tavg24_1d_glc_Nt.mode: 'time-averaged' ,
596+
tavg24_1d_glc_Nt.frequency: 240000 ,
597+
tavg24_1d_glc_Nt.ref_time: 000000 ,
598+
tavg24_1d_glc_Nt.fields: 'ASNOW_GL' , 'LANDICE' ,
599+
'DELTS' , 'LANDICE' ,
600+
'EVAPOUT' , 'LANDICE' ,
601+
'GHTSKIN' , 'LANDICE' , 'GHTSKIN_GL' ,
602+
'HLATN' , 'LANDICE' ,
603+
'HLWUP' , 'LANDICE' , 'HLWUP_GL' ,
604+
'LWNDSRF' , 'LANDICE' ,
605+
'MELTWTR' , 'LANDICE' ,
606+
'MELTWTRCONT' , 'LANDICE' ,
607+
'RUNOFF' , 'LANDICE' , 'RUNOFF_GL' ,
608+
'SHOUT' , 'LANDICE' ,
609+
'SNOMAS_GL' , 'LANDICE' ,
610+
'SNOWDP_GL' , 'LANDICE' ,
611+
'SWNDSRF' , 'LANDICE' ,
612+
'TST' , 'LANDICE' ,
613+
'WESNBOT' , 'LANDICE' ,
614+
'WESNEXT' , 'LANDICE' ,
615+
::
547616
# ========================== EOF ==============================================================

GEOSldas_App/GEOSldas_LDAS.rc

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,36 @@ CATCHMENT_OFFLINE: 1
2929
CATCHMENT_SPINUP: 0
3030

3131

32-
# ---- Choice of land surface model
32+
# ---- Choice of land surface model (for LAND tiles)
3333
#
3434
# 1 : Catchment model (default)
3535
# 2 : CatchmentCN-CLM4.0
3636
#
3737
LSM_CHOICE: 1
3838

3939

40+
# ---- Choice of tile type(s)
41+
#
42+
# List of tile types to be included in simulation.
43+
# Use blank space as separator if there is more than one type.
44+
#
45+
# land : 100 (non-glaciated land)
46+
# landice : 20 ( glaciated land)
47+
# lake : 19 [not yet implemented]
48+
#
49+
# For example, include land and landice tiles as follows:
50+
# TILE_TYPES: 100 20
51+
#
52+
TILE_TYPES: 100
53+
54+
# ---- Format of tile file (from bcs directory)
55+
#
56+
# DEFAULT : Use nc4 tile file if it exists, txt tile file otherwise
57+
# TXT : Use txt tile file (e.g., for 0-diff testing)
58+
#
59+
TILE_FILE_FORMAT: DEFAULT
60+
61+
4062
# ---- Domain definition
4163
#
4264
# The domain is determined by specifying a lat/lon rectangle in conjunction

0 commit comments

Comments
 (0)