From 715e9d6e7847ce5b55ce79967557b722be99e341 Mon Sep 17 00:00:00 2001 From: saraqzhang Date: Tue, 21 Jan 2025 18:27:56 -0500 Subject: [PATCH 01/20] updates for integrated ladas setup procedure --- src/Applications/GEOSdas_App/AGCMrc.pm | 4 + src/Applications/GEOSdas_App/GEOSdas.csm | 4 +- src/Applications/GEOSdas_App/fvsetup | 137 +++++++++++++----- .../NCEP_enkf/scripts/gmao/etc/AGCM.rc.tmpl | 2 +- .../scripts/gmao/etc/HISTAENS.rc.tmpl | 46 ++++++ .../NCEP_enkf/scripts/gmao/setup_atmens.pl | 8 + 6 files changed, 163 insertions(+), 38 deletions(-) diff --git a/src/Applications/GEOSdas_App/AGCMrc.pm b/src/Applications/GEOSdas_App/AGCMrc.pm index 9cf91967..78280e6f 100644 --- a/src/Applications/GEOSdas_App/AGCMrc.pm +++ b/src/Applications/GEOSdas_App/AGCMrc.pm @@ -290,6 +290,10 @@ sub ed_g5agcm_rc { if ( $gocart_tracers ) { $comment{"GOCART.data_INTERNAL"} = 1 } else { $comment{"GOCART_INTERNAL"} = 1 } + # uncomment ldas increment flag + #------------------------------ + if ($ldas_flag == 1) { $uncomment{"LDAS_INCR"} = 1 } + # comment unused catch or catchCN restart #---------------------------------------- if ($lsmodel_flag == 1) { diff --git a/src/Applications/GEOSdas_App/GEOSdas.csm b/src/Applications/GEOSdas_App/GEOSdas.csm index 5ccaa349..78c2071a 100755 --- a/src/Applications/GEOSdas_App/GEOSdas.csm +++ b/src/Applications/GEOSdas_App/GEOSdas.csm @@ -6082,9 +6082,9 @@ endif #------------------------------------ if ( $LDAS_ANA ) then - mkdir -p $FVHOME/recycle/holdpredout + /bin/rm -f $FVHOME/recycle/holdpredout/*lfo_Nx+-* /bin/mv -f $FVWORK/*lfo_Nx+-* $FVHOME/recycle/holdpredout/. - /bin/cp $FVHOME/recycle/holdpredout/*lfo_Nx+-* $LDHOME/input/met_forcing/. + /bin/cp $FVHOME/recycle/holdpredout/*lfo_Nx+-* $LDHOME/input/met_forcing/. endif exit 0 diff --git a/src/Applications/GEOSdas_App/fvsetup b/src/Applications/GEOSdas_App/fvsetup index 06cffb43..bd35a3bc 100755 --- a/src/Applications/GEOSdas_App/fvsetup +++ b/src/Applications/GEOSdas_App/fvsetup @@ -578,22 +578,21 @@ $ENV{"PATH"} = $FindBin::Bin .":$ENV{PATH}"; $rc = system("$fvbin/fix_gocart_rc.csh $vres $fvhome/run/gocart"); die "Failed to fix GOCART levels-referencing $!" if ( $rc ); -# LDAS Setup is done separately, follow instructions in GEOSldas/README.md -# Provide ldas config input files: YOUR_det_exeinp.txt, YOUR_det_batinp.txt -# ln -s YOUR_det_exeinp.txt $fvbin/det_exeinp.txt -# ln -s YOUR_det_batinp.txt $fvbin/det_batinp.txt -# For Hyb-4dEnVar, do same for ens_exeinp.txt and ens_batinp.txt +# Provide ldas config input files: det_exeinp.txt, det_batinp.txt +# For Hyb-4dEnVar, do same for ens_exeinp.txt and ens_batinp.txt +# Please follow instructions in GEOSldas/README.md for the config input files # ------------------------------------------------------------------------ print "\n checkprintout ldas_ana == 1 ($ldas_ana)\n"; if ($ldas_ana == 1 ) { - $rc = system("$fvbin/ldas_setup setup $fvhome/lana $fvbin/det_exeinp.txt $fvbin/det_batinp.txt"); - die "Failed to setup ldas for det, check ldas config input files $!" if ( $rc ); + $cmd = "$fvbin/ldas_setup setup $fvhome/lana --nymdb $nymdb $ldassetup/det_exeinp.txt $ldassetup/det_batinp.txt"; + print "$cmd\n"; + $rc = system $cmd; + die "Failed to setup ldas for det, check ldas config input files $!" if ( $rc ); - if ($hyb_ens == 4 ) { - $rc = system("$fvbin/ldas_setup setup $fvhome/lana $fvbin/ens_exeinp.txt $fvbin/ens_batinp.txt"); + if ($hyb_ens == 4 ) { + $rc = system("$fvbin/ldas_setup setup $fvhome/lana --nymdb $nymdb $ldassetup/ens_exeinp.txt $ldassetup/ens_batinp.txt"); die "Failed to setup ldas for ens, check ldas config input files $!" if ( $rc ); } - } # Monthly Setup @@ -3499,42 +3498,61 @@ sub set_newradbc { } #======================================================================= sub set_ldasANA { + my($dflt, $ans1, $ans2); # initialize Land DAS processing flag #------------------------------------ - my($dflt, $ans1, $ans2, $ans3, $ans4); $ldas_ana = 0; - $ldasfdbk = 0; $ldas_flag = 0; - $dflt = "n"; - $ldashome = "${fvhome}/lana/${expid}_LDAS" ; - $ldashome4ens = "${fvhome}/lana/${expid}_LDAS4ens" ; + $ldasfdbk = 0; + + $ldashome_dflt = "${fvhome}/lana/${expid}_LDAS"; print "\n-------------\n"; print "LDAS Analysis\n"; print "-------------\n\n"; + $dflt = "n"; $ans1 = query(" Land DAS Analysis (y/n)?", $dflt) ; - $ldas_ana = 1 if yes($ans1); - - if ($ldas_ana == 1) { - $ans2 = query(" Enable LDAS feedback to model y/n ? ", $dflt); - $ldasfdbk = 1 if yes($ans2); + if (yes($ans1)) { + $ldas_ana = 1; + $ldas_flag = 1; + $dflt = "n"; + $prompt = " Location of ldas holdpredout files or 'later'"; + $ldashold = query($prompt, $dflt); + unless ($ldashold eq "later") { + die ">>> Error(1) <<< Cannot find directory, $ldashold;" + unless -d $ldashold; + } + + $ans2 = query(" Enable LDAS feedback to model y/n?", $dflt); + if (yes($ans2)) { + $ldasfdbk = 1; + } - if ($ldasfdbk == 1 ) { - $ldas_flag = 1; - } + $ldashome = $ldashome_dflt; + #$ldashome = query(" LDAS HOME?", $dflt); - $ans3 = query(" LDAS HOME? [DEFAULT: $ldashome]"); - $ldashome = $ans3 unless blank($ans3); + $dflt = "/discover/nobackup/$user/ldasSaveInput"; + $ldassetup = query(" LDAS SETUP input path?", $dflt); - if ($hyb_ens == 4 ) { - $ans4 = query(" LDAS HOME for atmens? [DEFAULT: $ldashome4ens]"); - $ldashome4ens = $ans4 unless blank($ans4); - } + if ($hyb_ens == 4 ) { + $ldashome4ens = dirname($ldashome) ."/${expid}_LDAS4ens"; + #$ldashome4ens = query(" LDAS HOME for atmens?", $dflt); + + $dflt = "/discover/nobackup/$user/ldasSaveInput"; + $ldassetup4ens = query(" LDAS SETUP input path for ens?", $dflt); + } + } - } -return 0; + unless ($ldashome) { + $ldashome = $ldashome_dflt; + } + unless ($ldashome4ens) { + $ldashome4ens = dirname($ldashome) ."/${expid}_LDAS4ens"; + } + + return 0; } #======================================================================= @@ -3748,6 +3766,7 @@ EOF } $flags = "-nlevs $aens_lev $setacftbc $rcorrarg $setradbc $aens_lsmodel -expdir $fvhome/.. $sppt_flag $bcopt"; $flags .= " -fvhome $fvhome" if $checkFLG; + $flags .= " -ldasflg $ldas_flag"; $params = " $aens_ana $expid $aens_im $aens_jm $aens_ocn $landbcs"; $cmd = "$fvbin/setup_atmens.pl -nodename $nodeflg $flags $params"; @@ -3776,7 +3795,7 @@ EOF print JSCRPT $line; } close TILDE; - close JSCRPT; + close JSCRPT; # Copy and rename ensemble restarts # --------------------------------- @@ -5427,6 +5446,10 @@ sub mkdir_fvhome { # create directories on FVHOME mkpath("$fvhome/run/$subdir") or die ">> Error << creating subdir, $fvhome/run/$subdir;"; } + if ($ldas_flag) { + mkpath("$fvhome/recycle/holdpredout") + or die ">> Error << creating subdir, $fvhome/recycle/holdpredout;"; + } unlink("$fvhome/fvInput") if ( -e "$fvhome/fvInput" ) ; symlink("$fvbcs","$fvhome/fvInput"); @@ -9780,12 +9803,13 @@ sub init_agcm_rc { $envvars{"coupled"} = $coupled; set_AGCM_envvars(%envvars); - $flags{"gocart_tracers"} = $gocart_tracers; $flags{"carma_tracers"} = $carma_tracers; + $flags{"gocart_tracers"} = $gocart_tracers; $flags{"iau"} = $doiau; - $flags{"pcp_forced"} = $pcp_forced; - $flags{"lsmodel_flag"} = $lsmodel_flag; $flags{"ldas_flag"} = $ldas_flag; + $flags{"lsmodel_flag"} = $lsmodel_flag; + $flags{"pcp_forced"} = $pcp_forced; + set_AGCM_flags(%flags); # $num_readers must divide evenly into $ny @@ -10030,6 +10054,7 @@ sub init_agcm_pert_rc { sub copy_resources { my ($chemrc, $ensFLG); my ($flags, $label, $string, $vars, $cmd); + my ($fname, $fname_old, $expid_old, $target); cp("$fvroot/etc/VERSION","$fvhome/run/VERSION") || die "Cannot write file $fvhome/run/VERSION: $!"; @@ -10086,6 +10111,21 @@ sub copy_resources { system("$fvbin/vED -vv SHARE=$SHARE $ensFLG $source -o $target"); } system("touch $fvhome/run/gaas/GAAS.BOOTSTRAP_"); + + if ($ldas_flag) { + $target = "$fvhome/recycle/holdpredout"; + die ">>> Error <<< Cannot find directory, $target;" unless -d $target; + die ">>> Error(2) <<< Cannot find directory, $ldashold;" + unless -d $ldashold; + + $expid_old = find_expid($ldashold); + foreach $fname_old ( <$ldashold/*lfo*> ) { + ($fname = basename($fname_old)) =~ s/$expid_old/$expid/; + cp($fname_old, "$target/$fname"); + print "cp $fname_old $target/$fname\n"; + } + + } } # Model perturbation-related settings @@ -10503,6 +10543,33 @@ sub copy_resources { } } } + +#======================================================================= +# name - find_expid +# purpose - find expid in directory based on directory file names +# +# notes - +# This routine extracts the front portion of each file in the +# directory to find the expid of the file. It assumes that the most +# prevalent value extracted is the expid for the files. +#======================================================================= +sub find_expid { + my ($dir, $fname, $most, $front, %count); + $dir = shift @_; + die ">>> ERROR <<< $dir is not a directory;" unless -d $dir; + for $fname ( <$dir/*> ) { + $front = (split(/\./, basename($fname)))[0]; + $count{$front}++; + } + $most = -1; + foreach $front (keys(%count)) { + if ($count{$front} > $most) { + $dir_expid = $front; + $most = $count{$front}; + } + } + return $dir_expid; +} #======================================================================= sub edit_collections { diff --git a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/AGCM.rc.tmpl b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/AGCM.rc.tmpl index 17cc81c1..5a7a8d08 100644 --- a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/AGCM.rc.tmpl +++ b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/AGCM.rc.tmpl @@ -546,7 +546,7 @@ LSM_CHOICE: @LSM_CHOICE # 0 : no (default) # 1 : yes # ------------------------------------------------------------ -#LDAS_INCR: 0 +LDAS_INCR: @LDAS_INCR # Name of file containing Surface GridComp resource parameters # ------------------------------------------------------------ diff --git a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl index dc7d4414..7d893c18 100644 --- a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl +++ b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl @@ -52,6 +52,8 @@ COLLECTIONS: 'bkg.eta' # 'inst3_3d_wxme_Np' # 'tavg3_2d_wxme_Nx' # Land output +# 'tavg1_2d_lfo_Nx+-' +# 'inst1_2d_lfo_Nx+-' # 'tavg1_2d_lfo_Nx' # 'inst1_2d_lfo_Nx' # 'tavg1_2d_lnd_Nx' @@ -863,3 +865,47 @@ COLLECTIONS: 'bkg.eta' 'TDEL' , 'SURFACE' , 'tdel' , 'Z0' , 'SURFACE' , 'z0m' , :: + +####################################################################### +# predictor forcing files for land da coupling +####################################################################### + + tavg1_2d_lfo_Nx+-.format: 'CFIO' , + tavg1_2d_lfo_Nx+-.descr: '2d,1-Hourly,Time-Averaged,Single-Level,Land Surface Forcings' , +# tavg1_2d_lfo_Nx+-.nbits: 10 , + tavg1_2d_lfo_Nx+-.template: '%y4%m2%d2_%h2%n2z.>>>NCSUFFIX<<<' , + tavg1_2d_lfo_Nx+-.mode: 'time-averaged' , + tavg1_2d_lfo_Nx+-.frequency: 010000 , + tavg1_2d_lfo_Nx+-.duration: 010000 , + tavg1_2d_lfo_Nx+-.ref_date: >>>IOBBKGD<<< , + tavg1_2d_lfo_Nx+-.ref_time: >>>IOBBKGT<<< , + tavg1_2d_lfo_Nx+-.end_date: >>>IOEBKGD<<< , + tavg1_2d_lfo_Nx+-.end_time: >>>IOEBKGT<<< , + tavg1_2d_lfo_Nx+-.fields: 'SLRSF' , 'SOLAR' , 'SWGDN' , + 'SWLAND' , 'SURFACE' , + 'LWS' , 'IRRAD' , 'LWGAB' , + 'PCU' , 'SURFACE' , 'PRECCU' , + 'PLS' , 'SURFACE' , 'PRECLS' , + 'SNO' , 'SURFACE' , 'PRECSNO' , + 'DFPAR' , 'SOLAR' , 'PARDF' , + 'DRPAR' , 'SOLAR' , 'PARDR' , + :: + + inst1_2d_lfo_Nx+-.format: 'CFIO' , + inst1_2d_lfo_Nx+-.descr: '2d,1-Hourly,Instantaneous,Single-Level,Land Surface Forcings' , +# inst1_2d_lfo_Nx+-.nbits: 10 , + inst1_2d_lfo_Nx+-.template: '%y4%m2%d2_%h2%n2z.>>>NCSUFFIX<<<' , + inst1_2d_lfo_Nx+-.mode: 'instantaneous' , + inst1_2d_lfo_Nx+-.frequency: 010000 , + inst1_2d_lfo_Nx+-.duration: 010000 , + inst1_2d_lfo_Nx+-.ref_date: >>>IOBBKGD<<< , + inst1_2d_lfo_Nx+-.ref_time: >>>IOBBKGT<<< , + inst1_2d_lfo_Nx+-.end_date: >>>IOEBKGD<<< , + inst1_2d_lfo_Nx+-.end_time: >>>IOEBKGT<<< , + inst1_2d_lfo_Nx+-.fields: 'DZ' , 'DYN' , 'HLML' , + 'TA' , 'DYN' , 'TLML' , + 'QA' , 'DYN' , 'QLML' , + 'SPEED' , 'DYN' , 'SPEEDLML' , + 'PS' , 'DYN' , + :: + diff --git a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/setup_atmens.pl b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/setup_atmens.pl index 1dc6e257..cf96d4d1 100755 --- a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/setup_atmens.pl +++ b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/setup_atmens.pl @@ -43,6 +43,7 @@ "fvhome=s", "nlevs=s", "nodename=s", + "ldasflg=i", "lsmcm", "radbc", "vtxrlc", @@ -146,6 +147,12 @@ sub init { $dosppt = 0; } + $ldas_on = 0; + if ( $opt_ldasflg == 1) { + $ldas_on = 1;; + } + + $setacftbc = 0; if ( $opt_acftbc ) { $setacftbc = $opt_acftbc; @@ -546,6 +553,7 @@ sub ed_agcm_rc { } if($rcd =~ /\@LSM_CHOICE/) {$rcd=~ s/\@LSM_CHOICE/$lsmchoice/g; } + if($rcd =~ /\@LDAS_INCR/) {$rcd=~ s/\@LDAS_INCR/$ldas_on/g; } if ( "$lndbcs" eq "Icarus-NLv3" ) { if($rcd =~ /\@LSM_PARMS/) {$rcd=~ s/\@LSM_PARMS/ /g; } } else { From ce60a99d51f65c6a918084ef237d03eea80e7814 Mon Sep 17 00:00:00 2001 From: saraqzhang Date: Mon, 27 Jan 2025 15:24:00 -0500 Subject: [PATCH 02/20] add GID and atmens-replay-check to ldas_setup options --- src/Applications/GEOSdas_App/fvsetup | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Applications/GEOSdas_App/fvsetup b/src/Applications/GEOSdas_App/fvsetup index bd35a3bc..8f85c1e1 100755 --- a/src/Applications/GEOSdas_App/fvsetup +++ b/src/Applications/GEOSdas_App/fvsetup @@ -584,14 +584,14 @@ $ENV{"PATH"} = $FindBin::Bin .":$ENV{PATH}"; # ------------------------------------------------------------------------ print "\n checkprintout ldas_ana == 1 ($ldas_ana)\n"; if ($ldas_ana == 1 ) { - $cmd = "$fvbin/ldas_setup setup $fvhome/lana --nymdb $nymdb $ldassetup/det_exeinp.txt $ldassetup/det_batinp.txt"; + $cmd = "$fvbin/ldas_setup setup $fvhome/lana --account $gid --nymdb $nymdb $ldassetup/det_exeinp.txt $ldassetup/det_batinp.txt"; print "$cmd\n"; $rc = system $cmd; die "Failed to setup ldas for det, check ldas config input files $!" if ( $rc ); - - if ($hyb_ens == 4 ) { - $rc = system("$fvbin/ldas_setup setup $fvhome/lana --nymdb $nymdb $ldassetup/ens_exeinp.txt $ldassetup/ens_batinp.txt"); - die "Failed to setup ldas for ens, check ldas config input files $!" if ( $rc ); + chomp($aens_replay); + if (($hyb_ens == 4) && ($aens_replay eq "no")) { + $rc = system("$fvbin/ldas_setup setup $fvhome/lana --account $gid --nymdb $nymdb $ldassetup/ens_exeinp.txt $ldassetup/ens_batinp.txt"); + die "Failed to setup ldas for ens, check ldas config input files $!" if ( $rc ); } } From 49961b2a52877dba84fdca24a3a2aaaf45bddfbb Mon Sep 17 00:00:00 2001 From: Rolf Reichle Date: Fri, 7 Feb 2025 15:29:08 -0500 Subject: [PATCH 03/20] removed Haswell & Skylake choices, fixed typo (x3dvar_ladas.input) --- src/Applications/GEOSdas_App/testsuites/x3dvar_ladas.input | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Applications/GEOSdas_App/testsuites/x3dvar_ladas.input b/src/Applications/GEOSdas_App/testsuites/x3dvar_ladas.input index ed47903b..7807e948 100644 --- a/src/Applications/GEOSdas_App/testsuites/x3dvar_ladas.input +++ b/src/Applications/GEOSdas_App/testsuites/x3dvar_ladas.input @@ -44,7 +44,7 @@ FVHOME? [/discover/nobackup/qzhang/x3dvar_ladas] The directory /discover/nobackup/qzhang/x3dvar does not exist. Create it now? [y] > -Processing nodes (1:Haswell, 2:Skylake, 3:Cascase, 4:Milan)? [2] +Processing nodes (3:Cascade, 4:Milan)? [3] > 4 Which case of variational analysis? [1] From 342e7580cee207c1c743b1d63b494b050759490a Mon Sep 17 00:00:00 2001 From: saraqzhang Date: Thu, 27 Feb 2025 12:19:40 -0500 Subject: [PATCH 04/20] add bkglforst tar file to gen_silo_arc.pl --- src/Applications/GEOSdas_App/gen_silo_arc.pl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Applications/GEOSdas_App/gen_silo_arc.pl b/src/Applications/GEOSdas_App/gen_silo_arc.pl index 8c6fb366..2921d9de 100755 --- a/src/Applications/GEOSdas_App/gen_silo_arc.pl +++ b/src/Applications/GEOSdas_App/gen_silo_arc.pl @@ -221,6 +221,8 @@ sub restart_info { printarc("$lineTAR\n"); $lineTAR = '${PESTOROOT}%s/rs/Y%y4/M%m2/%s.bkgcrst.%y4%m2%d2_%h2z.tar'; printarc("$lineTAR\n"); + $lineTAR = '${PESTOROOT}%s/rs/Y%y4/M%m2/%s.bkglforst.%y4%m2%d2_%h2z.tar'; + printarc("$lineTAR\n"); $lineTAR = '${PESTOROOT}%s/jedi/rs/Y%y4/M%m2/%s.jedi_agcmrst.%y4%m2%d2_%h2z.tar'; printarc("$lineTAR\n"); From 4073dfa6551dea9149da0a0dcf6df980dd4e9673 Mon Sep 17 00:00:00 2001 From: saraqzhang Date: Thu, 27 Feb 2025 12:29:20 -0500 Subject: [PATCH 05/20] update for LADAS in GEOSdas_App/ --- src/Applications/GEOSdas_App/GEOSdas.csm | 10 +- src/Applications/GEOSdas_App/fvsetup | 144 +++++++++++++---------- 2 files changed, 92 insertions(+), 62 deletions(-) diff --git a/src/Applications/GEOSdas_App/GEOSdas.csm b/src/Applications/GEOSdas_App/GEOSdas.csm index 78c2071a..eb0f7318 100755 --- a/src/Applications/GEOSdas_App/GEOSdas.csm +++ b/src/Applications/GEOSdas_App/GEOSdas.csm @@ -6047,6 +6047,11 @@ endif /bin/mv $momoutdir/MOM.res_${fn}.nc $FVHOME/recycle/hold/$EXPID.mom${fn}_rst.${momtag}.nc4 end endif + set lstbkglfo = `ls $FVHOME/recycle/holdpredout/$EXPID.*lfo*.$NCSUFFIX` + if ( ${%lstbkglfo} ) then + cd $FVHOME/recycle/holdpredout + tar cvf $FVWORK/$EXPID.bkglforst.${rtag}.tar $EXPID.*lfo*.$NCSUFFIX + endif cd $FVHOME/recycle/hold tar cvf $FVWORK/$EXPID.rst.${rtag}.tar $EXPID.* /bin/mv $FVWORK/$EXPID.xinc*$NCSUFFIX . @@ -6082,9 +6087,8 @@ endif #------------------------------------ if ( $LDAS_ANA ) then - /bin/rm -f $FVHOME/recycle/holdpredout/*lfo_Nx+-* - /bin/mv -f $FVWORK/*lfo_Nx+-* $FVHOME/recycle/holdpredout/. - /bin/cp $FVHOME/recycle/holdpredout/*lfo_Nx+-* $LDHOME/input/met_forcing/. + /bin/rm -f $FVHOME/recycle/holdpredout/*lfo* + /bin/cp $FVWORK/*bkg*lfo*.nc4 $FVHOME/recycle/holdpredout/. endif exit 0 diff --git a/src/Applications/GEOSdas_App/fvsetup b/src/Applications/GEOSdas_App/fvsetup index 4cb4fa19..b7a56808 100755 --- a/src/Applications/GEOSdas_App/fvsetup +++ b/src/Applications/GEOSdas_App/fvsetup @@ -584,13 +584,13 @@ $ENV{"PATH"} = $FindBin::Bin .":$ENV{PATH}"; # ------------------------------------------------------------------------ print "\n checkprintout ldas_ana == 1 ($ldas_ana)\n"; if ($ldas_ana == 1 ) { - $cmd = "$fvbin/ldas_setup setup $fvhome/lana --account $gid --nymdb $nymdb $ldassetup/det_exeinp.txt $ldassetup/det_batinp.txt"; + $cmd = "$fvbin/ldas_setup setup $fvhome/lana --account $gid --nymdb $nymdb --nhmsb $nhmsb $ldassetup/det_exeinp.txt $ldassetup/det_batinp.txt"; print "$cmd\n"; $rc = system $cmd; die "Failed to setup ldas for det, check ldas config input files $!" if ( $rc ); chomp($aens_replay); if (($hyb_ens == 4) && ($aens_replay eq "no")) { - $rc = system("$fvbin/ldas_setup setup $fvhome/lana --account $gid --nymdb $nymdb $ldassetup/ens_exeinp.txt $ldassetup/ens_batinp.txt"); + $rc = system("$fvbin/ldas_setup setup $fvhome/lana --account $gid --nymdb $nymdb --nhmsb $nhmsb $ldassetup/ens_exeinp.txt $ldassetup/ens_batinp.txt"); die "Failed to setup ldas for ens, check ldas config input files $!" if ( $rc ); } } @@ -3157,11 +3157,9 @@ sub get_nodeflg { $proc = ""; # reset default if applicable - $ans = query(" Processing nodes (1:Haswell, 2:Skylake, 3:Cascase, 4:Milan)?", "2"); + $ans = query(" Processing nodes (3:Cascade, 4:Milan)?", "4"); - if ($ans == 1) { $nodeflg = "hasw"; $ncpus_per_node = 24 } - elsif ($ans == 2) { $nodeflg = "sky"; $ncpus_per_node = 36 } - elsif ($ans == 3) { $nodeflg = "cas"; $ncpus_per_node = 45 } + if ($ans == 3) { $nodeflg = "cas"; $ncpus_per_node = 45 } elsif ($ans == 4) { $nodeflg = "mil"; $ncpus_per_node = 54 } # currently not applicable at nccs @@ -3498,7 +3496,8 @@ sub set_newradbc { } #======================================================================= sub set_ldasANA { - my($dflt, $ans1, $ans2); + my ($dflt, $ans1, $ans2); + my (@lfo_files); # initialize Land DAS processing flag #------------------------------------ @@ -3506,7 +3505,8 @@ sub set_ldasANA { $ldas_flag = 0; $ldasfdbk = 0; - $ldashome_dflt = "${fvhome}/lana/${expid}_LDAS"; + $ldashome = "${fvhome}/lana/${expid}_LDAS"; + $ldashome4ens = dirname($ldashome) ."/${expid}_LDAS4ens"; print "\n-------------\n"; print "LDAS Analysis\n"; @@ -3517,41 +3517,32 @@ sub set_ldasANA { if (yes($ans1)) { $ldas_ana = 1; $ldas_flag = 1; - $dflt = "n"; - $prompt = " Location of ldas holdpredout files or 'later'"; + + $prompt = " Location of ldas initial forcing "; + $dflt = $fvics; + $dflt = dirname($fvics) unless -d $fvics; + $ldashold = query($prompt, $dflt); - unless ($ldashold eq "later") { - die ">>> Error(1) <<< Cannot find directory, $ldashold;" + die ">>> Error <<< Cannot find directory, $ldashold;" unless -d $ldashold; - } - + + @lfo_files = (<$ldashold/*bkg*lfo*${nymdb}_${hhb}*>); + die ">>> Error <<< Cannot find lfo files in $ldashold;" + unless scalar(@lfo_files); + + $dflt = "n"; $ans2 = query(" Enable LDAS feedback to model y/n?", $dflt); if (yes($ans2)) { $ldasfdbk = 1; } - - $ldashome = $ldashome_dflt; - #$ldashome = query(" LDAS HOME?", $dflt); - $dflt = "/discover/nobackup/$user/ldasSaveInput"; $ldassetup = query(" LDAS SETUP input path?", $dflt); if ($hyb_ens == 4 ) { - $ldashome4ens = dirname($ldashome) ."/${expid}_LDAS4ens"; - #$ldashome4ens = query(" LDAS HOME for atmens?", $dflt); - $dflt = "/discover/nobackup/$user/ldasSaveInput"; $ldassetup4ens = query(" LDAS SETUP input path for ens?", $dflt); } } - - unless ($ldashome) { - $ldashome = $ldashome_dflt; - } - unless ($ldashome4ens) { - $ldashome4ens = dirname($ldashome) ."/${expid}_LDAS4ens"; - } - return 0; } @@ -3795,7 +3786,7 @@ EOF print JSCRPT $line; } close TILDE; - close JSCRPT; + close JSCRPT; # Copy and rename ensemble restarts # --------------------------------- @@ -5220,7 +5211,7 @@ EOF $nx = 24; $ny = $nx * 6; $km = $vres; - $dt = 450; + $dt = 300; $long_dt = $dt; $pert_dt = 900; $chemdt = $dt; @@ -8923,6 +8914,7 @@ sub write_FVDAS_Run_Config { $ENV{"MONTHLY_MEANS"} = $monthly_means; $ENV{"NEWRADBC"} = $newradbc; $ENV{"NCEPINPUT"} = $fvbcs; + $ENV{"NODEFLG"} = $nodeflg; $ENV{"OBSCLASS"} = $obClass; $ENV{"OMP_NUM_THREADS"} = $omp_num_threads; $ENV{"VTRACK"} = $vtrack; @@ -10055,6 +10047,7 @@ sub copy_resources { my ($chemrc, $ensFLG); my ($flags, $label, $string, $vars, $cmd); my ($fname, $fname_old, $expid_old, $target); + my ($lfo_tarfile, @lfo_files, $target, $expid_old, $fname, $fname_old); cp("$fvroot/etc/VERSION","$fvhome/run/VERSION") || die "Cannot write file $fvhome/run/VERSION: $!"; @@ -10113,18 +10106,37 @@ sub copy_resources { system("touch $fvhome/run/gaas/GAAS.BOOTSTRAP_"); if ($ldas_flag) { - $target = "$fvhome/recycle/holdpredout"; - die ">>> Error <<< Cannot find directory, $target;" unless -d $target; - die ">>> Error(2) <<< Cannot find directory, $ldashold;" + die ">>> Error <<< Cannot find directory, $ldashold;" unless -d $ldashold; - $expid_old = find_expid($ldashold); - foreach $fname_old ( <$ldashold/*lfo*> ) { - ($fname = basename($fname_old)) =~ s/$expid_old/$expid/; - cp($fname_old, "$target/$fname"); - print "cp $fname_old $target/$fname\n"; - } - + $target = "$fvhome/recycle/holdpredout"; + die ">>> Error <<< Cannot find directory, $target;" + unless -d $target; + + # extract lfo files from tarfile + #------------------------------- + $lfo_tarfile = (<$ldashold/*.bkglforst.${nymdb}_${hhb}z.tar>)[0]; + if ($lfo_tarfile) { + $expid_old = find_expid($lfo_tarfile, 1); + chdir($target); + system("tar xf $lfo_tarfile"); + system("rename $expid_old $expid *"); + } + + # or copy them from directory + #---------------------------- + else { + $expid_old = find_expid($ldashold); + @lfo_files = (<$ldashold/$expid_old.bkg.*_lfo*.nc4>); + die ">>> Error <<< No $expid_old lfo files found in $ldasahold;" + unless scalar(@lfo_files); + + foreach $fname_old ( @lfo_files ) { + ($fname = basename($fname_old)) =~ s/$expid_old/$expid/; + cp($fname_old, "$target/$fname"); + print "cp $fname_old $target/$fname\n"; + } + } } } @@ -10546,31 +10558,45 @@ sub copy_resources { #======================================================================= # name - find_expid -# purpose - find expid in directory based on directory file names +# purpose - find expid from single filename or from multiple files in a +# directory. +# +# input parameters +# - $name: name of file or directory +# - $flag: (optional) 1=filename, 2=directory [default = 2] # # notes - -# This routine extracts the front portion of each file in the -# directory to find the expid of the file. It assumes that the most -# prevalent value extracted is the expid for the files. +# 1. If $name is a file, then this routine extracts expid from front +# portion of the filename. +# 2. If $name is a directory, then this routine extracts expid from +# each file in the directory and returns the most prevalent value +# as the expid. #======================================================================= sub find_expid { - my ($dir, $fname, $most, $front, %count); - $dir = shift @_; - die ">>> ERROR <<< $dir is not a directory;" unless -d $dir; - for $fname ( <$dir/*> ) { - $front = (split(/\./, basename($fname)))[0]; - $count{$front}++; - } - $most = -1; - foreach $front (keys(%count)) { - if ($count{$front} > $most) { - $dir_expid = $front; - $most = $count{$front}; + my ($name, $expid_found, $flag, $fname, $most, $front, %count); + $name = shift @_; + $flag = shift @_; + + if ($flag == 1) { + die ">>> ERROR <<< $name is not a file;" unless -f $name; + $expid_found = (split(/\./, basename($name)))[0]; + } else { + die ">>> ERROR <<< $name is not a directory;" unless -d $name; + for $fname ( <$name/*> ) { + $front = (split(/\./, basename($fname)))[0]; + $count{$front}++; + } + $most = -1; + foreach $front (keys(%count)) { + if ($count{$front} > $most) { + $expid_found = $front; + $most = $count{$front}; + } } } - return $dir_expid; + return $expid_found; } - + #======================================================================= sub edit_collections { From 05966b24ece260add468a9a438522ddd94716d90 Mon Sep 17 00:00:00 2001 From: saraqzhang Date: Thu, 27 Feb 2025 12:40:21 -0500 Subject: [PATCH 06/20] update for LADAS in NCEP_enkf/scripts/gmao/ --- .../NCEP_enkf/scripts/gmao/atmens_arch.csh | 12 ++++++++++ .../NCEP_enkf/scripts/gmao/get_atmens_rst.pl | 22 ++++++++++++++++--- .../NCEP_enkf/scripts/gmao/update_ens.csh | 8 ++++++- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/atmens_arch.csh b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/atmens_arch.csh index 7446e800..c4090572 100755 --- a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/atmens_arch.csh +++ b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/atmens_arch.csh @@ -234,6 +234,18 @@ if ( $doall && (-d $myball) ) then endif end endif +# store background lfo members only ... +set myball = $expid.atmens_ebkglfo.${nymdb}_${hhb}z +set doall = 1 +if ( $doall && (-d $myball) ) then + @ ic = 0 + while ( $ic < $nmem ) + @ ic++ + set memtag = `echo $ic |awk '{printf "%03d", $1}'` + mkdir -p $myball/mem$memtag + /bin/mv mem$memtag/*.bkg*lfo*.$NCSUFFIX $myball/mem$memtag/ + end +endif # store aerosol background fields only ... set myball = $expid.atmens_ebaer.${nymdb}_${hhb}z set syndate = ( `tick $nymdb $nhmsb $offset_sec` ) diff --git a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/get_atmens_rst.pl b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/get_atmens_rst.pl index 4d9a9398..bc4696bf 100755 --- a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/get_atmens_rst.pl +++ b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/get_atmens_rst.pl @@ -24,11 +24,12 @@ # main program #------------- { - my ($atmens_date3_dir, $atmens_date_dir, $atmens_ebkg_dir); + my ($atmens_date3_dir, $atmens_date_dir, $atmens_ebkg_dir, $atmens_ebkglfo_dir); my ($atmens_ecbkg_dir, $atmens_erst_dir, $atmens_stat_dir); my ($dmlist, $ens, $hh3, $hms3, $label, $mem, $mfile, $mfile_new, $mm3); my ($pid, $pwd, $rdnperts_dates3_txt, $tarfile, $tarpath); my ($three_hr_sec, $ymd3, $yyyy3, @tarList, @tarListA); + my (@labels, $bkglfo_present, $elfo ); my $fvbin = $FindBin::Bin; $fvroot = dirname($fvbin); @@ -50,7 +51,14 @@ cp_("$atmens_date3_dir/$rdnperts_dates3_txt", $pwd); rename_new($rdnperts_dates3_txt); - foreach $label ("stat", "ebkg", "ecbkg", "erst") { + @labels = qw(stat ebkg ecbkg erst); + $bkglfo_present = "no"; + $elfo = "$atmens_date_dir/$expid.atmens_ebkglfo.${yyyymmdd}_${hh}z.tar"; + if ( -e $elfo ) { + $bkglfo_present = "yes" ; + @labels = qw(stat ebkg ecbkg erst ebkglfo); + } + foreach $label (@labels) { $tarfile = "$expid.atmens_$label.${yyyymmdd}_${hh}z.tar"; $tarpath = "$atmens_date_dir/$tarfile"; @@ -82,11 +90,19 @@ foreach $mem () { next unless -d $mem; foreach $mfile (<$atmens_erst_dir/$mem/${expid}*>) { mv_($mfile, $mem) } - foreach $mfile (<$atmens_ecbkg_dir/$mem/${expid}*>) { mv_($mfile, $mem) } + foreach $mfile (<$atmens_ecbkg_dir/$mem/${expid}*>) { mv_($mfile, $mem) } + chomp($bkglfo_present); + if ( $bkglfo_present eq 'yes' ) { + $atmens_ebkglfo_dir = "$expid.atmens_ebkglfo.${yyyymmdd}_${hh}z"; + foreach $mfile (<$atmens_ebkglfo_dir/$mem/${expid}*>) { mv_($mfile, $mem) } + } rename_new($mem) } rmtree($atmens_erst_dir) or die "Error; rmtree $atmens_erst_dir;"; rmtree($atmens_ecbkg_dir) or die "Error; rmtree $atmens_ecbkg_dir;"; + if ( $bkglfo_present eq 'yes' ) { + rmtree($atmens_ebkglfo_dir) or die "Error; rmtree $atmens_ebkglfo_dir;"; + } } #======================================================================= diff --git a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/update_ens.csh b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/update_ens.csh index a35c952f..a42a99b6 100755 --- a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/update_ens.csh +++ b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/update_ens.csh @@ -88,6 +88,12 @@ endif /bin/mv $fn ../updated_ens/${member}/$newname.$ncsuffix end # fn end # fntype + foreach fntype ( bkg.inst1_2d_lfo bkg.tavg1_2d_lfo ) + foreach fn ( `/bin/ls $expid.${fntype}.*.${member}.$ncsuffix` ) + set newname = `echo $fn | cut -d. -f1-4 ` + /bin/mv $fn ../updated_ens/${member}/$newname.$ncsuffix + end # fn + end # fntype endif if ( "$type" == "niana" ) then mkdir -p ../updated_ens/${member} @@ -146,7 +152,7 @@ endif if ( "$type" == "diag" ) then mkdir -p ../updated_ens/ensdiag/${member} touch ../updated_ens/ensdiag/.no_archiving - set fntype_all = (`edhist.pl -q 3 -list inc -X Bkg.eta,bkg.eta,bkg.sfc,abkg.eta,cbkg.eta,gaas_bkg.sfc -i $rcfile`) + set fntype_all = (`edhist.pl -q 3 -list inc -X Bkg.eta,bkg.eta,bkg.sfc,abkg.eta,cbkg.eta,gaas_bkg.sfc,bkg.inst1_2d_lfo,bkg.tavg1_2d_lfo -i $rcfile`) foreach fntype ( $fntype_all ) if ( $fntype == "bkg_clcv" ) then if ( ! -d ../updated_ens/ensbkgx/${member} ) then From e60e4dfa26cadb6f080804d1092e6842c7c116e3 Mon Sep 17 00:00:00 2001 From: saraqzhang Date: Thu, 27 Feb 2025 12:50:48 -0500 Subject: [PATCH 07/20] update for LADAS in NCEP_enkf/scripts/gmao/etc --- .../scripts/gmao/etc/AtmEnsConfig.csh | 6 +-- .../scripts/gmao/etc/HISTAENS.rc.tmpl | 52 +++++++++---------- .../scripts/gmao/etc/atmens_storage.arc | 1 + 3 files changed, 30 insertions(+), 29 deletions(-) diff --git a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/AtmEnsConfig.csh b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/AtmEnsConfig.csh index 6f0fd1e5..ee7abd18 100644 --- a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/AtmEnsConfig.csh +++ b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/AtmEnsConfig.csh @@ -31,9 +31,9 @@ setenv ACFTBIAS @ACFTBIAS # 0: no aircraft bias correction # archiving # --------- setenv ENSARCH_ALLBKG 1 # set this and ALL bkg files are saved in tar ball -setenv ENSARCH_FIELDS "eana,ebkg,stat,ecbkg,eoi0,edia,ebaer,erst,ebkgx,eprg,eniana" -setenv ENSARCH_FIELDS "eana,ebkg,stat,ecbkg,eoi0,edia,ebaer,erst" -setenv ENSARCH_FIELDS "eana,ebkg,stat,ecbkg,eoi0,edia,ebaer,erst,ebkgx,edstat" +setenv ENSARCH_FIELDS "eana,ebkg,stat,ecbkg,ebkglfo,eoi0,edia,ebaer,erst,ebkgx,eprg,eniana" +setenv ENSARCH_FIELDS "eana,ebkg,stat,ecbkg,ebkglfo,eoi0,edia,ebaer,erst" +setenv ENSARCH_FIELDS "eana,ebkg,stat,ecbkg,ebkglfo,eoi0,edia,ebaer,erst,ebkgx,edstat" setenv ENSARCH_WALLCLOCK 2:00:00 setenv ARCHLOC $FVARCH diff --git a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl index 7d893c18..c340a3ca 100644 --- a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl +++ b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl @@ -39,6 +39,8 @@ COLLECTIONS: 'bkg.eta' 'cbkg.eta' # 'abkg.eta' 'gaas_bkg.sfc' + 'bkg.tavg1_2d_lfo' + 'bkg.inst1_2d_lfo' # 'skeb_eta' @AENS_DOSPPT 'sppt_eta' # 'sppt_diag_eta' @@ -52,8 +54,6 @@ COLLECTIONS: 'bkg.eta' # 'inst3_3d_wxme_Np' # 'tavg3_2d_wxme_Nx' # Land output -# 'tavg1_2d_lfo_Nx+-' -# 'inst1_2d_lfo_Nx+-' # 'tavg1_2d_lfo_Nx' # 'inst1_2d_lfo_Nx' # 'tavg1_2d_lnd_Nx' @@ -870,18 +870,18 @@ COLLECTIONS: 'bkg.eta' # predictor forcing files for land da coupling ####################################################################### - tavg1_2d_lfo_Nx+-.format: 'CFIO' , - tavg1_2d_lfo_Nx+-.descr: '2d,1-Hourly,Time-Averaged,Single-Level,Land Surface Forcings' , -# tavg1_2d_lfo_Nx+-.nbits: 10 , - tavg1_2d_lfo_Nx+-.template: '%y4%m2%d2_%h2%n2z.>>>NCSUFFIX<<<' , - tavg1_2d_lfo_Nx+-.mode: 'time-averaged' , - tavg1_2d_lfo_Nx+-.frequency: 010000 , - tavg1_2d_lfo_Nx+-.duration: 010000 , - tavg1_2d_lfo_Nx+-.ref_date: >>>IOBBKGD<<< , - tavg1_2d_lfo_Nx+-.ref_time: >>>IOBBKGT<<< , - tavg1_2d_lfo_Nx+-.end_date: >>>IOEBKGD<<< , - tavg1_2d_lfo_Nx+-.end_time: >>>IOEBKGT<<< , - tavg1_2d_lfo_Nx+-.fields: 'SLRSF' , 'SOLAR' , 'SWGDN' , + bkg.tavg1_2d_lfo.format: 'CFIO' , + bkg.tavg1_2d_lfo.descr: '2d,1-Hourly,Time-Averaged,Single-Level,Land Surface Forcings' , +# bkg.tavg1_2d_lfo.nbits: 10 , + bkg.tavg1_2d_lfo.template: '%y4%m2%d2_%h2%n2z.>>>MEMBER<<<.>>>NCSUFFIX<<<' , + bkg.tavg1_2d_lfo.mode: 'time-averaged' , + bkg.tavg1_2d_lfo.frequency: 010000 , + bkg.tavg1_2d_lfo.duration: 010000 , + bkg.tavg1_2d_lfo.ref_date: >>>IOBBKGD<<< , + bkg.tavg1_2d_lfo.ref_time: >>>IOBBKGT<<< , + bkg.tavg1_2d_lfo.end_date: >>>IOEDATE<<< , + bkg.tavg1_2d_lfo.end_time: >>>IOETIME<<< , + bkg.tavg1_2d_lfo.fields: 'SLRSF' , 'SOLAR' , 'SWGDN' , 'SWLAND' , 'SURFACE' , 'LWS' , 'IRRAD' , 'LWGAB' , 'PCU' , 'SURFACE' , 'PRECCU' , @@ -891,18 +891,18 @@ COLLECTIONS: 'bkg.eta' 'DRPAR' , 'SOLAR' , 'PARDR' , :: - inst1_2d_lfo_Nx+-.format: 'CFIO' , - inst1_2d_lfo_Nx+-.descr: '2d,1-Hourly,Instantaneous,Single-Level,Land Surface Forcings' , -# inst1_2d_lfo_Nx+-.nbits: 10 , - inst1_2d_lfo_Nx+-.template: '%y4%m2%d2_%h2%n2z.>>>NCSUFFIX<<<' , - inst1_2d_lfo_Nx+-.mode: 'instantaneous' , - inst1_2d_lfo_Nx+-.frequency: 010000 , - inst1_2d_lfo_Nx+-.duration: 010000 , - inst1_2d_lfo_Nx+-.ref_date: >>>IOBBKGD<<< , - inst1_2d_lfo_Nx+-.ref_time: >>>IOBBKGT<<< , - inst1_2d_lfo_Nx+-.end_date: >>>IOEBKGD<<< , - inst1_2d_lfo_Nx+-.end_time: >>>IOEBKGT<<< , - inst1_2d_lfo_Nx+-.fields: 'DZ' , 'DYN' , 'HLML' , + bkg.inst1_2d_lfo.format: 'CFIO' , + bkg.inst1_2d_lfo.descr: '2d,1-Hourly,Instantaneous,Single-Level,Land Surface Forcings' , +# bkg.inst1_2d_lfo.nbits: 10 , + bkg.inst1_2d_lfo.template: '%y4%m2%d2_%h2%n2z.>>>MEMBER<<<.>>>NCSUFFIX<<<' , + bkg.inst1_2d_lfo.mode: 'instantaneous' , + bkg.inst1_2d_lfo.frequency: 010000 , + bkg.inst1_2d_lfo.duration: 010000 , + bkg.inst1_2d_lfo.ref_date: >>>IOBBKGD<<< , + bkg.inst1_2d_lfo.ref_time: >>>IOBBKGT<<< , + bkg.inst1_2d_lfo.end_date: >>>IOEDATE<<< , + bkg.inst1_2d_lfo.end_time: >>>IOETIME<<< , + bkg.inst1_2d_lfo.fields: 'DZ' , 'DYN' , 'HLML' , 'TA' , 'DYN' , 'TLML' , 'QA' , 'DYN' , 'QLML' , 'SPEED' , 'DYN' , 'SPEEDLML' , diff --git a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/atmens_storage.arc b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/atmens_storage.arc index f7f6ec7e..86af2c89 100644 --- a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/atmens_storage.arc +++ b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/atmens_storage.arc @@ -41,6 +41,7 @@ ${PESTOROOT}%s/atmens/Y%y4/M%m2/%s.atmens_eana_brec.%y4%m2%d2_%h2z.tar ${PESTOROOT}%s/atmens/Y%y4/M%m2/%s.atmens_easm.%y4%m2%d2_21z.tar ${PESTOROOT}%s/atmens/Y%y4/M%m2/%s.atmens_ebkg.%y4%m2%d2_%h2z.tar ${PESTOROOT}%s/atmens/Y%y4/M%m2/%s.atmens_ecbkg.%y4%m2%d2_%h2z.tar +${PESTOROOT}%s/atmens/Y%y4/M%m2/%s.atmens_ebkglfo.%y4%m2%d2_%h2z.tar ${PESTOROOT}%s/atmens/Y%y4/M%m2/%s.atmens_eana.%y4%m2%d2_%h2z.tar ${PESTOROOT}%s/atmens/Y%y4/M%m2/%s.atmens_eniana.%y4%m2%d2_%h2z.tar ${PESTOROOT}%s/atmens/Y%y4/M%m2/%s.atmens_eaaer.%y4%m2%d2_%h2z.tar From 481e86b2f5b028acd9f28f9ac175ac3cebecd8a2 Mon Sep 17 00:00:00 2001 From: saraqzhang Date: Wed, 26 Mar 2025 12:52:57 -0400 Subject: [PATCH 08/20] minor edits in fvsetup and get_atmens_rst.pl modified: src/Applications/GEOSdas_App/fvsetup modified: src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/get_atmens_rst.pl --- src/Applications/GEOSdas_App/fvsetup | 31 +++++++++---------- .../NCEP_enkf/scripts/gmao/get_atmens_rst.pl | 16 +++++----- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/src/Applications/GEOSdas_App/fvsetup b/src/Applications/GEOSdas_App/fvsetup index b7a56808..ef6ea2f8 100755 --- a/src/Applications/GEOSdas_App/fvsetup +++ b/src/Applications/GEOSdas_App/fvsetup @@ -3497,7 +3497,7 @@ sub set_newradbc { #======================================================================= sub set_ldasANA { my ($dflt, $ans1, $ans2); - my (@lfo_files); + my (@bkglfo_files); # initialize Land DAS processing flag #------------------------------------ @@ -3526,9 +3526,9 @@ sub set_ldasANA { die ">>> Error <<< Cannot find directory, $ldashold;" unless -d $ldashold; - @lfo_files = (<$ldashold/*bkg*lfo*${nymdb}_${hhb}*>); + @bkglfo_files = (<$ldashold/*bkg*lfo*${nymdb}_${hhb}*>); die ">>> Error <<< Cannot find lfo files in $ldashold;" - unless scalar(@lfo_files); + unless scalar(@bkglfo_files); $dflt = "n"; $ans2 = query(" Enable LDAS feedback to model y/n?", $dflt); @@ -5211,7 +5211,7 @@ EOF $nx = 24; $ny = $nx * 6; $km = $vres; - $dt = 300; + $dt = 450; $long_dt = $dt; $pert_dt = 900; $chemdt = $dt; @@ -9795,13 +9795,12 @@ sub init_agcm_rc { $envvars{"coupled"} = $coupled; set_AGCM_envvars(%envvars); - $flags{"carma_tracers"} = $carma_tracers; $flags{"gocart_tracers"} = $gocart_tracers; + $flags{"carma_tracers"} = $carma_tracers; $flags{"iau"} = $doiau; - $flags{"ldas_flag"} = $ldas_flag; - $flags{"lsmodel_flag"} = $lsmodel_flag; $flags{"pcp_forced"} = $pcp_forced; - + $flags{"lsmodel_flag"} = $lsmodel_flag; + $flags{"ldas_flag"} = $ldas_flag; set_AGCM_flags(%flags); # $num_readers must divide evenly into $ny @@ -10047,7 +10046,7 @@ sub copy_resources { my ($chemrc, $ensFLG); my ($flags, $label, $string, $vars, $cmd); my ($fname, $fname_old, $expid_old, $target); - my ($lfo_tarfile, @lfo_files, $target, $expid_old, $fname, $fname_old); + my ($bkglfo_tarfile, @bkglfo_files, $target, $expid_old, $fname, $fname_old); cp("$fvroot/etc/VERSION","$fvhome/run/VERSION") || die "Cannot write file $fvhome/run/VERSION: $!"; @@ -10115,11 +10114,11 @@ sub copy_resources { # extract lfo files from tarfile #------------------------------- - $lfo_tarfile = (<$ldashold/*.bkglforst.${nymdb}_${hhb}z.tar>)[0]; - if ($lfo_tarfile) { - $expid_old = find_expid($lfo_tarfile, 1); + $bkglfo_tarfile = (<$ldashold/*.bkglforst.${nymdb}_${hhb}z.tar>)[0]; + if ($bkglfo_tarfile) { + $expid_old = find_expid($bkglfo_tarfile, 1); chdir($target); - system("tar xf $lfo_tarfile"); + system("tar xf $bkglfo_tarfile"); system("rename $expid_old $expid *"); } @@ -10127,11 +10126,11 @@ sub copy_resources { #---------------------------- else { $expid_old = find_expid($ldashold); - @lfo_files = (<$ldashold/$expid_old.bkg.*_lfo*.nc4>); + @bkglfo_files = (<$ldashold/$expid_old.bkg.*_lfo*.nc4>); die ">>> Error <<< No $expid_old lfo files found in $ldasahold;" - unless scalar(@lfo_files); + unless scalar(@bkglfo_files); - foreach $fname_old ( @lfo_files ) { + foreach $fname_old ( @bkglfo_files ) { ($fname = basename($fname_old)) =~ s/$expid_old/$expid/; cp($fname_old, "$target/$fname"); print "cp $fname_old $target/$fname\n"; diff --git a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/get_atmens_rst.pl b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/get_atmens_rst.pl index bc4696bf..7f77d967 100755 --- a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/get_atmens_rst.pl +++ b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/get_atmens_rst.pl @@ -29,7 +29,7 @@ my ($dmlist, $ens, $hh3, $hms3, $label, $mem, $mfile, $mfile_new, $mm3); my ($pid, $pwd, $rdnperts_dates3_txt, $tarfile, $tarpath); my ($three_hr_sec, $ymd3, $yyyy3, @tarList, @tarListA); - my (@labels, $bkglfo_present, $elfo ); + my (@labels, $ebkglfo_present, $ebkglfo ); my $fvbin = $FindBin::Bin; $fvroot = dirname($fvbin); @@ -52,10 +52,10 @@ rename_new($rdnperts_dates3_txt); @labels = qw(stat ebkg ecbkg erst); - $bkglfo_present = "no"; - $elfo = "$atmens_date_dir/$expid.atmens_ebkglfo.${yyyymmdd}_${hh}z.tar"; - if ( -e $elfo ) { - $bkglfo_present = "yes" ; + $ebkglfo_present = "no"; + $ebkglfo = "$atmens_date_dir/$expid.atmens_ebkglfo.${yyyymmdd}_${hh}z.tar"; + if ( -e $ebkglfo ) { + $ebkglfo_present = "yes" ; @labels = qw(stat ebkg ecbkg erst ebkglfo); } foreach $label (@labels) { @@ -91,8 +91,8 @@ next unless -d $mem; foreach $mfile (<$atmens_erst_dir/$mem/${expid}*>) { mv_($mfile, $mem) } foreach $mfile (<$atmens_ecbkg_dir/$mem/${expid}*>) { mv_($mfile, $mem) } - chomp($bkglfo_present); - if ( $bkglfo_present eq 'yes' ) { + chomp($ebkglfo_present); + if ( $ebkglfo_present eq 'yes' ) { $atmens_ebkglfo_dir = "$expid.atmens_ebkglfo.${yyyymmdd}_${hh}z"; foreach $mfile (<$atmens_ebkglfo_dir/$mem/${expid}*>) { mv_($mfile, $mem) } } @@ -100,7 +100,7 @@ } rmtree($atmens_erst_dir) or die "Error; rmtree $atmens_erst_dir;"; rmtree($atmens_ecbkg_dir) or die "Error; rmtree $atmens_ecbkg_dir;"; - if ( $bkglfo_present eq 'yes' ) { + if ( $ebkglfo_present eq 'yes' ) { rmtree($atmens_ebkglfo_dir) or die "Error; rmtree $atmens_ebkglfo_dir;"; } } From f1df78df8cb8a0774072ed46d51e3a1af16b0d54 Mon Sep 17 00:00:00 2001 From: Rolf Reichle Date: Thu, 27 Mar 2025 09:57:21 -0400 Subject: [PATCH 09/20] clarified comment re. LDAS setup (fvsetup) --- src/Applications/GEOSdas_App/fvsetup | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/Applications/GEOSdas_App/fvsetup b/src/Applications/GEOSdas_App/fvsetup index af6c1abd..4689865b 100755 --- a/src/Applications/GEOSdas_App/fvsetup +++ b/src/Applications/GEOSdas_App/fvsetup @@ -578,20 +578,21 @@ $ENV{"PATH"} = $FindBin::Bin .":$ENV{PATH}"; $rc = system("$fvbin/fix_gocart_rc.csh $vres $fvhome/run/gocart"); die "Failed to fix GOCART levels-referencing $!" if ( $rc ); -# Provide ldas config input files: det_exeinp.txt, det_batinp.txt -# For Hyb-4dEnVar, do same for ens_exeinp.txt and ens_batinp.txt -# Please follow instructions in GEOSldas/README.md for the config input files +# Call LDAS setup script. +# Provide LDAS config input files in $ldassetup/: det_exeinp.txt, det_batinp.txt. +# For Hyb-4dEnVar, do same for ens_exeinp.txt, ens_batinp.txt. +# See GEOSldas/README.md for generating sample config input files. # ------------------------------------------------------------------------ print "\n checkprintout ldas_ana == 1 ($ldas_ana)\n"; if ($ldas_ana == 1 ) { $cmd = "$fvbin/ldas_setup setup $fvhome/lana --account $gid --nymdb $nymdb --nhmsb $nhmsb $ldassetup/det_exeinp.txt $ldassetup/det_batinp.txt"; print "$cmd\n"; $rc = system $cmd; - die "Failed to setup ldas for det, check ldas config input files $!" if ( $rc ); + die "Failed to setup LDAS for det, check LDAS config input files $!" if ( $rc ); chomp($aens_replay); if (($hyb_ens == 4) && ($aens_replay eq "no")) { $rc = system("$fvbin/ldas_setup setup $fvhome/lana --account $gid --nymdb $nymdb --nhmsb $nhmsb $ldassetup/ens_exeinp.txt $ldassetup/ens_batinp.txt"); - die "Failed to setup ldas for ens, check ldas config input files $!" if ( $rc ); + die "Failed to setup LDAS for ens, check LDAS config input files $!" if ( $rc ); } } @@ -3519,7 +3520,7 @@ sub set_ldasANA { $ldas_ana = 1; $ldas_flag = 1; - $prompt = " Location of ldas initial forcing "; + $prompt = " Location of LDAS initial forcing "; $dflt = $fvics; $dflt = dirname($fvics) unless -d $fvics; @@ -3537,11 +3538,11 @@ sub set_ldasANA { $ldasfdbk = 1; } $dflt = "/discover/nobackup/$user/ldasSaveInput"; - $ldassetup = query(" LDAS SETUP input path?", $dflt); + $ldassetup = query(" LDAS setup input path?", $dflt); if ($hyb_ens == 4 ) { $dflt = "/discover/nobackup/$user/ldasSaveInput"; - $ldassetup4ens = query(" LDAS SETUP input path for ens?", $dflt); + $ldassetup4ens = query(" LDAS setup input path for ens?", $dflt); } } return 0; From 6956f6bf490eb1177f2bd60cf051ca582b579aff Mon Sep 17 00:00:00 2001 From: Rolf Reichle Date: Thu, 27 Mar 2025 10:45:54 -0400 Subject: [PATCH 10/20] fixed typo in error message (fvsetup) --- src/Applications/GEOSdas_App/fvsetup | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Applications/GEOSdas_App/fvsetup b/src/Applications/GEOSdas_App/fvsetup index 4689865b..b3894bb8 100755 --- a/src/Applications/GEOSdas_App/fvsetup +++ b/src/Applications/GEOSdas_App/fvsetup @@ -3529,7 +3529,7 @@ sub set_ldasANA { unless -d $ldashold; @bkglfo_files = (<$ldashold/*bkg*lfo*${nymdb}_${hhb}*>); - die ">>> Error <<< Cannot find lfo files in $ldashold;" + die ">>> Error <<< Cannot find bkglfo files in $ldashold;" unless scalar(@bkglfo_files); $dflt = "n"; @@ -10129,7 +10129,7 @@ sub copy_resources { else { $expid_old = find_expid($ldashold); @bkglfo_files = (<$ldashold/$expid_old.bkg.*_lfo*.nc4>); - die ">>> Error <<< No $expid_old lfo files found in $ldasahold;" + die ">>> Error <<< No $expid_old lfo files found in $ldashold;" unless scalar(@bkglfo_files); foreach $fname_old ( @bkglfo_files ) { From 7d683c2744aabbd56d572001caff7d4c9f5214e1 Mon Sep 17 00:00:00 2001 From: saraqzhang Date: Thu, 27 Mar 2025 11:09:38 -0400 Subject: [PATCH 11/20] remove SWLAND from lfo collection in HISTAENS.rc.tmpl --- .../NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl index c340a3ca..f2bcb475 100644 --- a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl +++ b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl @@ -612,7 +612,6 @@ COLLECTIONS: 'bkg.eta' tavg1_2d_lfo_Nx.end_date: >>>IOBBKGD<<< , tavg1_2d_lfo_Nx.end_time: >>>IOBBKGT<<< , tavg1_2d_lfo_Nx.fields: 'SLRSF' , 'SOLAR' , 'SWGDN' , - 'SWLAND' , 'SURFACE' , 'LWS' , 'IRRAD' , 'LWGAB' , 'PCU' , 'SURFACE' , 'PRECCU' , 'PLS' , 'SURFACE' , 'PRECLS' , @@ -882,7 +881,6 @@ COLLECTIONS: 'bkg.eta' bkg.tavg1_2d_lfo.end_date: >>>IOEDATE<<< , bkg.tavg1_2d_lfo.end_time: >>>IOETIME<<< , bkg.tavg1_2d_lfo.fields: 'SLRSF' , 'SOLAR' , 'SWGDN' , - 'SWLAND' , 'SURFACE' , 'LWS' , 'IRRAD' , 'LWGAB' , 'PCU' , 'SURFACE' , 'PRECCU' , 'PLS' , 'SURFACE' , 'PRECLS' , From a3fd8fff1f75bd030a8eb12d3456df319a0765d0 Mon Sep 17 00:00:00 2001 From: saraqzhang Date: Tue, 15 Apr 2025 14:30:55 -0400 Subject: [PATCH 12/20] minor edit to bkg.lfo file name modified: fvsetup --- src/Applications/GEOSdas_App/fvsetup | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Applications/GEOSdas_App/fvsetup b/src/Applications/GEOSdas_App/fvsetup index b3894bb8..d915f0ae 100755 --- a/src/Applications/GEOSdas_App/fvsetup +++ b/src/Applications/GEOSdas_App/fvsetup @@ -3528,7 +3528,7 @@ sub set_ldasANA { die ">>> Error <<< Cannot find directory, $ldashold;" unless -d $ldashold; - @bkglfo_files = (<$ldashold/*bkg*lfo*${nymdb}_${hhb}*>); + @bkglfo_files = (<$ldashold/*bkg.lfo*${nymdb}_${hhb}*>); die ">>> Error <<< Cannot find bkglfo files in $ldashold;" unless scalar(@bkglfo_files); @@ -10128,7 +10128,7 @@ sub copy_resources { #---------------------------- else { $expid_old = find_expid($ldashold); - @bkglfo_files = (<$ldashold/$expid_old.bkg.*_lfo*.nc4>); + @bkglfo_files = (<$ldashold/$expid_old.bkg.lfo*.nc4>); die ">>> Error <<< No $expid_old lfo files found in $ldashold;" unless scalar(@bkglfo_files); From 05a7630804e2ca956232ca6635a4592a2f97b9ad Mon Sep 17 00:00:00 2001 From: saraqzhang Date: Tue, 15 Apr 2025 15:21:39 -0400 Subject: [PATCH 13/20] minor edits for bkg.lfo name --- src/Applications/GEOSdas_App/GEOSdas.csm | 2 +- .../NCEP_enkf/scripts/gmao/atmens_arch.csh | 2 +- .../scripts/gmao/etc/HISTAENS.rc.tmpl | 52 +++++++++---------- .../NCEP_enkf/scripts/gmao/update_ens.csh | 4 +- 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/Applications/GEOSdas_App/GEOSdas.csm b/src/Applications/GEOSdas_App/GEOSdas.csm index eb0f7318..895550ee 100755 --- a/src/Applications/GEOSdas_App/GEOSdas.csm +++ b/src/Applications/GEOSdas_App/GEOSdas.csm @@ -6088,7 +6088,7 @@ endif if ( $LDAS_ANA ) then /bin/rm -f $FVHOME/recycle/holdpredout/*lfo* - /bin/cp $FVWORK/*bkg*lfo*.nc4 $FVHOME/recycle/holdpredout/. + /bin/cp $FVWORK/*bkg.lfo*.nc4 $FVHOME/recycle/holdpredout/. endif exit 0 diff --git a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/atmens_arch.csh b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/atmens_arch.csh index c4090572..23d8c850 100755 --- a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/atmens_arch.csh +++ b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/atmens_arch.csh @@ -243,7 +243,7 @@ if ( $doall && (-d $myball) ) then @ ic++ set memtag = `echo $ic |awk '{printf "%03d", $1}'` mkdir -p $myball/mem$memtag - /bin/mv mem$memtag/*.bkg*lfo*.$NCSUFFIX $myball/mem$memtag/ + /bin/mv mem$memtag/*.bkg.lfo*.$NCSUFFIX $myball/mem$memtag/ end endif # store aerosol background fields only ... diff --git a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl index f2bcb475..26ffcb19 100644 --- a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl +++ b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl @@ -39,8 +39,8 @@ COLLECTIONS: 'bkg.eta' 'cbkg.eta' # 'abkg.eta' 'gaas_bkg.sfc' - 'bkg.tavg1_2d_lfo' - 'bkg.inst1_2d_lfo' + 'bkg.lfo_tavg' + 'bkg.lfo_inst' # 'skeb_eta' @AENS_DOSPPT 'sppt_eta' # 'sppt_diag_eta' @@ -869,18 +869,18 @@ COLLECTIONS: 'bkg.eta' # predictor forcing files for land da coupling ####################################################################### - bkg.tavg1_2d_lfo.format: 'CFIO' , - bkg.tavg1_2d_lfo.descr: '2d,1-Hourly,Time-Averaged,Single-Level,Land Surface Forcings' , -# bkg.tavg1_2d_lfo.nbits: 10 , - bkg.tavg1_2d_lfo.template: '%y4%m2%d2_%h2%n2z.>>>MEMBER<<<.>>>NCSUFFIX<<<' , - bkg.tavg1_2d_lfo.mode: 'time-averaged' , - bkg.tavg1_2d_lfo.frequency: 010000 , - bkg.tavg1_2d_lfo.duration: 010000 , - bkg.tavg1_2d_lfo.ref_date: >>>IOBBKGD<<< , - bkg.tavg1_2d_lfo.ref_time: >>>IOBBKGT<<< , - bkg.tavg1_2d_lfo.end_date: >>>IOEDATE<<< , - bkg.tavg1_2d_lfo.end_time: >>>IOETIME<<< , - bkg.tavg1_2d_lfo.fields: 'SLRSF' , 'SOLAR' , 'SWGDN' , + bkg.lfo_tavg.format: 'CFIO' , + bkg.lfo_tavg.descr: '2d,1-Hourly,Time-Averaged,Single-Level,Land Surface Forcings' , +# bkg.lfo_tavg.nbits: 10 , + bkg.lfo_tavg.template: '%y4%m2%d2_%h2%n2z.>>>NCSUFFIX<<<' , + bkg.lfo_tavg.mode: 'time-averaged' , + bkg.lfo_tavg.frequency: 010000 , + bkg.lfo_tavg.duration: 010000 , + bkg.lfo_tavg.ref_date: >>>IOBBKGD<<< , + bkg.lfo_tavg.ref_time: >>>IOBBKGT<<< , + bkg.lfo_tavg.end_date: >>>IOEDATE<<< , + bkg.lfo_tavg.end_time: >>>IOETIME<<< , + bkg.lfo_tavg.fields: 'SLRSF' , 'SOLAR' , 'SWGDN' , 'LWS' , 'IRRAD' , 'LWGAB' , 'PCU' , 'SURFACE' , 'PRECCU' , 'PLS' , 'SURFACE' , 'PRECLS' , @@ -889,18 +889,18 @@ COLLECTIONS: 'bkg.eta' 'DRPAR' , 'SOLAR' , 'PARDR' , :: - bkg.inst1_2d_lfo.format: 'CFIO' , - bkg.inst1_2d_lfo.descr: '2d,1-Hourly,Instantaneous,Single-Level,Land Surface Forcings' , -# bkg.inst1_2d_lfo.nbits: 10 , - bkg.inst1_2d_lfo.template: '%y4%m2%d2_%h2%n2z.>>>MEMBER<<<.>>>NCSUFFIX<<<' , - bkg.inst1_2d_lfo.mode: 'instantaneous' , - bkg.inst1_2d_lfo.frequency: 010000 , - bkg.inst1_2d_lfo.duration: 010000 , - bkg.inst1_2d_lfo.ref_date: >>>IOBBKGD<<< , - bkg.inst1_2d_lfo.ref_time: >>>IOBBKGT<<< , - bkg.inst1_2d_lfo.end_date: >>>IOEDATE<<< , - bkg.inst1_2d_lfo.end_time: >>>IOETIME<<< , - bkg.inst1_2d_lfo.fields: 'DZ' , 'DYN' , 'HLML' , + bkg.lfo_inst.format: 'CFIO' , + bkg.lfo_inst.descr: '2d,1-Hourly,Instantaneous,Single-Level,Land Surface Forcings' , +# bkg.lfo_inst.nbits: 10 , + bkg.lfo_inst.template: '%y4%m2%d2_%h2%n2z.>>>NCSUFFIX<<<' , + bkg.lfo_inst.mode: 'instantaneous' , + bkg.lfo_inst.frequency: 010000 , + bkg.lfo_inst.duration: 010000 , + bkg.lfo_inst.ref_date: >>>IOBBKGD<<< , + bkg.lfo_inst.ref_time: >>>IOBBKGT<<< , + bkg.lfo_inst.end_date: >>>IOEDATE<<< , + bkg.lfo_inst.end_time: >>>IOETIME<<< , + bkg.lfo_inst.fields: 'DZ' , 'DYN' , 'HLML' , 'TA' , 'DYN' , 'TLML' , 'QA' , 'DYN' , 'QLML' , 'SPEED' , 'DYN' , 'SPEEDLML' , diff --git a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/update_ens.csh b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/update_ens.csh index a42a99b6..c5d7b08a 100755 --- a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/update_ens.csh +++ b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/update_ens.csh @@ -88,7 +88,7 @@ endif /bin/mv $fn ../updated_ens/${member}/$newname.$ncsuffix end # fn end # fntype - foreach fntype ( bkg.inst1_2d_lfo bkg.tavg1_2d_lfo ) + foreach fntype ( bkg.lfo_inst bkg.lfo_tavg ) foreach fn ( `/bin/ls $expid.${fntype}.*.${member}.$ncsuffix` ) set newname = `echo $fn | cut -d. -f1-4 ` /bin/mv $fn ../updated_ens/${member}/$newname.$ncsuffix @@ -152,7 +152,7 @@ endif if ( "$type" == "diag" ) then mkdir -p ../updated_ens/ensdiag/${member} touch ../updated_ens/ensdiag/.no_archiving - set fntype_all = (`edhist.pl -q 3 -list inc -X Bkg.eta,bkg.eta,bkg.sfc,abkg.eta,cbkg.eta,gaas_bkg.sfc,bkg.inst1_2d_lfo,bkg.tavg1_2d_lfo -i $rcfile`) + set fntype_all = (`edhist.pl -q 3 -list inc -X Bkg.eta,bkg.eta,bkg.sfc,abkg.eta,cbkg.eta,gaas_bkg.sfc,bkg.lfo_inst,bkg.lfo_tavg -i $rcfile`) foreach fntype ( $fntype_all ) if ( $fntype == "bkg_clcv" ) then if ( ! -d ../updated_ens/ensbkgx/${member} ) then From f33e3b539655c73f7af47ced3cf3ce8d08a5e76b Mon Sep 17 00:00:00 2001 From: saraqzhang Date: Tue, 15 Apr 2025 23:31:27 -0400 Subject: [PATCH 14/20] reinstate updates for ldas flag modified: AGCMrc.pm --- src/Applications/GEOSdas_App/AGCMrc.pm | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) mode change 100644 => 100755 src/Applications/GEOSdas_App/AGCMrc.pm diff --git a/src/Applications/GEOSdas_App/AGCMrc.pm b/src/Applications/GEOSdas_App/AGCMrc.pm old mode 100644 new mode 100755 index 78280e6f..5496b709 --- a/src/Applications/GEOSdas_App/AGCMrc.pm +++ b/src/Applications/GEOSdas_App/AGCMrc.pm @@ -17,6 +17,7 @@ package AGCMrc; # 03May2010 Todling Add reference to CARMA rst # 19Aug2010 Todling turb_internal_rst is needed for reproduc/ble fcst # 09Oct2013 Todling Add logics to handle precip-forcing option +# 07Jan2024 Stassi No longer need '#' in front of key in %uncomment hash # ######################################################################### use strict; @@ -35,6 +36,7 @@ my ($gocart_tracers, $carma_tracers, $iau, $pcp_forced, $lsmodel_flag); my ($fvhome, $fvroot); my ($coupled); my ($envvars_set, $flags_set, %subst); +my ($ldas_flag); #---------------------------------- # GCM Restart files @@ -123,7 +125,6 @@ my %list = (rs5_core => \@rs5_core, stratchem_internal_rst stratchem_import_rst ); - #======================================================================= # name - set_AGCM_envvars # purpose - set global variables: $fvhome and $fvroot @@ -144,7 +145,6 @@ sub set_AGCM_envvars { @rs5_notused = (@rs5_notused, @rs5_coupled); @rs5_files = (@rs5_core, @rs5_boot, @rs5_others); } - } #======================================================================= @@ -160,6 +160,7 @@ sub set_AGCM_flags { $lsmodel_flag = hashextract("lsmodel_flag", %flags); $iau = hashextract("iau", %flags); $pcp_forced = hashextract("pcp_forced", %flags); + $ldas_flag = hashextract("ldas_flag", %flags); $flags_set = 1; } @@ -314,8 +315,8 @@ sub ed_g5agcm_rc { # uncomment precipation force except when specified # ------------------------------------------------- if ( $pcp_forced ) { - $uncomment{"#PRECIP_FILE"} = 1; - $uncomment{"#USE_PP_TAPER"} = 1; + $uncomment{"PRECIP_FILE"} = 1; + $uncomment{"USE_PP_TAPER"} = 1; } # edit and output AGCM.rc.tmpl @@ -354,6 +355,7 @@ sub outputAGCM { my ($outfile, $ox_friendlies); my ($rcd, $label, $key, $rst); my (@DEFAULT_TYPE_FOUND); + my ($space, $pound); $tmpl = shift @_; $outfl = shift @_; @@ -413,8 +415,11 @@ sub outputAGCM { # uncomment specified lines if key is in first non-blank position #---------------------------------------------------------------- foreach $key ( keys %uncomment ) { - if ($rcd =~ /^(\s*)$key/) { - if ( $uncomment{"$key"} ) {$rcd = substr $rcd, 1;}; + $key =~ s/^\#//; # no longer need '#' in front of key + if ($rcd =~ /^(\s*)(\#*)\s*$key/) { + $space = $1; + $pound = $2; + $rcd =~ s/^$space$pound/$space/; } } print(LUN2 "$rcd\n"); From a466a3676279ec4724e8b2f368d2f638d1929250 Mon Sep 17 00:00:00 2001 From: saraqzhang Date: Wed, 16 Apr 2025 22:15:52 -0400 Subject: [PATCH 15/20] edits on bkg lfo query and tar --- src/Applications/GEOSdas_App/GEOSdas.csm | 5 ++--- src/Applications/GEOSdas_App/fvsetup | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Applications/GEOSdas_App/GEOSdas.csm b/src/Applications/GEOSdas_App/GEOSdas.csm index 895550ee..ce6d07f7 100755 --- a/src/Applications/GEOSdas_App/GEOSdas.csm +++ b/src/Applications/GEOSdas_App/GEOSdas.csm @@ -6047,10 +6047,9 @@ endif /bin/mv $momoutdir/MOM.res_${fn}.nc $FVHOME/recycle/hold/$EXPID.mom${fn}_rst.${momtag}.nc4 end endif - set lstbkglfo = `ls $FVHOME/recycle/holdpredout/$EXPID.*lfo*.$NCSUFFIX` + set lstbkglfo = `ls $FVWORK/$EXPID.bkg.lfo*.$NCSUFFIX` if ( ${%lstbkglfo} ) then - cd $FVHOME/recycle/holdpredout - tar cvf $FVWORK/$EXPID.bkglforst.${rtag}.tar $EXPID.*lfo*.$NCSUFFIX + tar cvf $FVWORK/$EXPID.bkglforst.${rtag}.tar $EXPID.bkg.lfo*.$NCSUFFIX endif cd $FVHOME/recycle/hold tar cvf $FVWORK/$EXPID.rst.${rtag}.tar $EXPID.* diff --git a/src/Applications/GEOSdas_App/fvsetup b/src/Applications/GEOSdas_App/fvsetup index d915f0ae..0c15ef06 100755 --- a/src/Applications/GEOSdas_App/fvsetup +++ b/src/Applications/GEOSdas_App/fvsetup @@ -3528,7 +3528,7 @@ sub set_ldasANA { die ">>> Error <<< Cannot find directory, $ldashold;" unless -d $ldashold; - @bkglfo_files = (<$ldashold/*bkg.lfo*${nymdb}_${hhb}*>); + @bkglfo_files = (<$ldashold/*bkg*lfo*${nymdb}_${hhb}*>); die ">>> Error <<< Cannot find bkglfo files in $ldashold;" unless scalar(@bkglfo_files); From 1780bedb173117bb2cb81490148cd953c1b57739 Mon Sep 17 00:00:00 2001 From: saraqzhang Date: Wed, 23 Apr 2025 16:46:24 -0400 Subject: [PATCH 16/20] reinstate member tag to bkg.lfo filename in HISTAENS.rc.tmpl --- .../NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl index 26ffcb19..c7b918c4 100644 --- a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl +++ b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/etc/HISTAENS.rc.tmpl @@ -872,7 +872,7 @@ COLLECTIONS: 'bkg.eta' bkg.lfo_tavg.format: 'CFIO' , bkg.lfo_tavg.descr: '2d,1-Hourly,Time-Averaged,Single-Level,Land Surface Forcings' , # bkg.lfo_tavg.nbits: 10 , - bkg.lfo_tavg.template: '%y4%m2%d2_%h2%n2z.>>>NCSUFFIX<<<' , + bkg.lfo_tavg.template: '%y4%m2%d2_%h2%n2z.>>>MEMBER<<<.>>>NCSUFFIX<<<' , bkg.lfo_tavg.mode: 'time-averaged' , bkg.lfo_tavg.frequency: 010000 , bkg.lfo_tavg.duration: 010000 , @@ -892,7 +892,7 @@ COLLECTIONS: 'bkg.eta' bkg.lfo_inst.format: 'CFIO' , bkg.lfo_inst.descr: '2d,1-Hourly,Instantaneous,Single-Level,Land Surface Forcings' , # bkg.lfo_inst.nbits: 10 , - bkg.lfo_inst.template: '%y4%m2%d2_%h2%n2z.>>>NCSUFFIX<<<' , + bkg.lfo_inst.template: '%y4%m2%d2_%h2%n2z.>>>MEMBER<<<.>>>NCSUFFIX<<<' , bkg.lfo_inst.mode: 'instantaneous' , bkg.lfo_inst.frequency: 010000 , bkg.lfo_inst.duration: 010000 , From a4e6c0c933130bd13c294f6dd4d25f9a37108a81 Mon Sep 17 00:00:00 2001 From: saraqzhang Date: Tue, 29 Apr 2025 14:13:42 -0400 Subject: [PATCH 17/20] update tags of ldasGC and gcm_App modified: components.yaml --- components.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components.yaml b/components.yaml index 56031c19..e107489f 100644 --- a/components.yaml +++ b/components.yaml @@ -75,7 +75,7 @@ MAPL: GEOSldas_GridComp: local: ./src/Components/@GEOSldas_GridComp remote: ../GEOSldas_GridComp.git - tag: v1.0.2 + tag: v2.0.0 FMS: local: ./src/Shared/@FMS @@ -251,7 +251,7 @@ umwm: GEOSgcm_App: local: ./src/Applications/@GEOSgcm_App remote: ../GEOSgcm_App.git - tag: g2.3.8.1 + tag: forladas-g2.3.8.1 develop: develop Ocean-LETKF: From db9ec8a5a669803ee179e6ac343c6efaa0b63b98 Mon Sep 17 00:00:00 2001 From: Ricardo Todling Date: Mon, 5 May 2025 11:05:34 -0400 Subject: [PATCH 18/20] back to the old; zero diff --- src/Applications/GEOSdas_App/fvsetup | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Applications/GEOSdas_App/fvsetup b/src/Applications/GEOSdas_App/fvsetup index ad7a207d..dfa5e03a 100755 --- a/src/Applications/GEOSdas_App/fvsetup +++ b/src/Applications/GEOSdas_App/fvsetup @@ -3177,9 +3177,11 @@ sub get_nodeflg { $proc = ""; # reset default if applicable - $ans = query(" Processing nodes (3:Cascade, 4:Milan)?", "4"); + $ans = query(" Processing nodes (1:Haswell, 2:Skylake, 3:Cascade, 4:Milan)?", "4"); - if ($ans == 3) { $nodeflg = "cas"; $ncpus_per_node = 45 } + if ($ans == 1) { $nodeflg = "hasw"; $ncpus_per_node = 24 } + elsif ($ans == 2) { $nodeflg = "sky"; $ncpus_per_node = 36 } + elsif ($ans == 3) { $nodeflg = "cas"; $ncpus_per_node = 45 } elsif ($ans == 4) { $nodeflg = "mil"; $ncpus_per_node = 54 } # currently not applicable at nccs From fdd92ce02abe5e34321f9379ae0edeacfdfc8dd7 Mon Sep 17 00:00:00 2001 From: Ricardo Todling Date: Mon, 5 May 2025 11:09:35 -0400 Subject: [PATCH 19/20] identation --- src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/update_ens.csh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/update_ens.csh b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/update_ens.csh index c5d7b08a..a1c42853 100755 --- a/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/update_ens.csh +++ b/src/Applications/NCEP_Etc/NCEP_enkf/scripts/gmao/update_ens.csh @@ -93,7 +93,7 @@ endif set newname = `echo $fn | cut -d. -f1-4 ` /bin/mv $fn ../updated_ens/${member}/$newname.$ncsuffix end # fn - end # fntype + end # fntype endif if ( "$type" == "niana" ) then mkdir -p ../updated_ens/${member} From e1e36c4bd5ce4fc4be1e73a33afbf6cfd94194f1 Mon Sep 17 00:00:00 2001 From: Ricardo Todling Date: Mon, 5 May 2025 11:23:26 -0400 Subject: [PATCH 20/20] adjust gcmapp tag --- components.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components.yaml b/components.yaml index b2bd9386..ed371f7f 100644 --- a/components.yaml +++ b/components.yaml @@ -251,7 +251,7 @@ umwm: GEOSgcm_App: local: ./src/Applications/@GEOSgcm_App remote: ../GEOSgcm_App.git - tag: forladas-g2.3.8.1 + tag: g2.3.8.2 develop: develop Ocean-LETKF: