diff --git a/components.yaml b/components.yaml index 456928b2..38ed03a2 100644 --- a/components.yaml +++ b/components.yaml @@ -35,7 +35,7 @@ NCEP_Shared: GMAO_Shared: local: ./src/Shared/@GMAO_Shared remote: ../GMAO_Shared.git - tag: v5.42.4 + tag: g5.42.4.2 sparse: ./config/GMAO_Shared.sparse develop: main @@ -55,7 +55,7 @@ AeroML: GEOS_Util: local: ./src/Shared/@GMAO_Shared/@GEOS_Util remote: ../GEOS_Util.git - tag: v2.1.13 + tag: g3.0.2 develop: main GMAO_perllib: @@ -69,13 +69,13 @@ GMAO_perllib: MAPL: local: ./src/Shared/@MAPL remote: ../MAPL.git - tag: v2.57.1 + tag: v2.57.2 develop: develop GEOSldas_GridComp: local: ./src/Components/@GEOSldas_GridComp remote: ../GEOSldas_GridComp.git - tag: v3.1.0 + tag: g3.1.1 FMS: local: ./src/Shared/@FMS @@ -86,19 +86,19 @@ FMS: GEOSana_GridComp: local: ./src/Components/@GEOSana_GridComp remote: ../GEOSana_GridComp.git - tag: v5.45.2 + tag: v5.45.5 develop: develop mksi: local: ./src/Components/@GEOSana_GridComp/GEOSaana_GridComp/GSI_GridComp/@mksi remote: ../GEOS_mksi.git - tag: v5.44.0 + tag: v5.44.2 develop: develop GEOSgcm_GridComp: local: ./src/Components/@GEOSgcm_GridComp remote: ../GEOSgcm_GridComp.git - tag: v2.7.6.1 + tag: g2.7.6.2 sparse: ./config/GEOSgcm_GridComp.sparse develop: develop @@ -153,7 +153,7 @@ geos-chem: GOCART: local: ./src/Components/@GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/@GEOSchem_GridComp/@GOCART remote: ../GOCART.git - tag: g2.3.2 + tag: g2.3.3 develop: develop QuickChem: @@ -287,7 +287,7 @@ umwm: GEOSgcm_App: local: ./src/Applications/@GEOSgcm_App remote: ../GEOSgcm_App.git - tag: g2.3.8.12 + tag: g2.3.8.13 develop: develop Ocean-LETKF: diff --git a/src/Applications/GEOSdas_App/GEOSdas.csm b/src/Applications/GEOSdas_App/GEOSdas.csm index a8464d8b..8691ffe6 100755 --- a/src/Applications/GEOSdas_App/GEOSdas.csm +++ b/src/Applications/GEOSdas_App/GEOSdas.csm @@ -3252,9 +3252,13 @@ endif # then run analysis # ----------------- - $dryrun analyzer $nymdb $nhmsb -expid $EXPID -t $SPECRES -levs $gsinlev -x $gsinlon -y $gsinlat -jiter $Viter_ $lnobs -log ana.log - if ( ${status} ) then - Call AbnormalExit_( 3 ) + if ( -e $FVHOME/geos_run_analyzer ) then + $BATCH_SUBCMD $BLOCKFLAG $FVHOME/geos_run_analyzer.j + else + $dryrun analyzer $nymdb $nhmsb -expid $EXPID -t $SPECRES -levs $gsinlev -x $gsinlon -y $gsinlat -jiter $Viter_ $lnobs -log ana.log + if ( ${status} ) then + Call AbnormalExit_( 3 ) + endif endif set ana_check = ( `grep ">>> WARNING <<< does not exist" ana.log | cut -d '<' -f4` ) @@ -3329,7 +3333,7 @@ endif endif - jedi_driver.csh $gcm_nymd0 $gcm_nhms0 $ana_datetime[1] $ana_datetime[2] |& tee -a $FVWORK/$EXPID.jedi_drv.log.${gcm_nymd0}_${this_hh0}z.txt + jedi_driver.csh $gcm_nymd0 $gcm_nhms0 $ana_datetime[1] $ana_datetime[2] 0 |& tee -a $FVWORK/$EXPID.jedi_drv.log.${gcm_nymd0}_${this_hh0}z.txt if ( $status ) then echo "JEDI analysis failed, aborting ..." Call AbnormalExit_( 1 ) @@ -4282,7 +4286,11 @@ endif if ( $use_shmem ) RmShmKeys_sshmpi.csh /bin/rm -f ./EGRESS zeit_ci.x gcm - $dryrun $run_opt_begin |& tee -a fvpsas.log + if ( -e $FVHOME/geos_run_gcm.j ) then + $BATCH_SUBCMD $BLOCKFLAG geos_run_gcm.j + else + $dryrun $run_opt_begin |& tee -a fvpsas.log + endif echo "GCM status = $status" zeit_co.x gcm if ( $use_shmem ) RmShmKeys_sshmpi.csh @@ -4871,7 +4879,11 @@ endif setenv REPACK_PBS 0 endif zeit_ci.x gcm - $dryrun $run_opt_begin |& tee fvpsas.log + if ( -e $FVHOME/geos_run_gcm.j ) then + $BATCH_SUBCMD $BLOCKFLAG geos_run_gcm.j + else + $dryrun $run_opt_begin |& tee fvpsas.log + endif zeit_co.x gcm # Check whether we ran without errors diff --git a/src/Applications/GEOSdas_App/fvsetup b/src/Applications/GEOSdas_App/fvsetup index 73fbb0bc..0becd6bc 100755 --- a/src/Applications/GEOSdas_App/fvsetup +++ b/src/Applications/GEOSdas_App/fvsetup @@ -572,6 +572,11 @@ $ENV{"PATH"} = $FindBin::Bin .":$ENV{PATH}"; # ------------------------------------ create_fscript(); +# Create offline GCM and Analysis run jobs +# ---------------------------------------- + create_geos_run_gcm("run"); + create_geos_run_ana("run"); + # Create job scripts to run stand-alone analysis # ---------------------------------------------- set_inputparams(); @@ -3187,7 +3192,7 @@ sub get_nodeflg { 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 } + elsif ($ans == 4) { $nodeflg = "mil"; $ncpus_per_node = 64 } # currently not applicable at nccs #--------------------------------- @@ -9226,6 +9231,72 @@ sub write_FVDAS_Run_Config { system("$fvbin/write_FVDAS_Run_Config.pl -remNODE $remNODE -remID $remID"); } +#======================================================================= +sub create_geos_run_gcm { + + return 0 unless ( $fulldas ); + + my($mydir) = @_; + + my($frun, $ft, $acq); + + $acq = "$fvhome/$mydir/_geos_run_gcm.j"; + open(SCRIPT,">$acq") or + die ">>> ERROR <<< cannot write $acq"; + print SCRIPT <<"EOF"; +#!/bin/csh -fx +# ------------------------------ +#$group_list +#_SBATCH --qos=dastest +#_SBATCH --partition=preops +#SBATCH --job-name=gcm_${expid} +#SBATCH --output=gcm_${expid}.log.o%j.txt +#SBATCH --ntasks=$xncpus +#SBATCH --ntasks-per-node=$ncpus_per_node +#SBATCH --constraint=$nodeflg +#SBATCH --time=2:00:00 + +source \$FVROOT/modules + +cd \$FVWORK + +\$RUN_OPT_BEGIN |& tee -a fvpsas.log + +EOF +} +#======================================================================= +sub create_geos_run_ana { + + return 0 unless ( $fulldas ); + + my($mydir) = @_; + + my($frun, $ft, $acq); + + $acq = "$fvhome/$mydir/_geos_run_analyzer.j"; + open(SCRIPT,">$acq") or + die ">>> ERROR <<< cannot write $acq"; + print SCRIPT <<"EOF"; +#!/bin/csh -fx +# ------------------------------ +#$group_list +#_SBATCH --qos=dastest +#_SBATCH --partition=preops +#SBATCH --job-name=ana_${expid} +#SBATCH --output=ana_${expid}.log.o%j.txt +#SBATCH --nodes=10 +#SBATCH --constraint=$nodeflg +#SBATCH --time=2:00:00 + +source \$FVROOT/modules + +cd \$FVWORK + +analyzer \$nymdb \$nhmsb -expid \$EXPID -t \$SPECRES -levs \$gsinlev -x \$gsinlon -y \$gsinlat \ + -jiter \$Viter_ \$lnobs -log ana.log + +EOF +} #======================================================================= sub create_ana_aod_script_tmpl { my ($infl, $outf); diff --git a/src/Applications/GEOSdas_App/gen_silo_arc.pl b/src/Applications/GEOSdas_App/gen_silo_arc.pl index a820e999..1890a0ed 100755 --- a/src/Applications/GEOSdas_App/gen_silo_arc.pl +++ b/src/Applications/GEOSdas_App/gen_silo_arc.pl @@ -706,6 +706,7 @@ sub append_other_info { # --------------------------- # \${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.inst3d_met_p.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.nc4 +\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.ceta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.nc4 \${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.nc4 \${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.nc4 \${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.sfc.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.nc4 diff --git a/src/Applications/GEOSdas_App/jedi/etc/CMakeLists.txt b/src/Applications/GEOSdas_App/jedi/etc/CMakeLists.txt index 0b0b6eb1..aefa91f8 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/CMakeLists.txt +++ b/src/Applications/GEOSdas_App/jedi/etc/CMakeLists.txt @@ -5,6 +5,7 @@ set (ALLETC diag2ioda.yaml geos_3dvar.yaml geos_3dfgat.yaml + geos_hofx.yaml geos_hyb3dcenvar.yaml geos_hyb4dcenvar.yaml geos_hyb4dcenvar_seq.yaml @@ -15,8 +16,10 @@ set (ALLETC jedi_acquire_ioda.j jedi_acquire_vbc.j jedi_diffstates.j + jedi_anasa.j jedi_run_var.j mkiau.rc.tenv + mkiau_cubed.rc.tenv obsop_name_map.yaml ut_jedi.j ) diff --git a/src/Applications/GEOSdas_App/jedi/etc/JEDIadanaConfig.csh b/src/Applications/GEOSdas_App/jedi/etc/JEDIadanaConfig.csh index 9c15d5f6..63232716 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/JEDIadanaConfig.csh +++ b/src/Applications/GEOSdas_App/jedi/etc/JEDIadanaConfig.csh @@ -44,7 +44,7 @@ setenv JEDI_FV3VAR_MPIRUN "mpirun -perhost @JEDI_VAR_PERHOST -np $JEDI_NCPUS" setenv JEDI_MKIAU_MPIRUN "mpirun " setenv JEDI_STATIC_FILES @JEDI_STATIC_FILES -setenv JEDI_CRTM_COEFFS $FVHOME/fvInput/gsi/etc/JEDI-CRTM-2.4.1j1-GMAO/Little_Endian/ +setenv JEDI_CRTM_COEFFS $FVHOME/fvInput/gsi/etc/JEDI-CRTM-2.4.1j1-GMAO-1/Little_Endian/ setenv JEDI_INPUT @JEDI_INPUT # post diff --git a/src/Applications/GEOSdas_App/jedi/etc/JEDIanaConfig.csh b/src/Applications/GEOSdas_App/jedi/etc/JEDIanaConfig.csh index 57ed3d54..1b3ddfcd 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/JEDIanaConfig.csh +++ b/src/Applications/GEOSdas_App/jedi/etc/JEDIanaConfig.csh @@ -9,6 +9,7 @@ setenv JEDI_HYBRID @JEDI_HYBRID # control opts for hyb JEDI setenv JEDI_MKIAU 1 # calculates IAU output setenv JEDI_POST 0 # process results (move files, etc) setenv JEDI_IAU_OVERWRITE @JEDI_IAU_OVERWRITE # overwrite GSI-IAU with JEDI-IAU (when cycling) +setenv JEDI_MKIAU_CUBED 0 # 0=use lat-lon ana/bkg; 1=use cubed ana/bkg (no remap) setenv JEDI_RUN_ADANA_TEST 0 # run adjoint JEDI-Var setenv JEDI_VAROFFSET 10800 # background time offset setenv JEDI_FEEDBACK_VARBC @JEDI_FEEDBACK_VARBC # controls whether or not to feedback biases @@ -41,11 +42,12 @@ setenv JEDI_CNVENS_MPIRUN "mpirun -np 12" setenv JEDI_CNVINC_MPIRUN "mpirun -np 12" setenv JEDI_GETINC_MPIRUN "mpirun -np $JEDI_DIF_NCPUS" setenv JEDI_FV3VAR_MPIRUN "mpirun -perhost @JEDI_VAR_PERHOST -np $JEDI_NCPUS" +setenv JEDI_FV3HOX_MPIRUN "mpirun -perhost 16 -np 96" setenv JEDI_MKIAU_MPIRUN "mpirun " setenv JEDI_STATIC_FILES @JEDI_STATIC_FILES -setenv JEDI_CRTM_COEFFS $FVHOME/fvInput/gsi/etc/JEDI-CRTM-2.4.1j1-GMAO/Little_Endian/ +setenv JEDI_CRTM_COEFFS $FVHOME/fvInput/gsi/etc/JEDI-CRTM-2.4.1j1-GMAO-1/Little_Endian/ setenv JEDI_INPUT @JEDI_INPUT # post diff --git a/src/Applications/GEOSdas_App/jedi/etc/geos_3dfgat.yaml b/src/Applications/GEOSdas_App/jedi/etc/geos_3dfgat.yaml index 98c01d2e..855cdfa1 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/geos_3dfgat.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/geos_3dfgat.yaml @@ -11,7 +11,7 @@ cost function: - rain_water - snow_water - mole_fraction_of_ozone_in_air - - geopotential_height_times_gravity_at_surface + - geopotential_at_surface - fraction_of_ocean - fraction_of_lake - fraction_of_ice @@ -38,7 +38,7 @@ cost function: - rain_water - snow_water - mole_fraction_of_ozone_in_air - - geopotential_height_times_gravity_at_surface + - geopotential_at_surface - initial_mass_fraction_of_large_scale_cloud_condensate - initial_mass_fraction_of_convective_cloud_condensate - convective_cloud_area_fraction @@ -78,7 +78,7 @@ cost function: rain_water: qr snow_water: qs mole_fraction_of_ozone_in_air: o3ppmv - geopotential_height_times_gravity_at_surface: phis + geopotential_at_surface: phis initial_mass_fraction_of_large_scale_cloud_condensate: qls initial_mass_fraction_of_convective_cloud_condensate: qcn convective_cloud_area_fraction: cfcn @@ -106,7 +106,7 @@ cost function: # mole_fraction_of_carbon_dioxide_in_air: co2 background error: covariance model: SABER -# covariance type: gsi static covariance + covariance type: gsi static covariance # adjoint test: true saber central block: saber block name: gsi hybrid covariance @@ -205,7 +205,7 @@ variational: rain_water: qr snow_water: qs mole_fraction_of_ozone_in_air: o3ppmv - geopotential_height_times_gravity_at_surface: phis + geopotential_at_surface: phis fraction_of_ocean: frocean fraction_of_lake: frlake fraction_of_ice: frseaice diff --git a/src/Applications/GEOSdas_App/jedi/etc/geos_3dvar.yaml b/src/Applications/GEOSdas_App/jedi/etc/geos_3dvar.yaml index 4db0cc30..eb89f210 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/geos_3dvar.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/geos_3dvar.yaml @@ -28,7 +28,7 @@ cost function: - rain_water - snow_water - mole_fraction_of_ozone_in_air - - geopotential_height_times_gravity_at_surface + - geopotential_at_surface - fraction_of_ocean - fraction_of_lake - fraction_of_ice @@ -55,7 +55,7 @@ cost function: - rain_water - snow_water - mole_fraction_of_ozone_in_air - - geopotential_height_times_gravity_at_surface + - geopotential_at_surface - initial_mass_fraction_of_large_scale_cloud_condensate - initial_mass_fraction_of_convective_cloud_condensate - convective_cloud_area_fraction @@ -94,7 +94,7 @@ cost function: rain_water: qr snow_water: qs mole_fraction_of_ozone_in_air: o3ppmv - geopotential_height_times_gravity_at_surface: phis + geopotential_at_surface: phis initial_mass_fraction_of_large_scale_cloud_condensate: qls initial_mass_fraction_of_convective_cloud_condensate: qcn convective_cloud_area_fraction: cfcn @@ -121,7 +121,7 @@ cost function: sea_surface_temperature: ts_found background error: covariance model: SABER -# covariance type: gsi static covariance + covariance type: gsi static covariance saber central block: saber block name: gsi hybrid covariance read: diff --git a/src/Applications/GEOSdas_App/jedi/etc/geos_hofx.yaml b/src/Applications/GEOSdas_App/jedi/etc/geos_hofx.yaml new file mode 100644 index 00000000..f15567f2 --- /dev/null +++ b/src/Applications/GEOSdas_App/jedi/etc/geos_hofx.yaml @@ -0,0 +1,104 @@ + state: + datapath: './' + datetime: '$JEDI_ISO_DATE_004' + filenames: + - bkg.%yyyy%mm%ddT%hh%MM%ssZ.nc4 + - fv3-jedi/bkg/geos.crtmsrf.181.nc4 + filetype: cube sphere history + provider: geos + compute edge pressure from surface pressure: true + max allowable geometry difference: 1e-3 + state variables: &statevars + - eastward_wind + - northward_wind + - air_temperature + - air_pressure_levels + - air_pressure_at_surface + - water_vapor_mixing_ratio_wrt_moist_air + - cloud_liquid_ice + - cloud_liquid_water + - rain_water + - snow_water + - mole_fraction_of_ozone_in_air + - geopotential_at_surface +# - geopotential_at_surface + - initial_mass_fraction_of_large_scale_cloud_condensate + - initial_mass_fraction_of_convective_cloud_condensate + - convective_cloud_area_fraction + - fraction_of_ocean + - fraction_of_land + - isotropic_variance_of_filtered_topography + - surface_velocity_scale + - surface_buoyancy_scale + - planetary_boundary_layer_height + - surface_exchange_coefficient_for_momentum + - surface_exchange_coefficient_for_heat + - surface_exchange_coefficient_for_moisture + - KCBL_before_moist + - surface_temp_before_moist + - lower_index_where_Kh_greater_than_2 + - upper_index_where_Kh_greater_than_2 + - fraction_of_lake + - fraction_of_ice + - vtype + - stype + - vfrac + - sheleg + - skin_temperature_at_surface + - soilt + - soilm + - eastward_wind_at_surface + - northward_wind_at_surface + - sea_surface_temperature + field io names: &field_io_names + eastward_wind: ua + northward_wind: va + air_temperature: t + water_vapor_mixing_ratio_wrt_moist_air: q + cloud_liquid_ice: qi + cloud_liquid_water: ql + rain_water: qr + snow_water: qs + mole_fraction_of_ozone_in_air: o3ppmv + geopotential_at_surface: phis +# geopotential_at_surface: phis + initial_mass_fraction_of_large_scale_cloud_condensate: qls + initial_mass_fraction_of_convective_cloud_condensate: qcn + convective_cloud_area_fraction: cfcn + fraction_of_ocean: frocean + fraction_of_land: frland + isotropic_variance_of_filtered_topography: varflt + surface_velocity_scale: ustar + surface_buoyancy_scale: bstar + planetary_boundary_layer_height: zpbl + surface_exchange_coefficient_for_momentum: cm + surface_exchange_coefficient_for_heat: ct + surface_exchange_coefficient_for_moisture: cq + KCBL_before_moist: kcbl + surface_temp_before_moist: tsm + lower_index_where_Kh_greater_than_2: khl + upper_index_where_Kh_greater_than_2: khu + fraction_of_lake: frlake + fraction_of_ice: frseaice + skin_temperature_at_surface: ts + eastward_wind_at_surface: u10m + northward_wind_at_surface: v10m + air_pressure_levels: pe + air_pressure_at_surface: ps + sea_surface_temperature: ts_found + geometry: + akbk: ./fv3-jedi/fv3files/akbk72.nc4 + fms initialization: + field table filename: ./fv3-jedi/fv3files/field_table_gmao + namelist filename: ./fv3-jedi/fv3files/fmsmpp.nml + layout: + - 4 + - 4 + npx: 181 + npy: 181 + npz: 72 +# OBSYAML_BEG +# OBSYAML_END + time window: + begin: $JEDI_ISO_DATE_BEG + length: PT6H diff --git a/src/Applications/GEOSdas_App/jedi/etc/geos_hyb3dcenvar.yaml b/src/Applications/GEOSdas_App/jedi/etc/geos_hyb3dcenvar.yaml index 2fc1d1a6..08cfe268 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/geos_hyb3dcenvar.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/geos_hyb3dcenvar.yaml @@ -24,7 +24,7 @@ cost function: - rain_water - snow_water - mole_fraction_of_ozone_in_air - - geopotential_height_times_gravity_at_surface + - geopotential_at_surface - fraction_of_ocean - fraction_of_lake - fraction_of_ice @@ -51,7 +51,7 @@ cost function: - rain_water - snow_water - mole_fraction_of_ozone_in_air - - geopotential_height_times_gravity_at_surface + - geopotential_at_surface - initial_mass_fraction_of_large_scale_cloud_condensate - initial_mass_fraction_of_convective_cloud_condensate - convective_cloud_area_fraction @@ -90,7 +90,7 @@ cost function: rain_water: qr snow_water: qs mole_fraction_of_ozone_in_air: o3ppmv - geopotential_height_times_gravity_at_surface: phis + geopotential_at_surface: phis initial_mass_fraction_of_large_scale_cloud_condensate: qls initial_mass_fraction_of_convective_cloud_condensate: qcn convective_cloud_area_fraction: cfcn @@ -120,7 +120,7 @@ cost function: components: - covariance: covariance model: SABER -# covariance type: gsi hybrid covariance + covariance type: gsi hybrid covariance saber central block: saber block name: gsi static covariance read: diff --git a/src/Applications/GEOSdas_App/jedi/etc/geos_hyb3denvar.yaml b/src/Applications/GEOSdas_App/jedi/etc/geos_hyb3denvar.yaml index 553fa335..ceb981ac 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/geos_hyb3denvar.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/geos_hyb3denvar.yaml @@ -11,7 +11,7 @@ cost function: - rain_water - snow_water - mole_fraction_of_ozone_in_air - - geopotential_height_times_gravity_at_surface + - geopotential_at_surface - fraction_of_ocean - fraction_of_lake - fraction_of_ice @@ -38,7 +38,7 @@ cost function: - rain_water - snow_water - mole_fraction_of_ozone_in_air - - geopotential_height_times_gravity_at_surface + - geopotential_at_surface - initial_mass_fraction_of_large_scale_cloud_condensate - initial_mass_fraction_of_convective_cloud_condensate - convective_cloud_area_fraction @@ -78,7 +78,7 @@ cost function: rain_water: qr snow_water: qs mole_fraction_of_ozone_in_air: o3ppmv - geopotential_height_times_gravity_at_surface: phis + geopotential_at_surface: phis initial_mass_fraction_of_large_scale_cloud_condensate: qls initial_mass_fraction_of_convective_cloud_condensate: qcn convective_cloud_area_fraction: cfcn @@ -106,7 +106,7 @@ cost function: # mole_fraction_of_carbon_dioxide_in_air: co2 background error: covariance model: SABER -# covariance type: gsi static covariance + covariance type: gsi static covariance # adjoint test: true saber central block: saber block name: gsi hybrid covariance @@ -204,7 +204,7 @@ variational: rain_water: qr snow_water: qs mole_fraction_of_ozone_in_air: o3ppmv - geopotential_height_times_gravity_at_surface: phis + geopotential_at_surface: phis fraction_of_ocean: frocean fraction_of_lake: frlake fraction_of_ice: frseaice diff --git a/src/Applications/GEOSdas_App/jedi/etc/geos_hyb4dcenvar.yaml b/src/Applications/GEOSdas_App/jedi/etc/geos_hyb4dcenvar.yaml index ec495f5f..856c0ad6 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/geos_hyb4dcenvar.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/geos_hyb4dcenvar.yaml @@ -10,7 +10,7 @@ cost function: - rain_water - snow_water - mole_fraction_of_ozone_in_air - - geopotential_height_times_gravity_at_surface + - geopotential_at_surface - fraction_of_ocean - fraction_of_lake - fraction_of_ice @@ -38,7 +38,7 @@ cost function: - rain_water - snow_water - mole_fraction_of_ozone_in_air - - geopotential_height_times_gravity_at_surface + - geopotential_at_surface - initial_mass_fraction_of_large_scale_cloud_condensate - initial_mass_fraction_of_convective_cloud_condensate - convective_cloud_area_fraction @@ -77,7 +77,7 @@ cost function: rain_water: qr snow_water: qs mole_fraction_of_ozone_in_air: o3ppmv - geopotential_height_times_gravity_at_surface: phis + geopotential_at_surface: phis initial_mass_fraction_of_large_scale_cloud_condensate: qls initial_mass_fraction_of_convective_cloud_condensate: qcn convective_cloud_area_fraction: cfcn @@ -173,7 +173,7 @@ cost function: components: - covariance: covariance model: SABER -# covariance type: gsi hybrid covariance + covariance type: gsi hybrid covariance linear variable change: input variables: *anavars linear variable change name: Control2Analysis diff --git a/src/Applications/GEOSdas_App/jedi/etc/geos_hyb4dcenvar_seq.yaml b/src/Applications/GEOSdas_App/jedi/etc/geos_hyb4dcenvar_seq.yaml index cda6d595..116df291 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/geos_hyb4dcenvar_seq.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/geos_hyb4dcenvar_seq.yaml @@ -10,7 +10,7 @@ cost function: - rain_water - snow_water - mole_fraction_of_ozone_in_air - - geopotential_height_times_gravity_at_surface + - geopotential_at_surface - fraction_of_ocean - fraction_of_lake - fraction_of_ice @@ -38,7 +38,7 @@ cost function: - rain_water - snow_water - mole_fraction_of_ozone_in_air - - geopotential_height_times_gravity_at_surface + - geopotential_at_surface - initial_mass_fraction_of_large_scale_cloud_condensate - initial_mass_fraction_of_convective_cloud_condensate - convective_cloud_area_fraction @@ -77,7 +77,7 @@ cost function: rain_water: qr snow_water: qs mole_fraction_of_ozone_in_air: o3ppmv - geopotential_height_times_gravity_at_surface: phis + geopotential_at_surface: phis initial_mass_fraction_of_large_scale_cloud_condensate: qls initial_mass_fraction_of_convective_cloud_condensate: qcn convective_cloud_area_fraction: cfcn @@ -173,7 +173,7 @@ cost function: components: - covariance: covariance model: SABER -# covariance type: gsi hybrid covariance + covariance type: gsi hybrid covariance linear variable change: input variables: *anavars linear variable change name: Control2Analysis diff --git a/src/Applications/GEOSdas_App/jedi/etc/geos_hyb4denvar.yaml b/src/Applications/GEOSdas_App/jedi/etc/geos_hyb4denvar.yaml index 8382f9db..bc9d0400 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/geos_hyb4denvar.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/geos_hyb4denvar.yaml @@ -11,7 +11,7 @@ cost function: - rain_water - snow_water - mole_fraction_of_ozone_in_air - - geopotential_height_times_gravity_at_surface + - geopotential_at_surface - fraction_of_ocean - fraction_of_lake - fraction_of_ice @@ -39,7 +39,7 @@ cost function: - rain_water - snow_water - mole_fraction_of_ozone_in_air - - geopotential_height_times_gravity_at_surface + - geopotential_at_surface - initial_mass_fraction_of_large_scale_cloud_condensate - initial_mass_fraction_of_convective_cloud_condensate - convective_cloud_area_fraction @@ -78,7 +78,7 @@ cost function: rain_water: qr snow_water: qs mole_fraction_of_ozone_in_air: o3ppmv - geopotential_height_times_gravity_at_surface: phis + geopotential_at_surface: phis initial_mass_fraction_of_large_scale_cloud_condensate: qls initial_mass_fraction_of_convective_cloud_condensate: qcn convective_cloud_area_fraction: cfcn @@ -171,7 +171,7 @@ cost function: field io names: *field_io_names background error: covariance model: SABER -# covariance type: gsi hybrid covariance + covariance type: gsi hybrid covariance linear variable change: input variables: *anavars linear variable change name: Control2Analysis @@ -317,26 +317,26 @@ variational: # gridtype: latlon # field io names: *field_io_names # write increment: true -# - ninner: '25' -## diagnostics: -## departures: ombg -# geometry: -# akbk: ./fv3-jedi/fv3files/akbk@JEDI_BKG_VRES.nc4 -# fms initialization: -# field table filename: ./fv3-jedi/fv3files/field_table_gmao -# namelist filename: ./fv3-jedi/fv3files/fmsmpp.nml -# layout: -# - @JEDI_VAR_XLAYOUT -# - @JEDI_VAR_YLAYOUT -# npx: @JEDI_BKG_HRES -# npy: @JEDI_BKG_HRES -# npz: @JEDI_BKG_VRES -# gradient norm reduction: 1e-3 -# linear model: -# increment variables: *anavars -# name: Identity -# tstep: PT1H -# variable change: Identity + - ninner: '25' + diagnostics: + departures: ombg + geometry: + akbk: ./fv3-jedi/fv3files/akbk@JEDI_BKG_VRES.nc4 + fms initialization: + field table filename: ./fv3-jedi/fv3files/field_table_gmao + namelist filename: ./fv3-jedi/fv3files/fmsmpp.nml + layout: + - @JEDI_VAR_XLAYOUT + - @JEDI_VAR_YLAYOUT + npx: @JEDI_BKG_HRES + npy: @JEDI_BKG_HRES + npz: @JEDI_BKG_VRES + gradient norm reduction: 1e-3 + linear model: + increment variables: *anavars + name: Identity + tstep: PT1H + variable change: Identity # online diagnostics: # increment: # state component: diff --git a/src/Applications/GEOSdas_App/jedi/etc/jedi_acquire_prog.j b/src/Applications/GEOSdas_App/jedi/etc/jedi_acquire_prog.j new file mode 100644 index 00000000..5e4fe385 --- /dev/null +++ b/src/Applications/GEOSdas_App/jedi/etc/jedi_acquire_prog.j @@ -0,0 +1,8 @@ +#!/bin/csh -xvf +#SBATCH --account=$GID +#SBATCH --partition=datamove +#SBATCH --time=1:00:00 + +cd $ACQWORK +acquire -v -rc $ACQWORK/jedi_prog.acq -d $ACQWORK -s $FVHOME/spool -ssh $NYMD $NHMS 060000 1 +exit diff --git a/src/Applications/GEOSdas_App/jedi/etc/jedi_anasa.j b/src/Applications/GEOSdas_App/jedi/etc/jedi_anasa.j new file mode 100755 index 00000000..12d5ced8 --- /dev/null +++ b/src/Applications/GEOSdas_App/jedi/etc/jedi_anasa.j @@ -0,0 +1,175 @@ +#!/bin/csh -fx +@GEOSJEDI_GID +@GEOSJEDI_QOS +@GEOSJEDI_PARTITION +#SBATCH --job-name=janasa +#SBATCH --output=janasa.log.o%j.txt +#SBATCH --nodes=1 +#SBATCH --constraint=mil +#SBATCH --time=2:00:00 + +####################################################### +####################################################### +###### ###### +###### Standlone jedi analysis ###### +###### ###### +###### Supports: ###### +###### 1. Running just jedi analysis from ###### +###### GEOS-JEDI output ###### +###### 2. Running forecast verification vs ###### +###### observations ###### +####################################################### +####################################################### + +setenv myname jedi_anasa + +setenv GID @GID +setenv EXPID @EXPID +setenv FVHOME @FVHOME +setenv FVROOT `cat $FVHOME/.FVROOT` +setenv VAROFFSET 180 +setenv JEDI_RUN_ANASA 1 +setenv ARCHIVE @ARCHIVE + +setenv BATCH_SUBCMD sbatch + +if ( ! -d $FVHOME/run/jedi ) then + echo "No JEDI settings have been found within GEOS, abort" + exit 1 +endif + +set path = ( . $FVHOME/anasa $FVHOME/run/jedi $FVHOME/run $FVROOT/bin $path ) +source $FVROOT/bin/g5_modules + +setenv FVWORK $FVHOME/../tmpjanasa.$$ +setenv HOLDRESULTS $FVWORK/Results +mkdir -p $FVWORK +mkdir -p $HOLDRESULTS + +@ offset_hr = $VAROFFSET / 60 +@ offset_sec = $VAROFFSET * 60 + +cd $FVHOME/anasa +if ($?this_nymdhh) then + set lstcases = `/bin/ls -1 standalone.${this_nymdhh}z` +else + set lstcases = `/bin/ls -1 standalone.*` +endif +if ( $status ) then + echo $myname": standalone cases listed" + exit 1 +endif +echo $lstcases[1] | grep + +if ( $status ) then + + # case when running analysis from background + set fcst_end = `echo $lstcases[1] | cut -d. -f2` + set nymde = `echo $fcst_end | cut -c1-8` + set hhe = `echo $fcst_end | cut -c10-11` + set nhmse = ${hhe}0000 + set fcst_beg = $fcst_end + + @ fcoff = 0 + + set salog = $EXPID.jedi_anasa.log.${nymde}_${hhe}z.txt +else + + # case when running "hofx" from forecasts (forecast verified against obs) + set fcst_beg = `echo $lstcases[1] | cut -d. -f2 | cut -d+ -f1` + set fcst_end = `echo $lstcases[1] | cut -d. -f2 | cut -d+ -f2` + + set nymd0 = `echo $fcst_beg | cut -c1-8` + set yyyy0 = `echo $fcst_beg | cut -c1-4` + set mm0 = `echo $fcst_beg | cut -c5-6` + set dd0 = `echo $fcst_beg | cut -c7-8` + set nhms0 = `echo $fcst_beg | cut -c1-8` + set hh0 = `echo $fcst_beg | cut -c10-11` + + set nymde = `echo $fcst_end | cut -c1-8` + set yyyye = `echo $fcst_end | cut -c1-4` + set mme = `echo $fcst_end | cut -c5-6` + set dde = `echo $fcst_end | cut -c7-8` + set hhe = `echo $fcst_end | cut -c10-11` + set nhmse = ${hhe}0000 + + # dates: + set d1 = ${nymd0}${hh0} + set d2 = ${nymde}${hhe} + + # Reformat into YYYY-MM-DD HH:00:00 + set dt1 = `echo $d1 | sed 's/\(....\)\(..\)\(..\)\(..\)/\1-\2-\3 \4:00:00/'` + set dt2 = `echo $d2 | sed 's/\(....\)\(..\)\(..\)\(..\)/\1-\2-\3 \4:00:00/'` + + # Convert to epoch seconds (GNU date) + set t1 = `date -d "$dt1" +%s` + set t2 = `date -d "$dt2" +%s` + + @ fcoff = ($t2 - $t1) / 3600 - $offset_hr + if ( $fcoff == 0 ) then + /bin/rm $lstcases[1] + echo "jedi_anasa.j: t=0 found, stopping" + echo "jedi_anasa.j: check standalone files if this not meant" + exit(0) + endif + + set salog = $EXPID.jedi_anasa.log.${nymd0}_${hh0}z+${nymde}_${hhe}z.txt + +endif + +# Start of analysis cycle (typically 3-hour offset from analysis time) +# -------------------------------------------------------------------- +set bana = ( `tick $nymde $nhmse -$offset_sec` ) + +set nymdb = `echo $bana[1] | cut -c1-8` +set yyyyb = `echo $bana[1] | cut -c1-4` +set mmb = `echo $bana[1] | cut -c5-6` +set ddb = `echo $bana[1] | cut -c7-8` +set hhb = `echo $bana[2] | cut -c1-2` + +set nymda = $nymde +set hha = $hhe +set nhmsa = ${hhe}0000 + +if ( -d $FVWORK/janasa ) /bin/rm -r $FVWORK/janasa + +jedi_driver.csh $bana[1] $bana[2] $nymda $nhmsa $fcoff |& tee -a $FVWORK/$salog +if ($status) then + echo "jedi_anasa.j: Failed on jedi_driver, aborting" + exit(1) +endif + +# For now, archive by "hand" +# ------------------------- +if ( $fcoff ) then # for now, ignore saving output from sa-analysis (only fcst verification) + /bin/mv $FVWORK/$EXPID.jedi_hofx.${nymdb}_${hhb}z.tar $ARCHIVE/jedi/verify/obs/Y$yyyyb/M$mmb/ +endif + + +# Clean up and go on +# ------------------ +/bin/rm $lstcases[1] + +if ($?this_nymdhh) then + if( (`uname -s` == "Linux") && ((`uname -m` == "ia64")||(`uname -m` == "x86_64")) ) then + cd + /bin/rm -r $FVWORK + endif +else + set lstcases = `/bin/ls -1 standalone.*` + if ( $status ) then + echo $myname": no more cases to run, anasa job completed" + exit 0 + endif + set jname = janasa + set lname = $jname.log.o%j + if ( $#lstcases > 0 ) then + if ( $BATCH_SUBCMD == "sbatch" ) then + sbatch -d afterany:${PBS_JOBID} -J $jname -o $lname jedi_anasa.j + else + qsub -W depend=afterany:${PBS_JOBID} -N $jname -o $lname jedi_anasa.j + endif + endif +endif + +#/bin/mv *.tar *.txt $HOLDRESULTS/ + diff --git a/src/Applications/GEOSdas_App/jedi/etc/mkiau_cubed.rc.tenv b/src/Applications/GEOSdas_App/jedi/etc/mkiau_cubed.rc.tenv new file mode 100644 index 00000000..3946c9c6 --- /dev/null +++ b/src/Applications/GEOSdas_App/jedi/etc/mkiau_cubed.rc.tenv @@ -0,0 +1,60 @@ +# MAPL required variables +# ----------------------- +RUN_DT: 21600 # for now, must be set to 6-hrs +MAPL_ENABLE_TIMERS: NO +PRINTSPEC: 0 # (0: OFF, 1: IMPORT & EXPORT, 2: IMPORT, 3: EXPORT) + +# request increment to (also) come out in sdf format +# -------------------------------------------------- +#SDF_FILENAME: agcm_import_rst.%y4%m2%d2_%h2z.nc4 + +# Model Resolution and Timestep Parameters +# 4x4 is usually enough for any resolution +# ---------------------------------------- +NX: 4 +NY: 24 + +#TEST_CASE: 0 +#TEST_CASE: 1 # convert cubed back to latlon +#TEST_CASE: 2 # test ad l2c (not avail yet) +#TEST_CASE: 3 # test ad c2l + +DYCORE: FV3 +AGCM.GRIDNAME: PE@AGCM_IMx@AGCM_JM-CF + +AGCM.IM_WORLD: @AGCM_IM +AGCM.JM_WORLD: @AGCM_JM +AGCM.LM: @AGCM_LM +AGCM.GRID_TYPE: Cubed-Sphere + +IAU_DATE: $ANADATE +IAU_TIME: $ANATIME + +# This is presently set the same file as the old makeiau.x did +# NOTE: the internal_rst of this program provides +# the import to GEOSgcm.x, therefore its name +# ------------------------------------------------------------ +AGCM_INTERNAL_CHECKPOINT_FILE: ${AGCMIMPRST} +AGCM_INTERNAL_CHECKPOINT_TYPE: pnc4 + +#WRITE_AGCM_INTERNAL_FILE: agcm_interal_rst + +ANALYZE_TS: 1 +REPLAY_BKG: $BKGFNAME +REPLAY_FILE: $ANAFNAME +REPLAY_DAMPBEG: 0 +REPLAY_DAMPEND: 0 +REPLAY_OFFLINE: 1 +#REPLAY_REMAP: YES <------- +REPLAY_REMAP: NO +REPLAY_WINDFIX: NO +# Following allows zero-out of q-tendency (careful) +#NO_DQVDT: 1 + +UNAME: ua +VNAME: va +QNAME: q +O3NAME: o3ppmv +REPLAY_DP_FROM_PS: YES + +SUMMARIZE: 1 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/0hofx.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/0hofx.yaml new file mode 100644 index 00000000..a63735e8 --- /dev/null +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/0hofx.yaml @@ -0,0 +1 @@ + observation-minus-forecast departure name: omf$HHH diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/abi_g18.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/abi_g18.yaml index 7c06ccc9..00696f27 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/abi_g18.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/abi_g18.yaml @@ -24,6 +24,9 @@ linear obs operator: Absorbers: [H2O,O3] Surfaces: [Water_Temperature,Land_Temperature,Ice_Temperature,Snow_Temperature] + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/abi_g18.$PYYYYYMMDDTHH0000Z.satbias.nc4 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/aircraft_wind.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/aircraft_wind.yaml index c482ca29..c0182203 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/aircraft_wind.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/aircraft_wind.yaml @@ -40,7 +40,7 @@ hofx scaling field group: DerivedVariables obs prior filters: - filter: Variable Transforms - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 Transform: SurfaceWindScalingPressure SkipWhenNoObs: false obs post filters: diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/airs_aqua.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/airs_aqua.yaml index c2c212ab..dbbe9c1e 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/airs_aqua.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/airs_aqua.yaml @@ -50,6 +50,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/airs_aqua.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/airs_aqua.$BYYYYYMMDDTHH0000Z.satbias.nc4 @@ -87,7 +90,7 @@ input file: fv3-jedi/rcov/airs_aqua_119_jedi_rcov.nc4 obs prior filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 1, 6-7, 10-11, 15-17, 20-22, 24, 27-28, 30, 36, 39-40, 42, 51-52, @@ -393,7 +396,7 @@ - 0.75 - 0.75 - filter: Variable Assignment - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 assignments: - name: ObsError/brightnessTemperature channels: 1, 6-7, 10-11, 15-17, 20-22, 24, 27-28, 30, 36, 39-40, 42, 51-52, diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/amsr2_gcom-w1.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/amsr2_gcom-w1.yaml index 2ee45fe7..3c2a8d80 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/amsr2_gcom-w1.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/amsr2_gcom-w1.yaml @@ -45,6 +45,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/amsr2_gcom-w1.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/amsr2_gcom-w1.$BYYYYYMMDDTHH0000Z.satbias.nc4 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_aqua.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_aqua.yaml index 9af8f5c3..01a50c3a 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_aqua.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_aqua.yaml @@ -33,6 +33,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/amsua_aqua.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/amsua_aqua.$BYYYYYMMDDTHH0000Z.satbias.nc4 @@ -74,7 +77,7 @@ output file: ./vbc/amsua_aqua.$BYYYYYMMDDTHH0000Z.satbias_cov.nc4 obs prior filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 1-15 @@ -233,7 +236,7 @@ action: name: reject - filter: Bounds Check - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 1-15 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_metop-b.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_metop-b.yaml index d3bd8c16..bc252dda 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_metop-b.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_metop-b.yaml @@ -33,6 +33,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/amsua_metop-b.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/amsua_metop-b.$BYYYYYMMDDTHH0000Z.satbias.nc4 @@ -74,7 +77,7 @@ output file: ./vbc/amsua_metop-b.$BYYYYYMMDDTHH0000Z.satbias_cov.nc4 obs prior filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 1-15 @@ -94,7 +97,7 @@ - 0.4 - 0.55 - 0.8 - - 5.0 + - 1.5 - 2.5 obs post filters: - filter: Bounds Check @@ -233,7 +236,7 @@ action: name: reject - filter: Bounds Check - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 1-15 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_metop-c.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_metop-c.yaml index cb9e9cd5..2f90a6c3 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_metop-c.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_metop-c.yaml @@ -33,6 +33,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/amsua_metop-c.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/amsua_metop-c.$BYYYYYMMDDTHH0000Z.satbias.nc4 @@ -74,7 +77,7 @@ output file: ./vbc/amsua_metop-c.$BYYYYYMMDDTHH0000Z.satbias_cov.nc4 obs prior filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 1-15 @@ -94,7 +97,7 @@ - 0.4 - 0.55 - 0.8 - - 5.0 + - 1.5 - 2.5 obs post filters: - filter: Bounds Check @@ -233,7 +236,7 @@ action: name: reject - filter: Bounds Check - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 1-15 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_n15.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_n15.yaml index ba87cf08..94419b69 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_n15.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_n15.yaml @@ -33,6 +33,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/amsua_n15.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/amsua_n15.$BYYYYYMMDDTHH0000Z.satbias.nc4 @@ -74,7 +77,7 @@ output file: ./vbc/amsua_n15.$BYYYYYMMDDTHH0000Z.satbias_cov.nc4 obs prior filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 1-15 @@ -94,7 +97,7 @@ - 0.6 - 1.0 - 1.5 - - 5.0 + - 1.5 - 3.0 obs post filters: - filter: Bounds Check @@ -233,7 +236,7 @@ action: name: reject - filter: Bounds Check - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 1-15 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_n19.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_n19.yaml index aa3f4149..52751180 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_n19.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/amsua_n19.yaml @@ -33,6 +33,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/amsua_n19.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/amsua_n19.$BYYYYYMMDDTHH0000Z.satbias.nc4 @@ -74,7 +77,7 @@ output file: ./vbc/amsua_n19.$BYYYYYMMDDTHH0000Z.satbias_cov.nc4 obs prior filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 1-15 @@ -94,7 +97,7 @@ - 0.4 - 0.55 - 0.8 - - 5.0 + - 1.5 - 2.5 obs post filters: - filter: Bounds Check @@ -233,7 +236,7 @@ action: name: reject - filter: Bounds Check - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 1-15 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/atms_n20.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/atms_n20.yaml index 4de709e0..b8c10f8b 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/atms_n20.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/atms_n20.yaml @@ -33,6 +33,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/atms_n20.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/atms_n20.$BYYYYYMMDDTHH0000Z.satbias.nc4 @@ -74,7 +77,7 @@ output file: ./vbc/atms_n20.$BYYYYYMMDDTHH0000Z.satbias_cov.nc4 obs prior filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 1-22 @@ -95,7 +98,7 @@ - 0.4 - 0.55 - 0.8 - - 5.0 + - 1.5 - 5.0 - 2.5 - 2.5 @@ -247,7 +250,7 @@ action: name: reject - filter: Bounds Check - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 1-22 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/atms_n21.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/atms_n21.yaml index 1a8ab81b..a7c7396b 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/atms_n21.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/atms_n21.yaml @@ -33,6 +33,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/atms_n21.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/atms_n21.$BYYYYYMMDDTHH0000Z.satbias.nc4 @@ -74,7 +77,7 @@ output file: ./vbc/atms_n21.$BYYYYYMMDDTHH0000Z.satbias_cov.nc4 obs prior filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 1-22 @@ -95,7 +98,7 @@ - 0.4 - 0.55 - 0.8 - - 5.0 + - 1.5 - 5.0 - 2.5 - 2.5 @@ -247,7 +250,7 @@ action: name: reject - filter: Bounds Check - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 1-22 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/atms_npp.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/atms_npp.yaml index b884743d..823cd779 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/atms_npp.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/atms_npp.yaml @@ -33,6 +33,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/atms_npp.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/atms_npp.$BYYYYYMMDDTHH0000Z.satbias.nc4 @@ -74,7 +77,7 @@ output file: ./vbc/atms_npp.$BYYYYYMMDDTHH0000Z.satbias_cov.nc4 obs prior filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 1-22 @@ -95,7 +98,7 @@ - 0.4 - 0.55 - 0.8 - - 5.0 + - 1.5 - 5.0 - 2.5 - 2.5 @@ -247,7 +250,7 @@ action: name: reject - filter: Bounds Check - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 1-22 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/avhrr3_metop-b.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/avhrr3_metop-b.yaml index d2b6360d..7e770065 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/avhrr3_metop-b.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/avhrr3_metop-b.yaml @@ -33,6 +33,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/avhrr3_metop-b.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/avhrr3_metop-b.$BYYYYYMMDDTHH0000Z.satbias.nc4 @@ -67,7 +70,7 @@ output file: ./vbc/avhrr3_metop-b.$BYYYYYMMDDTHH0000Z.satbias_cov.nc4 obs prior filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 3-5 @@ -78,7 +81,7 @@ - 1.08 - 1.12 - filter: Variable Assignment - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 assignments: - name: ObsError/brightnessTemperature channels: 3-5 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/avhrr3_metop-c.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/avhrr3_metop-c.yaml index b35598e8..e1dbce1e 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/avhrr3_metop-c.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/avhrr3_metop-c.yaml @@ -33,6 +33,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/avhrr3_metop-c.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/avhrr3_metop-c.$BYYYYYMMDDTHH0000Z.satbias.nc4 @@ -67,7 +70,7 @@ output file: ./vbc/avhrr3_metop-c.$BYYYYYMMDDTHH0000Z.satbias_cov.nc4 obs prior filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 3-5 @@ -78,7 +81,7 @@ - 1.08 - 1.12 - filter: Variable Assignment - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 assignments: - name: ObsError/brightnessTemperature channels: 3-5 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/avhrr3_n18.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/avhrr3_n18.yaml index ddfeee3e..b614486a 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/avhrr3_n18.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/avhrr3_n18.yaml @@ -67,7 +67,7 @@ output file: ./vbc/avhrr3_n18.$BYYYYYMMDDTHH0000Z.satbias_cov.nc4 obs prior filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 3-5 @@ -78,7 +78,7 @@ - 1.08 - 1.12 - filter: Variable Assignment - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 assignments: - name: ObsError/brightnessTemperature channels: 3-5 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/avhrr3_n19.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/avhrr3_n19.yaml index 668d859d..c5964d9d 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/avhrr3_n19.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/avhrr3_n19.yaml @@ -33,6 +33,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/avhrr3_n19.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/avhrr3_n19.$BYYYYYMMDDTHH0000Z.satbias.nc4 @@ -67,7 +70,7 @@ output file: ./vbc/avhrr3_n19.$BYYYYYMMDDTHH0000Z.satbias_cov.nc4 obs prior filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 3-5 @@ -78,7 +81,7 @@ - 1.08 - 1.12 - filter: Variable Assignment - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 assignments: - name: ObsError/brightnessTemperature channels: 3-5 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/cris-fsr_n20.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/cris-fsr_n20.yaml index c6212040..8a6e160f 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/cris-fsr_n20.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/cris-fsr_n20.yaml @@ -49,6 +49,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/cris-fsr_n20.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/cris-fsr_n20.$BYYYYYMMDDTHH0000Z.satbias.nc4 @@ -86,7 +89,7 @@ input file: fv3-jedi/rcov/cris-fsr_108_jedi_rcov.nc4 obs prior filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 19, 24, 26-28, 31-33, 37, 39, 42, 44, 47, 49-200, 208, 211, 216, @@ -541,7 +544,7 @@ - 0.943 - 0.946 - filter: Variable Assignment - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 assignments: - name: ObsError/brightnessTemperature channels: 19, 24, 26-28, 31-33, 37, 39, 42, 44, 47, 49-200, 208, 211, 216, diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/cris-fsr_n21.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/cris-fsr_n21.yaml index d2623976..e242a7b7 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/cris-fsr_n21.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/cris-fsr_n21.yaml @@ -49,6 +49,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/cris-fsr_n21.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/cris-fsr_n21.$BYYYYYMMDDTHH0000Z.satbias.nc4 @@ -86,7 +89,7 @@ input file: fv3-jedi/rcov/cris-fsr_108_jedi_rcov.nc4 obs prior filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 19, 24, 26-28, 31-33, 37, 39, 42, 44, 47, 49-200, 208, 211, 216, @@ -541,7 +544,7 @@ - 0.943 - 0.946 - filter: Variable Assignment - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 assignments: - name: ObsError/brightnessTemperature channels: 19, 24, 26-28, 31-33, 37, 39, 42, 44, 47, 49-200, 208, 211, 216, diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/cris-fsr_npp.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/cris-fsr_npp.yaml index ed1a1602..74961b2d 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/cris-fsr_npp.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/cris-fsr_npp.yaml @@ -49,6 +49,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/cris-fsr_npp.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/cris-fsr_npp.$BYYYYYMMDDTHH0000Z.satbias.nc4 @@ -86,7 +89,7 @@ input file: fv3-jedi/rcov/cris-fsr_108_jedi_rcov.nc4 obs prior filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 19, 24, 26-28, 31-33, 37, 39, 42, 44, 47, 49-200, 208, 211, 216, @@ -541,7 +544,7 @@ - 0.943 - 0.946 - filter: Variable Assignment - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 assignments: - name: ObsError/brightnessTemperature channels: 19, 24, 26-28, 31-33, 37, 39, 42, 44, 47, 49-200, 208, 211, 216, diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/gmi_gpm.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/gmi_gpm.yaml index 2239bfc8..0ad06a90 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/gmi_gpm.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/gmi_gpm.yaml @@ -45,6 +45,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/gmi_gpm.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/gmi_gpm.$BYYYYYMMDDTHH0000Z.satbias.nc4 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/gps.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/gps.yaml index 65c0f62e..cffb8857 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/gps.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/gps.yaml @@ -22,11 +22,11 @@ name: GnssroBndNBAM obs options: use_compress: 1 -# vertlayer: mass - vertlayer: full + vertlayer: mass +# vertlayer: full sr_steps: 2 super_ref_qc: NBAM -# GSI_version: GEOS + GSI_version: GEOS obs filters: - filter: BlackList apply at iterations: 0, 1, 2 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/iasi_metop-b.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/iasi_metop-b.yaml index 097f9001..5e196195 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/iasi_metop-b.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/iasi_metop-b.yaml @@ -78,6 +78,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/iasi_metop-b.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/iasi_metop-b.$BYYYYYMMDDTHH0000Z.satbias.nc4 @@ -115,7 +118,7 @@ input file: fv3-jedi/rcov/iasi_metop_141_jedi_rcov.nc4 obs prior filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 16, 29, 32, 35, 38, 41, 44, 47, 49-51, 53, 55-57, 59, 61-63, 66, @@ -785,7 +788,7 @@ - 2.53 - 9.0 - filter: Variable Assignment - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 assignments: - name: ObsError/brightnessTemperature channels: 16, 29, 32, 35, 38, 41, 44, 47, 49-51, 53, 55-57, 59, 61-63, 66, diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/iasi_metop-c.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/iasi_metop-c.yaml index f468cfc6..ec42d95d 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/iasi_metop-c.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/iasi_metop-c.yaml @@ -78,6 +78,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/iasi_metop-c.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/iasi_metop-c.$BYYYYYMMDDTHH0000Z.satbias.nc4 @@ -115,7 +118,7 @@ input file: fv3-jedi/rcov/iasi_metop_141_jedi_rcov.nc4 obs prior filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 16, 29, 32, 35, 38, 41, 44, 47, 49-51, 53, 55-57, 59, 61-63, 66, @@ -785,7 +788,7 @@ - 2.53 - 9.0 - filter: Variable Assignment - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 assignments: - name: ObsError/brightnessTemperature channels: 16, 29, 32, 35, 38, 41, 44, 47, 49-51, 53, 55-57, 59, 61-63, 66, diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/mhs_metop-b.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/mhs_metop-b.yaml index 3818ced5..e9c447fd 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/mhs_metop-b.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/mhs_metop-b.yaml @@ -45,6 +45,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/mhs_metop-b.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/mhs_metop-b.$BYYYYYMMDDTHH0000Z.satbias.nc4 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/mhs_metop-c.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/mhs_metop-c.yaml index 5722fa59..2b0f9d43 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/mhs_metop-c.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/mhs_metop-c.yaml @@ -45,6 +45,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/mhs_metop-c.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/mhs_metop-c.$BYYYYYMMDDTHH0000Z.satbias.nc4 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/mhs_n19.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/mhs_n19.yaml index 54fdf2c3..b187fd7b 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/mhs_n19.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/mhs_n19.yaml @@ -45,6 +45,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs bias: input file: ./obs/mhs_n19.$PYYYYYMMDDTHH0000Z.satbias.nc4 output file: ./vbc/mhs_n19.$BYYYYYMMDDTHH0000Z.satbias.nc4 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/pibal.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/pibal.yaml index 71cd1786..f9558ab7 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/pibal.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/pibal.yaml @@ -52,7 +52,7 @@ hofx scaling field group: DerivedVariables obs pre filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: windEastward where: @@ -61,7 +61,7 @@ action: name: reject - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: windNorthward where: @@ -71,19 +71,19 @@ name: reject obs prior filters: - filter: Variable Transforms - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 Transform: AdjustedHeightCoordinate SkipWhenNoObs: false - filter: Variable Transforms - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 Transform: SurfaceWindScalingHeight SkipWhenNoObs: false - filter: Variable Transforms - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 Transform: SurfaceWindScalingPressure SkipWhenNoObs: false - filter: Variable Transforms - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 Transform: SurfaceWindScalingCombined SkipWhenNoObs: false obs post filters: diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/satwind.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/satwind.yaml index 0be2ceee..8041e338 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/satwind.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/satwind.yaml @@ -26,7 +26,7 @@ hofx scaling field group: DerivedVariables obs prior filters: - filter: Variable Transforms - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 Transform: SurfaceWindScalingPressure SkipWhenNoObs: false obs post filters: diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/scatwind.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/scatwind.yaml index 45f9af94..6fbd9cd7 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/scatwind.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/scatwind.yaml @@ -34,11 +34,11 @@ hofx scaling field group: DerivedVariables obs prior filters: - filter: Variable Transforms - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 Transform: AdjustedHeightCoordinate SkipWhenNoObs: false - filter: Variable Transforms - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 Transform: SurfaceWindScalingHeight SkipWhenNoObs: false obs post filters: diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/sfc.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/sfc.yaml index ece5c78a..8579cbe8 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/sfc.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/sfc.yaml @@ -29,8 +29,8 @@ observation vertical coordinate group: DerivedVariables observation vertical coordinate: adjustedHeight interpolation method: linear - hofx scaling field: SurfaceWindScalingHeight - hofx scaling field group: DerivedVariables +# hofx scaling field: SurfaceWindScalingHeight +# hofx scaling field group: DerivedVariables - name: VertInterp observation alias file: $FVHOME/run/jedi/Config/obsop_name_map.yaml variables: @@ -58,8 +58,8 @@ observation vertical coordinate group: DerivedVariables observation vertical coordinate: adjustedHeight interpolation method: linear - hofx scaling field: SurfaceWindScalingHeight - hofx scaling field group: DerivedVariables +# hofx scaling field: SurfaceWindScalingHeight +# hofx scaling field group: DerivedVariables - name: VertInterp observation alias file: $FVHOME/run/jedi/Config/obsop_name_map.yaml variables: @@ -72,13 +72,13 @@ - name: specificHumidity obs prior filters: - filter: Variable Transforms - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 Transform: AdjustedHeightCoordinate SkipWhenNoObs: false - - filter: Variable Transforms - apply at iterations: 0, 1, 2 - Transform: SurfaceWindScalingHeight - SkipWhenNoObs: false +# - filter: Variable Transforms +# apply at iterations: 0, 1, 2 +# Transform: SurfaceWindScalingHeight +# SkipWhenNoObs: false obs post filters: - filter: Bounds Check apply at iterations: 0, 1, 2 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/sfcship.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/sfcship.yaml index d1bf381a..ee20d94f 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/sfcship.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/sfcship.yaml @@ -29,8 +29,8 @@ observation vertical coordinate group: DerivedVariables observation vertical coordinate: adjustedHeight interpolation method: linear - hofx scaling field: SurfaceWindScalingHeight - hofx scaling field group: DerivedVariables +# hofx scaling field: SurfaceWindScalingHeight +# hofx scaling field group: DerivedVariables - name: VertInterp observation alias file: $FVHOME/run/jedi/Config/obsop_name_map.yaml variables: @@ -57,8 +57,8 @@ observation vertical coordinate group: DerivedVariables observation vertical coordinate: adjustedHeight interpolation method: linear - hofx scaling field: SurfaceWindScalingHeight - hofx scaling field group: DerivedVariables +# hofx scaling field: SurfaceWindScalingHeight +# hofx scaling field group: DerivedVariables - name: VertInterp observation alias file: $FVHOME/run/jedi/Config/obsop_name_map.yaml variables: @@ -70,13 +70,13 @@ - name: specificHumidity obs prior filters: - filter: Variable Transforms - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 Transform: AdjustedHeightCoordinate SkipWhenNoObs: false - - filter: Variable Transforms - apply at iterations: 0, 1, 2 - Transform: SurfaceWindScalingHeight - SkipWhenNoObs: false +# - filter: Variable Transforms +# apply at iterations: 0, 1, 2 +# Transform: SurfaceWindScalingHeight +# SkipWhenNoObs: false obs post filters: - filter: Perform Action apply at iterations: 0, 1, 2 diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/sondes.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/sondes.yaml index 89eb7333..36abe885 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/sondes.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/sondes.yaml @@ -64,7 +64,7 @@ - name: stationPressure obs prior filters: - filter: Variable Transforms - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 Transform: SurfaceWindScalingPressure SkipWhenNoObs: false obs post filters: diff --git a/src/Applications/GEOSdas_App/jedi/etc/obs/ssmis_f17.yaml b/src/Applications/GEOSdas_App/jedi/etc/obs/ssmis_f17.yaml index 7e0f1fbf..a2a9fe1c 100644 --- a/src/Applications/GEOSdas_App/jedi/etc/obs/ssmis_f17.yaml +++ b/src/Applications/GEOSdas_App/jedi/etc/obs/ssmis_f17.yaml @@ -29,6 +29,9 @@ - Land_Temperature - Ice_Temperature - Snow_Temperature + zeroO3JacRange: + - 996.0 + - 1170.0 obs options: Sensor_ID: ssmis_f17 EndianType: little_endian @@ -73,7 +76,7 @@ output file: ./vbc/ssmis_f17.$BYYYYYMMDDTHH0000Z.satbias_cov.nc4 obs prior filters: - filter: Perform Action - apply at iterations: 0, 1, 2 +# apply at iterations: 0, 1, 2 filter variables: - name: brightnessTemperature channels: 1-24 diff --git a/src/Applications/GEOSdas_App/jedi/jedi_driver.csh b/src/Applications/GEOSdas_App/jedi/jedi_driver.csh index 70fefaab..75d0e5f0 100755 --- a/src/Applications/GEOSdas_App/jedi/jedi_driver.csh +++ b/src/Applications/GEOSdas_App/jedi/jedi_driver.csh @@ -14,7 +14,7 @@ else setenv JEDIDIR $FVHOME/run/jedi endif -if ( $#argv < 4 ) then +if ( $#argv < 5 ) then echo " " echo " \\begin{verbatim} " echo " " @@ -24,17 +24,18 @@ if ( $#argv < 4 ) then echo " " echo " SYNOPSIS " echo " " - echo " $MYNAME nymdb nhmsb nymda nhmsa " + echo " $MYNAME nymdb nhmsb nymda nhmsa fcoff " echo " " echo " nymdb - starting date of cycle" echo " nhmsb - starting time of cycle" echo " nymda - analysis date" echo " nhmsa - analysis time" + echo " fcoff - hours offset from (nymdb,nhmsb)" echo " " echo " AUTHOR" echo " Ricardo Todling (Ricardo.Todling@nasa.gov), NASA/GMAO " echo " Initial version: 18Oct2020 by: R. Todling" - echo " Last modified: 14Jun2026 by: R. Todling" + echo " Last modified: 28Jul2026 by: R. Todling" echo " \\end{verbatim} " echo " \\clearpage " echo " ${MYNAME}: invalid arg list, aborting" @@ -45,6 +46,7 @@ set nymdb = $1 set nhmsb = $2 set nymda = $3 set nhmsa = $4 +set fcoff = $5 set yyyya = `echo nymda | cut -c1-4` set mma = `echo nymda | cut -c5-6` set dda = `echo nymda | cut -c7-8` @@ -73,6 +75,7 @@ if ( !($?JEDI_POST) ) setenv JEDI_POST 0 if ( !($?JEDI_IAU_OVERWRITE) ) setenv JEDI_IAU_OVERWRITE 0 if ( !($?JEDI_RUN_ADANA_TEST) ) setenv JEDI_RUN_ADANA_TEST 0 if ( !($?JEDI_RUN_ADANA) ) setenv JEDI_RUN_ADANA 0 +if ( !($?JEDI_RUN_ANASA) ) setenv JEDI_RUN_ANASA 0 if ( !($?JEDI_RUN_EAANA) ) setenv JEDI_RUN_EAANA 0 if ( !($?JEDI_OBS_OPT) ) setenv JEDI_OBS_OPT 0 if ( !($?JEDI_SWELLUSE) ) setenv JEDI_SWELLUSE 1 @@ -93,18 +96,19 @@ if ( -e $FVWORK/.DONE_${MYNAME}.$yyyymmddhh ) then endif setenv JEDIWORK $FVWORK/jedi.$nymda.$nhmsa -if ( ! -d $JEDIWORK ) mkdir -p $JEDIWORK/jedi.$nymda.$nhmsa +if ( ! -d $JEDIWORK ) mkdir -p $JEDIWORK # Setup SWELL & IODA Files # ======================== -if ( $JEDI_SWELLUSE ) then +if ( (! $JEDI_RUN_ANASA) && (! $JEDI_RUN_ADANA) ) then + if ( $JEDI_SWELLUSE ) then jedi_swellset.csh $nymda $nhmsa $JEDIDIR $JEDIWORK if ($status) then echo "${MYNAME}: failed, aborting ..." exit (1) endif -else + else # If here, IODA files must be available # ------------------------------------- @@ -129,13 +133,14 @@ else cd - endif + endif endif # Prepare env for analysis # ------------------------ if ( $JEDI_SET ) then zeit_ci.x jedi_set - jedi_set.csh $nymdb $nhmsb |& tee -a $FVWORK/$EXPID.jedi_set.log.${nymdb}_${hhb}z.txt + jedi_set.csh $nymdb $nhmsb $fcoff |& tee -a $FVWORK/$EXPID.jedi_set.log.${nymdb}_${hhb}z.txt if ( $status ) then echo " ${MYNAME}: jedi_set.csh signal failure, aborting ..." exit (1) @@ -146,7 +151,7 @@ endif # Run JEDI analysis if ( $JEDI_RUN ) then zeit_ci.x jedi_run - jedi_run.csh $nymdb $nhmsb |& tee -a $FVWORK/$EXPID.jedi_run.log.${nymdb}_${hhb}z.txt + jedi_run.csh $nymdb $nhmsb $fcoff |& tee -a $FVWORK/$EXPID.jedi_run.log.${nymdb}_${hhb}z.txt if ( $status ) then echo " ${MYNAME}: jedi_run.csh signal failure, aborting ..." exit (1) @@ -163,6 +168,14 @@ if ( $JEDI_RUN ) then endif endif +# For now, all done if running verification against obs +# ----------------------------------------------------- +if ( $fcoff ) then + touch $FVWORK/.DONE_${MYNAME}.$yyyymmddhh + echo " ${MYNAME}: Complete " + exit(0) +endif + # Wrap up if ( $JEDI_POST ) then if ( ! $JEDI_RUN_ADANA ) then diff --git a/src/Applications/GEOSdas_App/jedi/jedi_mkiau.csh b/src/Applications/GEOSdas_App/jedi/jedi_mkiau.csh index 002832d4..08c3b8e1 100755 --- a/src/Applications/GEOSdas_App/jedi/jedi_mkiau.csh +++ b/src/Applications/GEOSdas_App/jedi/jedi_mkiau.csh @@ -18,6 +18,7 @@ if ( !($?FVROOT) ) setenv FAILED 1 if ( !($?FVHOME) ) setenv FAILED 1 if ( !($?FVWORK) ) setenv FAILED 1 if ( !($?JEDI_MKIAU_MPIRUN) ) setenv FAILED 1 +if ( !($?JEDI_MKIAU_CUBED) ) setenv FAILED 1 if ( !($?JEDI_VAROFFSET) ) setenv FAILED 1 setenv JEDI_CUBED_ANA 0 # this is old and not supported at this point (Dec 2022) @@ -97,7 +98,16 @@ cd - # gather list of analysis files cd $JEDIWORK/ana -set analst = `ls $EXPID.jedi_ana.eta.*` +if ( $JEDI_MKIAU_CUBED ) then + set anatyp = "ana.ceta" + set bkgtyp = "bkg_clcv_rst" + set thisrc = mkiau_cubed.rc.tenv +else + set anatyp = "ana.eta" + set bkgtyp = "bkg.eta" + set thisrc = mkiau.rc.tenv +endif +set analst = `ls $EXPID.jedi_${anatyp}.*` cd $JEDIWORK @@ -108,7 +118,7 @@ if ( ! -e IAU_EGRESS ) then set hhmm = `echo $ttag | cut -c10-13` set nhms = ${hhmm}00 set anafn = ana/$anafn - set bkgfn = bkg/$EXPID.bkg.eta.${nymd}_${hhmm}z.nc4 + set bkgfn = bkg/$EXPID.${bkgtyp}.${nymd}_${hhmm}z.nc4 set iaufn = iau/$EXPID.agcm_import_rst.${nymd}_${hhmm}z.nc4 echo " Input Analysis file: $anafn" echo " Input Background file: $bkgfn" @@ -119,7 +129,7 @@ if ( ! -e IAU_EGRESS ) then setenv ANAFNAME $anafn setenv BKGFNAME $bkgfn setenv AGCMIMPRST $iaufn - vED -env $JEDIETC/mkiau.rc.tenv -o mkiau.rc + vED -env $JEDIETC/$thisrc -o mkiau.rc set nx = `echorc.x -rc mkiau.rc "NX"` set ny = `echorc.x -rc mkiau.rc "NY"` diff --git a/src/Applications/GEOSdas_App/jedi/jedi_run.csh b/src/Applications/GEOSdas_App/jedi/jedi_run.csh index ca213e80..f1d10af1 100755 --- a/src/Applications/GEOSdas_App/jedi/jedi_run.csh +++ b/src/Applications/GEOSdas_App/jedi/jedi_run.csh @@ -8,7 +8,7 @@ endif setenv MYNAME jedi_run.csh -if ( $#argv < 2 ) then +if ( $#argv < 3 ) then echo " " echo " \\begin{verbatim} " echo " " @@ -23,11 +23,12 @@ if ( $#argv < 2 ) then echo " where " echo " nymd - analysis synoptic date" echo " nhms - analysis synoptic time" + echo " fcoff - fcoff - hours offset from (nymdb,nhmsb)" echo " " echo " AUTHOR" echo " Ricardo Todling (Ricardo.Todling@nasa.gov), NASA/GMAO " echo " Initial version: 18Oct2020 by: R. Todling" - echo " Last modified: 30Apr2026 by: R. Todling" + echo " Last modified: 28Jul2026 by: R. Todling" echo " \\end{verbatim} " echo " \\clearpage " exit(1) @@ -66,6 +67,7 @@ if ( !($?BATCH_SUBCMD) ) setenv BATCH_SUBCMD sbatch set nymdb = $1 # initial date of var window set nhmsb = $2 # initial time of var window +set fcoff = $3 # set yyyyb = `echo $nymdb | cut -c1-4` set mmb = `echo $nymdb | cut -c5-6` set ddb = `echo $nymdb | cut -c7-8` @@ -159,6 +161,9 @@ if ( ! -e $FVWORK/.DONE_jedi_run_ana.csh.$yyyymmddhh) then if ( $JEDI_RUN_EAANA ) then set this = geosens endif + if ( $fcoff ) then + set this = geoshofx + endif if ( -e Config/$this.${nymda}_${hha}z.yaml ) then setenv MYCONF Config/$this.${nymda}_${hha}z.yaml else @@ -189,16 +194,37 @@ if ( ! -e $FVWORK/.DONE_jedi_run_ana.csh.$yyyymmddhh) then sbatch -W jedi_run_var.j sleep 2 else - $JEDI_FV3VAR_MPIRUN $JEDIBUILD/bin/fv3jedi_var.x $MYCONF |& tee -a $FVWORK/$JEDIVARLOG - if ( $status ) then - echo " ${MYNAME}: failed in VAR, aborting ..." - exit (1) + if ( $fcoff ) then + $JEDI_FV3HOX_MPIRUN $JEDIBUILD/bin/fv3jedi_hofx_nomodel.x $MYCONF |& tee -a $FVWORK/$JEDIVARLOG +# $JEDI_FV3HOX_MPIRUN /discover/nobackup/projects/gmao/advda/rtodling/JEDI1/2026/24Jun/build-intel-release/bin/fv3jedi_hofx_nomodel.x $MYCONF |& tee -a $FVWORK/$JEDIVARLOG + if ( $status ) then + echo " ${MYNAME}: failed in VAR, aborting ..." + exit (1) + endif + else + $JEDI_FV3VAR_MPIRUN $JEDIBUILD/bin/fv3jedi_var.x $MYCONF |& tee -a $FVWORK/$JEDIVARLOG + if ( $status ) then + echo " ${MYNAME}: failed in VAR, aborting ..." + exit (1) + endif endif endif - /bin/mv *inc*nc4 ./inc # somehow datapath setting in yaml is not effective at inc part + set lstinc = `ls *inc*nc4` + if ( ! $status ) /bin/mv *inc*nc4 ./inc # somehow datapath setting in yaml is not effective at inc part endif zeit_co.x jedi_run + if ( $fcoff ) then + # archive hofx + # ------------ + cd $JEDIWRK/hofx + tar cvf $FVWORK/$EXPID.jedi_hofx.${nymdb}_${hhb}z.tar *nc4 + cd - + touch $FVWORK/.DONE_${MYNAME}.$yyyymmddhh + echo " ${MYNAME}: Complete " + exit(0) + endif + # Converged in these many iterations # ---------------------------------- set convniter = `grep JoJc $FVWORK/$JEDIVARLOG | wc` @@ -312,14 +338,14 @@ endif # UPD_INIT_RST # archive hofx # ------------ -cd $JEDIWORK/hofx +cd $JEDIWRK/hofx tar cvf $FVWORK/$EXPID.jedi_hofx.${nymdb}_${hhb}z.tar *nc4 cd - # archive varBC # ------------- touch $JEDIETC/VBC.BOOTSTRAP.DONE -cd $JEDIWORK/vbc +cd $JEDIWRK/vbc tar cvf $FVWORK/$EXPID.jedi_vbc.${nymdb}_${hhb}z.tar *satbias*nc4 *aircraft*csv cd - diff --git a/src/Applications/GEOSdas_App/jedi/jedi_set.csh b/src/Applications/GEOSdas_App/jedi/jedi_set.csh index e814dd03..5a4ed910 100755 --- a/src/Applications/GEOSdas_App/jedi/jedi_set.csh +++ b/src/Applications/GEOSdas_App/jedi/jedi_set.csh @@ -10,7 +10,7 @@ setenv MYNAME jedi_set.csh # Set up for JEDI analysis -if ( $#argv < 2 ) then +if ( $#argv < 3 ) then echo " " echo " \\begin{verbatim} " echo " " @@ -20,12 +20,16 @@ if ( $#argv < 2 ) then echo " " echo " SYNOPSIS " echo " " - echo " $MYNAME nymd nhms " + echo " $MYNAME nymdb nhmsb fcoff" + echo " " + echo " nymdb - starting date of cycle" + echo " nhmsb - starting time of cycle" + echo " fcoff - hours offset from (nymdb,nhmsb)" echo " " echo " AUTHOR" echo " Ricardo Todling (Ricardo.Todling@nasa.gov), NASA/GMAO " echo " Initial version: 18Oct2020 by: R. Todling" - echo " Last modified: 14Jun2026 by: R. Todling" + echo " Last modified: 28Jul2026 by: R. Todling" echo " \\end{verbatim} " echo " \\clearpage " exit(1) @@ -51,6 +55,7 @@ endif # Defaults if ( !($?JEDI_ANAFREQ)) setenv JEDI_ANAFREQ 21600 if ( !($?JEDI_RUN_ADANA) ) setenv JEDI_RUN_ADANA 0 +if ( !($?JEDI_RUN_ANASA) ) setenv JEDI_RUN_ANASA 0 if ( !($?JEDI_RUN_EAANA) ) setenv JEDI_RUN_EAANA 0 if ( !($?JEDI_VAROFFSET)) setenv JEDI_VAROFFSET 10800 if ( !($?JEDI_VARWINDOW)) setenv JEDI_VARWINDOW 21600 @@ -59,6 +64,7 @@ if ( !($?MAPLFIX) ) setenv MAPLFIX 0 # Command line arguments set nymdb = $1 # initial date of var window set nhmsb = $2 # initial time of var window +set fcoff = $3 # hours offset from initial date/time of var window (fcst only) set yyyyb = `echo $nymdb | cut -c1-4` set mmb = `echo $nymdb | cut -c5-6` set ddb = `echo $nymdb | cut -c7-8` @@ -100,6 +106,16 @@ set mme = `echo $nymde | cut -c5-6` set dde = `echo $nymde | cut -c7-8` set hhe = `echo $nhmse | cut -c1-2` +@ fcoff_sec = 3600 * $fcoff +set ifcdate = `tick $nymdb $nhmsb -$fcoff_sec` + +set nymdf = $ifcdate[1] +set nhmsf = $ifcdate[2] +set yyyyf = `echo $nymdf | cut -c1-4` +set mmf = `echo $nymdf | cut -c5-6` +set ddf = `echo $nymdf | cut -c7-8` +set hhf = `echo $nhmsf | cut -c1-2` + setenv JEDI_ISO_DATE_BEG "${yyyyb}-${mmb}-${ddb}T${hhb}:00:00Z" setenv JEDI_ISO_DATE_ANA "${yyyya}-${mma}-${dda}T${hha}:00:00Z" setenv JEDI_ISO_DATE_END "${yyyye}-${mme}-${dde}T${hhe}:00:00Z" @@ -109,6 +125,12 @@ setenv AYYYYYMMDDHH ${nymda}${hha} setenv AYYYYYMMDDTHH0000Z ${nymda}T${hha}0000Z setenv BYYYYYMMDDTHH0000Z ${nymdb}T${hhb}0000Z setenv PYYYYYMMDDTHH0000Z ${nymdp}T${hhp}0000Z +setenv FYYYYMMDD_HH ${yyyyf}${mmf}${ddf}_${hhf} +setenv YYYYF ${yyyyf} +setenv MMF ${mmf} +setenv DDF ${ddf} +setenv HHF ${hhf} +setenv HHH ${fcoff} @ h = 1 set this_date = ( $nymdb $nhmsb ) @@ -154,15 +176,15 @@ cd - # Get positioned in JEDI work dir cd $JEDIWRK -foreach dir ( ana atmens bkg hofx iau obs osen inc vbc ) +foreach dir ( ana atmens bkg hofx iau obs osen inc vbc prog ) if ( ! -d $dir ) mkdir -p $dir end # If so, retrieve IODA files from existig ru # In adjoint case, IODA files are from same exp -if ( $JEDI_RUN_ADANA || $JEDI_OBS_OPT == 1 ) then - setenv NYMD $nymda # initial date of current cycle - setenv NHMS $nhmsa # initial time of current cycle +if ( $JEDI_RUN_ANASA || $JEDI_RUN_ADANA || $JEDI_OBS_OPT == 1 ) then + setenv NYMDB $nymdb # initial date of current cycle + setenv NHMSB $nhmsb # initial time of current cycle setenv ACQWORK $FVWORK vED -env $FVHOME/run/jedi/jedi_acquire_ioda.j -o jedi_acquire_ioda.j if ( $BATCH_SUBCMD == "sbatch" ) then @@ -170,24 +192,24 @@ if ( $JEDI_RUN_ADANA || $JEDI_OBS_OPT == 1 ) then else qsub -W block=true -o jedi_ioda.log jedi_acquire_ioda.j endif - ls $FVWORK/*ioda*tar + ls $FVWORK/*hofx*tar if ( $status ) then echo " ${MYNAME}: Cannot find file" exit 1 endif - tar xvf $FVWORK/*ioda*.tar cd obs - /bin/ln -sf ../ioda.${nymda}_${hha}0000/*nc4 . + tar xvf $FVWORK/*hofx*.tar cd - echo " ${MYNAME}: retrieved IODA files successfully" -# Also link forecast sensitivity at this time -# ------------------------------------------- - if ( ! -d $JEDIWRK/inc ) mkdir -p $JEDIWRK/inc - if ( -e $FVWORK/jedi.fsens.eta.nc4 ) then - cd $JEDIWRK/inc - ln -sf $FVWORK/jedi.fsens.eta.nc4 . - cd - +# If so, link forecast sensitivity at this time +# --------------------------------------------- + if ( $JEDI_RUN_ADANA ) then + if ( -e $FVWORK/jedi.fsens.eta.nc4 ) then + cd $JEDIWRK/inc + ln -sf $FVWORK/jedi.fsens.eta.nc4 . + cd - + endif endif endif # adjoint analysis @@ -312,6 +334,9 @@ set this = $JEDIETC/geosvar.${nymda}_${hha}z.yaml if ( $JEDI_RUN_EAANA ) then set this = $JEDIETC/geosens.${nymda}_${hha}z.yaml endif +if ( $fcoff ) then + set this = $JEDIETC/geoshofx.${nymda}_${hha}z.yaml +endif if ( -e $this ) then echo " ${MYNAME}: using user-provided $this" else @@ -333,10 +358,17 @@ else endif cd - # Set flag for used observing system (based on GMAO db) - jedi_useflags.csh $nymda $nhmsa $JEDIETC/obs $JEDIWRK/Config/obs + if ( $fcoff ) then + set srcobs = "fcobs" + set xtra = "0hofx.yaml" + else + set srcobs = "obs" + set xtra = "0observations.yaml" + endif + jedi_useflags.csh $nymda $nhmsa $JEDIETC/$srcobs $JEDIWRK/Config/obs # Assemble var-yaml - set obstypes = ( "0observations.yaml" $obstypes ) + set obstypes = ( $xtra $obstypes ) assemble_obs_yaml.pl $JEDIWRK/Config/obs $obstypes Config/obs.${nymdb}T${nhmsb}Z.yaml if ( ! -e Config/obs.${nymdb}T${nhmsb}Z.yaml ) then echo " ${MYNAME}: failed to building obs.${nymdb}T${nhmsb}Z.yaml, aborting ..." @@ -348,16 +380,22 @@ else if ( $JEDI_RUN_EAANA ) then set this = geosens endif + if ( $fcoff ) then + set this = geoshofx + endif /bin/cp Config/$this.yaml geostmp.tmpl insert_file_atstr.pl Config/obs.${nymdb}T${nhmsb}Z.yaml geostmp.tmpl OBSYAML_END vED -env geostmp.tmpl -o Config/$this.${nymda}_${hha}z.yaml - /bin/cp Config/$this.${nymda}_${hha}z.yaml $JEDIETC/$this.${nymda}_${hha}z.yaml + if ( ! $fcoff ) then + /bin/cp Config/$this.${nymda}_${hha}z.yaml $JEDIETC/$this.${nymda}_${hha}z.yaml + endif endif # Acquire background ensemble (either for hybrid VAR or ensemble DA) setenv JEDI_GET_ENSBKG 0 -if ( $JEDI_HYBRID || $JEDI_RUN_EAANA ) then +if ( ! $fcoff ) then + if ( $JEDI_HYBRID || $JEDI_RUN_EAANA ) then if ( $JEDI_HYBRID == 1 ) then # lat-lon ensemble set ensdir = $FVHOME/atmens set bkgtyp = "bkg.eta" @@ -387,70 +425,90 @@ if ( $JEDI_HYBRID || $JEDI_RUN_EAANA ) then else # ensemble is NOT present in FVHOME (likely a replay run) setenv JEDI_GET_ENSBKG 1 endif -endif + endif +endif # fcoff # Acquire background fields (unless running ensemble DA) -if ( ! $JEDI_RUN_EAANA ) then +if ( (! $JEDI_RUN_EAANA) ) then if ( ! -e $JEDIWRK/.DONE_JEDI_GET_BKG_${nymdb}_${nhmsb} ) then cd bkg - setenv NYMD $nymdb # initial date of current cycle - setenv NHMS $nhmsb # initial time of current cycle - setenv NYMDP $nymdp # initial date of previous cycle - setenv NHMSP $nhmsp # initial time of previous cycle - setenv ACQWORK $JEDIWRK/bkg - vED -env $FVHOME/run/jedi/jedi_acquire_bkg.j -o jedi_acquire_bkg.j - if ( $BATCH_SUBCMD == "sbatch" ) then - sbatch -W -o jedi_acq.log jedi_acquire_bkg.j - else - qsub -W block=true -o jedi_acq.log jedi_acquire_bkg.j - endif - set lst = `ls $EXPID.bkgcrst.*.tar` - if ( $#lst == 1 ) then - tar xvf $lst - /bin/rm $EXPID.bkgcrst.*.tar - set lst = ( `ls *.bkg_clcv_rst*nc4` ) - set vexpid = `echo $lst[1] | cut -d. -f1` - if ( $vexpid != $EXPID ) then # care for when tarball from another exp - foreach fn ( `ls *.bkg_clcv_rst*nc4` ) - set sfx = `echo $fn | cut -d. -f2-` - /bin/mv $fn $EXPID.$sfx - end - endif - foreach fn ( `ls *.bkg_clcv_rst*nc4` ) - set ttag = `echo $fn | cut -d. -f3-` - set ymd = `echo $ttag | cut -c1-8` - set hm = `echo $ttag | cut -c10-13` - set sfx = ${ymd}T${hm}00Z.nc4 # cope swell reinvented notation - ln -sf $fn bkg.$sfx - end - cd $JEDIWRK - ln -sf $JEDIWRK/bkg/bkg.*.nc4 . - if ( -e $JEDIETC/convertinc_geos.yaml ) then - set lst = (`ls bkg.*.nc4`) - set cres = `getgfiodim.x $lst[1] | grep -v GFIO` - @ jcres = $cres[1] + 1 - setenv JEDI_BKG_HRES $jcres - vED -env $JEDIETC/convertinc_geos.yaml -o $JEDIWRK/Config/convertinc_geos.yaml - endif - cd - - # the following is a nedeed hack due to inconsistencies in MAPL -# if ( $MAPLFIX ) then -# mkdir Ori -# foreach fn ( `ls *.bkg_clcv_rst*nc4` ) -# /bin/mv $fn Ori/ -# $FVHOME/run/jedi/convert_xdimydim_2_latlon.py -i Ori/$fn -o $fn -# end -# endif + if ( $fcoff ) then + setenv NYMD $nymdf # forecast initial date + setenv NHMS $nhmsf # forecast initial time + setenv ACQWORK $JEDIWRK/bkg + vED -env $FVHOME/run/jedi/Config/jedi_prog.acq -o jedi_prog.acq + vED -env $FVHOME/run/jedi/jedi_acquire_prog.j -o jedi_acquire_prog.j + if ( $BATCH_SUBCMD == "sbatch" ) then + sbatch -W -o jedi_acq.log jedi_acquire_prog.j + else + qsub -W block=true -o jedi_acq.log jedi_acquire_prog.j + endif + set lst = `ls $EXPID.prog.ceta.*.nc4` + if ($status) then + echo " ${MYNAME}: failed to retrieve prog.ceta file, aborting ..." + exit(3) + endif + foreach fn ( $lst ) + set ttag = `echo $fn | cut -d. -f4 | cut -d+ -f2` + set ymd = `echo $ttag | cut -c1-8` + set hm = `echo $ttag | cut -c10-13` + set sfx = ${ymd}T${hm}00Z.nc4 # cope swell reinvented notation + ln -sf $fn bkg.$sfx + end + cd $JEDIWRK + ln -sf $JEDIWRK/bkg/bkg.*.nc4 . else - echo " ${MYNAME}: failed to retrieve bkg tar ball, aborting ..." - exit(3) - endif + setenv NYMD $nymdb # initial date of current cycle + setenv NHMS $nhmsb # initial time of current cycle + setenv NYMDP $nymdp # initial date of previous cycle + setenv NHMSP $nhmsp # initial time of previous cycle + setenv ACQWORK $JEDIWRK/bkg + vED -env $FVHOME/run/jedi/jedi_acquire_bkg.j -o jedi_acquire_bkg.j + if ( $BATCH_SUBCMD == "sbatch" ) then + sbatch -W -o jedi_acq.log jedi_acquire_bkg.j + else + qsub -W block=true -o jedi_acq.log jedi_acquire_bkg.j + endif + set lst = `ls $EXPID.bkgcrst.*.tar` + if ( $#lst == 1 ) then + tar xvf $lst + /bin/rm $EXPID.bkgcrst.*.tar + set lst = ( `ls *.bkg_clcv_rst*nc4` ) + set vexpid = `echo $lst[1] | cut -d. -f1` + if ( $vexpid != $EXPID ) then # care for when tarball from another exp + foreach fn ( `ls *.bkg_clcv_rst*nc4` ) + set sfx = `echo $fn | cut -d. -f2-` + /bin/mv $fn $EXPID.$sfx + end + endif + foreach fn ( `ls *.bkg_clcv_rst*nc4` ) + set ttag = `echo $fn | cut -d. -f3-` + set ymd = `echo $ttag | cut -c1-8` + set hm = `echo $ttag | cut -c10-13` + set sfx = ${ymd}T${hm}00Z.nc4 # cope swell reinvented notation + ln -sf $fn bkg.$sfx + end + cd $JEDIWRK + ln -sf $JEDIWRK/bkg/bkg.*.nc4 . + if ( -e $JEDIETC/convertinc_geos.yaml ) then + set lst = (`ls bkg.*.nc4`) + set cres = `getgfiodim.x $lst[1] | grep -v GFIO` + @ jcres = $cres[1] + 1 + setenv JEDI_BKG_HRES $jcres + vED -env $JEDIETC/convertinc_geos.yaml -o $JEDIWRK/Config/convertinc_geos.yaml + endif + cd - + else + echo " ${MYNAME}: failed to retrieve bkg tar ball, aborting ..." + exit(3) + endif + endif # fcoff touch $JEDIWRK/.DONE_JEDI_GET_BKG_${nymdb}_${nhmsb} endif endif # When applicable, retrieve ensemble background -if( $JEDI_GET_ENSBKG ) then +if( (! $fcoff) && $JEDI_GET_ENSBKG ) then if ( ! -e $JEDIWRK/.DONE_JEDI_GET_ENSBKG_${nymdb}_${nhmsb} ) then cd $JEDIWRK/atmens setenv NYMD $nymdb # initial date of current cycle @@ -500,7 +558,7 @@ endif # In case running 4D hybrid, create yamls needed for offline inc gen # ------------------------------------------------------------------ -if ( $JEDI_HYBRID ) then +if ( (! $fcoff) && $JEDI_HYBRID ) then cd $JEDIWRK if ( ! -e Config/diffstates_geos.yaml ) then echo " ${MYNAME}: missing Config/diffstates_geos.yaml file, aborting ... " diff --git a/src/Applications/GEOSdas_App/jedi/setup_aanajedi.pl b/src/Applications/GEOSdas_App/jedi/setup_aanajedi.pl index 63484c1a..c497ac92 100755 --- a/src/Applications/GEOSdas_App/jedi/setup_aanajedi.pl +++ b/src/Applications/GEOSdas_App/jedi/setup_aanajedi.pl @@ -2,9 +2,6 @@ # # setup_aanajedi - setup for an atmospheric JEDI analysis # -# 20Apr2015 Todling Initial code -# 01May2015 Todling Add 4d-capability -# #----------------------------------------------------------------------------------------------------- use Env; # make env vars readily available @@ -101,6 +98,11 @@ sub init { } } + $jedigid = "#"; + if ( $ENV{"GEOSJEDI_GID"} ) { + $jedigid = "#SBATCH --account=$GEOSJEDI_GID"; + } + $jediqos = "#"; if ( $ENV{"GEOSJEDI_QOS"} ) { $jediqos = "#SBATCH --qos=$GEOSJEDI_QOS"; @@ -138,7 +140,7 @@ sub init { if ( $opt_jediroot ) { $jediroot = $opt_jediroot; } else { - $jediroot = "/discover/nobackup/projects/gmao/advda/swell/JediBundles/fv3_soca_SLES15_01152026/build-intel-release"; + $jediroot = "/discover/nobackup/projects/gmao/advda/swell/JediBundles/fv3_soca_SLES15_08142026/build-intel-release"; } if ( $opt_archive ) { @@ -180,6 +182,13 @@ sub init { $nogsi = 1; } + $iau_overwrite = 1; + if ( $nogsi ) { + if ( $ENV{JEDI_IAU_OVERWRITE} ) { + $iau_overwrite = $ENV{JEDI_IAU_OVERWRITE}; + } + } + # Swell is wired for now $swell_install = "/gpfsm/dnb10/projects/p61/rtodling/JEDI1/2026/SWELL/May/opt"; @@ -381,6 +390,7 @@ sub init { @rc2conf = qw ( diag2ioda.yaml diffstates_geos.yaml mkiau.rc.tenv + mkiau_cubed.rc.tenv obsop_name_map.yaml ); @rc2jedi = qw ( JEDIanaConfig.csh @@ -388,12 +398,15 @@ sub init { jedi_acquire_bkg.j jedi_acquire_ebkg.j jedi_acquire_ioda.j + jedi_acquire_prog.j jedi_acquire_vbc.j jedi_diffstates.j jedi_run_var.j ut_jedi.j ); + @rc2sajedi = qw ( jedi_anasa.j ); + @rc2adjedi = qw ( JEDIadanaConfig.csh ); @rc2jediobs = qw ( 0observations.yaml @@ -441,6 +454,24 @@ sub init { ssmis_f17.yaml ); +# For now, hofx avoids using observations that are bias corrected + @rc2hofxobs = qw ( 0hofx.yaml + gps.yaml + mls55_aura.yaml + omi_aura.yaml + omieff_aura.yaml + ompslpnc_n21.yaml + ompslpnc_npp.yaml + ompsnm_npp.yaml + pibal.yaml + saber_timed.yaml + satwind.yaml + scatwind.yaml + sfcship.yaml + sfc.yaml + sondes.yaml + ); + } #...................................................................... @@ -455,6 +486,9 @@ sub install { if ( ! -d "$JEDIHOME/Config/obs" ) { $rc = system("/bin/mkdir -p $JEDIHOME/Config/obs" ); } +if ( ! -d "$JEDIHOME/Config/fcobs" ) { + $rc = system("/bin/mkdir -p $JEDIHOME/Config/fcobs" ); +} # transfer resource files to proper location # transfer resource files to proper location # TBD: at this time, no editing is done of the resource @@ -468,6 +502,11 @@ sub install { } } +foreach $fn ( @rc2sajedi ) { + cp("$FVROOT/etc/jedi/$fn","$fvhome/anasa/$fn"); +} +ed_anasa_job("$fvhome/anasa","jedi_anasa.j"); + # Copy scheme yaml to proper location foreach $fn ( @rc2conf ) { chomp($fn); @@ -477,6 +516,7 @@ sub install { if ( ! -e "$JEDIHOME/Config/geosvar.yaml" ) { die "File $JEDIHOME/Config/geosvar.yaml not found \n"; } +cp("$FVROOT/etc/jedi/geos_hofx.yaml","$JEDIHOME/Config/geoshofx.yaml"); # Copy obs yamls to experiment config location foreach $fn ( @rc2jediobs ) { @@ -484,6 +524,12 @@ sub install { cp("$FVROOT/etc/jedi/obs/$fn","$JEDIHOME/Config/obs/$fn"); } +# Copy a subset of obs yamls to use for fcst verification purposes +foreach $fn ( @rc2hofxobs ) { + chomp($fn); + cp("$FVROOT/etc/jedi/obs/$fn","$JEDIHOME/Config/fcobs/$fn"); +} + cp("$FVROOT/etc/jedi/geos_${scheme}.yaml","$JEDIHOME/Config/geosvar.yaml"); # take of resolution and layout @@ -493,20 +539,22 @@ sub install { ed_var_yaml ("$JEDIHOME/Config","diffstates_geos.yaml"); } ed_mkiau_rc ("$JEDIHOME/Config","mkiau.rc.tenv"); +ed_mkiau_rc ("$JEDIHOME/Config","mkiau_cubed.rc.tenv"); # take care of satbias acq ed_jedibkg_acq ("$JEDIHOME/Config"); ed_jediebkg_acq ("$JEDIHOME/Config",$ensrpy,$exprpy); ed_jediebkgx_acq ("$JEDIHOME/Config",$ensrpy,$exprpy); ed_jediioda_acq ("$JEDIHOME/Config"); +ed_jediprog_acq ("$JEDIHOME/Config"); ed_jedivbc_acq ("$JEDIHOME/Config"); ed_diffstate_job ("$JEDIHOME"); set_jedi_static("$jediroot","$jediinput",$cres,$i1res,$gsibecres); # edit main DAS existing settings when GSI is bypassed -ed_rst4fcst_acq("$FVHOME/fcst/","$scheme"); -ed_4dfcst03_acq("$FVHOME/fcst/","$scheme"); +ed_rst4fcst_acq("$fvhome/fcst/"); +ed_4dfcst03_acq("$fvhome/fcst/"); } #...................................................................... @@ -605,6 +653,37 @@ sub ed_mkiau_rc { cp($tmprc, $thisrc); unlink $tmprc; +} +#...................................................................... +sub ed_anasa_job{ + + my($mydir,$config) = @_; + + my($acq); + + $tmprc = "$mydir/tmp.rc"; + $thisrc = "$mydir/$config"; + + open(LUN,"$thisrc") || die "Fail to open $thisrc $!\n"; + open(LUN2,">$tmprc") || die "Fail to open tmp.rc $!\n"; + + # Change variables to the correct inputs + #--------------------------------------- + while( defined($rcd = ) ) { + chomp($rcd); + if($rcd =~ /\@GEOSJEDI_GID/) {$rcd=~ s/\@GEOSJEDI_GID/$jedigid/g; } + if($rcd =~ /\@GEOSJEDI_QOS/) {$rcd=~ s/\@GEOSJEDI_QOS/$jediqos/g; } + if($rcd =~ /\@GEOSJEDI_PARTITION/) {$rcd=~ s/\@GEOSJEDI_PARTITION/$jedipartition/g; } + if($rcd =~ /\@FVHOME/) {$rcd=~ s/\@FVHOME/$fvhome/g; } + if($rcd =~ /\@ARCHIVE/) {$rcd=~ s/\@ARCHIVE/$archive/g; } + print(LUN2 "$rcd\n"); + } + + close(LUN); + close(LUN2); + cp($tmprc, $thisrc); + unlink $tmprc; + } #...................................................................... sub ed_conf_rc { @@ -647,7 +726,7 @@ sub ed_conf_rc { if($rcd =~ /\@JEDI_HYBRID/) {$rcd=~ s/\@JEDI_HYBRID/$jedihyb/g; } if($rcd =~ /\@JEDI_INPUT/) {$rcd=~ s/\@JEDI_INPUT/$jediinput/g; } if($rcd =~ /\@JEDI_OBS_OPT/) {$rcd=~ s/\@JEDI_OBS_OPT/$jedi_obs_opt/g; } - if($rcd =~ /\@JEDI_IAU_OVERWRITE/) {$rcd=~ s/\@JEDI_IAU_OVERWRITE/$nogsi/g; } + if($rcd =~ /\@JEDI_IAU_OVERWRITE/) {$rcd=~ s/\@JEDI_IAU_OVERWRITE/$iau_overwrite/g; } if($rcd =~ /\@JEDI_ROOT/) {$rcd=~ s/\@JEDI_ROOT/$jediroot/g; } if($rcd =~ /\@JEDI_RUN_GETINC/) {$rcd=~ s/\@JEDI_RUN_GETINC/$jediinc/g; } if($rcd =~ /\@JEDI_STATIC_FILES/) {$rcd=~ s/\@JEDI_STATIC_FILES/$jedistatic/g; } @@ -740,7 +819,22 @@ sub ed_jediioda_acq { open(SCRIPT,">$acq") or die ">>> ERROR <<< cannot write $acq"; print SCRIPT <<"EOF"; -$archive/$expid/jedi/obs/Y%y4/M%m2/$expid.jedi_ioda.%y4%m2%d2_%h2z.tar +$archive/$expid/jedi/obs/Y%y4/M%m2/$expid.jedi_hofx.%y4%m2%d2_%h2z.tar +EOF +} +#...................................................................... +sub ed_jediprog_acq { + + my($mydir) = @_; + + my($acq); + + $acq = "$mydir/jedi_prog.acq"; + + open(SCRIPT,">$acq") or + die ">>> ERROR <<< cannot write $acq"; + print SCRIPT <<"EOF"; +$archive/$expid/prog/Y\$YYYYF/\M$MMF/D\$DDF/H\$HHF/j54rp2.prog.ceta.\${FYYYYMMDD_HH}z+\${AYYYYMMDD_HH}00z.nc4 EOF } #...................................................................... @@ -828,20 +922,19 @@ sub ed_var_yaml { #...................................................................... sub ed_rst4fcst_acq { - return 0 unless ( $nogsi ); + return 0 unless ( $iau_overwrite ); - my($mydir,$scheme) = @_; - - my($frun, $ft, $acq); + my($mydir) = @_; - $acq = "$fvhome/$mydir/rst4fcst.acq"; + my($acq); + $acq = "$mydir/rst4fcst.acq"; - open(SCRIPT,">$acq") or - die ">>> ERROR <<< cannot write $acq"; + open(SCRIPT,">$acq") || die ">>> ERROR <<< cannot write $acq"; print SCRIPT <<"EOF"; $archive/$expid/rs/Y%y4/M%m2/$expid.rst.%y4%m2%d2_%h2z.tar EOF if ( ! $hybridvar ) { + open(SCRIPT,">$acq") || die ">>> ERROR <<< cannot write $acq"; print SCRIPT <<"EOF"; $archive/$expid/jedi/rs/Y%y4/M%m2/$expid.jedi_agcmrst.%y4%m2%d2_%h2z.tar EOF @@ -850,17 +943,15 @@ sub ed_rst4fcst_acq { #...................................................................... sub ed_4dfcst03_acq { - return 0 unless ( $nogsi ); + return 0 unless ( $iau_overwrite ); - my($mydir,$scheme) = @_; + my($mydir) = @_; if ( ! $hybridvar ) { return 0 }; - my($frun, $ft, $acq); - - $acq = "$fvhome/$mydir/fcst03.acq"; - open(SCRIPT,">$acq") or - die ">>> ERROR <<< cannot write $acq"; + my($acq); + $acq = "$mydir/fcst03.acq"; + open(SCRIPT,">$acq") || die ">>> ERROR <<< cannot write $acq"; print SCRIPT <<"EOF"; $archive/$expid/jedi/rs/Y%y4/M%m2/$expid.jedi_agcmrst.%y4%m2%d2_%h2z.tar => $expid.agcmrst.%y4%m2%d2_%h2z.tar EOF @@ -927,7 +1018,7 @@ sub usage { -gcmres specify resolution of underying AGCM (default: hres in arg list) -fvhome location of experiment home directory (default: \$expdir/\$expid) -jedihome location of ensemble members (default: \$FVHOME/run/jedi) - -jediroot location of JEDI build directory (default: /discover/nobackup/projects/gmao/advda/swell/JediBundles/fv3_soca_SLES15/build-intel-release) + -jediroot location of JEDI build directory (default: /discover/nobackup/projects/gmao/advda/swell/JediBundles/fv3_soca_SLES15_07162026_gsibec1.4.3/build-intel-release) -jedistatic location of JEDI static files (default: /discover/nobackup/projects/gmao/advda/SwellStaticFiles) -iodadir location of pre-existing IODA files (default: /dev/null, ie, run ncdiag2ioda) -h prints this usage notice @@ -942,13 +1033,14 @@ sub usage { ARCHIVE can be define in env or arg list FVHOME can be define in env or arg list + GEOSJEDI_GID can be used to defined slurm account GEOSJEDI_QOS can be used to defined slurm qos GEOSJEDI_PARTITION can be used to defined slurm partition AUTHOR Ricardo Todling (Ricardo.Todling\@nasa.gov), NASA/GSFC/GMAO - Last modified: 31May2025 by: R. Todling + Last modified: 29Jul2026 by: R. Todling EOF diff --git a/src/Applications/GEOSdas_App/jedi/util/ioda_ndayomf.py b/src/Applications/GEOSdas_App/jedi/util/ioda_ndayomf.py new file mode 100755 index 00000000..0d6f906f --- /dev/null +++ b/src/Applications/GEOSdas_App/jedi/util/ioda_ndayomf.py @@ -0,0 +1,259 @@ +#!/usr/bin/env python +import xarray as xr +import numpy as np +import matplotlib.pyplot as plt +import tarfile +import tempfile + +def ioda_from_tarball(tarball, filename, group=None): + if tarball == "none": + return xr.open_dataset(filename, group=group) + + with tarfile.open(tarball, "r:*") as tar: + tarinfo = tar.getmember(filename) + + with tempfile.NamedTemporaryFile(suffix=".nc4") as tmp_file: + tmp_file.write(tar.extractfile(tarinfo).read()) + tmp_file.flush() + + return xr.open_dataset(tmp_file.name, group=group).load() + +#...................................................................... +def plot_one_by_one(groups,varname,satid,rms): + plt.figure(figsize=(7,5)) + plt.bar(groups, rms, color="steelblue") + plt.xlabel("Forecast Length") + plt.ylabel("RMS of OMF") + if satid == 0: + plt.title(varname + " RMS (EffectiveQC0 = 0)") + else: + plt.title(varname + " RMS (EffectiveQC0 = 0, Id="+str(satid)+")") + plt.grid(axis="y", alpha=0.3) + plt.tight_layout() + return +#...................................................................... +def heatmap_omfx(fnames,varnames,groups,matrix,what): + + fig, ax = plt.subplots(figsize=(14, 7)) + + if what == 1: + this_title = "RMS" + im = ax.imshow(matrix, + aspect='auto', + origin='upper', + cmap='viridis') + + else: + this_title = "RMS("+expid+") - RMS("+ctlid+")" + im = ax.imshow( + matrix, + cmap="RdBu_r", # blue=improvement, red=degradation + vmin=-0.1, vmax=0.1, # choose limits appropriate for your data + aspect="auto" + ) + + # Tick labels + ax.set_xticks(np.arange(len(varnames))) + ax.set_xticklabels(varnames, rotation=45, ha='right') + + ax.set_yticks(np.arange(len(groups))) + ax.set_yticklabels(groups) + + ax.set_xlabel("Variable") + ax.set_ylabel("Forecast Group") + ax.set_title(this_title+" by Variable and Forecast Group") + + # Color bar + cbar = plt.colorbar(im, ax=ax) + cbar.set_label(this_title) + + # Bottom x-axis: variable names + ax.set_xticks(np.arange(len(varnames))) + ax.set_xticklabels(varnames, rotation=45, ha="right") + + # Top x-axis: file/observation type names + ax_top = ax.secondary_xaxis('top') + ax_top.set_xticks(np.arange(len(fnames))) + ax_top.set_xticklabels(fnames,rotation=45, ha="right") + ax_top.set_xlabel("Observation Type") + + plt.tight_layout() + plt.show() + + return + +#...................................................................... +def heatmap_omfx_percent(fnames,varnames,groups,pct_matrix): + + fig, ax = plt.subplots(figsize=(14,7)) + + im = ax.imshow( + pct_matrix, + cmap="RdBu_r", # blue=improvement, red=degradation + vmin=-80, vmax=80, # choose limits appropriate for your data + aspect="auto" + ) + + ax.set_xticks(np.arange(len(varnames))) + ax.set_xticklabels(varnames, rotation=45, ha="right") + + ax.set_yticks(np.arange(len(groups))) + ax.set_yticklabels(groups) + + cbar = plt.colorbar(im, ax=ax) + cbar.set_label("% RMS change from ombg") + + # annotate + for i in range(len(groups)): + for j in range(len(varnames)): + if np.isfinite(pct_matrix[i, j]): +# ax.text(j, i, +# f"{pct_matrix[i,j]:+.1f}", +# ha="center", va="center", +# fontsize=9) + ax.text(j, i, + f"{pct_matrix[i,j]:+.1f}", + ha="center", + va="center", + color="lime", # bright green + fontsize=9, + fontweight="bold") + + + # Bottom x-axis: variable names + ax.set_xticks(np.arange(len(varnames))) + ax.set_xticklabels(varnames, rotation=45, ha="right") + + # Top x-axis: file/observation type names + ax_top = ax.secondary_xaxis('top') + ax_top.set_xticks(np.arange(len(fnames))) + ax_top.set_xticklabels(fnames, rotation=45, ha="right") + ax_top.set_xlabel("Observation Type") + + plt.tight_layout() + plt.show() + return + +#omieff_aura + +#...................................................................... +def fcst_ver_obs(tarname,fname,groups,varnames,satid): + + # rows = groups, columns = variables + rms_matrix = np.full((len(groups), len(varnames)), np.nan) + + for ii,these in enumerate(fnames): + + qc_ds = ioda_from_tarball(tarname, fnames[ii]+ncsfx, group="EffectiveQC0") + qc = qc_ds[varnames[ii]].values + + if satids[ii] != 0: + meta_ds = ioda_from_tarball(tarname, fnames[ii]+ncsfx, group="MetaData") + sid = meta_ds["satelliteIdentifier"].values + + if print_summary: + print((qc == 0).sum()) + if satids[ii] != 0: + print(np.unique(sid)) + print((sid == satids[ii]).sum()) + print(((qc == 0) & (sid == satids[ii])).sum()) + +# Combined selection + if satids[ii] == 0: + mask = (qc == 0) + else: + mask = (qc == 0) & (sid == satids[ii]) + + + rms = [] + + for jj,grp in enumerate(groups): + g = ioda_from_tarball(tarname, fnames[ii]+ncsfx, group=grp) + + x = g[varnames[ii]].values + + ob = ioda_from_tarball(tarname, fnames[ii]+ncsfx, group="ObsError") + o = ob[varnames[ii]].values + + # Keep only data within mask + x = x[mask] + x = x[np.isfinite(x)] + x = x[np.abs(x) < 1e30] + + o = o[mask] + o = o[np.isfinite(o)] + o = o[np.abs(o) < 1e30] + + if x.size == 0: + value = np.nan + if print_summary: + print(f"{grp}: no valid observations") + else: + value = np.sqrt(np.mean(x**2)) + if print_summary: + print(f"{grp}: N={x.size}, RMS={value:.3f}") + + if o.size == 0: + ovalue = np.nan + if print_summary: + print(f"{grp}: no valid observations") + else: + ovalue = np.sqrt(np.mean(o**2)) + if print_summary: + print(f"{grp}: N={o.size}, MEAN={value:.3f}") + + rms.append(value/ovalue) + rms_matrix[jj, ii] = value / ovalue + + # RMS for ombg (first row) + rms0 = rms_matrix[0, :] # shape = (nvar,) + + # Percent change relative to ombg + pct_matrix = 100.0 * (rms_matrix - rms0) / rms0 + + return rms_matrix,pct_matrix + +print_summary = False +ncsfx = ".20251229T150000Z.nc4" +trsfx = ".20251229_15z.tar" +expid = "j54rp1" +ctlid = "j54rp2" +tarname = "/discover/nobackup/projects/gmao/dadev/rtodling/archive/JEDI/544/"+expid+"/jedi//obs/Y2025/M12/"+expid+".jedi_hofx"+trsfx +tarctl = "null" +tarctl = "/discover/nobackup/projects/gmao/dadev/rtodling/archive/JEDI/544/"+ctlid+"/jedi/obs/Y2025/M12/"+ctlid+".jedi_hofx"+trsfx + +# Open file +fnames = ["sfc","sfcship","sondes", + "sondes","sondes", + "sondes","satwind","scatwind", + "sondes", + "mls55_aura","ompslpnc_n21","ompslpnc_npp", + "gps",] +varnames = ["stationPressure","stationPressure","stationPressure", + "airTemperature","virtualTemperature", + "windEastward","windEastward","windEastward", + "specificHumidity", + "ozoneProfile","ozoneProfile","ozoneProfile","bendingAngle"] +satids = [ 0, 180, 120, + 120, 120, + 220, 247, 0, + 120, + 0, 0, 0, + 269 ] + + +# Forecast groups +groups = ["ombg", "oman", "omf24", "omf48", "omf72", "omf96", "omf120"] +groups = ["ombg", "oman"] + +[rms_matrix, pct_matrix] = fcst_ver_obs(tarname,fnames,groups,varnames,satids) +[rms_matrix_ctl,pct_matrix_ctl] = fcst_ver_obs(tarctl,fnames,groups,varnames,satids) +rms_matrix = (rms_matrix - rms_matrix_ctl) + +# Plot +if tarctl == "null": + #plot_one_by_one{groups,varnames[ii],satids[ii],rms); + heatmap_omfx(fnames,varnames,groups,rms_matrix,1) + #heatmap_omfx_percent(fnames,varnames,groups,pct_matrix) +else: + heatmap_omfx(fnames,varnames,groups,rms_matrix,2) diff --git a/src/Applications/GEOSdas_App/jedi/util/ioda_prs.binned.py b/src/Applications/GEOSdas_App/jedi/util/ioda_prs.binned.py index 6eedde4a..26257853 100755 --- a/src/Applications/GEOSdas_App/jedi/util/ioda_prs.binned.py +++ b/src/Applications/GEOSdas_App/jedi/util/ioda_prs.binned.py @@ -1228,6 +1228,8 @@ def main(): help='Tar file name (default: none)') parser.add_argument('--satid', type=int, default='-999', help='Observation type (default: -999 (all))') + parser.add_argument('--nbins', type=int, default='40', + help='Number of bins (default: 40 (all))') parser.add_argument('--qc', type=int, default='0', help='Quality mark (default: 0 (used obs))') parser.add_argument('--xGSI', action='store_true', @@ -1243,7 +1245,7 @@ def main(): kt = 9999 levlim = [ 1000., 0.1 ] # [ bottom, top ] hPa - nbins = 40 + nbins = args.nbins radiance = False if args.var == 'auto': if args.obtype == "mls55_aura": @@ -1258,9 +1260,9 @@ def main(): varname = 'airTemperature' if args.obtype == "sondes_q": varname = 'specificHumidity' - if args.obtype == "sondes_u": + if args.obtype == "sondes_u" or args.obtype == "aircraft_u": varname = 'windEastward' - if args.obtype == "sondes_v": + if args.obtype == "sondes_v" or args.obtype == "aircraft_v": varname = 'windNorthward' if args.obtype == "saberT": varname = 'airTemperature' diff --git a/src/Applications/GEOSdas_App/jedi/util/jedi_cost.py b/src/Applications/GEOSdas_App/jedi/util/jedi_cost.py index de0b055c..63c0d822 100755 --- a/src/Applications/GEOSdas_App/jedi/util/jedi_cost.py +++ b/src/Applications/GEOSdas_App/jedi/util/jedi_cost.py @@ -2,6 +2,7 @@ import re import math import matplotlib.pyplot as plt +import matplotlib.colors as mcolors import matplotlib as mpl import numpy as np import argparse @@ -34,7 +35,7 @@ def get_n_colors(n, name='viridis'): # --- Example Usage --- # Get 5 colors from the 'plasma' colormap -#colors_plasma = get_n_colors(5, name='plasma') +#colors_plasma = get_n_colors(6, name='plasma') #print(f"Colors from 'plasma':\n{colors_plasma}\n") # Get 8 colors from the qualitative 'Paired' colormap @@ -225,7 +226,7 @@ def get_jedi_norm(filename,linear): with open(filename, "r") as file: for line in file: # Match lines like "Norm reduction ( 7) = 59.17712266523324" - match = re.search(r"Norm reduction\s*\(\s*(\d+)\s*\)\s*=\s*([+-]?\d+(?:\.\d+)?)", line) + match = re.search(r"Norm reduction\s*\(\s*(\d+)\s*\)\s*=\s*([+-]?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)",line) if match: # index = int(match.group(1)) value = float(match.group(2)) @@ -284,7 +285,7 @@ def comp_norm (jedi,gsi,linear): # plt.show() #------------------------------- -def show_cost(jb,jo): +def show_cost(jb,jo,mycolor,mylabel): # Regular expression to match the line and extract the number after '=' title = 'Quadratic Cost Function Over Iterations' @@ -292,14 +293,14 @@ def show_cost(jb,jo): # Plotting the results # plt.figure(figsize=(10, 5)) - plt.plot(jb, color='r', linestyle='-', label='Jb') - plt.plot(jo, color='b', linestyle='-', label='Jo') + plt.plot(jb, color=mycolor, linestyle='-', label=mylabel+'-Jb') + plt.plot(jo, color=mycolor, linestyle='-', label=mylabel+'-Jo') plt.title(title) plt.xlabel('Iteration') plt.ylabel(ylab) plt.grid(True) plt.tight_layout() - plt.legend() +# plt.legend() # plt.show() #------------------------------- @@ -365,50 +366,60 @@ def comp_cost(jjb,jjo,gjb,gjo): # if so, read GSI data if got_gsi and not got_jedi: + n = len(gsi_files) if args.color == 'null': - colors = get_n_colors(len(gsi_files), name='plasma') + colors = get_n_colors(len(gsi_files), name='hsv') else: colors = args.color + if args.label == "null": + labels = [chr(97 + i) for i in range(n)] + else: + labels = args.label i=0 for file in gsi_files: # if so, get cost and gradient from pcgsoi if args.pcgsoi: jb,jo,grad = pcgsoi_cost_and_grad(file,args.linear) if args.norm: - show_norm(grad,args.linear,colors[i],args.label[i]) + show_norm(grad,args.linear,colors[i],labels[i]) else: - show_cost(jb,jo) + show_cost(jb,jo,colors[i],labels[i]) else: if args.norm: ggnorm = get_gsi_norm(file,args.noiter0,args.linear) gnorm = True - show_norm(ggnorm,args.linear,colors[i],args.label[i]) + show_norm(ggnorm,args.linear,colors[i],labels[i]) else: gjb, gjo = get_gsi_cost(file,args.noiter0) gcost = True - show_cost(gjb,gjo) + show_cost(gjb,gjo,colors[i],labels[i]) i = i + 1 plt.legend() # if so, read JEDI data if got_jedi and not got_gsi: -# colors = get_n_colors(len(jedi_files), name='plasma') - colors = args.color + n = len(jedi_files) + if args.color == "null": + colors = get_n_colors(n, name='hsv') + else: + colors = args.color + if args.label == "null": + labels = [chr(97 + i) for i in range(n)] + else: + labels = args.label i=0 - print (colors) for file in jedi_files: if args.norm: jjnorm = get_jedi_norm(file,args.linear) jnorm = True if not got_gsi: - show_norm(jjnorm,args.linear,colors[i],args.label[i]) + show_norm(jjnorm,args.linear,colors[i],labels[i]) else: jjb, jjo = get_jedi_cost(file) jcost = True if not got_gsi: - show_cost(jjb,jjo) + show_cost(jjb,jjo,colors[i],labels[i]) i = i + 1 - print (i) plt.legend() # when two cases are passed diff --git a/src/Applications/GEOSdas_App/jedi/util/obsstats.csh b/src/Applications/GEOSdas_App/jedi/util/obsstats.csh index 04c215ba..1859d557 100755 --- a/src/Applications/GEOSdas_App/jedi/util/obsstats.csh +++ b/src/Applications/GEOSdas_App/jedi/util/obsstats.csh @@ -3,18 +3,24 @@ setenv FVROOT /home/dao_ops/GEOSadas-5_43_0/GEOSadas/install-SLES15 set path = ( . $FVROOT/bin $path ) -setenv DRYRUN # echo +setenv DRYRUN #echo setenv OUTFIGS $TMP/SwellExperiments/Figs -#setenv XTRA "--xGSI --common" +setenv XTRA "--xGSI --common" setenv XTRA -setenv TOTRAIN 0 +setenv TOTRAIN 1 set humKX = (`echorc.x -rc ostats.rc -ncol 2 specific_humidity`) set humNM = (`echorc.x -rc ostats.rc -ncol 1 specific_humidity`) +set sntKX = (`echorc.x -rc ostats.rc -ncol 2 sonde_temperature`) +set sntNM = (`echorc.x -rc ostats.rc -ncol 1 sonde_temperature`) + set acTKX = (`echorc.x -rc ostats.rc -ncol 2 aircraftT`) set acTNM = (`echorc.x -rc ostats.rc -ncol 1 aircraftT`) +set acWKX = (`echorc.x -rc ostats.rc -ncol 2 aircraftW`) +set acWNM = (`echorc.x -rc ostats.rc -ncol 1 aircraftW`) + set radKX = (`echorc.x -rc ostats.rc -ncol 2 radiance`) set radNM = (`echorc.x -rc ostats.rc -ncol 1 radiance`) @@ -28,27 +34,49 @@ set stwKX = (`echorc.x -rc ostats.rc -ncol 2 satwind`) set stwNM = (`echorc.x -rc ostats.rc -ncol 1 satwind`) #set humKX = () +#set sntKX = () #set acTKX = () +#set acWKX = () #set radKX = () #set gpsKX = () #set ozKX = () #set stwKX = () +set expidGSI = x0053RPY +set expidGSI = f5430_fp set expidGSI = x0054 set expidGSI = null -set expidGSI = x0053RPY + set expidJEDI = j4drpy +set expidJEDI = j4drp2 +set expidJEDI = fpjedi_test set expidJEDI = null -set expidJEDI = j4drp1 +set expidJEDI = j54rp1 +set expidJEDI = local -foreach nymd ( 20260115 ) -foreach nhms ( 000000 060000 120000 180000 ) +#foreach nymd ( 20231010 ) +#foreach nhms ( 000000 ) + foreach nymd ( 20260125 ) + foreach nhms ( 180000 ) + +#foreach nymd ( 20260128 ) +#foreach nhms ( 000000 060000 120000 180000 ) +#foreach nhms ( 120000 180000 ) -set ODSarch = $DAD/archive/544 set ODSarch = $DAD/archive/543 +set ODSarch = /gpfsm/dnb06/projects/p174/ +set ODSarch = $DAD/archive/544 + set IODAarch = $DAD/archive/JEDI/543 +set IODAarch = /gpfsm/dnb33/rtodling/SwellExperiments/swell-3dvar_atmos/run/20231010T000000Z/geos_atmosphere/hofx +set IODAarch = /discover/nobackup/projects/gmao/nca/archive/ +set IODAarch = $DAD/archive/JEDI/544 +set IODAarch = /gpfsm/dnb10/projects/p139/rtodling/JEDI/544/j54rp1/morgue/jedi.20260125.180000/hofx -if ( ! -d $OUTFIGS ) mkdir -p $OUTFIGS +if ( $expidJEDI == "local" ) then + setenv TOTRAIN 0 + mkdir -p $IODAarch/Figs +endif # GEOS-GSI experiment output if ( $expidGSI != "null" ) then @@ -69,6 +97,22 @@ if ( $expidGSI != "null" ) then end wait + @ ic = 1 + foreach kx ( $sntKX ) + set yyyy = `echo $nymd | cut -c1-4` + set mm = `echo $nymd | cut -c5-6` + set dd = `echo $nymd | cut -c7-8` + set hh = `echo $nhms | cut -c1-2` + set instr = $sntNM[$ic] + + $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --obtype sondes_tsen --satid $kx \ + --fig $OUTFIGS/$expidGSI.${instr}.${nymd}_${hh}z.png \ + $ODSarch/$expidGSI/obs/Y$yyyy/M$mm/D$dd/H$hh/$expidGSI.diag_conv.${nymd}_${hh}z.ods & + + @ ic++ + end + wait + @ ic = 1 foreach kx ( $humKX ) set yyyy = `echo $nymd | cut -c1-4` @@ -101,6 +145,22 @@ if ( $expidGSI != "null" ) then end wait + @ ic = 1 + foreach kx ( $acWKX ) + set yyyy = `echo $nymd | cut -c1-4` + set mm = `echo $nymd | cut -c5-6` + set dd = `echo $nymd | cut -c7-8` + set hh = `echo $nhms | cut -c1-2` + set instr = $acWNM[$ic] + + $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --obtype aircraft_u --satid $kx \ + --fig $OUTFIGS/$expidGSI.aircraftU_${instr}.${nymd}_${hh}z.png \ + $ODSarch/$expidGSI/obs/Y$yyyy/M$mm/D$dd/H$hh/$expidGSI.diag_conv.${nymd}_${hh}z.ods & + + @ ic++ + end + wait + @ ic = 1 foreach kx ( $radKX ) set yyyy = `echo $nymd | cut -c1-4` @@ -156,8 +216,8 @@ endif # GEOS-GSI # GEOS-JEDI experiment output -set radKX = (`echorc.x -rc ostats.rc -ncol 2 jedi_radiance`) -set radNM = (`echorc.x -rc ostats.rc -ncol 1 jedi_radiance`) +#set radKX = (`echorc.x -rc ostats.rc -ncol 2 jedi_radiance`) +#set radNM = (`echorc.x -rc ostats.rc -ncol 1 jedi_radiance`) if ( $expidJEDI != "null" ) then @@ -174,10 +234,40 @@ if ( $expidJEDI != "null" ) then set hh = `echo $nhms | cut -c1-2` set instr = $stwNM[$ic] - $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --obtype sondes_u --satid $kx \ - --fig $OUTFIGS/$expidJEDI.${instr}.${nymd}_${hh}z.png \ - --tarname $IODAarch/$expidJEDI/jedi/obs/Y$jyyyy/M$jmm/$expidJEDI.jedi_hofx.${jnymd}_${jhh}z.tar \ - satwind.${jnymd}T${jhh}0000Z.nc4 & + if ( $expidJEDI == "local" ) then + $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --obtype sondes_u --satid $kx $XTRA \ + --fig $IODAarch/Figs/${instr}.${nymd}_${hh}z.png \ + $IODAarch/*satwind.${jnymd}T${jhh}0000Z.nc4 & + else + $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --obtype sondes_u --satid $kx \ + --fig $OUTFIGS/$expidJEDI.${instr}.${nymd}_${hh}z.png \ + --tarname $IODAarch/$expidJEDI/jedi/obs/Y$jyyyy/M$jmm/$expidJEDI.jedi_hofx.${jnymd}_${jhh}z.tar \ + satwind.${jnymd}T${jhh}0000Z.nc4 & + endif + + @ ic++ + end + wait + + @ ic = 1 + foreach kx ( $sntKX ) + set jyyyy = `echo $jnymd | cut -c1-4` + set jmm = `echo $jnymd | cut -c5-6` + set jdd = `echo $jnymd | cut -c7-8` + set jhh = `echo $jnhms | cut -c1-2` + set hh = `echo $nhms | cut -c1-2` + set instr = $sntNM[$ic] + + if ( $expidJEDI == "local" ) then + $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --obtype sondes_tsen --satid $kx $XTRA \ + --fig $IODAarch/Figs/${instr}.${nymd}_${hh}z.png \ + $IODAarch/sondes.${jnymd}T${jhh}0000Z.nc4 & + else + $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --obtype sondes_tsen --satid $kx \ + --fig $OUTFIGS/$expidJEDI.${instr}.${nymd}_${hh}z.png \ + --tarname $IODAarch/$expidJEDI/jedi/obs/Y$jyyyy/M$jmm/$expidJEDI.jedi_hofx.${jnymd}_${jhh}z.tar \ + sondes.${jnymd}T${jhh}0000Z.nc4 & + endif @ ic++ end @@ -192,10 +282,16 @@ if ( $expidJEDI != "null" ) then set hh = `echo $nhms | cut -c1-2` set instr = $humNM[$ic] - $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --obtype sondes_q --satid $kx \ - --fig $OUTFIGS/$expidJEDI.${instr}.${nymd}_${hh}z.png \ - --tarname $IODAarch/$expidJEDI/jedi/obs/Y$jyyyy/M$jmm/$expidJEDI.jedi_hofx.${jnymd}_${jhh}z.tar \ - sondes.${jnymd}T${jhh}0000Z.nc4 & + if ( $expidJEDI == "local" ) then + $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --obtype sondes_q --satid $kx \ + --fig $IODAarch/Figs/${instr}.${nymd}_${hh}z.png \ + $IODAarch/sondes.${jnymd}T${jhh}0000Z.nc4 & + else + $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --obtype sondes_q --satid $kx \ + --fig $OUTFIGS/$expidJEDI.${instr}.${nymd}_${hh}z.png \ + --tarname $IODAarch/$expidJEDI/jedi/obs/Y$jyyyy/M$jmm/$expidJEDI.jedi_hofx.${jnymd}_${jhh}z.tar \ + sondes.${jnymd}T${jhh}0000Z.nc4 & + endif @ ic++ end @@ -210,10 +306,40 @@ if ( $expidJEDI != "null" ) then set hh = `echo $nhms | cut -c1-2` set instr = $acTNM[$ic] - $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --obtype temperature --satid $kx \ - --fig $OUTFIGS/$expidJEDI.aircraftT_${instr}.${nymd}_${hh}z.png \ - --tarname $IODAarch/$expidJEDI/jedi/obs/Y$jyyyy/M$jmm/$expidJEDI.jedi_hofx.${jnymd}_${jhh}z.tar \ - aircraft_temperature.${jnymd}T${jhh}0000Z.nc4 & + if ( $expidJEDI == "local" ) then + $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --obtype temperature --satid $kx \ + --fig $IODAarch/Figs/aircraftT_${instr}.${nymd}_${hh}z.png \ + $IODAarch/*aircraft_temperature.${jnymd}T${jhh}0000Z.nc4 & + else + $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --obtype temperature --satid $kx \ + --fig $OUTFIGS/$expidJEDI.aircraftT_${instr}.${nymd}_${hh}z.png \ + --tarname $IODAarch/$expidJEDI/jedi/obs/Y$jyyyy/M$jmm/$expidJEDI.jedi_hofx.${jnymd}_${jhh}z.tar \ + aircraft_temperature.${jnymd}T${jhh}0000Z.nc4 & + endif + + @ ic++ + end + wait + + @ ic = 1 + foreach kx ( $acWKX ) + set jyyyy = `echo $jnymd | cut -c1-4` + set jmm = `echo $jnymd | cut -c5-6` + set jdd = `echo $jnymd | cut -c7-8` + set jhh = `echo $jnhms | cut -c1-2` + set hh = `echo $nhms | cut -c1-2` + set instr = $acWNM[$ic] + + if ( $expidJEDI == "local" ) then + $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --obtype aircraft_u --satid $kx \ + --fig $IODAarch/Figs/aircraftU_${instr}.${nymd}_${hh}z.png \ + $IODAarch/*aircraft_wind.${jnymd}T${jhh}0000Z.nc4 & + else + $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --obtype aircraft_u --satid $kx \ + --fig $OUTFIGS/$expidJEDI.aircraftU_${instr}.${nymd}_${hh}z.png \ + --tarname $IODAarch/$expidJEDI/jedi/obs/Y$jyyyy/M$jmm/$expidJEDI.jedi_hofx.${jnymd}_${jhh}z.tar \ + aircraft_wind.${jnymd}T${jhh}0000Z.nc4 & + endif @ ic++ end @@ -228,10 +354,16 @@ if ( $expidJEDI != "null" ) then set hh = `echo $nhms | cut -c1-2` set instr = $radNM[$ic] - $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --obtype radiance --satid $kx $XTRA \ - --fig $OUTFIGS/$expidJEDI.${instr}.${nymd}_${hh}z.png \ - --tarname $IODAarch/$expidJEDI/jedi/obs/Y$jyyyy/M$jmm/$expidJEDI.jedi_hofx.${jnymd}_${jhh}z.tar \ - ${instr}.${jnymd}T${jhh}0000Z.nc4 & + if ( $expidJEDI == "local" ) then + $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --obtype radiance --satid $kx $XTRA \ + --fig $IODAarch/Figs/${instr}.${nymd}_${hh}z.png \ + $IODAarch/*${instr}.${jnymd}T${jhh}0000Z.nc4 & + else + $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --obtype radiance --satid $kx $XTRA \ + --fig $OUTFIGS/$expidJEDI.${instr}.${nymd}_${hh}z.png \ + --tarname $IODAarch/$expidJEDI/jedi/obs/Y$jyyyy/M$jmm/$expidJEDI.jedi_hofx.${jnymd}_${jhh}z.tar \ + ${instr}.${jnymd}T${jhh}0000Z.nc4 & + endif @ ic++ end @@ -246,10 +378,16 @@ if ( $expidJEDI != "null" ) then set hh = `echo $nhms | cut -c1-2` set instr = $ozNM[$ic] - $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --var ozoneProfile \ - --fig $OUTFIGS/$expidJEDI.${instr}.${nymd}_${hh}z.png \ - --tarname $IODAarch/$expidJEDI/jedi/obs/Y$jyyyy/M$jmm/$expidJEDI.jedi_hofx.${jnymd}_${jhh}z.tar \ - ${instr}.${jnymd}T${jhh}0000Z.nc4 & + if ( $expidJEDI == "local" ) then + $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --var ozoneProfile \ + --fig $IODAarch/Figs/${instr}.${nymd}_${hh}z.png \ + $IODAarch/*${instr}.${jnymd}T${jhh}0000Z.nc4 & + else + $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --var ozoneProfile \ + --fig $OUTFIGS/$expidJEDI.${instr}.${nymd}_${hh}z.png \ + --tarname $IODAarch/$expidJEDI/jedi/obs/Y$jyyyy/M$jmm/$expidJEDI.jedi_hofx.${jnymd}_${jhh}z.tar \ + ${instr}.${jnymd}T${jhh}0000Z.nc4 & + endif @ ic++ end @@ -264,11 +402,18 @@ if ( $expidJEDI != "null" ) then set hh = `echo $nhms | cut -c1-2` set instr = $gpsNM[$ic] - $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --var bendingAngle --satid $kx \ - --scale obs \ - --fig $OUTFIGS/$expidJEDI.${instr}.${nymd}_${hh}z.png \ - --tarname $IODAarch/$expidJEDI/jedi/obs/Y$jyyyy/M$jmm/$expidJEDI.jedi_hofx.${jnymd}_${jhh}z.tar \ - gps.${jnymd}T${jhh}0000Z.nc4 & + if ( $expidJEDI == "local" ) then + $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --var bendingAngle --satid $kx \ + --scale obs \ + --fig $IODAarch/Figs/${instr}.${nymd}_${hh}z.png \ + $IODAarch/*gps.${jnymd}T${jhh}0000Z.nc4 & + else + $DRYRUN ~/src/python/JEDI/OBS/ioda_prs.binned.py --var bendingAngle --satid $kx \ + --scale obs \ + --fig $OUTFIGS/$expidJEDI.${instr}.${nymd}_${hh}z.png \ + --tarname $IODAarch/$expidJEDI/jedi/obs/Y$jyyyy/M$jmm/$expidJEDI.jedi_hofx.${jnymd}_${jhh}z.tar \ + gps.${jnymd}T${jhh}0000Z.nc4 & + endif @ ic++ end diff --git a/src/Applications/GEOSdas_App/jedi/util/ostats.rc b/src/Applications/GEOSdas_App/jedi/util/ostats.rc index 3fc8a116..daa6f340 100644 --- a/src/Applications/GEOSdas_App/jedi/util/ostats.rc +++ b/src/Applications/GEOSdas_App/jedi/util/ostats.rc @@ -1,5 +1,7 @@ radiance:: +#abi_g16 516 + abi_g18 518 amsua_metop-b 326 amsua_metop-c 327 mhs_metop-b 826 @@ -9,17 +11,21 @@ radiance:: iasi_metop-c 877 atms_npp 900 atms_n20 920 - atms_n21 921 + atms_n21 920 ssmis_f17 717 avhrr_metop-b 626 avhrr_metop-c 627 +#avhrr_n18 618 +#avhrr_n19 619 gmi_gpm 706 cris-fsr_n20 960 -#cris-fsr_n21 961 + cris-fsr_n21 961 amsr2_gcom-w1 550 :: jedi_radiance:: +#abi_g16 516 + abi_g18 518 amsua_metop-b 326 amsua_metop-c 327 mhs_metop-b 826 @@ -29,13 +35,15 @@ jedi_radiance:: iasi_metop-c 877 atms_npp 900 atms_n20 920 - atms_n21 921 + atms_n21 920 ssmis_f17 717 - avhrr3_metop-b 626 - avhrr3_metop-c 627 + avhrr3_metop-b 626 + avhrr3_metop-c 627 +#avhrr3_n18 618 +#avhrr3_n19 619 gmi_gpm 706 cris-fsr_n20 960 -#cris-fsr_n21 961 + cris-fsr_n21 961 amsr2_gcom-w1 550 :: @@ -50,6 +58,13 @@ aircraftT:: #tamdar 134 :: +aircraftW:: + airep 230 + asdar 231 + mdcars 233 +#tamdar 234 +:: + sfc_temperature:: sfcMarineT 180 :: @@ -62,7 +77,7 @@ gnssro:: paz 44 cosmic-e1 750 cosmic-e2 751 -#cosmic-e3 752 + cosmic-e3 752 cosmic-e4 753 cosmic-e5 754 cosmic-e6 755 @@ -75,12 +90,19 @@ ozone:: mls55_aura 330 ompslpnc_npp 337 ompslpnc_n21 358 +#ompsnm_npp 427 +#omieff_aura 449 :: sonde_wind:: - sonde 220 - pibal 221 - pilot 229 + sonde_wnd 220 + pibal_wnd 221 + pilot_wnd 229 +:: + +sonde_temperature:: + sonde_t 120 +#mls_t 304 :: satwind:: diff --git a/src/Applications/GEOSdas_App/testsuites/j54rpy.input b/src/Applications/GEOSdas_App/testsuites/j54rpy.input index 9b80d982..2b4d230a 100644 --- a/src/Applications/GEOSdas_App/testsuites/j54rpy.input +++ b/src/Applications/GEOSdas_App/testsuites/j54rpy.input @@ -81,7 +81,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/544/x0054/rs/Y2025/M12/x0054.rst.20251228_21z.tar +> /discover/nobackup/projects/gmao/dadev/rtodling/archive/Restarts/5_44/Rev1/x0054/rs/Y2025/M12/x0054.rst.20251228_21z.tar Run model-adjoint-related applications (0=no,1=yes)? [0] > 1 @@ -207,7 +207,7 @@ Do Aerosol Analysis (y/n)? [y] > AOD OBSERVING CLASSES [or type 'none']? -> mod04_061_flk,myd04_061_flk,aeronet_obs_llk +> mod04_061_flk,myd04_061_flk,vn20aerdt_002_flk,vn20aerdb_002_flk,aeronet_obs_llk Enable GAAS feedback to model (y/n)? [y] > diff --git a/src/Applications/GEOSdas_App/testsuites/jprePP.input b/src/Applications/GEOSdas_App/testsuites/jprePP.input index ca5c136e..44928a66 100644 --- a/src/Applications/GEOSdas_App/testsuites/jprePP.input +++ b/src/Applications/GEOSdas_App/testsuites/jprePP.input @@ -29,7 +29,7 @@ EXPID? [u000_C720] Check for previous use of expid (y/n)? [y] > n -EXPDSC? [jprePP__GEOSadas-5_41_2__agrid_C720__ogrid_C] +EXPDSC? [jprePP__GEOSadas-5_44_x__agrid_C720__ogrid_C] > Land Boundary Conditions? [Icarus_Updated] @@ -39,7 +39,7 @@ Catchment Model choice? [1] > FVHOME? [/discover/nobackup/rtodling/jprePP] -> /discover/nobackup/projects/gmao/dadev/TSE_staging/rtodling/543/$expid +> /discover/nobackup/projects/gmao/dadev/TSE_staging/rtodling/JEDI/544/$expid The directory /discover/nobackup/projects/gmao/dadev/rtodling/jprePP does not exist. Create it now? [y] > @@ -81,7 +81,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_42/f5421_fpp/rs/Y2025/M12/f5421_fpp.rst.20251228_21z.tar +> /discover/nobackup/projects/gmao/dadev/rtodling/archive/Restarts/5_44/Rev1/f5430_fp/rs/Y2026/M03/f5430_fp.rst.20260328_21z.tar Run model-adjoint-related applications (0=no,1=yes)? [0] > 1 @@ -102,7 +102,7 @@ Verifying experiment id: [jprePP] > Ending year-month-day? [20210921] -> 20260206 +> 20260706 Length of FORECAST run segments (in hours)? [123] > @@ -150,7 +150,7 @@ Which main class of ObsSys (1: NRT; 2: MERRA; 3: MERRA-2; 4: GEOS-IT; 5: R21C)? > 1 OBSERVING SYSTEM CLASSES? -> disc_airs_bufr,gmao_amsr2_bufr,gmao_gmi_bufr,mls_nrt_nc,ncep_1bamua_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_ssmis_bufr,ncep_tcvitals,npp_ompsnm_bufr,n21_ompslp_nc,gmao_mlst_bufr,aura_omieff_nc,npp_ompslp_nc +> disc_airs_bufr,gmao_amsr2_bufr,gmao_gmi_bufr,mls_nrt_nc,ncep_1bamua_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_ssmis_bufr,ncep_tcvitals,npp_ompsnm_bufr,n21_ompslp_nc,gmao_mlst_bufr,aura_omieff_nc,npp_ompslp_nc,ncep_goescsr_bufr CHECKING OBSYSTEM? [2] > 1 @@ -207,7 +207,7 @@ Do Aerosol Analysis (y/n)? [y] > AOD OBSERVING CLASSES [or type 'none']? -> mod04_061_flk,myd04_061_flk,aeronet_obs_llk +> vn20aerdt_002_flk,vn20aerdb_002_flk,aeronet_obs_llk Enable GAAS feedback to model (y/n)? [y] > @@ -228,10 +228,10 @@ Replayed Ensemble? [yes] > Replay exp name? [x0046d] -> f5421_fpp +> f5430_fp Replay archive directory? [/discover/nobackup/projects/gmao/dadev/rtodling/archive/x0046d] -> /home/dao_ops/f5421_fpp/run/.../archive/ +> /home/dao_ops/f5430_fp/run/.../archive/ Edit COLLECTIONS list in run/HISTORY.rc.tmpl (y/n)? [n] > diff --git a/src/Applications/GEOSdas_App/testsuites/prePP.input b/src/Applications/GEOSdas_App/testsuites/prePP.input index 2e76d2f0..1a2e90dd 100644 --- a/src/Applications/GEOSdas_App/testsuites/prePP.input +++ b/src/Applications/GEOSdas_App/testsuites/prePP.input @@ -3,7 +3,7 @@ #------------ codeID: 523f29e -description: prePP__GEOSadas-5_42_1__agrid_C720__ogrid_C +description: prePP__GEOSadas-5_44_5__agrid_C720__ogrid_C fvsetupID: f7aaa973c7 ---ENDHEADERS--- @@ -39,7 +39,7 @@ Catchment Model choice? [1] > FVHOME? [/discover/nobackup/rtodling/prePP] -> /discover/nobackup/projects/gmao/dadev/TSE_staging/rtodling/$expid +> /discover/nobackup/projects/gmao/dadev/TSE_staging/rtodling/544/$expid The directory /discover/nobackup/projects/gmao/dadev/rtodling/prePP does not exist. Create it now? [y] > @@ -81,7 +81,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_42/c720/rs/Y2025/M02/c720.rst.20250225_21z.tar +> /discover/nobackup/projects/gmao/dadev/rtodling/archive/Restarts/5_44/Rev1/f5430_fp/rs/Y2026/M06/f5430_fp.rst.20260628_21z.tar Run model-adjoint-related applications (0=no,1=yes)? [0] > 1 @@ -102,7 +102,7 @@ Verifying experiment id: [prePP] > Ending year-month-day? [20210921] -> 20251231 +> 20261006 Length of FORECAST run segments (in hours)? [123] > @@ -150,7 +150,7 @@ Which main class of ObsSys (1: NRT; 2: MERRA; 3: MERRA-2; 4: GEOS-IT; 5: R21C)? > 1 OBSERVING SYSTEM CLASSES? -> disc_airs_bufr,gmao_amsr2_bufr,gmao_gmi_bufr,mls_nrt_nc,ncep_1bamua_bufr,ncep_acftpfl_bufr,ncep_atms_bufr,aura_omieff_nc,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_ssmis_bufr,ncep_tcvitals,npp_ompsnm_bufr,npp_ompslp_nc,n21_ompslp_nc,gmao_mlst_bufr +> disc_airs_bufr,gmao_amsr2_bufr,gmao_gmi_bufr,mls_nrt_nc,ncep_1bamua_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_ssmis_bufr,ncep_tcvitals,npp_ompsnm_bufr,n21_ompslp_nc,gmao_mlst_bufr,aura_omieff_nc,npp_ompslp_nc,ncep_goescsr_bufr CHECKING OBSYSTEM? [2] > 1 @@ -207,7 +207,7 @@ Do Aerosol Analysis (y/n)? [y] > AOD OBSERVING CLASSES [or type 'none']? -> mod04_061_flk,myd04_061_flk,aeronet_obs_flk +> vn20aerdt_002_flk,vn20aerdb_002_flk,aeronet_obs_llk Enable GAAS feedback to model (y/n)? [y] > @@ -237,7 +237,7 @@ Ensemble Vertical Levels? [72] > Experiment archive directory for ensemble restarts or 'later': [/archive/u/rtodling/prePP] -> /gpfsm/dnb05/projects/p139/rtodling/archive/Restarts/5_42/c720 +> /discover/nobackup/projects/gmao/dadev/rtodling/archive/Restarts/5_44/Rev1/f5430_fp Edit COLLECTIONS list in run/HISTORY.rc.tmpl (y/n)? [n] > diff --git a/src/Applications/GEOSdas_App/testsuites/x0054a.input b/src/Applications/GEOSdas_App/testsuites/x0054a.input new file mode 100644 index 00000000..eff5cad0 --- /dev/null +++ b/src/Applications/GEOSdas_App/testsuites/x0054a.input @@ -0,0 +1,252 @@ +#------------- +# x0054a.input +#------------- + +codeID: 523f29e +description: x0054a__GEOSadas-5_44_4__agrid_C360__ogrid_C +fvsetupID: f7aaa973c7 + +---ENDHEADERS--- + +Remote account for Intranet plots? [rtodling@train] +> + +Is this a MERRA2 (1), GEOSIT (2), R21C (3) experiment? [0] +> + +AGCM Horizontal Resolution? [C48] +> C360 + +AGCM Vertical Resolution? [72] +> + +OGCM Resolution? [f] +> C + +EXPID? [u000_C360] +> $expid + +Check for previous use of expid (y/n)? [y] +> n + +EXPDSC? [x0054a__GEOSadas-5_44_4__agrid_C360__ogrid_C] +> + +Land Boundary Conditions? [Icarus_Updated] +> Icarus-NLv3 + +Catchment Model choice? [1] +> + +FVHOME? [/discover/nobackup/rtodling/x0054a] +> /discover/nobackup/projects/gmao/dadev/rtodling/544/$expid + +The directory /discover/nobackup/projects/gmao/dadev/rtodling/544/x0054a already exists. Clean it? [y] +> + +Processing nodes (1:Haswell, 2:Skylake, 3:Cascase, 4:Milan)? [2] +> 4 + +Which case of variational analysis? [1] +> + +Window of the variational analysis (min)? [360] +> + +FVINPUT? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar] +> + +REAL TIME BCS? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar/g5gcm/bcs/realtime/OSTIA_REYNOLDS] +> + +agcmpert? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar/agcmpert] +> + +chemistry? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar/chemistry] +> + +g5chem? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar/g5chem] +> + +g5gcm? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar/g5gcm] +> + +PIESA? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar/PIESA] +> + +MERRA2? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar/MERRA2] +> + +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_44/Rev1/c360/rs/Y2025/M11/c360.rst.20251128_21z.tar + +Run model-adjoint-related applications (0=no,1=yes)? [0] +> 1 + +Analysis/Forecast filename template for sensitivity? +> + +Stage the gradient vector files (y/n)? [y] +> + +Run singular vector experiments (0=n,1=yes)? [0] +> + +Run analysis-sensitivity applications (0=no,1=yes)? [0] +> 1 + +Verifying experiment id: [x0054a] +> + +Ending year-month-day? [20191121] +> 20260306 + +Length of FORECAST run segments (in hours)? [123] +> + +Number of one-day DAS segments per PBS job? [1] +> + +Number of PEs in the zonal direction (NX)? [10] +> 12 + +Number of PEs in the meridional direction (NY)? [36] +> 48 + +Job nickname? [g5das] +> x54 + +Run in split executable mode (1=yes;0=no)? [1] +> + +Frequency of background fields (min)? [180] +> 60 + +Triangular spectral truncation? [254] +> + +Analysis vertical levels (sig))? [72] +> + +GSI grid resolution? [NA] +> + +GEOS grid resolution instead? [d] +> + +Ensemble Hybrid (<0;3=3dHyb;4=Hyb4d)? [-1] +> 4 + +Number of procs in the zonal direction (NX)? [12] +> 16 + +Number of procs in the meridional direction (NY)? [20] +> 42 + +Which main class of ObsSys (1: NRT; 2: MERRA; 3: MERRA-2; 4: GEOS-IT; 5: R21C)? [1] +> + +OBSERVING SYSTEM CLASSES? +> disc_airs_bufr,gmao_amsr2_bufr,gmao_gmi_bufr,mls_nrt_nc,ncep_1bamua_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_ssmis_bufr,ncep_tcvitals,npp_ompsnm_bufr,n21_ompslp_nc,gmao_mlst_bufr,aura_omieff_nc,npp_ompslp_nc,ncep_goescsr_bufr + +CHECKING OBSYSTEM? [2] +> 1 + +Which RADCOR option? [NONE] +> + +Use sat channel-correlated observation errors (y/n)? [y] +> + +Use aircraft bias correction (y/n)? [y] +> + +Use unified radiance bias correction (y/n)? [y] +> + +Land DAS Analysis (y/n)? [n] +> + +Frequency (in days) for writing restarts? [0] +> + +Frequency for PROGNOSTIC fields? [010000] +> + +Frequency for surface (2D) DIAGNOSTIC fields? [010000] +> + +Frequency for upper air (3D) DIAGNOSTIC fields? [030000] +> + +Dimension of output in zonal direction? [1152] +> + +Dimension of output in meridional direction? [721] +> + +Would you like 2D diagnostics? [y] +> + +Would you like 3D diagnostics? [y] +> + +Would you like to compress diagnostics output files? [n] +> + +Include GOCART tracers (CO,CO2,aerosols,etc) (y/n)? [y] +> + +Select GOCART Emission Files to use: [OPS] +> + +Do Aerosol Analysis (y/n)? [y] +> + +AOD OBSERVING CLASSES [or type 'none']? +> mod04_061_flk,myd04_061_flk,vn20aerdt_002_flk,vn20aerdb_002_flk,aeronet_obs_llk + +Enable GAAS feedback to model (y/n)? [y] +> + +Which template? [HISTORY.rc.tmpl] +> + +Which template? [GCMPROG.rc.tmpl] +> + +Output Restart TYPE (bin or nc4) [nc4] +> + +Select group: [s0818] +> g0613 + +Replayed Ensemble (from OPS)? [yes] +> no + +Use SPPT-scheme for Ensemble? [yes] +> + +Ensemble Resolution? [C90] +> + +Ensemble Vertical Levels? [72] +> + +Experiment archive directory for ensemble restarts or 'later': [/archive/u/rtodling/x0054a] +> /discover/nobackup/projects/gmao/dadev/rtodling/archive/Restarts/5_44/c360 + +Edit COLLECTIONS list in run/HISTORY.rc.tmpl (y/n)? [n] +> + +Edit COLLECTIONS list in fcst/HISTORY.rc.tmpl (y/n)? [n] +> + +Edit files in run directory for CERES configuration (y/n)? [n] +> + +Which? [Q] +> diff --git a/src/Applications/GEOSdas_App/testsuites/x0054smp.input b/src/Applications/GEOSdas_App/testsuites/x0054smp.input new file mode 100644 index 00000000..3bbf5bdc --- /dev/null +++ b/src/Applications/GEOSdas_App/testsuites/x0054smp.input @@ -0,0 +1,273 @@ +#------------ +# x0054smp.input +#------------ + +codeID: 523f29e +description: x0054smp__GEOSadas-5_44_4__agrid_C360__ogrid_C +fvsetupID: + +---ENDHEADERS--- + +Remote account for Intranet plots? [qliu@train] +> + +Is this a MERRA2 (1), GEOSIT (2), R21C (3) experiment? [0] +> + +AGCM Horizontal Resolution? [C48] +> C360 + +AGCM Vertical Resolution? [72] +> + +OGCM Resolution? [f] +> C + +EXPID? [u000_C360] +> $expid + +Check for previous use of expid (y/n)? [y] +> n + +EXPDSC? [x0054smp__GEOSadas-5_44_4__agrid_C360__ogrid_C] +> + +Land Boundary Conditions? [Icarus_Updated] +> Icarus-NLv3 + +Catchment Model choice? [1] +> + +FVHOME? [/discover/nobackup/rtodling/x0054] +> /discover/nobackup/qliu/merra_land/LADAS/$expid + +The directory /discover/nobackup/qliu/merra_land/LADAS/$expid already exists. Clean it? [y] +> + +Processing nodes (1:Haswell, 2:Skylake, 3:Cascase, 4:Milan)? [2] +> 3 + +Which case of variational analysis? [1] +> + +Window of the variational analysis (min)? [360] +> + +FVINPUT? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar] +> + +REAL TIME BCS? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar/g5gcm/bcs/realtime/OSTIA_REYNOLDS] +> + +agcmpert? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar/agcmpert] +> + +chemistry? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar/chemistry] +> + +g5chem? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar/g5chem] +> + +g5gcm? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar/g5gcm] +> + +PIESA? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar/PIESA] +> + +MERRA2? [/discover/nobackup/projects/gmao/share/gmao_ops/fvInput_4dvar/MERRA2] +> + +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/544/x0054 + +Starting year-month-day? [20190116] +> 20251129 + +Starting hour-min-sec? [210000] +> + +Name of experiment where ICs come from: [SMAP_TC] +> x0054 + +Run model-adjoint-related applications (0=no,1=yes)? [0] +> 1 + +Analysis/Forecast filename template for sensitivity? +> + +Stage the gradient vector files (y/n)? [y] +> + +Run singular vector experiments (0=n,1=yes)? [0] +> + +Run analysis-sensitivity applications (0=no,1=yes)? [0] +> 1 + +Verifying experiment id: [x0054smp] +> + +Ending year-month-day? [20191121] +> 20251210 + +Length of FORECAST run segments (in hours)? [123] +> + +Number of one-day DAS segments per PBS job? [1] +> + +Number of PEs in the zonal direction (NX)? [10] +> 12 + +Number of PEs in the meridional direction (NY)? [36] +> 48 + +Job nickname? [g5das] +> x54smp + +Run in split executable mode (1=yes;0=no)? [1] +> + +Frequency of background fields (min)? [180] +> 60 + +Triangular spectral truncation? [254] +> + +Analysis vertical levels (sig))? [72] +> + +GSI grid resolution? [NA] +> + +GEOS grid resolution instead? [d] +> + +Ensemble Hybrid (<0;3=3dHyb;4=Hyb4d)? [-1] +> 4 + +Number of procs in the zonal direction (NX)? [12] +> 16 + +Number of procs in the meridional direction (NY)? [20] +> 42 + +Which main class of ObsSys (1: NRT; 2: MERRA; 3: MERRA-2; 4: GEOS-IT; 5: R21C)? [1] +> + +OBSERVING SYSTEM CLASSES? +> disc_airs_bufr,gmao_amsr2_bufr,gmao_gmi_bufr,mls_nrt_nc,ncep_1bamua_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_ssmis_bufr,ncep_tcvitals,npp_ompsnm_bufr,n21_ompslp_nc,gmao_mlst_bufr,aura_omieff_nc,npp_ompslp_nc,ncep_goescsr_bufr + +CHECKING OBSYSTEM? [2] +> 1 + +Which RADCOR option? [NONE] +> + +Use sat channel-correlated observation errors (y/n)? [y] +> + +Use aircraft bias correction (y/n)? [y] +> + +Use unified radiance bias correction (y/n)? [y] +> + +Land DAS Analysis (y/n)? [n] +> y + +Location of LDAS initial surface met forcing (bkg.lfo) [/discover/nobackup/qzhang/archive/ladas54211smap//rs/Y2019/M12] +> /discover/nobackup/projects/gmao/dadev/rtodling/archive/544/x0054/rs/Y2025/M11 + +Enable LDAS feedback to atm model y/n? [n] +> y + +Location of LDAS initial conditions for deterministic component? (full_path/ldas_exp) [/discover/nobackup/qzhang/ldas_exp_C360/] +> /discover/nobackup/projects/gmao/smap/SMAP_Nature/LADAS_offline/CF0360/C360_da_ens24 + +Location of LDAS initial conditions for ens? (full_path/ldas_exp) +> /discover/nobackup/projects/gmao/smap/SMAP_Nature/LADAS_offline/CF0090/C090_da_ens32 + +Frequency (in days) for writing restarts? [0] +> + +Frequency for PROGNOSTIC fields? [010000] +> + +Frequency for surface (2D) DIAGNOSTIC fields? [010000] +> + +Frequency for upper air (3D) DIAGNOSTIC fields? [030000] +> + +Dimension of output in zonal direction? [1152] +> + +Dimension of output in meridional direction? [721] +> + +Would you like 2D diagnostics? [y] +> + +Would you like 3D diagnostics? [y] +> + +Would you like to compress diagnostics output files? [n] +> + +Include GOCART tracers (CO,CO2,aerosols,etc) (y/n)? [y] +> + +Select GOCART Emission Files to use: [OPS] +> + +Do Aerosol Analysis (y/n)? [y] +> + +AOD OBSERVING CLASSES [or type 'none']? +> mod04_061_flk,myd04_061_flk,vn20aerdt_002_flk,vn20aerdb_002_flk,aeronet_obs_llk + +Enable GAAS feedback to model (y/n)? [y] +> + +Which template? [HISTORY.rc.tmpl] +> + +Which template? [GCMPROG.rc.tmpl] +> + +Output Restart TYPE (bin or nc4) [nc4] +> + +Select group: [s0818] +> + +Replayed Ensemble (from OPS)? [yes] +> no + +Use SPPT-scheme for Ensemble? [yes] +> + +Ensemble Resolution? [C90] +> + +Ensemble Vertical Levels? [72] +> + +Experiment archive directory for ensemble restarts or 'later': [/archive/u/rtodling/x0054] +> /discover/nobackup/projects/gmao/dadev/rtodling/archive/544/x0054 + +Edit COLLECTIONS list in run/HISTORY.rc.tmpl (y/n)? [n] +> + +Edit COLLECTIONS list in fcst/HISTORY.rc.tmpl (y/n)? [n] +> + +Edit files in run directory for CERES configuration (y/n)? [n] +> + +Which? [Q] +> 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 c492235d..a93da19b 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 @@ -62,7 +62,7 @@ COLLECTIONS: 'bkg.eta' # Cubed trajectory (background for JEDI) 'bkg_clcv' 'extbkg_clcv' - 'extbkg_lcv' +# 'extbkg_lcv' :: # -------------------------- @@ -933,14 +933,14 @@ COLLECTIONS: 'bkg.eta' 'FRACI' , 'SURFACE' , 'FRSEAICE' , 'RH2' , 'MOIST' , 'RH' , 'AIRDENS' , 'CHEMENV' , - 'DUEXTCOEF' , 'DU' , 'DUEXTCOEF470;DUEXTCOEF870' , - 'SSEXTCOEF' , 'SS' , 'SSEXTCOEF470;SSEXTCOEF870' , - 'SUEXTCOEF' , 'SU' , 'SUEXTCOEF470;SUEXTCOEF870' , - 'NIEXTCOEF' , 'NI' , 'NIEXTCOEF470;NIEXTCOEF870' , - 'CA.bcEXTCOEF' , 'CA.bc' , 'BCEXTCOEF470;BCEXTCOEF870' , - 'CA.ocEXTCOEF' , 'CA.oc' , 'OCEXTCOEF470;OCEXTCOEF870' , - 'CA.brEXTCOEF' , 'CA.br' , 'BREXTCOEF470;BREXTCOEF870' , - 'TOTEXTCOEF' , 'GOCART2G' , 'TOTEXTCOEF470;TOTEXTCOEF870' , + 'DUEXTCOEF' , 'DU' , 'DUEXTCOEF470;DUEXTCOEF550;DUEXTCOEF870' , + 'SSEXTCOEF' , 'SS' , 'SSEXTCOEF470;SSEXTCOEF550;SSEXTCOEF870' , + 'SUEXTCOEF' , 'SU' , 'SUEXTCOEF470;SUEXTCOEF550;SUEXTCOEF870' , + 'NIEXTCOEF' , 'NI' , 'NIEXTCOEF470;NIEXTCOEF550;NIEXTCOEF870' , + 'CA.bcEXTCOEF' , 'CA.bc' , 'BCEXTCOEF470;BCEXTCOEF550;BCEXTCOEF870' , + 'CA.ocEXTCOEF' , 'CA.oc' , 'OCEXTCOEF470;OCEXTCOEF550;OCEXTCOEF870' , + 'CA.brEXTCOEF' , 'CA.br' , 'BREXTCOEF470;BREXTCOEF550;BREXTCOEF870' , + 'TOTEXTCOEF' , 'GOCART2G' , 'TOTEXTCOEF470;TOTEXTCOEF550;TOTEXTCOEF870' , :: extbkg_lcv.format: 'CFIO' ,