From 1e55616764abc72a476a687c2446a6c13cfe977a Mon Sep 17 00:00:00 2001 From: Qing Liu Date: Mon, 4 Dec 2023 12:53:33 -0500 Subject: [PATCH 1/9] Add reading GEOSIT forcing data --- .../GEOSmetforce_GridComp/LDAS_Forcing.F90 | 92 ++++++++++++++++++- 1 file changed, 88 insertions(+), 4 deletions(-) diff --git a/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 b/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 index dd6d4a23..53915d1d 100755 --- a/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 +++ b/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 @@ -3170,6 +3170,7 @@ subroutine get_GEOS( date_time, force_dtstep, met_path, met_tag, & real, parameter :: nodata_GEOSgcm = 1.e15 character(40), dimension(N_G5DAS_vars, N_defs_cols) :: G5DAS_defs + character(40), dimension(N_G5DAS_vars, N_defs_cols) :: GEOSIT_defs character(40), dimension(N_MERRA_vars, N_defs_cols) :: MERRA_defs character(40), dimension(N_MERRA2plusAerosol_vars, N_defs_cols) :: M2INT_defs character(40), dimension(N_MERRA2plusAerosol_vars, N_defs_cols) :: M2COR_defs @@ -3243,6 +3244,33 @@ subroutine get_GEOS( date_time, force_dtstep, met_path, met_tag, & G5DAS_defs(11,:)=[character(len=40):: 'QLML ','inst','inst1_2d_lfo_Nx','diag','S'] G5DAS_defs(12,:)=[character(len=40):: 'SPEEDLML','inst','inst1_2d_lfo_Nx','diag','S'] + ! ----------------------------------------------------------------------- + ! + ! define GEOSIT file specs + ! + ! columns of GEOSgcm_defs are as follows: + ! 1 - short variable name in gfio file + ! 2 - averaging mode in G5DAS/MERRA file ('tavg' or 'inst') + ! 3 - file tag (eg. 'bkg.sfc' or 'diag_sfc', or 'tavg1_2d_rad_Nx') + ! 4 - file dir ('ana' or 'diag') + ! 5 - treated as S="state" or F="flux" in subroutine interpolate_to_timestep() + + ! GEOSIT file specs (default, unless otherwise specified via "met_tag") + + + GEOSIT_defs( 1,:)=[character(len=40):: 'SWGDN ','tavg','lfo_tavg_1hr_glo_L576x361_slv','diag','F'] + GEOSIT_defs( 2,:)=[character(len=40):: 'LWGAB ','tavg','lfo_tavg_1hr_glo_L576x361_slv','diag','F'] + GEOSIT_defs( 3,:)=[character(len=40):: 'PARDR ','tavg','lfo_tavg_1hr_glo_L576x361_slv','diag','F'] + GEOSIT_defs( 4,:)=[character(len=40):: 'PARDF ','tavg','lfo_tavg_1hr_glo_L576x361_slv','diag','F'] + GEOSIT_defs( 5,:)=[character(len=40):: 'PRECCU ','tavg','lfo_tavg_1hr_glo_L576x361_slv','diag','F'] + GEOSIT_defs( 6,:)=[character(len=40):: 'PRECLS ','tavg','lfo_tavg_1hr_glo_L576x361_slv','diag','F'] + GEOSIT_defs( 7,:)=[character(len=40):: 'PRECSNO ','tavg','lfo_tavg_1hr_glo_L576x361_slv','diag','F'] + GEOSIT_defs( 8,:)=[character(len=40):: 'PS ','inst','lfo_inst_1hr_glo_L576x361_slv','diag','S'] + GEOSIT_defs( 9,:)=[character(len=40):: 'HLML ','inst','lfo_inst_1hr_glo_L576x361_slv','diag','S'] + GEOSIT_defs(10,:)=[character(len=40):: 'TLML ','inst','lfo_inst_1hr_glo_L576x361_slv','diag','S'] + GEOSIT_defs(11,:)=[character(len=40):: 'QLML ','inst','lfo_inst_1hr_glo_L576x361_slv','diag','S'] + GEOSIT_defs(12,:)=[character(len=40):: 'SPEEDLML','inst','lfo_inst_1hr_glo_L576x361_slv','diag','S'] + ! MERRA-2 file specs with uncorrected (AGCM) precip from the "int" Collection ! (ie, the precip generated by the AGCM within the MERRA-2 system) @@ -3576,8 +3604,12 @@ subroutine get_GEOS( date_time, force_dtstep, met_path, met_tag, & allocate(GEOSgcm_defs(N_GEOSgcm_vars,N_defs_cols)) - GEOSgcm_defs(1:N_G5DAS_vars, :) = G5DAS_defs - + if (index(met_tag, 'GEOSIT') > 0 .or. index(met_tag, 'geosit') > 0) then + GEOSgcm_defs(1:N_G5DAS_vars, :) = GEOSIT_defs + else + GEOSgcm_defs(1:N_G5DAS_vars, :) = G5DAS_defs + end if + call parse_G5DAS_met_tag( met_path, met_tag, date_time_inst, & met_path_inst, prec_path_inst, met_tag_inst, use_prec_corr, & use_Predictor ) @@ -4658,6 +4690,10 @@ subroutine parse_G5DAS_met_tag( met_path_in, met_tag_in, date_time, & type(date_time_type) :: dt_end_d5124_rpit2 type(date_time_type) :: dt_end_d5124_rpit3 + type(date_time_type) :: dt_end_d5294_geosit1 + type(date_time_type) :: dt_end_d5294_geosit2 + type(date_time_type) :: dt_end_d5294_geosit3 + type(date_time_type) :: dt_end_e5110_fp type(date_time_type) :: dt_end_e5130_fp type(date_time_type) :: dt_end_e5131_fp @@ -4738,6 +4774,33 @@ subroutine parse_G5DAS_met_tag( met_path_in, met_tag_in, date_time, & dt_end_d5124_rpit3%min = 0 dt_end_d5124_rpit3%sec = 0 + ! | stream start | stream end + ! ---------------------------------------- + ! d5294_geosit1 | 1 Jan 1998 | 1 Jan 2008 + ! d5294_geosit2 | 1 Jan 2008 | 1 Jan 2018 + ! d5294_geosit3 | 1 Jan 2018 | (present) + + dt_end_d5294_geosit1%year = 2008 + dt_end_d5294_geosit1%month = 1 + dt_end_d5294_geosit1%day = 1 + dt_end_d5294_geosit1%hour = 0 + dt_end_d5294_geosit1%min = 0 + dt_end_d5294_geosit1%sec = 0 + + dt_end_d5294_geosit2%year = 2018 + dt_end_d5294_geosit2%month = 1 + dt_end_d5294_geosit2%day = 1 + dt_end_d5294_geosit2%hour = 0 + dt_end_d5294_geosit2%min = 0 + dt_end_d5294_geosit2%sec = 0 + + dt_end_d5294_geosit3%year = 9999 + dt_end_d5294_geosit3%month = 1 + dt_end_d5294_geosit3%day = 1 + dt_end_d5294_geosit3%hour = 0 + dt_end_d5294_geosit3%min = 0 + dt_end_d5294_geosit3%sec = 0 + ! --------------------------------- ! ! FP streams @@ -4957,6 +5020,23 @@ subroutine parse_G5DAS_met_tag( met_path_in, met_tag_in, date_time, & end if + elseif (met_tag_out(1:18)=='cross_GEOSIT') then + + if (datetime_lt_refdatetime( date_time, dt_end_d5294_geosit1 )) then + + stream = 'd5294_geosit_jan98' ! use d5294_geosit stream 1 + + elseif (datetime_lt_refdatetime( date_time, dt_end_d5294_geosit2 )) then + + stream = 'd5294_geosit_jan08' ! use d5294_geosit stream 2 + + else + + stream = 'd5294_geosit_jan18' ! use d5294_geosit stream 2 + + end if + + elseif (met_tag_out(1:8)=='cross_FP') then if (datetime_lt_refdatetime( date_time, dt_end_e5110_fp )) then @@ -5103,7 +5183,7 @@ subroutine get_GEOS_forcing_filename(fname_full,file_exists, date_time, daily_fi ! local variables character(300) :: fname, fname_full_tmp1, fname_full_tmp2 - character( 14) :: time_stamp + character( 20) :: time_stamp character( 4) :: YYYY, HHMM, day_dir character( 2) :: MM, DD @@ -5131,8 +5211,12 @@ subroutine get_GEOS_forcing_filename(fname_full,file_exists, date_time, daily_fi time_stamp(1:8) = YYYY // MM // DD - else + elseif (index(met_tag,'GEOSIT') > 0 .or. index(met_tag,'geosit') > 0) then + time_stamp = YYYY //'-'// MM //'-'// DD // 'T' // trim(HHMM) // 'Z' + + else + time_stamp = YYYY // MM // DD // '_' // trim(HHMM) // 'z' end if From 472bbb3343f9a275c85a5b737bc57340a02b3551 Mon Sep 17 00:00:00 2001 From: Qing Liu Date: Tue, 5 Dec 2023 10:28:44 -0500 Subject: [PATCH 2/9] fix minor typo --- .../GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 b/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 index 53915d1d..b0968aa0 100755 --- a/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 +++ b/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 @@ -5020,7 +5020,7 @@ subroutine parse_G5DAS_met_tag( met_path_in, met_tag_in, date_time, & end if - elseif (met_tag_out(1:18)=='cross_GEOSIT') then + elseif (met_tag_out(1:12)=='cross_GEOSIT') then if (datetime_lt_refdatetime( date_time, dt_end_d5294_geosit1 )) then @@ -5032,7 +5032,7 @@ subroutine parse_G5DAS_met_tag( met_path_in, met_tag_in, date_time, & else - stream = 'd5294_geosit_jan18' ! use d5294_geosit stream 2 + stream = 'd5294_geosit_jan18' ! use d5294_geosit stream 3 end if From 51b900d6d121710fb9f2b644fa5fd032b551a149 Mon Sep 17 00:00:00 2001 From: Rolf Reichle Date: Tue, 5 Dec 2023 17:49:34 -0500 Subject: [PATCH 3/9] minor edits for GEOS-IT forcing (LDAS_Forcing.F90) --- .../GEOSmetforce_GridComp/LDAS_Forcing.F90 | 76 +++++++++---------- 1 file changed, 37 insertions(+), 39 deletions(-) diff --git a/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 b/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 index b0968aa0..d71ba2f8 100755 --- a/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 +++ b/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 @@ -3090,6 +3090,7 @@ subroutine get_GEOS( date_time, force_dtstep, met_path, met_tag, & ! (for MERRA-2, always point to publicly available files) ! - updated comments ! + ! qliu+reichle, 5 Dec 2023 - added GEOS-IT ! ! ----------------------------------- ! @@ -3246,30 +3247,24 @@ subroutine get_GEOS( date_time, force_dtstep, met_path, met_tag, & ! ----------------------------------------------------------------------- ! - ! define GEOSIT file specs + ! define GEOS-IT file specs ! - ! columns of GEOSgcm_defs are as follows: - ! 1 - short variable name in gfio file - ! 2 - averaging mode in G5DAS/MERRA file ('tavg' or 'inst') - ! 3 - file tag (eg. 'bkg.sfc' or 'diag_sfc', or 'tavg1_2d_rad_Nx') - ! 4 - file dir ('ana' or 'diag') - ! 5 - treated as S="state" or F="flux" in subroutine interpolate_to_timestep() - - ! GEOSIT file specs (default, unless otherwise specified via "met_tag") + ! same as G5DAS except for file tag (column 3) + GEOSIT_defs = G5DAS_defs - GEOSIT_defs( 1,:)=[character(len=40):: 'SWGDN ','tavg','lfo_tavg_1hr_glo_L576x361_slv','diag','F'] - GEOSIT_defs( 2,:)=[character(len=40):: 'LWGAB ','tavg','lfo_tavg_1hr_glo_L576x361_slv','diag','F'] - GEOSIT_defs( 3,:)=[character(len=40):: 'PARDR ','tavg','lfo_tavg_1hr_glo_L576x361_slv','diag','F'] - GEOSIT_defs( 4,:)=[character(len=40):: 'PARDF ','tavg','lfo_tavg_1hr_glo_L576x361_slv','diag','F'] - GEOSIT_defs( 5,:)=[character(len=40):: 'PRECCU ','tavg','lfo_tavg_1hr_glo_L576x361_slv','diag','F'] - GEOSIT_defs( 6,:)=[character(len=40):: 'PRECLS ','tavg','lfo_tavg_1hr_glo_L576x361_slv','diag','F'] - GEOSIT_defs( 7,:)=[character(len=40):: 'PRECSNO ','tavg','lfo_tavg_1hr_glo_L576x361_slv','diag','F'] - GEOSIT_defs( 8,:)=[character(len=40):: 'PS ','inst','lfo_inst_1hr_glo_L576x361_slv','diag','S'] - GEOSIT_defs( 9,:)=[character(len=40):: 'HLML ','inst','lfo_inst_1hr_glo_L576x361_slv','diag','S'] - GEOSIT_defs(10,:)=[character(len=40):: 'TLML ','inst','lfo_inst_1hr_glo_L576x361_slv','diag','S'] - GEOSIT_defs(11,:)=[character(len=40):: 'QLML ','inst','lfo_inst_1hr_glo_L576x361_slv','diag','S'] - GEOSIT_defs(12,:)=[character(len=40):: 'SPEEDLML','inst','lfo_inst_1hr_glo_L576x361_slv','diag','S'] + GEOSIT_defs( 1,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_defs( 2,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_defs( 3,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_defs( 4,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_defs( 5,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_defs( 6,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_defs( 7,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_defs( 8,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] + GEOSIT_defs( 9,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] + GEOSIT_defs(10,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] + GEOSIT_defs(11,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] + GEOSIT_defs(12,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] ! MERRA-2 file specs with uncorrected (AGCM) precip from the "int" Collection @@ -3604,10 +3599,10 @@ subroutine get_GEOS( date_time, force_dtstep, met_path, met_tag, & allocate(GEOSgcm_defs(N_GEOSgcm_vars,N_defs_cols)) - if (index(met_tag, 'GEOSIT') > 0 .or. index(met_tag, 'geosit') > 0) then - GEOSgcm_defs(1:N_G5DAS_vars, :) = GEOSIT_defs + if ( (index(met_tag, 'GEOSIT') > 0) .or. (index(met_tag, 'geosit') > 0) ) then + GEOSgcm_defs(1:N_G5DAS_vars,:) = GEOSIT_defs else - GEOSgcm_defs(1:N_G5DAS_vars, :) = G5DAS_defs + GEOSgcm_defs(1:N_G5DAS_vars,:) = G5DAS_defs end if call parse_G5DAS_met_tag( met_path, met_tag, date_time_inst, & @@ -4639,8 +4634,8 @@ subroutine parse_G5DAS_met_tag( met_path_in, met_tag_in, date_time, & ! where {__prec[PREC]} and {__Nx+-} are optional and where ! ! G5DAS-NAME : name of standard G5DAS forcing (must not contain "__"!) - ! e.g., "e5110_fp", "d591_rpit1", "d591_fpit", ... - ! for cross-stream forcing, use "cross_d5124_RPFPIT" or "cross_FP" + ! e.g., "e5110_fp", "d591_rpit1", "d591_fpit", "d5294_geosit", ... + ! for cross-stream forcing, use "cross_d5294_GEOSIT", "cross_d5124_RPFPIT", "cross_FP" ! PREC : identifier for precip corrections to G5DAS forcing (eg., 'GPCPv1.1') ! ! If {__Nx+-} is present, set flag for use forcing files from the DAS/GCM Predictor @@ -4658,6 +4653,7 @@ subroutine parse_G5DAS_met_tag( met_path_in, met_tag_in, date_time, & ! reichle, 10 Oct 2019: added FP transition from f521 to f522 ! reichle, 17 Jan 2020: added FP transition from f522 to f525 ! reichle, 3 Apr 2020: added FP transition from f525 to f525_p5 + ! qliu+reichle, 5 Dec 2023: added GEOS-IT ! ! --------------------------------------------------------------------------- @@ -4709,7 +4705,7 @@ subroutine parse_G5DAS_met_tag( met_path_in, met_tag_in, date_time, & ! ---------------------------------------------------------- ! - ! define transition times between RP-IT, FP-IT or FP streams + ! define transition times between RP-IT, FP-IT, GEOS-IT, or FP streams ! if "cross-stream" forcing is requested ! ! | stream start | stream end (as of 5 Dec 2014) @@ -4774,11 +4770,13 @@ subroutine parse_G5DAS_met_tag( met_path_in, met_tag_in, date_time, & dt_end_d5124_rpit3%min = 0 dt_end_d5124_rpit3%sec = 0 - ! | stream start | stream end + ! | stream start | stream end + ! | (excl 1-yr | + ! | spinup) | ! ---------------------------------------- - ! d5294_geosit1 | 1 Jan 1998 | 1 Jan 2008 - ! d5294_geosit2 | 1 Jan 2008 | 1 Jan 2018 - ! d5294_geosit3 | 1 Jan 2018 | (present) + ! d5294_geosit1 | 1 Jan 1998 | 1 Jan 2008 + ! d5294_geosit2 | 1 Jan 2008 | 1 Jan 2018 + ! d5294_geosit3 | 1 Jan 2018 | (present) dt_end_d5294_geosit1%year = 2008 dt_end_d5294_geosit1%month = 1 @@ -5020,19 +5018,19 @@ subroutine parse_G5DAS_met_tag( met_path_in, met_tag_in, date_time, & end if - elseif (met_tag_out(1:12)=='cross_GEOSIT') then + elseif (met_tag_out(1:18)=='cross_d5924_GEOSIT') then if (datetime_lt_refdatetime( date_time, dt_end_d5294_geosit1 )) then - stream = 'd5294_geosit_jan98' ! use d5294_geosit stream 1 + stream = 'd5294_geosit_jan98' ! use d5294 GEOS-IT stream 1 elseif (datetime_lt_refdatetime( date_time, dt_end_d5294_geosit2 )) then - stream = 'd5294_geosit_jan08' ! use d5294_geosit stream 2 + stream = 'd5294_geosit_jan08' ! use d5294 GEOS-IT stream 2 else - stream = 'd5294_geosit_jan18' ! use d5294_geosit stream 3 + stream = 'd5294_geosit_jan18' ! use d5294 GEOS-IT stream 3 end if @@ -5183,7 +5181,7 @@ subroutine get_GEOS_forcing_filename(fname_full,file_exists, date_time, daily_fi ! local variables character(300) :: fname, fname_full_tmp1, fname_full_tmp2 - character( 20) :: time_stamp + character( 16) :: time_stamp character( 4) :: YYYY, HHMM, day_dir character( 2) :: MM, DD @@ -5209,15 +5207,15 @@ subroutine get_GEOS_forcing_filename(fname_full,file_exists, date_time, daily_fi if (daily_file) then - time_stamp(1:8) = YYYY // MM // DD + time_stamp(1:8) = YYYY // MM // DD elseif (index(met_tag,'GEOSIT') > 0 .or. index(met_tag,'geosit') > 0) then - time_stamp = YYYY //'-'// MM //'-'// DD // 'T' // trim(HHMM) // 'Z' + time_stamp(1:16) = YYYY //'-'// MM //'-'// DD // 'T' // trim(HHMM) // 'Z' else - time_stamp = YYYY // MM // DD // '_' // trim(HHMM) // 'z' + time_stamp(1:14) = YYYY // MM // DD // '_' // trim(HHMM) // 'z' end if From a8227f1fbc2772964d42c9459847cf05db0e9f86 Mon Sep 17 00:00:00 2001 From: Rolf Reichle Date: Tue, 5 Dec 2023 18:23:09 -0500 Subject: [PATCH 4/9] fixed character array syntax for GEOSIT_defs (LDAS_Forcing.F90) --- .../GEOSmetforce_GridComp/LDAS_Forcing.F90 | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 b/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 index d71ba2f8..86f976e0 100755 --- a/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 +++ b/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 @@ -3250,21 +3250,24 @@ subroutine get_GEOS( date_time, force_dtstep, met_path, met_tag, & ! define GEOS-IT file specs ! ! same as G5DAS except for file tag (column 3) - - GEOSIT_defs = G5DAS_defs - - GEOSIT_defs( 1,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_defs( 2,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_defs( 3,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_defs( 4,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_defs( 5,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_defs( 6,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_defs( 7,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_defs( 8,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] - GEOSIT_defs( 9,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] - GEOSIT_defs(10,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] - GEOSIT_defs(11,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] - GEOSIT_defs(12,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] + ! + ! GEOSIT character(40): + ! + ! 1 2 3 4 + ! 1234567890123456789012345678901234567890 + + GEOSIT_defs( 1,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' + GEOSIT_defs( 2,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' + GEOSIT_defs( 3,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' + GEOSIT_defs( 4,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' + GEOSIT_defs( 5,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' + GEOSIT_defs( 6,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' + GEOSIT_defs( 7,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' + GEOSIT_defs( 8,3) = 'lfo_inst_1hr_glo_L576x361_slv ' + GEOSIT_defs( 9,3) = 'lfo_inst_1hr_glo_L576x361_slv ' + GEOSIT_defs(10,3) = 'lfo_inst_1hr_glo_L576x361_slv ' + GEOSIT_defs(11,3) = 'lfo_inst_1hr_glo_L576x361_slv ' + GEOSIT_defs(12,3) = 'lfo_inst_1hr_glo_L576x361_slv ' ! MERRA-2 file specs with uncorrected (AGCM) precip from the "int" Collection From 9377a7b405677645b7bc06fe5784b95274a76eb1 Mon Sep 17 00:00:00 2001 From: Rolf Reichle Date: Tue, 5 Dec 2023 18:33:06 -0500 Subject: [PATCH 5/9] nicer way of character array constructor for GEOSIT_defs (LDAS_Forcing.F90) --- .../GEOSmetforce_GridComp/LDAS_Forcing.F90 | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 b/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 index 86f976e0..9955c38b 100755 --- a/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 +++ b/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 @@ -3176,6 +3176,8 @@ subroutine get_GEOS( date_time, force_dtstep, met_path, met_tag, & character(40), dimension(N_MERRA2plusAerosol_vars, N_defs_cols) :: M2INT_defs character(40), dimension(N_MERRA2plusAerosol_vars, N_defs_cols) :: M2COR_defs + character(40), dimension(N_G5DAS_vars) :: GEOSIT_ftag + character(40), dimension(:,:), allocatable :: GEOSgcm_defs ! NOTE: met_path, prec_path, and met_tag for current ('inst') time and fwd and bkwd 'tavg' @@ -3249,26 +3251,24 @@ subroutine get_GEOS( date_time, force_dtstep, met_path, met_tag, & ! ! define GEOS-IT file specs ! - ! same as G5DAS except for file tag (column 3) - ! - ! GEOSIT character(40): - ! - ! 1 2 3 4 - ! 1234567890123456789012345678901234567890 + ! same as G5DAS except for file tags (column 3) + + GEOSIT_defs = G5DAS_defs - GEOSIT_defs( 1,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' - GEOSIT_defs( 2,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' - GEOSIT_defs( 3,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' - GEOSIT_defs( 4,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' - GEOSIT_defs( 5,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' - GEOSIT_defs( 6,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' - GEOSIT_defs( 7,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' - GEOSIT_defs( 8,3) = 'lfo_inst_1hr_glo_L576x361_slv ' - GEOSIT_defs( 9,3) = 'lfo_inst_1hr_glo_L576x361_slv ' - GEOSIT_defs(10,3) = 'lfo_inst_1hr_glo_L576x361_slv ' - GEOSIT_defs(11,3) = 'lfo_inst_1hr_glo_L576x361_slv ' - GEOSIT_defs(12,3) = 'lfo_inst_1hr_glo_L576x361_slv ' + GEOSIT_ftag( 1,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_ftag( 2,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_ftag( 3,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_ftag( 4,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_ftag( 5,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_ftag( 6,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_ftag( 7,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_ftag( 8,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] + GEOSIT_ftag( 9,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] + GEOSIT_ftag(10,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] + GEOSIT_ftag(11,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] + GEOSIT_ftag(12,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] + GEOSIT_defs(:,3) = GEOSIT_ftag ! MERRA-2 file specs with uncorrected (AGCM) precip from the "int" Collection ! (ie, the precip generated by the AGCM within the MERRA-2 system) From f31328e514d7a7d16ebfb2e8d93601cae6198ff6 Mon Sep 17 00:00:00 2001 From: Rolf Reichle Date: Tue, 5 Dec 2023 18:36:22 -0500 Subject: [PATCH 6/9] fix error in previous commit for GEOS-IT (LDAS_Forcing.F90) --- .../GEOSmetforce_GridComp/LDAS_Forcing.F90 | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 b/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 index 9955c38b..8dfdcfa8 100755 --- a/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 +++ b/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 @@ -3255,18 +3255,18 @@ subroutine get_GEOS( date_time, force_dtstep, met_path, met_tag, & GEOSIT_defs = G5DAS_defs - GEOSIT_ftag( 1,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_ftag( 2,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_ftag( 3,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_ftag( 4,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_ftag( 5,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_ftag( 6,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_ftag( 7,3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_ftag( 8,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] - GEOSIT_ftag( 9,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] - GEOSIT_ftag(10,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] - GEOSIT_ftag(11,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] - GEOSIT_ftag(12,3)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] + GEOSIT_ftag( 1)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_ftag( 2)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_ftag( 3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_ftag( 4)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_ftag( 5)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_ftag( 6)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_ftag( 7)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] + GEOSIT_ftag( 8)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] + GEOSIT_ftag( 9)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] + GEOSIT_ftag(10)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] + GEOSIT_ftag(11)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] + GEOSIT_ftag(12)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] GEOSIT_defs(:,3) = GEOSIT_ftag From 1d854d41d6d74fe8238a75ab0a45abdebecf308a Mon Sep 17 00:00:00 2001 From: Rolf Reichle Date: Wed, 6 Dec 2023 09:03:16 -0500 Subject: [PATCH 7/9] reverting back to earlier approach for assembling GEOSIT_defs (LDAS_Forcing.F90) --- .../GEOSmetforce_GridComp/LDAS_Forcing.F90 | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 b/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 index 8dfdcfa8..86f976e0 100755 --- a/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 +++ b/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 @@ -3176,8 +3176,6 @@ subroutine get_GEOS( date_time, force_dtstep, met_path, met_tag, & character(40), dimension(N_MERRA2plusAerosol_vars, N_defs_cols) :: M2INT_defs character(40), dimension(N_MERRA2plusAerosol_vars, N_defs_cols) :: M2COR_defs - character(40), dimension(N_G5DAS_vars) :: GEOSIT_ftag - character(40), dimension(:,:), allocatable :: GEOSgcm_defs ! NOTE: met_path, prec_path, and met_tag for current ('inst') time and fwd and bkwd 'tavg' @@ -3251,24 +3249,26 @@ subroutine get_GEOS( date_time, force_dtstep, met_path, met_tag, & ! ! define GEOS-IT file specs ! - ! same as G5DAS except for file tags (column 3) - - GEOSIT_defs = G5DAS_defs + ! same as G5DAS except for file tag (column 3) + ! + ! GEOSIT character(40): + ! + ! 1 2 3 4 + ! 1234567890123456789012345678901234567890 - GEOSIT_ftag( 1)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_ftag( 2)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_ftag( 3)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_ftag( 4)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_ftag( 5)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_ftag( 6)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_ftag( 7)=[character(len=40):: 'lfo_tavg_1hr_glo_L576x361_slv'] - GEOSIT_ftag( 8)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] - GEOSIT_ftag( 9)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] - GEOSIT_ftag(10)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] - GEOSIT_ftag(11)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] - GEOSIT_ftag(12)=[character(len=40):: 'lfo_inst_1hr_glo_L576x361_slv'] + GEOSIT_defs( 1,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' + GEOSIT_defs( 2,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' + GEOSIT_defs( 3,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' + GEOSIT_defs( 4,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' + GEOSIT_defs( 5,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' + GEOSIT_defs( 6,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' + GEOSIT_defs( 7,3) = 'lfo_tavg_1hr_glo_L576x361_slv ' + GEOSIT_defs( 8,3) = 'lfo_inst_1hr_glo_L576x361_slv ' + GEOSIT_defs( 9,3) = 'lfo_inst_1hr_glo_L576x361_slv ' + GEOSIT_defs(10,3) = 'lfo_inst_1hr_glo_L576x361_slv ' + GEOSIT_defs(11,3) = 'lfo_inst_1hr_glo_L576x361_slv ' + GEOSIT_defs(12,3) = 'lfo_inst_1hr_glo_L576x361_slv ' - GEOSIT_defs(:,3) = GEOSIT_ftag ! MERRA-2 file specs with uncorrected (AGCM) precip from the "int" Collection ! (ie, the precip generated by the AGCM within the MERRA-2 system) From 597b804531b3c3457de13d73165097e7bcce9b6d Mon Sep 17 00:00:00 2001 From: Rolf Reichle Date: Wed, 6 Dec 2023 09:12:50 -0500 Subject: [PATCH 8/9] fix GEOSIT_defs (LDAS_Forcing.F90) --- .../GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 b/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 index 86f976e0..055d0e9e 100755 --- a/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 +++ b/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 @@ -3250,7 +3250,9 @@ subroutine get_GEOS( date_time, force_dtstep, met_path, met_tag, & ! define GEOS-IT file specs ! ! same as G5DAS except for file tag (column 3) - ! + + GEOSIT_defs = G5DAS_defs + ! GEOSIT character(40): ! ! 1 2 3 4 From cc3fbcd93b4b55192f1f79814555f8b4b950789e Mon Sep 17 00:00:00 2001 From: Qing Liu Date: Wed, 6 Dec 2023 10:09:55 -0500 Subject: [PATCH 9/9] fix typo --- .../GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 b/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 index 055d0e9e..772183dc 100755 --- a/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 +++ b/src/Components/GEOSldas_GridComp/GEOSmetforce_GridComp/LDAS_Forcing.F90 @@ -5023,7 +5023,7 @@ subroutine parse_G5DAS_met_tag( met_path_in, met_tag_in, date_time, & end if - elseif (met_tag_out(1:18)=='cross_d5924_GEOSIT') then + elseif (met_tag_out(1:18)=='cross_d5294_GEOSIT') then if (datetime_lt_refdatetime( date_time, dt_end_d5294_geosit1 )) then