From b1e5a700a44e4f55b9de7cc6a7694585a13bd02f Mon Sep 17 00:00:00 2001 From: Joe Stassi Date: Wed, 26 May 2021 11:42:59 -0400 Subject: [PATCH 01/11] updates for running C90C_ens and C90C_replay test cases --- src/Applications/GEOSdas_App/fvsetup | 17 ++++++------ .../GEOSdas_App/testsuites/C90C_ens.input | 8 +++--- .../GEOSdas_App/testsuites/C90C_replay.input | 5 +--- .../NCEP_enkf/scripts/gmao/get_atmens_rst.pl | 26 +++++++++++++++---- 4 files changed, 34 insertions(+), 22 deletions(-) diff --git a/src/Applications/GEOSdas_App/fvsetup b/src/Applications/GEOSdas_App/fvsetup index 506e3794..bc083058 100755 --- a/src/Applications/GEOSdas_App/fvsetup +++ b/src/Applications/GEOSdas_App/fvsetup @@ -341,7 +341,7 @@ # 25Jul2017 Holdaway Added resource files associated with NGGPS FV3 tlm/adjoint, sens and svec # 19Jul2018 Wargan Additions for OMPS #------------------------------------------------------------------------- -use Cwd qw(cwd); +use Cwd qw(abs_path cwd); use English; use Env; # make env vars readily available use File::Basename qw(basename dirname); @@ -2278,29 +2278,28 @@ EOF #======================================================================= sub ed_aens_das_replay_acq { my($mydir) = @_; - my($replay_arcdir, $aens_replay_expid, $acq); + my($replay_arcdir, $replay_expid, $acq); - $aens_replay_expid = "x0044"; - $replay_arcdir = query("Replay exp name?", $aens_replay_expid); - $replay_arcdir = "/discover/nobackup/projects/gmao/advda/rtodling/archive/x0044"; + $replay_arcdir = "/discover/nobackup/projects/gmao/dadev/rtodling/archive/x0044"; $replay_arcdir = query("Replay archive directory?", $replay_arcdir); + $replay_expid = basename(abs_path($replay_arcdir)); $acq = "$fvhome/$mydir/atmens_replay.acq"; - open(SCRIPT,">$acq") or die ">>> ERROR <<< cannot write $acq"; + open(SCRIPT,">$acq") or die ">>> ERROR <<< cannot write $acq"; print SCRIPT <<"EOF"; -$replay_arcdir/atmens/Y%y4/M%m2/$aens_replay_expid.atmens_ebkg.%y4%m2%d2_%h2z.tar => $expid.atmens_ebkg.%y4%m2%d2_%h2z.tar +$replay_arcdir/atmens/Y%y4/M%m2/$replay_expid.atmens_ebkg.%y4%m2%d2_%h2z.tar => $expid.atmens_ebkg.%y4%m2%d2_%h2z.tar EOF if ( $mydir eq "run") { $acq = "$fvhome/anasa/atmens_replay.acq"; open(SCRIPT,">$acq") or die ">>> ERROR <<< cannot write $acq"; print SCRIPT <<"EOF"; -$replay_arcdir/atmens/Y%y4/M%m2/$aens_replay_expid.atmens_ebkg.%y4%m2%d2_%h2z.tar => $expid.atmens_ebkg.%y4%m2%d2_%h2z.tar +$replay_arcdir/atmens/Y%y4/M%m2/$replay_expid.atmens_ebkg.%y4%m2%d2_%h2z.tar => $expid.atmens_ebkg.%y4%m2%d2_%h2z.tar EOF $acq = "$fvhome/asens/atmens_asens.acq"; open(SCRIPT,">$acq") or die ">>> ERROR <<< cannot write $acq"; print SCRIPT <<"EOF"; -$replay_arcdir/atmens/Y%y4/M%m2/$aens_replay_expid.atmens_ebkg.%y4%m2%d2_%h2z.tar => $expid.atmens_ebkg.%y4%m2%d2_%h2z.tar +$replay_arcdir/atmens/Y%y4/M%m2/$replay_expid.atmens_ebkg.%y4%m2%d2_%h2z.tar => $expid.atmens_ebkg.%y4%m2%d2_%h2z.tar EOF } diff --git a/src/Applications/GEOSdas_App/testsuites/C90C_ens.input b/src/Applications/GEOSdas_App/testsuites/C90C_ens.input index 0ec400d2..28fec6ce 100644 --- a/src/Applications/GEOSdas_App/testsuites/C90C_ens.input +++ b/src/Applications/GEOSdas_App/testsuites/C90C_ens.input @@ -74,7 +74,7 @@ AeroCom? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar/AeroCom] > FVICS? [/archive/u/jstassi/restarts/GEOSadas-5_24_0] -> /archive/u/jstassi/restarts/GEOSadas-5_25_0/C90CS_x0039_p6.rst.20190729_21z.tar +> /archive/u/jstassi/restarts/GEOSadas-5_27_0/C90CS_x0044.rst.20201215_21z.tar Run model-adjoint-related applications (0=no,1=yes)? [0] > 1 @@ -95,7 +95,7 @@ Verifying experiment id: [C90C_ens] > Ending year-month-day? [20190731] -> 20190801 +> 20201220 Length of FORECAST run segments (in hours)? [123] > @@ -143,7 +143,7 @@ Which main class of ObsSys (1: NRT; 2: MERRA; 3: MERRA-2)? [1] > OBSERVING SYSTEM CLASSES? -> ncep_prep_bufr,ncep_1bamua_bufr,disc_airs_bufr,disc_amsua_bufr,ncep_mhs_bufr,ncep_1bhrs4_bufr,ncep_goesfv_bufr,ncep_mtiasi_bufr,ncep_gpsro_bufr,ncep_aura_omi_bufr,ncep_satwnd_bufr,ncep_atms_bufr,ncep_sevcsr_bufr,ncep_ssmis_bufr,mls_nrt_nc,ncep_avcsam_bufr,ncep_avcspm_bufr,ncep_tcvitals,gmao_gmi_bufr,ncep_crisfsr_bufr,npp_ompsnm_bufr,ncep_acftpfl_bufr +> ncep_ssmis_bufr,ncep_1bamua_bufr,ncep_prep_bufr,ncep_tcvitals,ncep_mhs_bufr,ncep_1bhrs4_bufr,ncep_gpsro_bufr,ncep_mtiasi_bufr,ncep_atms_bufr,ncep_crisfsr_bufr,ncep_satwnd_bufr,ncep_sevcsr_bufr,ncep_avcsam_bufr,ncep_avcspm_bufr,ncep_aura_omi_bufr,disc_airs_bufr,disc_amsua_bufr,gmao_gmi_bufr,mls_nrt_nc,gmao_amsr2_bufr,npp_ompsnm_bufr,ncep_acftpfl_bufr CHECKING OBSYSTEM? [2] > @@ -227,7 +227,7 @@ Ensemble Vertical Levels? [72] > Experiment archive directory for ensemble restarts or 'later': [/archive/u/jstassi/C90C_ens] -> /archive/u/dao_it/x0039_p6 +> /discover/nobackup/projects/gmao/dadev/rtodling/archive/x0044 Edit COLLECTIONS list in run/HISTORY.rc.tmpl (y/n)? [n] > diff --git a/src/Applications/GEOSdas_App/testsuites/C90C_replay.input b/src/Applications/GEOSdas_App/testsuites/C90C_replay.input index 2fe0444c..051bceb7 100644 --- a/src/Applications/GEOSdas_App/testsuites/C90C_replay.input +++ b/src/Applications/GEOSdas_App/testsuites/C90C_replay.input @@ -217,11 +217,8 @@ Select group: [g0613] Replayed Ensemble (from OPS)? [yes] > -Replay exp name? [x0044] -> - Replay archive directory? [/discover/nobackup/projects/gmao/advda/rtodling/archive/x0044] -> +> /discover/nobackup/projects/gmao/dadev/rtodling/archive/x0044 Edit COLLECTIONS list in run/HISTORY.rc.tmpl (y/n)? [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 81996f29..7967a844 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 @@ -1,10 +1,12 @@ #!/usr/bin/env perl use strict; use warnings; -use Cwd qw(cwd); +use Cwd qw(abs_path cwd); use File::Basename qw(basename dirname); use File::Copy qw(cp mv); use File::Path qw(mkpath rmtree); +use Getopt::Long qw(GetOptions); + use FindBin qw($Bin); use lib "$Bin"; use Manipulate_time qw(tick); @@ -30,7 +32,7 @@ my ($atmens_stat_dir, $atmens_ebkg_dir, $atmens_erst_dir, $atmens_ecbkg_dir); my ($tarfile, $tarpath, $label, $pid); my ($ens, $mem, $mfile, $mfile_new); - my (@tarList); + my (@archList, @tarList); init(); chdir($atmens_dir); @@ -52,12 +54,12 @@ foreach $label ("stat", "ebkg", "ecbkg", "erst") { $tarfile = "$expid.atmens_$label.${yyyymmdd}_${hh}z.tar"; $tarpath = "$atmens_date_dir/$tarfile"; + push @archList, $tarpath if archFile($tarpath); push @tarList, $tarpath; } - defined($pid = fork) or die "Error while attempting to fork;"; unless ($pid) { - system "dmget @tarList"; + system "dmget @archList"; exit; } foreach $tarpath (@tarList) { system_("tar xvf $tarpath") } @@ -88,7 +90,6 @@ # purpose - get runtime parameters and flags #======================================================================= sub init { - use Getopt::Long qw(GetOptions); my ($fvhome, $help, $exparcdir); GetOptions("fvhome=s" => \$fvhome, @@ -102,6 +103,7 @@ sub init { ($exparcdir, $newid, $yyyymmdd, $hh) = @ARGV; $exparcdir =~ s/[\s\/]*$//; + $exparcdir = abs_path($exparcdir); $arcdir = dirname($exparcdir); $expid = basename($exparcdir); @@ -123,6 +125,20 @@ sub init { } +#======================================================================= +# name - archFile +# purpose - Return true (1) if $file is an archive file; +# Return false (0) if not +#======================================================================= +sub archFile { + my ($file, $dmLine, $dmFLG); + $file = shift @_; + $dmLine = `dmls -l $file`; + $dmFLG = 1; + $dmFLG = 0 if $dmLine =~ m|(N/A)|; + return $dmFLG; +} + #======================================================================= # name - rename_new #======================================================================= From 562feb4447c73e45e482286a95b2d906572683fb Mon Sep 17 00:00:00 2001 From: Ricardo Todling Date: Wed, 26 May 2021 14:21:29 -0400 Subject: [PATCH 02/11] edit as in 5_28_0 --- .../GEOSdas_App/testsuites/geos_it.input | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/src/Applications/GEOSdas_App/testsuites/geos_it.input b/src/Applications/GEOSdas_App/testsuites/geos_it.input index a88d5db4..93ae751d 100644 --- a/src/Applications/GEOSdas_App/testsuites/geos_it.input +++ b/src/Applications/GEOSdas_App/testsuites/geos_it.input @@ -2,12 +2,12 @@ # geos_it.input #-------------- -description: geos_it__GEOSadas-5_27_1_p4__agrid_C90__ogrid_CS +description: geos_it__GEOSadas-5_27_1_p4__agrid_C360__ogrid_C tag: GEOSadas-5_27_1_p4 ---ENDHEADERS--- -Remote account for Intranet plots? [rtodling@train] +Remote account for Intranet plots? [dao_ops@train] > Is this a MERRA2 experiment (y/n)? [n] @@ -20,22 +20,25 @@ AGCM Vertical Resolution? [72] > OGCM Resolution? [f] -> CS +> C -EXPID? [u000_C90] +EXPID? [u000_C360] > $expid Check for previous use of expid (y/n)? [y] > n -EXPDSC? [geos_it__GEOSadas-5_27_1_p4__agrid_C90__ogrid_CS] +EXPDSC? [geos_it__GEOSadas-5_27_1_p4__agrid_C360__ogrid_C] > Land Boundary Conditions? [Icarus_Updated] > Icarus-NLv3 +Catchment Model choice? [1] +> + FVHOME? [/discover/nobackup/rtodling/geos_it] -> /discover/nobackup/projects/gmao/dadev/rtodling/geos_it +> /discover/nobackup/dao_ops/$expid The directory /discover/nobackup/projects/gmao/dadev/rtodling/geos_it does not exist. Create it now? [y] > @@ -71,7 +74,7 @@ AeroCom? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar/AeroCom] > FVICS? [/archive/u/jstassi/restarts/GEOSadas-5_24_0] -> /discover/nobackup/projects/gmao/dadev/rtodling/archive/x0044/rs/Y2020/M12/x0044.rst.20201215_21z.tar +> /discover/nobackup/projects/gmao/dadev/rtodling/archive/Restarts/5_28/geosit_test/rs/Y2017/M12/geosit_test.rst.20171215_21z.tar Run model-adjoint-related applications (0=no,1=yes)? [0] > @@ -79,23 +82,23 @@ Run model-adjoint-related applications (0=no,1=yes)? [0] Run analysis-sensitivity applications (0=no,1=yes)? [0] > -Ending year-month-day? [20201217] +Ending year-month-day? [20210117] > Length of FORECAST run segments (in hours)? [123] -> 27 +> Number of one-day DAS segments per PBS job? [1] > -Number of PEs in the zonal direction (NX)? [4] -> 6 +Number of PEs in the zonal direction (NX)? [8] +> -Number of PEs in the meridional direction (NY)? [24] -> 36 +Number of PEs in the meridional direction (NY)? [48] +> Job nickname? [g5das] -> geosit +> git Run in split executable mode (1=yes;0=no)? [1] > @@ -112,23 +115,23 @@ Analysis vertical levels (sig))? [72] GSI grid resolution? [NA] > -GEOS grid resolution instead? [c] -> d +GEOS grid resolution instead? [d] +> Ensemble Hybrid (<0;3=3dHyb;4=Hyb4d)? [-1] > -Number of procs in the zonal direction (NX)? [4] +Number of procs in the zonal direction (NX)? [12] > 6 -Number of procs in the meridional direction (NY)? [12] +Number of procs in the meridional direction (NY)? [20] > 36 Which main class of ObsSys (1: NRT; 2: MERRA; 3: MERRA-2)? [1] -> 1 +> OBSERVING SYSTEM CLASSES? -> disc_airs_bufr,disc_amsua_bufr,mls_nrt_nc,ncep_1bamua_bufr,ncep_1bhrs4_bufr,ncep_acftpfl_bufr,ncep_atms_bufr,ncep_aura_omi_bufr,ncep_avcsam_bufr,ncep_avcspm_bufr,ncep_crisfsr_bufr,ncep_goesfv_bufr,ncep_gpsro_bufr,ncep_mhs_bufr,ncep_mtiasi_bufr,ncep_prep_bufr,ncep_satwnd_bufr,ncep_sevcsr_bufr,ncep_ssmis_bufr,ncep_tcvitals,npp_ompsnp_nc,npp_ompsnmeff_nc,aura_omieff_nc +> ncep_ssmis_bufr,ncep_1bamua_bufr,ncep_prep_bufr,ncep_tcvitals,ncep_mhs_bufr,ncep_1bhrs4_bufr,ncep_goesfv_bufr,ncep_gpsro_bufr,ncep_mtiasi_bufr,ncep_atms_bufr,ncep_cris_bufr,ncep_crisfsr_bufr,ncep_satwnd_bufr,ncep_sevcsr_bufr,ncep_avcsam_bufr,ncep_avcspm_bufr,disc_airs_bufr,disc_amsua_bufr,ncep_acftpfl_bufr,aura_omieff_nc,npp_ompsnp_nc,npp_ompsnmeff_nc,ncep_osbuv_bufr CHECKING OBSYSTEM? [2] > 1 @@ -157,10 +160,10 @@ Frequency for surface (2D) DIAGNOSTIC fields? [010000] Frequency for upper air (3D) DIAGNOSTIC fields? [030000] > -Dimension of output in zonal direction? [288] +Dimension of output in zonal direction? [1152] > -Dimension of output in meridional direction? [181] +Dimension of output in meridional direction? [721] > Would you like 2D diagnostics? [y] @@ -176,7 +179,7 @@ Include GOCART tracers (CO,CO2,aerosols,etc) (y/n)? [y] > Select GOCART Emission Files to use: [OPS] -> OPS +> Do Aerosol Analysis (y/n)? [y] > @@ -200,10 +203,7 @@ Select group: [g0613] > Edit COLLECTIONS list in run/HISTORY.rc.tmpl (y/n)? [n] -> y - -COLLECTIONS? -> gaas_bkg.sfc,bkg.eta,bkg.sfc,cbkg.eta,vtx.mix,asm.eta,inst3_2d_gas_Nx,inst3_3d_gas_Nv,inst3_3d_asm_Np,inst3_3d_asm_Nv,tavg3_3d_cld_Cp,tavg3_3d_mst_Ne +> Edit COLLECTIONS list in fcst/HISTORY.rc.tmpl (y/n)? [n] > From 38acfc20f94cc82ebe843e1c09d8b4b45bb4e799 Mon Sep 17 00:00:00 2001 From: Ricardo Todling Date: Wed, 26 May 2021 20:21:35 -0400 Subject: [PATCH 03/11] for some reason this is not a c360 run --- src/Applications/GEOSdas_App/testsuites/geos_it.input | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Applications/GEOSdas_App/testsuites/geos_it.input b/src/Applications/GEOSdas_App/testsuites/geos_it.input index 93ae751d..e2de4e52 100644 --- a/src/Applications/GEOSdas_App/testsuites/geos_it.input +++ b/src/Applications/GEOSdas_App/testsuites/geos_it.input @@ -14,7 +14,7 @@ Is this a MERRA2 experiment (y/n)? [n] > AGCM Horizontal Resolution? [C48] -> C360 +> C180 AGCM Vertical Resolution? [72] > @@ -94,8 +94,8 @@ Number of one-day DAS segments per PBS job? [1] Number of PEs in the zonal direction (NX)? [8] > -Number of PEs in the meridional direction (NY)? [48] -> +Number of PEs in the meridional direction (NY)? [30] +> 48 Job nickname? [g5das] > git @@ -122,10 +122,10 @@ Ensemble Hybrid (<0;3=3dHyb;4=Hyb4d)? [-1] > Number of procs in the zonal direction (NX)? [12] -> 6 +> 16 Number of procs in the meridional direction (NY)? [20] -> 36 +> 24 Which main class of ObsSys (1: NRT; 2: MERRA; 3: MERRA-2)? [1] > From 45f6215daff164786fe231f20968c5e0096710fb Mon Sep 17 00:00:00 2001 From: Ricardo Todling Date: Wed, 2 Jun 2021 14:13:16 -0400 Subject: [PATCH 04/11] something is messed up in the npp_ompsnmeff_nc in 201712 - only obs after the 20th get assimilated --- src/Applications/GEOSdas_App/testsuites/geos_it.input | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Applications/GEOSdas_App/testsuites/geos_it.input b/src/Applications/GEOSdas_App/testsuites/geos_it.input index e2de4e52..fb08d99f 100644 --- a/src/Applications/GEOSdas_App/testsuites/geos_it.input +++ b/src/Applications/GEOSdas_App/testsuites/geos_it.input @@ -74,7 +74,7 @@ AeroCom? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar/AeroCom] > FVICS? [/archive/u/jstassi/restarts/GEOSadas-5_24_0] -> /discover/nobackup/projects/gmao/dadev/rtodling/archive/Restarts/5_28/geosit_test/rs/Y2017/M12/geosit_test.rst.20171215_21z.tar +> /discover/nobackup/projects/gmao/dadev/rtodling/archive/Restarts/5_28/geosit_test/rs/Y2017/M12/geosit_test.rst.20171219_21z.tar Run model-adjoint-related applications (0=no,1=yes)? [0] > From 820204851ae699fcd9eda3d9003635712769adfe Mon Sep 17 00:00:00 2001 From: Meta Sienkiewicz Date: Tue, 16 Nov 2021 15:04:30 -0500 Subject: [PATCH 05/11] Adding routine to check if SFCSHP in input prepbufr files already has VIRTMP correction applied, and if so, to skip applying it in the GMAOprev step. --- .../NCEP_Paqc/GMAOprev/CMakeLists.txt | 5 ++ .../NCEP_Paqc/GMAOprev/check_virtmp.f | 52 +++++++++++++++++++ src/Applications/NCEP_Paqc/oiqc/gmao_prepqc | 18 +++++++ 3 files changed, 75 insertions(+) create mode 100644 src/Applications/NCEP_Paqc/GMAOprev/check_virtmp.f diff --git a/src/Applications/NCEP_Paqc/GMAOprev/CMakeLists.txt b/src/Applications/NCEP_Paqc/GMAOprev/CMakeLists.txt index 6becdc41..783b39b4 100644 --- a/src/Applications/NCEP_Paqc/GMAOprev/CMakeLists.txt +++ b/src/Applications/NCEP_Paqc/GMAOprev/CMakeLists.txt @@ -3,6 +3,11 @@ ecbuild_add_executable ( SOURCES gblevents_gmao.f prevents.f LIBS NCEP_bufr_r8i4 NCEP_w3_r8i4 GMAO_hermes) +ecbuild_add_executable ( + TARGET check_virtmp.x + SOURCES check_virtmp.f + LIBS NCEP_bufr_r4i4) + string(REPLACE " " ";" tmp ${FREAL8}) foreach (flag ${tmp}) target_compile_options (gmao_prevents.x PRIVATE $<$:${flag}>) diff --git a/src/Applications/NCEP_Paqc/GMAOprev/check_virtmp.f b/src/Applications/NCEP_Paqc/GMAOprev/check_virtmp.f new file mode 100644 index 00000000..ca572013 --- /dev/null +++ b/src/Applications/NCEP_Paqc/GMAOprev/check_virtmp.f @@ -0,0 +1,52 @@ + implicit none + real*8 hdr(1), tpc(1,20) + real*8 bmiss, getbmiss + CHARACTER(len=180) filn + CHARACTER(len=8) SUBSET + integer iret, idate, ilev, j, tvflg, lubfi + real vtcd + + data lubfi /10/ + + call getarg(1,filn) + open(unit=lubfi,file=filn,form='unformatted') + + CALL OPENBF(LUBFI,'IN',LUBFI) + call ufbqcd(lubfi,'VIRTMP',vtcd) + tvflg = 1 + subset = '' + iret = 0 + do while (iret == 0 .and. subset /= 'SFCSHP') + CALL READMG(LUBFI,SUBSET,IDATE,IRET) + end do + + +C LOOP THROUGH THE INPUT MESSAGES - READ THE NEXT SUBSET +C ------------------------------------------------------ + + do while(iret .eq. 0) + CALL READSB(LUBFI,IRET) + IF(IRET .eq. 0) then + call ufbint(lubfi,hdr,1,1,ilev,'TYP') + call ufbevn(lubfi,tpc,1,1,20,ilev,'TPC') + do j = 1,20 + if(tpc(1,j) == vtcd) tvflg = 0 + if(tpc(1,j) >= bmiss) exit + end do + if (tvflg == 0) exit + else + subset = '' + iret = 0 + do while (iret == 0 .and. subset /= 'SFCSHP') + CALL READMG(LUBFI,SUBSET,IDATE,IRET) + end do + endif + end do + if (tvflg == 0) then + print *,'VIRTUAL' + else + print *,'DRY' + end if + + stop + end diff --git a/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc b/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc index 050e27b1..4447afc2 100755 --- a/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc +++ b/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc @@ -300,10 +300,28 @@ sub gmaoprevents { Assign("prepdv.$nymd.$hh", 51); Assign("prevents.out.$nymd.$hh", 52); + $VTEMP = `check_virtmp.x $pref` + + open(PRVPARM, '>prepobs_prevents.parm'); + + if ( $VTEMP eq "DRY") { # input has sensible temperature + print "$0: PREVENTS calculate VIRTMP\n"; + print PRVPARM " &PREVDATA DOVTMP= TRUE, DOFCST= TRUE DOBERR= TRUE / \n"; + } else { # already has virtual temperature + print "$0: PREVENTS without VIRTMP\n"; + print PRVPARM " &PREVDATA DOVTMP= FALSE ,DOFCST= TRUE DOBERR= TRUE / \n"; + } + + close(PRVPARM); + $FORT_CONVERT12 = "BIG_ENDIAN"; $FORT_CONVERT13 = "BIG_ENDIAN"; +# Run check for virtual temperature +# --------------------------------- + + # Run prevents # ------------- $cmd = "gmao_prevents.x $dynf < $rcdir/prepobs_prevents.merra.parm"; From 35793a8d3a6129daf3449c87a6b2ffe8a7eaa6af Mon Sep 17 00:00:00 2001 From: Meta Sienkiewicz Date: Tue, 16 Nov 2021 15:10:45 -0500 Subject: [PATCH 06/11] modify name of parameter file used in prevents step - now written dynamically. --- src/Applications/NCEP_Paqc/oiqc/gmao_prepqc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc b/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc index 4447afc2..8819069a 100755 --- a/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc +++ b/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc @@ -324,7 +324,7 @@ sub gmaoprevents { # Run prevents # ------------- - $cmd = "gmao_prevents.x $dynf < $rcdir/prepobs_prevents.merra.parm"; + $cmd = "gmao_prevents.x $dynf < $rcdir/prepobs_prevents.parm"; print "$0: $cmd\n" unless ( $opt_q ); # $rc = System ( $cmd, "/dev/null" ) unless ( $opt_n ) ; $rc = system ( $cmd ) unless ( $opt_n ) ; From ba214534c7aad472523cd5b3757167ace9c4a51b Mon Sep 17 00:00:00 2001 From: Meta Sienkiewicz Date: Tue, 16 Nov 2021 16:42:23 -0500 Subject: [PATCH 07/11] Corrected typo, changed location of input parameter file Modified 'if' test to be more general --- src/Applications/NCEP_Paqc/oiqc/gmao_prepqc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc b/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc index 8819069a..c432c382 100755 --- a/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc +++ b/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc @@ -300,11 +300,10 @@ sub gmaoprevents { Assign("prepdv.$nymd.$hh", 51); Assign("prevents.out.$nymd.$hh", 52); - $VTEMP = `check_virtmp.x $pref` - + $VTEMP = `check_virtmp.x $pref`; open(PRVPARM, '>prepobs_prevents.parm'); - if ( $VTEMP eq "DRY") { # input has sensible temperature + if ( $VTEMP =~ /DRY/) { # input has sensible temperature print "$0: PREVENTS calculate VIRTMP\n"; print PRVPARM " &PREVDATA DOVTMP= TRUE, DOFCST= TRUE DOBERR= TRUE / \n"; } else { # already has virtual temperature @@ -324,7 +323,7 @@ sub gmaoprevents { # Run prevents # ------------- - $cmd = "gmao_prevents.x $dynf < $rcdir/prepobs_prevents.parm"; + $cmd = "gmao_prevents.x $dynf < prepobs_prevents.parm"; print "$0: $cmd\n" unless ( $opt_q ); # $rc = System ( $cmd, "/dev/null" ) unless ( $opt_n ) ; $rc = system ( $cmd ) unless ( $opt_n ) ; From f9d3eb53285a43d2963d244f923f6c9ffe933aa1 Mon Sep 17 00:00:00 2001 From: Meta Sienkiewicz Date: Tue, 16 Nov 2021 17:01:36 -0500 Subject: [PATCH 08/11] Add comment on latest changes to prologue of run script --- src/Applications/NCEP_Paqc/oiqc/gmao_prepqc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc b/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc index c432c382..bcf2cce3 100755 --- a/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc +++ b/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc @@ -21,6 +21,9 @@ # 'gmao_prepqc' without fv2ss step. # 20Mar2009 Todling Remove DASPERL (per da Silva) # 17Nov2015 Meta Clean up some unused (old) fort.XX assignments +# 16Nov2021 Meta Add routine to check for previous virtual temperature +# calculation for SFCSHP in input prepbufr and skip +# recalculation of VIRTMP if found #------------------------------------------------------------------ # make env vars readily available From 4985b6b83c291b2dff87a55c82dff0af72dcdc04 Mon Sep 17 00:00:00 2001 From: Meta Sienkiewicz Date: Wed, 17 Nov 2021 10:42:27 -0500 Subject: [PATCH 09/11] replace some files that were modified in merge of 'develop' --- src/Applications/GEOSdas_App/fvsetup | 15 ++++++----- .../GEOSdas_App/testsuites/C90C_ens.input | 8 +++--- .../GEOSdas_App/testsuites/C90C_replay.input | 5 +++- .../NCEP_enkf/scripts/gmao/get_atmens_rst.pl | 26 ++++--------------- 4 files changed, 21 insertions(+), 33 deletions(-) diff --git a/src/Applications/GEOSdas_App/fvsetup b/src/Applications/GEOSdas_App/fvsetup index 240695ac..a4fc8258 100755 --- a/src/Applications/GEOSdas_App/fvsetup +++ b/src/Applications/GEOSdas_App/fvsetup @@ -2356,28 +2356,29 @@ EOF #======================================================================= sub ed_aens_das_replay_acq { my($mydir) = @_; - my($replay_arcdir, $replay_expid, $acq); + my($replay_arcdir, $aens_replay_expid, $acq); - $replay_arcdir = "/discover/nobackup/projects/gmao/dadev/rtodling/archive/x0044"; + $aens_replay_expid = "x0044"; + $replay_arcdir = query("Replay exp name?", $aens_replay_expid); + $replay_arcdir = "/discover/nobackup/projects/gmao/advda/rtodling/archive/x0044"; $replay_arcdir = query("Replay archive directory?", $replay_arcdir); - $replay_expid = basename(abs_path($replay_arcdir)); $acq = "$fvhome/$mydir/atmens_replay.acq"; - open(SCRIPT,">$acq") or die ">>> ERROR <<< cannot write $acq"; + open(SCRIPT,">$acq") or die ">>> ERROR <<< cannot write $acq"; print SCRIPT <<"EOF"; -$replay_arcdir/atmens/Y%y4/M%m2/$replay_expid.atmens_ebkg.%y4%m2%d2_%h2z.tar => $expid.atmens_ebkg.%y4%m2%d2_%h2z.tar +$replay_arcdir/atmens/Y%y4/M%m2/$aens_replay_expid.atmens_ebkg.%y4%m2%d2_%h2z.tar => $expid.atmens_ebkg.%y4%m2%d2_%h2z.tar EOF if ( $mydir eq "run") { $acq = "$fvhome/anasa/atmens_replay.acq"; open(SCRIPT,">$acq") or die ">>> ERROR <<< cannot write $acq"; print SCRIPT <<"EOF"; -$replay_arcdir/atmens/Y%y4/M%m2/$replay_expid.atmens_ebkg.%y4%m2%d2_%h2z.tar => $expid.atmens_ebkg.%y4%m2%d2_%h2z.tar +$replay_arcdir/atmens/Y%y4/M%m2/$aens_replay_expid.atmens_ebkg.%y4%m2%d2_%h2z.tar => $expid.atmens_ebkg.%y4%m2%d2_%h2z.tar EOF $acq = "$fvhome/asens/atmens_asens.acq"; open(SCRIPT,">$acq") or die ">>> ERROR <<< cannot write $acq"; print SCRIPT <<"EOF"; -$replay_arcdir/atmens/Y%y4/M%m2/$replay_expid.atmens_ebkg.%y4%m2%d2_%h2z.tar => $expid.atmens_ebkg.%y4%m2%d2_%h2z.tar +$replay_arcdir/atmens/Y%y4/M%m2/$aens_replay_expid.atmens_ebkg.%y4%m2%d2_%h2z.tar => $expid.atmens_ebkg.%y4%m2%d2_%h2z.tar EOF } diff --git a/src/Applications/GEOSdas_App/testsuites/C90C_ens.input b/src/Applications/GEOSdas_App/testsuites/C90C_ens.input index 7adc18c8..13fab6ab 100644 --- a/src/Applications/GEOSdas_App/testsuites/C90C_ens.input +++ b/src/Applications/GEOSdas_App/testsuites/C90C_ens.input @@ -74,7 +74,7 @@ AeroCom? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar/AeroCom] > FVICS? [/archive/u/jstassi/restarts/GEOSadas-5_24_0] -> /archive/u/jstassi/restarts/GEOSadas-5_27_0/C90CS_x0044.rst.20201215_21z.tar +> /archive/u/jstassi/restarts/GEOSadas-5_25_0/C90CS_x0039_p6.rst.20190729_21z.tar Run model-adjoint-related applications (0=no,1=yes)? [0] > 1 @@ -95,7 +95,7 @@ Verifying experiment id: [C90C_ens] > Ending year-month-day? [20190731] -> 20201220 +> 20190801 Length of FORECAST run segments (in hours)? [123] > @@ -143,7 +143,7 @@ Which main class of ObsSys (1: NRT; 2: MERRA; 3: MERRA-2)? [1] > OBSERVING SYSTEM CLASSES? -> ncep_ssmis_bufr,ncep_1bamua_bufr,ncep_prep_bufr,ncep_tcvitals,ncep_mhs_bufr,ncep_1bhrs4_bufr,ncep_gpsro_bufr,ncep_mtiasi_bufr,ncep_atms_bufr,ncep_crisfsr_bufr,ncep_satwnd_bufr,ncep_sevcsr_bufr,ncep_avcsam_bufr,ncep_avcspm_bufr,ncep_aura_omi_bufr,disc_airs_bufr,disc_amsua_bufr,gmao_gmi_bufr,mls_nrt_nc,gmao_amsr2_bufr,npp_ompsnm_bufr,ncep_acftpfl_bufr +> ncep_prep_bufr,ncep_1bamua_bufr,disc_airs_bufr,disc_amsua_bufr,ncep_mhs_bufr,ncep_1bhrs4_bufr,ncep_goesfv_bufr,ncep_mtiasi_bufr,ncep_gpsro_bufr,ncep_aura_omi_bufr,ncep_satwnd_bufr,ncep_atms_bufr,ncep_sevcsr_bufr,ncep_ssmis_bufr,mls_nrt_nc,ncep_avcsam_bufr,ncep_avcspm_bufr,ncep_tcvitals,gmao_gmi_bufr,ncep_crisfsr_bufr,npp_ompsnm_bufr,ncep_acftpfl_bufr CHECKING OBSYSTEM? [2] > @@ -227,7 +227,7 @@ Ensemble Vertical Levels? [72] > Experiment archive directory for ensemble restarts or 'later': [/archive/u/jstassi/C90C_ens] -> /discover/nobackup/projects/gmao/dadev/rtodling/archive/x0044 +> /archive/u/dao_it/x0039_p6 Edit COLLECTIONS list in run/HISTORY.rc.tmpl (y/n)? [n] > diff --git a/src/Applications/GEOSdas_App/testsuites/C90C_replay.input b/src/Applications/GEOSdas_App/testsuites/C90C_replay.input index 051bceb7..2fe0444c 100644 --- a/src/Applications/GEOSdas_App/testsuites/C90C_replay.input +++ b/src/Applications/GEOSdas_App/testsuites/C90C_replay.input @@ -217,8 +217,11 @@ Select group: [g0613] Replayed Ensemble (from OPS)? [yes] > +Replay exp name? [x0044] +> + Replay archive directory? [/discover/nobackup/projects/gmao/advda/rtodling/archive/x0044] -> /discover/nobackup/projects/gmao/dadev/rtodling/archive/x0044 +> Edit COLLECTIONS list in run/HISTORY.rc.tmpl (y/n)? [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 7967a844..81996f29 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 @@ -1,12 +1,10 @@ #!/usr/bin/env perl use strict; use warnings; -use Cwd qw(abs_path cwd); +use Cwd qw(cwd); use File::Basename qw(basename dirname); use File::Copy qw(cp mv); use File::Path qw(mkpath rmtree); -use Getopt::Long qw(GetOptions); - use FindBin qw($Bin); use lib "$Bin"; use Manipulate_time qw(tick); @@ -32,7 +30,7 @@ my ($atmens_stat_dir, $atmens_ebkg_dir, $atmens_erst_dir, $atmens_ecbkg_dir); my ($tarfile, $tarpath, $label, $pid); my ($ens, $mem, $mfile, $mfile_new); - my (@archList, @tarList); + my (@tarList); init(); chdir($atmens_dir); @@ -54,12 +52,12 @@ foreach $label ("stat", "ebkg", "ecbkg", "erst") { $tarfile = "$expid.atmens_$label.${yyyymmdd}_${hh}z.tar"; $tarpath = "$atmens_date_dir/$tarfile"; - push @archList, $tarpath if archFile($tarpath); push @tarList, $tarpath; } + defined($pid = fork) or die "Error while attempting to fork;"; unless ($pid) { - system "dmget @archList"; + system "dmget @tarList"; exit; } foreach $tarpath (@tarList) { system_("tar xvf $tarpath") } @@ -90,6 +88,7 @@ # purpose - get runtime parameters and flags #======================================================================= sub init { + use Getopt::Long qw(GetOptions); my ($fvhome, $help, $exparcdir); GetOptions("fvhome=s" => \$fvhome, @@ -103,7 +102,6 @@ sub init { ($exparcdir, $newid, $yyyymmdd, $hh) = @ARGV; $exparcdir =~ s/[\s\/]*$//; - $exparcdir = abs_path($exparcdir); $arcdir = dirname($exparcdir); $expid = basename($exparcdir); @@ -125,20 +123,6 @@ sub init { } -#======================================================================= -# name - archFile -# purpose - Return true (1) if $file is an archive file; -# Return false (0) if not -#======================================================================= -sub archFile { - my ($file, $dmLine, $dmFLG); - $file = shift @_; - $dmLine = `dmls -l $file`; - $dmFLG = 1; - $dmFLG = 0 if $dmLine =~ m|(N/A)|; - return $dmFLG; -} - #======================================================================= # name - rename_new #======================================================================= From 232a390765c3d62366e3179b04d1f147110bd152 Mon Sep 17 00:00:00 2001 From: Meta Sienkiewicz Date: Fri, 19 Nov 2021 19:45:09 -0500 Subject: [PATCH 10/11] Add a 'usage' statment to be printed out if the file name on the command line is missing. --- src/Applications/NCEP_Paqc/GMAOprev/check_virtmp.f | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Applications/NCEP_Paqc/GMAOprev/check_virtmp.f b/src/Applications/NCEP_Paqc/GMAOprev/check_virtmp.f index ca572013..af8146f9 100644 --- a/src/Applications/NCEP_Paqc/GMAOprev/check_virtmp.f +++ b/src/Applications/NCEP_Paqc/GMAOprev/check_virtmp.f @@ -4,10 +4,16 @@ CHARACTER(len=180) filn CHARACTER(len=8) SUBSET integer iret, idate, ilev, j, tvflg, lubfi + integer nargs, iargc real vtcd data lubfi /10/ + nargs = iargc() + if (nargs .lt. 1) then + print *, 'Usage: check_virtmp.x prepbufr-file' + stop + end if call getarg(1,filn) open(unit=lubfi,file=filn,form='unformatted') From acef19ae9f900390f9ef620c51941836c194da5b Mon Sep 17 00:00:00 2001 From: Meta Sienkiewicz <53273921+gmao-msienkie@users.noreply.github.com> Date: Tue, 14 Dec 2021 16:38:11 -0500 Subject: [PATCH 11/11] Update gmao_prepqc Add additional flag to parm file - set to not recalculate specific humidity --- src/Applications/NCEP_Paqc/oiqc/gmao_prepqc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc b/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc index ab79a059..16917dd3 100755 --- a/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc +++ b/src/Applications/NCEP_Paqc/oiqc/gmao_prepqc @@ -313,7 +313,7 @@ sub gmaoprevents { print PRVPARM " &PREVDATA DOVTMP= TRUE, DOFCST= TRUE DOBERR= TRUE / \n"; } else { # already has virtual temperature print "$0: PREVENTS without VIRTMP\n"; - print PRVPARM " &PREVDATA DOVTMP= FALSE ,DOFCST= TRUE DOBERR= TRUE / \n"; + print PRVPARM " &PREVDATA DOVTMP= FALSE, RECALC_Q= FALSE, DOFCST= TRUE DOBERR= TRUE / \n"; } close(PRVPARM);