From 0dc54049423c709b6bb01e2e6f9ca657015c09fb Mon Sep 17 00:00:00 2001 From: JingCheng-NOAA Date: Wed, 13 Nov 2024 16:13:11 +0000 Subject: [PATCH 1/2] Update submodules to latest commit --- sorc/fv3-jedi | 2 +- sorc/fv3-jedi-lm | 2 +- sorc/ioda | 2 +- sorc/iodaconv | 2 +- sorc/oops | 2 +- sorc/saber | 2 +- sorc/ufo | 2 +- sorc/vader | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/sorc/fv3-jedi b/sorc/fv3-jedi index 80a93cc..136dfb9 160000 --- a/sorc/fv3-jedi +++ b/sorc/fv3-jedi @@ -1 +1 @@ -Subproject commit 80a93ccc29ecd2ffd040287f1e9c141d9f6b6000 +Subproject commit 136dfb9c2f8541584e62fa74c616d686602bcdad diff --git a/sorc/fv3-jedi-lm b/sorc/fv3-jedi-lm index af67095..3254bb8 160000 --- a/sorc/fv3-jedi-lm +++ b/sorc/fv3-jedi-lm @@ -1 +1 @@ -Subproject commit af67095ee87ffb472218aa386e34c6bfe64ca424 +Subproject commit 3254bb84c71edca20d86932b0d2f7dde4ab57fe7 diff --git a/sorc/ioda b/sorc/ioda index e8fa4e9..71ee037 160000 --- a/sorc/ioda +++ b/sorc/ioda @@ -1 +1 @@ -Subproject commit e8fa4e9fdfd743870f152d456089f1b5d5178e67 +Subproject commit 71ee037b03d997d4a766a3c489920960f0175581 diff --git a/sorc/iodaconv b/sorc/iodaconv index 80f8e82..6f87a0f 160000 --- a/sorc/iodaconv +++ b/sorc/iodaconv @@ -1 +1 @@ -Subproject commit 80f8e824a814bdf99c30099f55e4348a34a4638a +Subproject commit 6f87a0f279e836fd604e5b313a25bd1e54bff80e diff --git a/sorc/oops b/sorc/oops index cacc8fb..1ba321f 160000 --- a/sorc/oops +++ b/sorc/oops @@ -1 +1 @@ -Subproject commit cacc8fb7e2913b1b4cc7c20a9fb10f048a2ecc1b +Subproject commit 1ba321ff912c6338d7362667eff37ddbf569cb18 diff --git a/sorc/saber b/sorc/saber index 88bd2ea..de5015c 160000 --- a/sorc/saber +++ b/sorc/saber @@ -1 +1 @@ -Subproject commit 88bd2ea027d567e6cc8413a5337e0d17833f1a7f +Subproject commit de5015c8328f5b3d64acc99739fbaa64ef571172 diff --git a/sorc/ufo b/sorc/ufo index 2e75a4c..5e5470f 160000 --- a/sorc/ufo +++ b/sorc/ufo @@ -1 +1 @@ -Subproject commit 2e75a4cdc3f10653f1a962e8fd82e64a11f68637 +Subproject commit 5e5470f7e64e9445e30aa7f001b6a50cb0680b3e diff --git a/sorc/vader b/sorc/vader index 469bc04..14e8bce 160000 --- a/sorc/vader +++ b/sorc/vader @@ -1 +1 @@ -Subproject commit 469bc0446472e7703fab46c72b5710a8bac17456 +Subproject commit 14e8bcee16c0fc2dc4d4189b17d5703b193aff45 From 819be4af076f94ee03d0b8ab9b6ef141dfcebe22 Mon Sep 17 00:00:00 2001 From: JingCheng-NOAA Date: Thu, 14 Nov 2024 19:04:32 +0000 Subject: [PATCH 2/2] Modified the cmake list and added libraries in the modulfile directory. Made adjustment to hafs-test yaml file to replace `specific_humidity` with `water_vapor_mixing_ratio_wrt_moist_air`, and remove `tsea` from state variables. --- bundle/CMakeLists.txt | 15 +- hafs-test/scripts/setup_experiment.sh | 1 + ...FCSHP_singleob_airTemperature_fv3jedi.yaml | 4 +- .../hafs_fv3jedi_3DEnVar_2024063012.yaml | 4 +- ...ngleob_airTemperature_fv3jedi_3DEnVar.yaml | 177 ++++++++++++++ ...ingleob_airTemperature_fv3jedi_3DFGAT.yaml | 191 ++++++++++++++++ ...ngleob_airTemperature_fv3jedi_4DEnVar.yaml | 216 ++++++++++++++++++ ...ngleob_airTemperature_fv3jedi_3DEnVar.yaml | 4 +- .../basic_config/fv3jedi_3denvar.yaml | 4 +- modulefiles/HDAS/hera.intel.lua | 11 +- sorc/fms | 1 - sorc/fv3 | 2 +- 12 files changed, 615 insertions(+), 15 deletions(-) create mode 100755 hafs-test/testinput/sfcship_singleob_airTemperature_fv3jedi_3DEnVar.yaml create mode 100755 hafs-test/testinput/sfcship_singleob_airTemperature_fv3jedi_3DFGAT.yaml create mode 100755 hafs-test/testinput/sfcship_singleob_airTemperature_fv3jedi_4DEnVar.yaml delete mode 160000 sorc/fms diff --git a/bundle/CMakeLists.txt b/bundle/CMakeLists.txt index c92d07f..892f7e6 100644 --- a/bundle/CMakeLists.txt +++ b/bundle/CMakeLists.txt @@ -35,6 +35,19 @@ set( ENABLE_MPI ON CACHE BOOL "Compile with MPI" ) option(BUILD_HDASBUNDLE "Build HDAS Bundle" ON) option(CLONE_JCSDADATA "Clone JCSDA test data repositories" OFF) +# Depend path for non-ecbuild packages +set(DEPEND_LIB_ROOT ${CMAKE_CURRENT_BINARY_DIR}/Depends) +list(APPEND CMAKE_PREFIX_PATH ${DEPEND_LIB_ROOT}) + +# Library path for non-ecbuild packages +link_directories(${CMAKE_CURRENT_BINARY_DIR}/lib) + +include( GNUInstallDirs ) +if(APPLE) + list( APPEND CMAKE_INSTALL_RPATH $ENV{llvm_openmp_ROOT}/lib ) +endif() +list( APPEND CMAKE_INSTALL_RPATH ${CMAKE_CURRENT_BINARY_DIR}/fv3 ) + # Initialize bundle # ----------------- ecbuild_bundle_initialize() @@ -75,7 +88,7 @@ if(BUILD_HDASBUNDLE) ecbuild_bundle( PROJECT ufo SOURCE "../sorc/ufo" ) # FMS and FV3 dynamical core - ecbuild_bundle( PROJECT fms SOURCE "../sorc/fms" ) + include(fv3-interface.cmake) ecbuild_bundle( PROJECT fv3 SOURCE "../sorc/fv3" ) # fv3-jedi and associated repositories diff --git a/hafs-test/scripts/setup_experiment.sh b/hafs-test/scripts/setup_experiment.sh index 92e6266..e68208b 100755 --- a/hafs-test/scripts/setup_experiment.sh +++ b/hafs-test/scripts/setup_experiment.sh @@ -102,6 +102,7 @@ fi mkdir -p testinput mkdir -p Data/obs cp -rp $YOUR_PATH_TO_HDASAPP/hafs-test/validated_yamls/* testinput +cp -rp $YOUR_PATH_TO_HDASAPP/hafs-test/testinput/* testinput cp -p ${DATA_STAGE}/obs/* Data/obs/. diff --git a/hafs-test/testinput/SFCSHP_singleob_airTemperature_fv3jedi.yaml b/hafs-test/testinput/SFCSHP_singleob_airTemperature_fv3jedi.yaml index 2857f56..faeafa6 100755 --- a/hafs-test/testinput/SFCSHP_singleob_airTemperature_fv3jedi.yaml +++ b/hafs-test/testinput/SFCSHP_singleob_airTemperature_fv3jedi.yaml @@ -26,7 +26,7 @@ cost function: namelist filename: DataFix/fmsmpp.nml field table filename: DataFix/field_table <<: *geometry_configs - analysis variables: &ana_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,specific_humidity,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio] + analysis variables: &ana_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,water_vapor_mixing_ratio_wrt_moist_air,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio] background: @@ -34,7 +34,7 @@ cost function: filetype: fms restart datapath: Data/bkg <<: *fv3file_names - state variables: &state_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,specific_humidity,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio,phis,slmsk,sheleg,tsea,vtype,stype,vfrac,stc,smc,snwdph,u_srf,v_srf,f10m] + state variables: &state_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,water_vapor_mixing_ratio_wrt_moist_air,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio,phis,slmsk,sheleg,vtype,stype,vfrac,stc,smc,snwdph,u_srf,v_srf,f10m] background error: covariance model: ensemble members from template: diff --git a/hafs-test/testinput/hafs_fv3jedi_3DEnVar_2024063012.yaml b/hafs-test/testinput/hafs_fv3jedi_3DEnVar_2024063012.yaml index 35ae52d..af176e5 100755 --- a/hafs-test/testinput/hafs_fv3jedi_3DEnVar_2024063012.yaml +++ b/hafs-test/testinput/hafs_fv3jedi_3DEnVar_2024063012.yaml @@ -26,14 +26,14 @@ cost function: namelist filename: DataFix/fmsmpp.nml field table filename: DataFix/field_table <<: *geometry_configs - analysis variables: &ana_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,specific_humidity,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio] + analysis variables: &ana_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,water_vapor_mixing_ratio_wrt_moist_air,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio] background: datetime: &AnaDate '2024-06-30T12:00:00Z' filetype: fms restart datapath: Data/bkg <<: *fv3file_names - state variables: &state_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,specific_humidity,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio,phis,slmsk,sheleg,tsea,vtype,stype,vfrac,stc,smc,snwdph,u_srf,v_srf,f10m] + state variables: &state_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,water_vapor_mixing_ratio_wrt_moist_air,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio,phis,slmsk,sheleg,vtype,stype,vfrac,stc,smc,snwdph,u_srf,v_srf,f10m] background error: covariance model: ensemble members from template: diff --git a/hafs-test/testinput/sfcship_singleob_airTemperature_fv3jedi_3DEnVar.yaml b/hafs-test/testinput/sfcship_singleob_airTemperature_fv3jedi_3DEnVar.yaml new file mode 100755 index 0000000..8b34bc0 --- /dev/null +++ b/hafs-test/testinput/sfcship_singleob_airTemperature_fv3jedi_3DEnVar.yaml @@ -0,0 +1,177 @@ +_filenames: &fv3file_names + filename_core: '20200825.120000.fv_core.res.tile1.nc' + filename_trcr: '20200825.120000.fv_tracer.res.tile1.nc' + filename_sfcd: '20200825.120000.sfc_data.nc' + filename_sfcw: '20200825.120000.fv_srf_wnd.res.tile1.nc' + filename_cplr: '20200825.120000.coupler.res' + +_geometry: &geometry_configs + namelist filename: DataFix/input_hafs.nml + field metadata override: Data/fieldmetadata/gfs-restart.yaml + akbk: DataFix/fix/akbk65.nc + npx: 721 + npy: 541 + npz: 65 + layout: [10,6] + io_layout: [1,1] + ntiles: 1 + fms initialization: + namelist filename: DataFix/fmsmpp.nml + field table filename: DataFix/field_table + fieldsets: + fieldset: DataFix/dynamics_lam_cmaq.yaml + +cost function: + cost type: 3D-Var + time window: + begin: &InitialDate '2020-08-25T09:00:00Z' + length: PT6H + + geometry: + <<: *geometry_configs + analysis variables: &ana_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,water_vapor_mixing_ratio_wrt_moist_air,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio] + background: + datetime: &AnaDate '2020-08-25T12:00:00Z' + filetype: fms restart + datapath: Data/bkg + <<: *fv3file_names + state variables: &state_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,water_vapor_mixing_ratio_wrt_moist_air,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio,phis,slmsk,sheleg,vtype,stype,vfrac,stc,smc,snwdph,u_srf,v_srf,f10m] + background error: + covariance model: ensemble + members from template: + template: + datetime: *AnaDate + filetype: fms restart + state variables: *state_vars + datapath: ens/mem%mem%/ + <<: *fv3file_names + pattern: '%mem%' + nmembers: 5 + zero padding: 3 + localization: + localization method: SABER + saber central block: + saber block name: BUMP_NICAS + active variables: *ana_vars + read: + io: + data directory: Data/bump + files prefix: fv3jedi_bumpparameters_nicas_lam_atm + alias: + - in code: common + in file: t_250km + drivers: + multivariate strategy: duplicated + read local nicas: true + +#------------------------------------------------------------------------------ + observations: + observers: + - obs space: + name: sfcshp + obsdatain: + engine: + type: H5File + obsfile: Data/obs/sfcshp.tm00.singleob.nc + obsdataout: + engine: + type: H5File + obsfile: diag_SFCSHP.prepbufr_singleobs.nc + allow overwrite: true + io pool: + max pool size: 1 + observed variables: [airTemperature] + simulated variables: [airTemperature] + + obs operator: + name: Composite + components: + - name: VertInterp + vertical coordinate: air_pressure + observation vertical coordinate: pressure + observation vertical coordinate group: MetaData + interpolation method: log-linear + variables: + - name: airTemperature + + obs post filters: + - filter: Perform Action + filter variables: + - name: airTemperature + where: + - variable: ObsType/airTemperature + is_in: 180 + action: + name: assign error + error parameter: 0.92823 + defer to post: true + # Adjusted error after initial assignment (qcmod.f90) + - filter: Perform Action + filter variables: + - name: airTemperature + where: + - variable: ObsType/airTemperature + is_in: 180 + action: + name: inflate error + inflation variable: + name: ObsFunction/ObsErrorFactorConventional + options: + test QCflag: PreQC + test QCthreshold: 3 + inflate variables: [airTemperature] + pressure: MetaData/pressure + distance threshold: -1. + defer to post: true + # error inflation based on pressure check + - filter: Perform Action + filter variables: + - name: airTemperature + where: + - variable: ObsType/airTemperature + is_in: 180 + action: + name: inflate error + inflation variable: + name: ObsFunction/ObsErrorFactorPressureCheck + options: + variable: airTemperature + inflation factor: 8.0 + geovar_sfc_geomz: surface_geometric_height + defer to post: true + #- filter: Bounds Check + # filter variables: + # - name: airTemperature + # minvalue: 195.0 + # maxvalue: 327.0 + # action: + # name: reject + #- filter: Background Check + # filter variables: + # - name: airTemperature + # threshold: 7.0 + # absolute threshold: 9.0 + # action: + # name: reject + # defer to post: true + +variational: + minimizer: + algorithm: DRPCG # Derber-Rosati Conjugate Gradients + iterations: + - ninner: 50 + gradient norm reduction: 1e-60 + geometry: + <<: *geometry_configs + diagnostics: + departures: bkgmob +final: + diagnostics: + departures: oman + +output: + filetype: fms restart + datapath: Data/analysis/ + prefix: envar-fv3_hafs_singleOBS_sfcshp #Ens3dvar-fv3_lam-C775 + frequency: PT3H + diff --git a/hafs-test/testinput/sfcship_singleob_airTemperature_fv3jedi_3DFGAT.yaml b/hafs-test/testinput/sfcship_singleob_airTemperature_fv3jedi_3DFGAT.yaml new file mode 100755 index 0000000..8fdd9fa --- /dev/null +++ b/hafs-test/testinput/sfcship_singleob_airTemperature_fv3jedi_3DFGAT.yaml @@ -0,0 +1,191 @@ +_filenames: &fv3file_names + filename_core: '20200825.120000.fv_core.res.tile1.nc' + filename_trcr: '20200825.120000.fv_tracer.res.tile1.nc' + filename_sfcd: '20200825.120000.sfc_data.nc' + filename_sfcw: '20200825.120000.fv_srf_wnd.res.tile1.nc' + filename_cplr: '20200825.120000.coupler.res' + +_geometry: &geometry_configs + namelist filename: DataFix/input_hafs.nml + field metadata override: Data/fieldmetadata/gfs-restart.yaml + akbk: DataFix/fix/akbk65.nc + npx: 721 + npy: 541 + npz: 65 + layout: [10,6] + io_layout: [1,1] + ntiles: 1 + fms initialization: + namelist filename: DataFix/fmsmpp.nml + field table filename: DataFix/field_table + fieldsets: + fieldset: DataFix/dynamics_lam_cmaq.yaml + +cost function: + cost type: 3D-FGAT + time window: + begin: &InitialDate '2020-08-25T09:00:00Z' + length: PT6H + geometry: + <<: *geometry_configs + analysis variables: &ana_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,water_vapor_mixing_ratio_wrt_moist_air,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio] + model: + name: PSEUDO + tstep: PT3H + filetype: fms restart + filename is datetime templated: true + datapath: Data/bkg + filename_core: '%yyyy%mm%dd.%hh%MM%ss.fv_core.res.tile1.nc' + filename_trcr: '%yyyy%mm%dd.%hh%MM%ss.fv_tracer.res.tile1.nc' + filename_sfcd: '%yyyy%mm%dd.%hh%MM%ss.sfc_data.nc' + filename_sfcw: '%yyyy%mm%dd.%hh%MM%ss.fv_srf_wnd.res.tile1.nc' + filename_cplr: '%yyyy%mm%dd.%hh%MM%ss.coupler.res' + background: + datetime: *InitialDate + filetype: fms restart + datapath: Data/bkg + filename_core: '20200825.090000.fv_core.res.tile1.nc' + filename_trcr: '20200825.090000.fv_tracer.res.tile1.nc' + filename_sfcd: '20200825.090000.sfc_data.nc' + filename_sfcw: '20200825.090000.fv_srf_wnd.res.tile1.nc' + filename_cplr: '20200825.090000.coupler.res' + state variables: &state_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,water_vapor_mixing_ratio_wrt_moist_air,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio,phis,slmsk,sheleg,vtype,stype,vfrac,stc,smc,snwdph,u_srf,v_srf,f10m] + background error: + covariance model: ensemble + members from template: + template: + datetime: &AnaDate '2020-08-25T12:00:00Z' + filetype: fms restart + state variables: *state_vars + datapath: ens/mem%mem%/ + <<: *fv3file_names + pattern: '%mem%' + nmembers: 5 + zero padding: 3 + localization: + localization method: SABER + saber central block: + saber block name: BUMP_NICAS + active variables: *ana_vars + read: + io: + data directory: Data/bump + files prefix: fv3jedi_bumpparameters_nicas_lam_atm + alias: + - in code: common + in file: t_250km + drivers: + multivariate strategy: duplicated + read local nicas: true + +#------------------------------------------------------------------------------ + observations: + observers: + - obs space: + name: sfcshp + obsdatain: + engine: + type: H5File + obsfile: Data/obs/sfcshp.tm00.singleob.nc + obsdataout: + engine: + type: H5File + obsfile: diag_SFCSHP.prepbufr_singleobs.nc + allow overwrite: true + io pool: + max pool size: 1 + observed variables: [airTemperature] + simulated variables: [airTemperature] + + obs operator: + name: Composite + components: + - name: VertInterp + vertical coordinate: air_pressure + observation vertical coordinate: pressure + observation vertical coordinate group: MetaData + interpolation method: log-linear + variables: + - name: airTemperature + + obs post filters: + - filter: Perform Action + filter variables: + - name: airTemperature + where: + - variable: ObsType/airTemperature + is_in: 180 + action: + name: assign error + error parameter: 0.92823 + defer to post: true + # Adjusted error after initial assignment (qcmod.f90) + - filter: Perform Action + filter variables: + - name: airTemperature + where: + - variable: ObsType/airTemperature + is_in: 180 + action: + name: inflate error + inflation variable: + name: ObsFunction/ObsErrorFactorConventional + options: + test QCflag: PreQC + test QCthreshold: 3 + inflate variables: [airTemperature] + pressure: MetaData/pressure + distance threshold: -1. + defer to post: true + # error inflation based on pressure check + - filter: Perform Action + filter variables: + - name: airTemperature + where: + - variable: ObsType/airTemperature + is_in: 180 + action: + name: inflate error + inflation variable: + name: ObsFunction/ObsErrorFactorPressureCheck + options: + variable: airTemperature + inflation factor: 8.0 + geovar_sfc_geomz: surface_geometric_height + defer to post: true + #- filter: Bounds Check + # filter variables: + # - name: airTemperature + # minvalue: 195.0 + # maxvalue: 327.0 + # action: + # name: reject + #- filter: Background Check + # filter variables: + # - name: airTemperature + # threshold: 7.0 + # absolute threshold: 9.0 + # action: + # name: reject + # defer to post: true + +variational: + minimizer: + algorithm: DRPCG # Derber-Rosati Conjugate Gradients + iterations: + - ninner: 50 + gradient norm reduction: 1e-60 + geometry: + <<: *geometry_configs + diagnostics: + departures: bkgmob +final: + diagnostics: + departures: oman + +output: + filetype: fms restart + datapath: Data/analysis/ + prefix: envar-fv3_hafs_singleOBS_sfcshp #Ens3dvar-fv3_lam-C775 + frequency: PT3H + diff --git a/hafs-test/testinput/sfcship_singleob_airTemperature_fv3jedi_4DEnVar.yaml b/hafs-test/testinput/sfcship_singleob_airTemperature_fv3jedi_4DEnVar.yaml new file mode 100755 index 0000000..0fe11e0 --- /dev/null +++ b/hafs-test/testinput/sfcship_singleob_airTemperature_fv3jedi_4DEnVar.yaml @@ -0,0 +1,216 @@ +_filenames: &fv3file_names + filename_core: '20200825.120000.fv_core.res.tile1.nc' + filename_trcr: '20200825.120000.fv_tracer.res.tile1.nc' + filename_sfcd: '20200825.120000.sfc_data.nc' + filename_sfcw: '20200825.120000.fv_srf_wnd.res.tile1.nc' + filename_cplr: '20200825.120000.coupler.res' + +_filenames03: &fv3file_names03 + filename_core: '20200825.090000.fv_core.res.tile1.nc' + filename_trcr: '20200825.090000.fv_tracer.res.tile1.nc' + filename_sfcd: '20200825.090000.sfc_data.nc' + filename_sfcw: '20200825.090000.fv_srf_wnd.res.tile1.nc' + filename_cplr: '20200825.090000.coupler.res' + +_filenames09: &fv3file_names09 + filename_core: '20200825.150000.fv_core.res.tile1.nc' + filename_trcr: '20200825.150000.fv_tracer.res.tile1.nc' + filename_sfcd: '20200825.150000.sfc_data.nc' + filename_sfcw: '20200825.150000.fv_srf_wnd.res.tile1.nc' + filename_cplr: '20200825.150000.coupler.res' + +_geometry: &geometry_configs + namelist filename: DataFix/input_hafs.nml + field metadata override: Data/fieldmetadata/gfs-restart.yaml + akbk: DataFix/fix/akbk65.nc + npx: 721 + npy: 541 + npz: 65 + layout: [10,6] + io_layout: [1,1] + ntiles: 1 + fms initialization: + namelist filename: DataFix/fmsmpp.nml + field table filename: DataFix/field_table + fieldsets: + fieldset: DataFix/dynamics_lam_cmaq.yaml + +cost function: + cost type: 4D-Ens-Var + time window: + begin: &InitialDate '2020-08-25T09:00:00Z' + length: PT6H + subwindow: PT3H + parallel subwindows: false + geometry: + <<: *geometry_configs + analysis variables: &ana_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,water_vapor_mixing_ratio_wrt_moist_air,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio] + background: + states: + - datetime: *InitialDate + filetype: fms restart + datapath: Data/bkg + <<: *fv3file_names03 + state variables: &state_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,water_vapor_mixing_ratio_wrt_moist_air,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio,phis,slmsk,sheleg,vtype,stype,vfrac,stc,smc,snwdph,u_srf,v_srf,f10m] + - datetime: &AnaDate '2020-08-25T12:00:00Z' + filetype: fms restart + datapath: Data/bkg + <<: *fv3file_names + state variables: *state_vars + - datetime: '2020-08-25T15:00:00Z' + filetype: fms restart + datapath: Data/bkg + <<: *fv3file_names09 + state variables: *state_vars + background error: + covariance model: ensemble + members from template: + template: + states: + - datetime: *InitialDate + filetype: fms restart + state variables: *state_vars + datapath: ens/mem%mem%/ + <<: *fv3file_names03 + - datetime: *AnaDate + filetype: fms restart + state variables: *state_vars + datapath: ens/mem%mem%/ + <<: *fv3file_names + - datetime: '2020-08-25T15:00:00Z' + filetype: fms restart + state variables: *state_vars + datapath: ens/mem%mem%/ + <<: *fv3file_names09 + pattern: '%mem%' + nmembers: 5 + zero padding: 3 + localization: + localization method: SABER + saber central block: + saber block name: BUMP_NICAS + active variables: *ana_vars + read: + io: + data directory: Data/bump + files prefix: fv3jedi_bumpparameters_nicas_lam_atm + alias: + - in code: common + in file: t_250km + drivers: + multivariate strategy: duplicated + read local nicas: true + +#------------------------------------------------------------------------------ + observations: + observers: + - obs space: + name: sfcshp + obsdatain: + engine: + type: H5File + obsfile: Data/obs/sfcshp.tm00.singleob.nc + obsdataout: + engine: + type: H5File + obsfile: diag_SFCSHP.prepbufr_singleobs.nc + allow overwrite: true + io pool: + max pool size: 1 + observed variables: [airTemperature] + simulated variables: [airTemperature] + + obs operator: + name: Composite + components: + - name: VertInterp + vertical coordinate: air_pressure + observation vertical coordinate: pressure + observation vertical coordinate group: MetaData + interpolation method: log-linear + variables: + - name: airTemperature + + obs post filters: + - filter: Perform Action + filter variables: + - name: airTemperature + where: + - variable: ObsType/airTemperature + is_in: 180 + action: + name: assign error + error parameter: 0.92823 + defer to post: true + # Adjusted error after initial assignment (qcmod.f90) + - filter: Perform Action + filter variables: + - name: airTemperature + where: + - variable: ObsType/airTemperature + is_in: 180 + action: + name: inflate error + inflation variable: + name: ObsFunction/ObsErrorFactorConventional + options: + test QCflag: PreQC + test QCthreshold: 3 + inflate variables: [airTemperature] + pressure: MetaData/pressure + distance threshold: -1. + defer to post: true + # error inflation based on pressure check + - filter: Perform Action + filter variables: + - name: airTemperature + where: + - variable: ObsType/airTemperature + is_in: 180 + action: + name: inflate error + inflation variable: + name: ObsFunction/ObsErrorFactorPressureCheck + options: + variable: airTemperature + inflation factor: 8.0 + geovar_sfc_geomz: surface_geometric_height + defer to post: true + #- filter: Bounds Check + # filter variables: + # - name: airTemperature + # minvalue: 195.0 + # maxvalue: 327.0 + # action: + # name: reject + #- filter: Background Check + # filter variables: + # - name: airTemperature + # threshold: 7.0 + # absolute threshold: 9.0 + # action: + # name: reject + # defer to post: true + +variational: + minimizer: + algorithm: DRPCG # Derber-Rosati Conjugate Gradients + iterations: + - ninner: 50 + gradient norm reduction: 1e-60 + geometry: + <<: *geometry_configs + diagnostics: + departures: bkgmob +final: + diagnostics: + departures: oman + +output: + filetype: fms restart + datapath: Data/analysis/ + exp: 4denvar + type: an + first: PT0S + date: *InitialDate + frequency: PT3H diff --git a/hafs-test/testinput/sondes_singleob_airTemperature_fv3jedi_3DEnVar.yaml b/hafs-test/testinput/sondes_singleob_airTemperature_fv3jedi_3DEnVar.yaml index 1ab3c05..699f523 100755 --- a/hafs-test/testinput/sondes_singleob_airTemperature_fv3jedi_3DEnVar.yaml +++ b/hafs-test/testinput/sondes_singleob_airTemperature_fv3jedi_3DEnVar.yaml @@ -26,14 +26,14 @@ cost function: namelist filename: DataFix/fmsmpp.nml field table filename: DataFix/field_table <<: *geometry_configs - analysis variables: &ana_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,specific_humidity,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio] + analysis variables: &ana_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,water_vapor_mixing_ratio_wrt_moist_air,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio] background: datetime: &AnaDate '2024-06-30T12:00:00Z' filetype: fms restart datapath: Data/bkg <<: *fv3file_names - state variables: &state_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,specific_humidity,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio,phis,slmsk,sheleg,tsea,vtype,stype,vfrac,stc,smc,snwdph,u_srf,v_srf,f10m] + state variables: &state_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,water_vapor_mixing_ratio_wrt_moist_air,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio,phis,slmsk,sheleg,vtype,stype,vfrac,stc,smc,snwdph,u_srf,v_srf,f10m] background error: covariance model: ensemble members from template: diff --git a/hafs-test/validated_yamls/templates/basic_config/fv3jedi_3denvar.yaml b/hafs-test/validated_yamls/templates/basic_config/fv3jedi_3denvar.yaml index 2f7d61d..88ca037 100755 --- a/hafs-test/validated_yamls/templates/basic_config/fv3jedi_3denvar.yaml +++ b/hafs-test/validated_yamls/templates/basic_config/fv3jedi_3denvar.yaml @@ -26,7 +26,7 @@ cost function: namelist filename: DataFix/fmsmpp.nml field table filename: DataFix/field_table <<: *geometry_configs - analysis variables: &ana_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,specific_humidity,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio] + analysis variables: &ana_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,water_vapor_mixing_ratio_wrt_moist_air,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio] background: @@ -34,7 +34,7 @@ cost function: filetype: fms restart datapath: Data/bkg <<: *fv3file_names - state variables: &state_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,specific_humidity,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio,phis,slmsk,sheleg,tsea,vtype,stype,vfrac,stc,smc,snwdph,u_srf,v_srf,f10m] + state variables: &state_vars [eastward_wind,northward_wind,air_temperature,air_pressure_thickness,water_vapor_mixing_ratio_wrt_moist_air,cloud_liquid_ice,cloud_liquid_water,ozone_mass_mixing_ratio,phis,slmsk,sheleg,vtype,stype,vfrac,stc,smc,snwdph,u_srf,v_srf,f10m] background error: covariance model: ensemble members from template: diff --git a/modulefiles/HDAS/hera.intel.lua b/modulefiles/HDAS/hera.intel.lua index 8ce5c03..d204473 100644 --- a/modulefiles/HDAS/hera.intel.lua +++ b/modulefiles/HDAS/hera.intel.lua @@ -43,6 +43,8 @@ load("fftw/3.3.10") load("fckit/0.11.0") load("fiat/1.2.0") --load("ectrans/1.2.0") +load("fms/2023.04") +load("esmf/8.6.0") load("atlas/0.35.1") load("sp/2.5.0") load("gsl-lite/0.37.0") @@ -61,7 +63,7 @@ load("ncview/2.1.9") load("netcdf-cxx4/4.3.1") load("json/3.10.5") --load("crtm/v2.4_jedi") -load("rocoto/1.3.7") +load("rocoto/1.3.6") load("prod_util/2.1.1") load("py-jinja2/3.0.3") @@ -73,7 +75,7 @@ load("py-scipy/1.11.3") load("py-xarray/2023.7.0") load("py-f90nml/1.4.3") load("py-pip/23.1.2") - +load("py-click/8.1.7") setenv("CC","mpiicc") setenv("FC","mpiifort") @@ -84,8 +86,9 @@ local mpinproc = '-n' setenv('MPIEXEC_EXEC', mpiexec) setenv('MPIEXEC_NPROC', mpinproc) -setenv("CRTM_FIX","/scratch1/NCEPDEV/da/Cory.R.Martin/GDASApp/fix/crtm/2.4.0") -setenv("HDASAPP_TESTDATA","/scratch1/NCEPDEV/da/Cory.R.Martin/CI/GDASApp/data") +setenv("CRTM_FIX","/scratch1/NCEPDEV/da/role.jedipara/GDASApp/fix/crtm/2.4.0") +setenv("HDASAPP_TESTDATA","/scratch1/NCEPDEV/da/role.jedipara/GDASApp/testdata") +setenv("HDASAPP_UNIT_TEST_DATA_PATH", "/scratch1/NCEPDEV/da/role.jedipara/GDASApp/unittestdata") whatis("Name: ".. pkgName) whatis("Version: ".. pkgVersion) diff --git a/sorc/fms b/sorc/fms deleted file mode 160000 index 1f73914..0000000 --- a/sorc/fms +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1f739141ef8b000a0bd75ae8bebfadea340299ba diff --git a/sorc/fv3 b/sorc/fv3 index 47b7662..ab25dc0 160000 --- a/sorc/fv3 +++ b/sorc/fv3 @@ -1 +1 @@ -Subproject commit 47b766295682df2e53b59d0dd07b5c511b84dd67 +Subproject commit ab25dc09d955271f34ca6a3fa83af1093c85d9f7