Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
715e9d6
updates for integrated ladas setup procedure
saraqzhang Jan 21, 2025
ce60a99
add GID and atmens-replay-check to ldas_setup options
saraqzhang Jan 27, 2025
49961b2
removed Haswell & Skylake choices, fixed typo (x3dvar_ladas.input)
gmao-rreichle Feb 7, 2025
351efd5
Merge branch 'develop' into feature/saraqzhang/updatesetup4ladas
saraqzhang Feb 27, 2025
342e758
add bkglforst tar file to gen_silo_arc.pl
saraqzhang Feb 27, 2025
4073dfa
update for LADAS in GEOSdas_App/
saraqzhang Feb 27, 2025
05966b2
update for LADAS in NCEP_enkf/scripts/gmao/
saraqzhang Feb 27, 2025
e60e4df
update for LADAS in NCEP_enkf/scripts/gmao/etc
saraqzhang Feb 27, 2025
51f20e9
Merge branch 'develop' into feature/saraqzhang/updatesetup4ladas
gmao-rreichle Mar 11, 2025
481e86b
minor edits in fvsetup and get_atmens_rst.pl
saraqzhang Mar 26, 2025
c1f5ae2
Merge branch 'develop' into feature/saraqzhang/updatesetup4ladas
gmao-rreichle Mar 27, 2025
f1df78d
clarified comment re. LDAS setup (fvsetup)
gmao-rreichle Mar 27, 2025
6956f6b
fixed typo in error message (fvsetup)
gmao-rreichle Mar 27, 2025
7d683c2
remove SWLAND from lfo collection in HISTAENS.rc.tmpl
saraqzhang Mar 27, 2025
a3fd8ff
minor edit to bkg.lfo file name
saraqzhang Apr 15, 2025
05a7630
minor edits for bkg.lfo name
saraqzhang Apr 15, 2025
f33e3b5
reinstate updates for ldas flag
saraqzhang Apr 16, 2025
a466a36
edits on bkg lfo query and tar
saraqzhang Apr 17, 2025
1780bed
reinstate member tag to bkg.lfo filename in HISTAENS.rc.tmpl
saraqzhang Apr 23, 2025
ffca2c5
Merge branch 'develop' into feature/saraqzhang/updatesetup4ladas
gmao-rreichle Apr 29, 2025
a4e6c0c
update tags of ldasGC and gcm_App
saraqzhang Apr 29, 2025
61f64c1
Merge branch 'develop' into feature/saraqzhang/updatesetup4ladas
gmao-rreichle May 2, 2025
45f9773
Merge branch 'develop' into feature/saraqzhang/updatesetup4ladas
rtodling May 5, 2025
db9ec8a
back to the old; zero diff
rtodling May 5, 2025
fdd92ce
identation
rtodling May 5, 2025
e1e36c4
adjust gcmapp tag
rtodling May 5, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/Applications/GEOSdas_App/AGCMrc.pm
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
4 changes: 2 additions & 2 deletions src/Applications/GEOSdas_App/GEOSdas.csm
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
141 changes: 104 additions & 37 deletions src/Applications/GEOSdas_App/fvsetup
Original file line number Diff line number Diff line change
Expand Up @@ -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 );

if ($hyb_ens == 4 ) {
$rc = system("$fvbin/ldas_setup setup $fvhome/lana $fvbin/ens_exeinp.txt $fvbin/ens_batinp.txt");
die "Failed to setup ldas for ens, check ldas config input files $!" if ( $rc );
$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 );
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 );
}

}

# Monthly Setup
Expand Down Expand Up @@ -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 (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 ($ldas_ana == 1) {
$ans2 = query(" Enable LDAS feedback to model y/n ? ", $dflt);
$ldasfdbk = 1 if yes($ans2);
$ldashome = $ldashome_dflt;
#$ldashome = query(" LDAS HOME?", $dflt);

if ($ldasfdbk == 1 ) {
$ldas_flag = 1;
}

$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;
}

#=======================================================================
Expand Down Expand Up @@ -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";
Expand Down Expand Up @@ -3776,7 +3795,7 @@ EOF
print JSCRPT $line;
}
close TILDE;
close JSCRPT;
close JSCRPT;

# Copy and rename ensemble restarts
# ---------------------------------
Expand Down Expand Up @@ -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");

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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: $!";
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
# ------------------------------------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down Expand Up @@ -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' ,
::

Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
"fvhome=s",
"nlevs=s",
"nodename=s",
"ldasflg=i",
"lsmcm",
"radbc",
"vtxrlc",
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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 {
Expand Down
Loading