From ad8c79e2892b8277b160d410bbfc741bfa82e78c Mon Sep 17 00:00:00 2001 From: mos3r3n Date: Sat, 26 Aug 2023 17:57:36 -0600 Subject: [PATCH 01/20] Adding an indirect reflectivity assimilation scheme based on background-dependent hydrometeor retrieval modified: Registry/registry.var modified: var/da/da_radar/da_get_innov_vector_radar.inc modified: var/da/da_radar/da_radar.f90 --- Registry/registry.var | 1 + compile.log | 327 ++++++++++++++++++ var/build/LICENSE | 1 + var/build/Makefile | 1 + var/build/inc/commit_decl | 1 + var/da/da_radar/da_get_innov_vector_radar.inc | 278 +++++++++++++-- var/da/da_radar/da_radar.f90 | 7 +- 7 files changed, 578 insertions(+), 38 deletions(-) create mode 100644 compile.log create mode 120000 var/build/LICENSE create mode 120000 var/build/Makefile create mode 120000 var/build/inc/commit_decl diff --git a/Registry/registry.var b/Registry/registry.var index e3c6c9cfa3..f71f221047 100644 --- a/Registry/registry.var +++ b/Registry/registry.var @@ -170,6 +170,7 @@ rconfig logical use_radar_rv namelist,wrfvar4 1 .false. - "rad rconfig logical use_radar_rf namelist,wrfvar4 1 .false. - "reflectivity" "" "" rconfig logical use_radar_rqv namelist,wrfvar4 1 .false. - "retrieved water vapor" "" "" rconfig logical use_radar_rhv namelist,wrfvar4 1 .false. - "retr. hydrometeor var" "" "" +rconfig logical radar_rhv_opt namelist,wrfvar4 1 1 - "hydrometeor retrieval option" "2 is for background-dependent scheme" "" rconfig integer radar_rf_opt namelist,wrfvar4 1 1 - "reflectivity DA option" "" "" rconfig real rf_qthres namelist,wrfvar4 1 1e-12 - "mixing ratio threshold" "" "" rconfig real rfmin namelist,wrfvar4 1 0.0 - "min rf for no-rain echo" "" "" diff --git a/compile.log b/compile.log new file mode 100644 index 0000000000..04d5a707ce --- /dev/null +++ b/compile.log @@ -0,0 +1,327 @@ +Neither WRF_EM_CORE nor WRF_PLUS_CORE + are explicitly specified in shell environment.... + +Will compile with CRTM library + + +============================================================================================== + +V4.5.1 +git commit ed0047d1af6a4f17353f65f11d69488ec795b098 3 files changed, 248 insertions(+), 38 deletions(-) + +Compiling: WRF_DA_CORE WRF_EM_CORE +WRFIO_NCD_LARGE_FILE_SUPPORT=1 + +Linux cheyenne6 4.12.14-95.51-default #1 SMP Fri Apr 17 08:14:12 UTC 2020 (c6bab98) x86_64 x86_64 x86_64 GNU/Linux + +Intel(R) Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 19.0.5.281 Build 20190815 +Copyright (C) 1985-2019 Intel Corporation. All rights reserved. +ifort: warning #10315: specifying -lm before files may supersede the Intel(R) math library and affect performance + +GNU ld (GNU Binutils; SUSE Linux Enterprise 12) 2.32.0.20190909-9.36 +/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: /glade/u/apps/opt/intel/2019u5/compilers_and_libraries_2019.5.281/linux/compiler/lib/intel64_lin/for_main.o: in function `main': +for_main.c:(.text+0x2e): undefined reference to `MAIN__' + +============================================================================================== + +setting parallel make -j 2 +make -i -r MODULE_DIRS=" -I/glade/work/taosun/model/V4.5/WRF/external/esmf_time_f90 -I/glade/work/taosun/model/V4.5/WRF/main -I/glade/work/taosun/model/V4.5/WRF/external/io_netcdf -I/glade/work/taosun/model/V4.5/WRF/external/io_int -I/glade/work/taosun/model/V4.5/WRF/frame -I/glade/work/taosun/model/V4.5/WRF/share -I/glade/work/taosun/model/V4.5/WRF/phys -I/glade/work/taosun/model/V4.5/WRF/wrftladj -I/glade/work/taosun/model/V4.5/WRF/chem -I/glade/work/taosun/model/V4.5/WRF/inc -I/glade/u/apps/ch/opt/netcdf/4.7.4/intel/19.0.5/include " ext +make[1]: Entering directory '/glade/work/taosun/model/V4.5/WRF' +-------------------------------------- +if [ 0 -eq 0 ] ; then \ + ( cd frame ; make -i -r externals ) ; \ +else \ + ( cd frame ; make -i -r PLUSFLAG="-DWRFPLUS=1" externals ) ; \ +fi +make[2]: Entering directory '/glade/work/taosun/model/V4.5/WRF/frame' +( cd /glade/work/taosun/model/V4.5/WRF/external/esmf_time_f90 ; \ + make -j 2 FC="ifort -r8 -real-size `expr 8 \* 8` -i4 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian " RANLIB="ranlib" \ + CPP="/lib/cpp -P -nostdinc -I/glade/work/taosun/model/V4.5/WRF/inc -I. -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT" AR="ar" ARFLAGS="ru" ) +make[3]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/esmf_time_f90' +make[3]: Nothing to be done for 'default'. +make[3]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/esmf_time_f90' +( cd /glade/work/taosun/model/V4.5/WRF/external/io_netcdf ; \ + make -j 2 NETCDFPATH="/glade/u/apps/ch/opt/netcdf/4.7.4/intel/19.0.5" RANLIB="ranlib" CPP="/lib/cpp -P -nostdinc" \ + CC="icc" CFLAGS="-w -O3 -ip -DRPC_TYPES=1 -DDM_PARALLEL -DLANDREAD_STUB=1 -DMAX_HISTORY=25 -DNMM_CORE=0" \ + FC="ifort -r8 -real-size `expr 8 \* 8` -i4 -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian " TRADFLAG="-traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT" AR="ar" ARFLAGS="ru" ) +make[3]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_netcdf' +make[3]: Nothing to be done for 'all'. +make[3]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_netcdf' +( cd /glade/work/taosun/model/V4.5/WRF/external/ioapi_share ; \ + make -i -r NATIVE_RWORDSIZE="4" RWORDSIZE="8" AR="ar" ARFLAGS="ru" ) +make[3]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/ioapi_share' +make[3]: Nothing to be done for 'all'. +make[3]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/ioapi_share' +( cd /glade/work/taosun/model/V4.5/WRF/external/io_grib_share ; \ + make -j 2 CC="icc" CFLAGS="-w -O3 -ip -DRPC_TYPES=1 -DDM_PARALLEL -DLANDREAD_STUB=1 -DMAX_HISTORY=25 -DNMM_CORE=0" RM="rm -f" RANLIB="ranlib" CPP="/lib/cpp -P -nostdinc" \ + FC="ifort -r8 -real-size `expr 8 \* 8` -i4 -I. -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian " TRADFLAG="-traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT" AR="ar" ARFLAGS="ru" archive) +make[3]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib_share' +make[4]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib_share' +ar ru ./libio_grib_share.a io_grib_share.o get_region_center.o gridnav.o open_file.o +ranlib ./libio_grib_share.a +make[4]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib_share' +make[3]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib_share' +( cd /glade/work/taosun/model/V4.5/WRF/external/io_grib1 ; \ + make -j 2 CC="icc" CFLAGS="-w -O3 -ip -DRPC_TYPES=1 -DDM_PARALLEL -DLANDREAD_STUB=1 -DMAX_HISTORY=25 -DNMM_CORE=0" RM="rm -f" RANLIB="ranlib" CPP="/lib/cpp -P -nostdinc" \ + FC="ifort -r8 -real-size `expr 8 \* 8` -i4 -I. -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian " TRADFLAG="-traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT" AR="ar" ARFLAGS="ru" archive) +make[3]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1' + Doing make archive on library subdirectory MEL_grib1 +make[4]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/MEL_grib1' +make[5]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/MEL_grib1' +ar ru ../libio_grib1.a FTP_getfile.o apply_bitmap.o display_gribhdr.o gbyte.o grib_dec.o grib_enc.o grib_seek.o gribgetbds.o gribgetbms.o gribgetgds.o gribgetpds.o gribhdr2file.o gribputbds.o gribputgds.o gribputpds.o hdr_print.o init_dec_struct.o init_enc_struct.o init_gribhdr.o init_struct.o ld_dec_lookup.o ld_enc_input.o ld_enc_lookup.o ld_grib_origctrs.o make_default_grbfn.o make_grib_log.o map_lvl.o map_parm.o pack_spatial.o prt_inp_struct.o upd_child_errmsg.o prt_badmsg.o swap.o grib_uthin.o set_bytes.o +ranlib ../libio_grib1.a +make[5]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/MEL_grib1' +make[4]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/MEL_grib1' + Doing make archive on library subdirectory grib1_util +make[4]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/grib1_util' +make[5]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/grib1_util' +ar ru ../libio_grib1.a alloc_2d.o read_grib.o write_grib.o +ranlib ../libio_grib1.a +make[5]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/grib1_util' +make[4]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/grib1_util' + Doing make archive on library subdirectory WGRIB +make[4]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/WGRIB' +make[4]: Nothing to be done for 'archive'. +make[4]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/WGRIB' +make[4]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1' +ar ru ./libio_grib1.a grib1_routines.o gribmap.o io_grib1.o trim.o +ranlib ./libio_grib1.a +make[4]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1' +make[3]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1' +( cd /glade/work/taosun/model/V4.5/WRF/external/io_int ; \ + make -j 2 CC="mpicc -cc=icc -DFSEEKO64_OK " CFLAGS_LOCAL="-w -O3 -ip -DRPC_TYPES=1 " RM="rm -f" RANLIB="ranlib" CPP="/lib/cpp -P -nostdinc" \ + FC="time mpif90 -f90=ifort -r8 -real-size `expr 8 \* 8` -i4 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian " FGREP="fgrep -iq" \ + TRADFLAG="-traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT" AR="ar" ARFLAGS="ru" ARCHFLAGS="-DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0" all ) +make[3]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_int' +Diffwrf io_int will be built later on in this compile. No need to rerun compile. +Diffwrf io_int will be built later on in this compile. No need to rerun compile. +Diffwrf io_int will be built later on in this compile. No need to rerun compile. +Diffwrf io_int will be built later on in this compile. No need to rerun compile. +if [ -f ../../frame/pack_utils.o -a -f ../../frame/clog.o ] ; then \ + time mpif90 -f90=ifort -r8 -real-size 64 -i4 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -I../ioapi_share -o diffwrf diffwrf.f \ + ../../frame/pack_utils.o ../../frame/module_internal_header_util.o ../../frame/module_driver_constants.o ../../frame/module_machine.o ../../frame/module_wrf_error.o ../../frame/wrf_debug.o libwrfio_int.a ; \ +fi +make[3]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_int' +( cd /glade/work/taosun/model/V4.5/WRF/external/fftpack/fftpack5 ; \ + make -j 2 FC="ifort" FFLAGS="-r8 -real-size `expr 8 \* 8` -i4 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian " RANLIB="ranlib" AR="ar" \ + ARFLAGS="ru" CPP="/lib/cpp -P -nostdinc" CPPFLAGS="-DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT " RM="rm -f" ) +make[3]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/fftpack/fftpack5' +ar ru libfftpack.a c1f2kb.o cfft1b.o cmf3kf.o cosqb1.o costmi.o dcosq1f.o dfftb1.o mradb2.o mrfti1.o r1fgkf.o rfft2i.o sinqmi.o z1f2kf.o zfft1f.o zmf4kb.o c1f2kf.o cfft1f.o cmf4kb.o cosqf1.o d1f2kb.o dcosq1i.o dfftf1.o mradb3.o msntb1.o r4_factor.o rfftb1.o sint1b.o z1f3kb.o zfft1i.o zmf4kf.o c1f3kb.o cfft1i.o cmf4kf.o cosqmb.o d1f2kf.o dcosqb1.o dffti1.o mradb4.o msntf1.o r4_mcfti1.o rfftf1.o sint1f.o z1f3kf.o zfft2b.o zmf5kb.o c1f3kf.o cfft2b.o cmf5kb.o cosqmf.o d1f3kb.o dcosqf1.o dsint1b.o mradb5.o r1f2kb.o r4_tables.o rffti1.o sint1i.o z1f4kb.o zfft2f.o zmf5kf.o c1f4kb.o cfft2f.o cmf5kf.o cosqmi.o d1f3kf.o dcost1b.o dsint1f.o mradbg.o r1f2kf.o r8_factor.o rfftmb.o sintb1.o z1f4kf.o zfft2i.o zmfgkb.o c1f4kf.o cfft2i.o cmfgkb.o cost1b.o d1f4kb.o dcost1f.o dsint1i.o mradf2.o r1f3kb.o r8_mcfti1.o rfftmf.o sintf1.o z1f5kb.o zfftmb.o zmfgkf.o c1f5kb.o cfftmb.o cmfgkf.o cost1f.o d1f4kf.o dcost1i.o dsintb1.o mradf3.o r1f3kf.o r8_tables.o rfftmi.o sintmb.o z1f5kf.o zfftmf.o zmfm1b.o c1f5kf.o cfftmf.o cmfm1b.o cost1i.o d1f5kb.o dcostb1.o dsintf1.o mradf4.o r1f4kb.o rfft1b.o sinq1b.o sintmf.o z1fgkb.o zfftmi.o zmfm1f.o c1fgkb.o cfftmi.o cmfm1f.o costb1.o d1f5kf.o dcostf1.o mcsqb1.o mradf5.o r1f4kf.o rfft1f.o sinq1f.o sintmi.o z1fgkf.o zmf2kb.o c1fgkf.o cmf2kb.o cosq1b.o costf1.o d1fgkb.o dfft1b.o mcsqf1.o mradfg.o r1f5kb.o rfft1i.o sinq1i.o xercon.o z1fm1b.o zmf2kf.o c1fm1b.o cmf2kf.o cosq1f.o costmb.o d1fgkf.o dfft1f.o mcstb1.o mrftb1.o r1f5kf.o rfft2b.o sinqmb.o xerfft.o z1fm1f.o zmf3kb.o c1fm1f.o cmf3kb.o cosq1i.o costmf.o dcosq1b.o dfft1i.o mcstf1.o mrftf1.o r1fgkb.o rfft2f.o sinqmf.o z1f2kb.o zfft1b.o zmf3kf.o +ranlib libfftpack.a +make[3]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/fftpack/fftpack5' +( if [ ! -e /glade/work/taosun/model/V4.5/WRF/tools/gen_comms.c ] ; then \ + /bin/cp /glade/work/taosun/model/V4.5/WRF/tools/gen_comms_warning /glade/work/taosun/model/V4.5/WRF/tools/gen_comms.c ; \ + cat /glade/work/taosun/model/V4.5/WRF/external/RSL_LITE/gen_comms.c >> /glade/work/taosun/model/V4.5/WRF/tools/gen_comms.c ; fi ) +( if [ ! -e module_dm.F ] ; then /bin/cp module_dm_warning module_dm.F ; \ + cat /glade/work/taosun/model/V4.5/WRF/external/RSL_LITE/module_dm.F >> module_dm.F ; fi ) +make[2]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/frame' +make[1]: Leaving directory '/glade/work/taosun/model/V4.5/WRF' +make -i -r MODULE_DIRS=" -I/glade/work/taosun/model/V4.5/WRF/external/esmf_time_f90 -I/glade/work/taosun/model/V4.5/WRF/main -I/glade/work/taosun/model/V4.5/WRF/external/io_netcdf -I/glade/work/taosun/model/V4.5/WRF/external/io_int -I/glade/work/taosun/model/V4.5/WRF/frame -I/glade/work/taosun/model/V4.5/WRF/share -I/glade/work/taosun/model/V4.5/WRF/phys -I/glade/work/taosun/model/V4.5/WRF/wrftladj -I/glade/work/taosun/model/V4.5/WRF/chem -I/glade/work/taosun/model/V4.5/WRF/inc -I/glade/u/apps/ch/opt/netcdf/4.7.4/intel/19.0.5/include " toolsdir +make[1]: Entering directory '/glade/work/taosun/model/V4.5/WRF' +-------------------------------------- +if [ 0 -eq 0 ] ; then \ + ( cd tools ; make -i -r CC_TOOLS_CFLAGS="-DNMM_CORE=0" CC_TOOLS="icc -DIWORDSIZE=4 -DMAX_HISTORY=25" ) ; \ +else \ + ( cd tools ; make -i -r CC_TOOLS_CFLAGS="-DNMM_CORE=0" CC_TOOLS="icc -DIWORDSIZE=4 -DMAX_HISTORY=25 -DWRFPLUS=1" ) ; \ +fi +make[2]: Entering directory '/glade/work/taosun/model/V4.5/WRF/tools' +make[2]: 'registry' is up to date. +make[2]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/tools' +make[1]: Leaving directory '/glade/work/taosun/model/V4.5/WRF' +if [ 1 -ne 0 ] ; then \ + (cd var/external/crtm_2.3.0; make -i -r -j 2) ; \ +fi +make[1]: Entering directory '/glade/work/taosun/model/V4.5/WRF/var/external/crtm_2.3.0' +make[2]: Entering directory '/glade/work/taosun/model/V4.5/WRF/var/external/crtm_2.3.0/libsrc' +makefile:32: warning: overriding recipe for target '.f90.o' +../../../../configure.wrf:419: warning: ignoring old recipe for target '.f90.o' +make[2]: Nothing to be done for 'all'. +make[2]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/var/external/crtm_2.3.0/libsrc' +make[1]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/var/external/crtm_2.3.0' +if [ 1 ] ; then \ + (cd var/external/bufr; \ + make -i -r -j 2 FC="ifort" CC="icc" CPP="/lib/cpp -P -nostdinc" CPPFLAGS="-DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT " CFLAGS="-w -O3 -ip -DRPC_TYPES=1 -DDM_PARALLEL -DLANDREAD_STUB=1 -DMAX_HISTORY=25 -DNMM_CORE=0" FFLAGS="-O3 -FI " RANLIB="ranlib" AR="ar" ARFLAGS="ru" ) ; \ +fi +make[1]: Entering directory '/glade/work/taosun/model/V4.5/WRF/var/external/bufr' +ar ru libbufr.a adn30.o atrcpt.o bfrini.o blocks.o bort.o bort2.o bort_exit.o bvers.o cadn30.o capit.o ccbfl.o chekstab.o chrtrn.o chrtrna.o cktaba.o closbf.o closmg.o cmpia.o cmpmsg.o cmsgini.o cnved4.o cobfl.o conwin.o copybf.o copymg.o copysb.o cpbfdx.o cpdxmm.o cpymem.o cpyupd.o crbmg.o cread.o cwbmg.o datebf.o datelen.o digit.o drfini.o drstpl.o dumpbf.o dxdump.o dxinit.o dxmini.o elemdx.o errwrt.o getabdb.o getbmiss.o getlens.o getntbe.o gets1loc.o gettagpr.o gettbh.o getvalnb.o getwin.o i4dy.o ibfms.o icbfms.o ichkstr.o icmpdx.o icopysb.o icvidx.o idn30.o idxmsg.o ifbget.o ifxy.o igetdate.o igetfxy.o igetntbi.o igetntbl.o igetsc.o igettdi.o inctab.o invcon.o invmrg.o invtag.o invwin.o iok2cpy.o ipkm.o ipks.o ireadmg.o ireadmm.o ireadns.o ireadsb.o irev.o ishrdx.o isize.o istdesc.o iupb.o iupbs01.o iupbs3.o iupm.o iupvs01.o jstchr.o jstnum.o lcmgdf.o lmsg.o lstjpb.o makestab.o maxout.o mesgbc.o mesgbf.o minimg.o mrginv.o msgfull.o msgini.o msgupd.o msgwrt.o mtinfo.o mvb.o nemock.o nemtab.o nemtba.o nemtbax.o nemtbb.o nemtbd.o nenubd.o nevn.o newwin.o nmsub.o nmwrd.o numbck.o nummtb.o numtab.o numtbd.o nvnwin.o nwords.o nxtwin.o openbf.o openbt.o openmb.o openmg.o pad.o padmsg.o parstr.o parusr.o parutg.o pkb.o pkbs1.o pkc.o pkftbv.o pktdd.o pkvs01.o posapx.o rbytes.o rcstpl.o rdbfdx.o rdcmps.o rdmemm.o rdmems.o rdmgsb.o rdmsgb.o rdmsgw.o rdmtbb.o rdmtbd.o rdtree.o rdusdx.o readdx.o readerme.o readlc.o readmg.o readmm.o readmt.o readns.o reads3.o readsb.o restd.o rewnbf.o rjust.o rsvfvm.o rtrcpt.o seqsdx.o setblock.o setbmiss.o sntbbe.o sntbde.o status.o stbfdx.o stdmsg.o stndrd.o stntbi.o stntbia.o strcln.o strcpt.o string.o strnum.o strsuc.o stseq.o tabent.o tabsub.o trybump.o ufbcnt.o ufbcpy.o ufbcup.o ufbdmp.o ufbevn.o ufbget.o ufbin3.o ufbint.o ufbinx.o ufbmem.o ufbmex.o ufbmms.o ufbmns.o ufbovr.o ufbpos.o ufbqcd.o ufbqcp.o ufbrep.o ufbrms.o ufbrp.o ufbrw.o ufbseq.o ufbsp.o ufbstp.o ufbtab.o ufbtam.o ufdump.o upb.o upbb.o upc.o upds3.o upftbv.o ups.o uptdd.o usrtpl.o valx.o wrcmps.o wrdesc.o wrdlen.o wrdxtb.o writcp.o writdx.o writlc.o writsa.o writsb.o wrtree.o wtstat.o +ranlib libbufr.a +make[1]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/var/external/bufr' +if [ ] ; then \ + ( cd var/external/wavelet; \ + make CC=" -DNOUNDERSCORE" RM="rm -f" libWavelet.a; \ + make FC="time mpif90 -f90=ifort" RM="rm -f" lib_wavelet.a ) ; \ +fi +( cd var/build; make depend; make -i -r -j 2 all_wrfvar ) +make[1]: Entering directory '/glade/work/taosun/model/V4.5/WRF/var/build' +da.make:316: warning: overriding recipe for target 'da_update_bc.o' +da.make:309: warning: ignoring old recipe for target 'da_update_bc.o' +makefile:58: warning: overriding recipe for target '.f90.o' +../../configure.wrf:419: warning: ignoring old recipe for target '.f90.o' +make[1]: 'depend' is up to date. +make[1]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/var/build' +make[1]: Entering directory '/glade/work/taosun/model/V4.5/WRF/var/build' +da.make:316: warning: overriding recipe for target 'da_update_bc.o' +da.make:309: warning: ignoring old recipe for target 'da_update_bc.o' +makefile:58: warning: overriding recipe for target '.f90.o' +../../configure.wrf:419: warning: ignoring old recipe for target '.f90.o' +rm -f da_radar.o +make[1]: Circular da_chem_sfc.o <- da_obs.o dependency dropped. +/glade/work/taosun/model/V4.5/WRF/tools/standard.exe da_radar.f90 > da_radar.b +/lib/cpp -P -nostdinc -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -I/glade/work/taosun/model/V4.5/WRF/inc da_radar.b > da_radar.f +rm -f da_radar.b +if fgrep -iq '!$OMP' da_radar.f ; then \ + if [ -n "" ] ; then echo COMPILING da_radar.f90 WITH OMP ; fi ; \ + time mpif90 -f90=ifort -o da_radar.o -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 da_radar.f ; \ + else \ + if [ -n "" ] ; then echo COMPILING da_radar.f90 WITHOUT OMP ; fi ; \ + time mpif90 -f90=ifort -o da_radar.o -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 da_radar.f ; \ + fi + +real 0m12.652s +user 0m11.686s +sys 0m0.479s +rm -f da_obs.o +/glade/work/taosun/model/V4.5/WRF/tools/standard.exe da_obs.f90 > da_obs.b +/lib/cpp -P -nostdinc -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -I/glade/work/taosun/model/V4.5/WRF/inc da_obs.b > da_obs.f +rm -f da_obs.b +if fgrep -iq '!$OMP' da_obs.f ; then \ + if [ -n "" ] ; then echo COMPILING da_obs.f90 WITH OMP ; fi ; \ + time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_obs.f ; \ + else \ + if [ -n "" ] ; then echo COMPILING da_obs.f90 WITHOUT OMP ; fi ; \ + time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_obs.f ; \ + fi + +real 0m8.387s +user 0m7.494s +sys 0m0.374s +rm -f da_obs_io.o +/glade/work/taosun/model/V4.5/WRF/tools/standard.exe da_obs_io.f90 > da_obs_io.b +/lib/cpp -P -nostdinc -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -I/glade/work/taosun/model/V4.5/WRF/inc da_obs_io.b > da_obs_io.f +rm -f da_obs_io.b +if fgrep -iq '!$OMP' da_obs_io.f ; then \ + if [ -n "" ] ; then echo COMPILING da_obs_io.f90 WITH OMP ; fi ; \ + time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_obs_io.f ; \ + else \ + if [ -n "" ] ; then echo COMPILING da_obs_io.f90 WITHOUT OMP ; fi ; \ + time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_obs_io.f ; \ + fi + +real 1m5.739s +user 1m4.579s +sys 0m0.916s +rm -f da_setup_structures.o +/glade/work/taosun/model/V4.5/WRF/tools/standard.exe da_setup_structures.f90 > da_setup_structures.b +/lib/cpp -P -nostdinc -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -I/glade/work/taosun/model/V4.5/WRF/inc da_setup_structures.b > da_setup_structures.f +rm -f da_setup_structures.b +if fgrep -iq '!$OMP' da_setup_structures.f ; then \ + if [ -n "" ] ; then echo COMPILING da_setup_structures.f90 WITH OMP ; fi ; \ + time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_setup_structures.f ; \ + else \ +if [ -n "" ] ; then echo COMPILING da_setup_structures.f90 WITHOUT OMP ; fi ; \ + time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_setup_structures.f ; \ + fi + +real 1m37.116s +user 1m35.601s +sys 0m0.892s +rm -f da_transfer_model.o +/glade/work/taosun/model/V4.5/WRF/tools/standard.exe da_transfer_model.f90 > da_transfer_model.b +/lib/cpp -P -nostdinc -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -I/glade/work/taosun/model/V4.5/WRF/inc da_transfer_model.b > da_transfer_model.f +In file included from da_transfer_model.b:137:0: +da_transfer_xatowrf.inc:715:0: warning: extra tokens at end of #else directive [enabled by default] + #else !! not var4d !! + ^ +rm -f da_transfer_model.b +if fgrep -iq '!$OMP' da_transfer_model.f ; then \ + if [ -n "" ] ; then echo COMPILING da_transfer_model.f90 WITH OMP ; fi ; \ + time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_transfer_model.f ; \ + else \ + if [ -n "" ] ; then echo COMPILING da_transfer_model.f90 WITHOUT OMP ; fi ; \ + time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_transfer_model.f ; \ + fi + +real 0m42.004s +user 0m40.376s +sys 0m0.623s +rm -f da_minimisation.o +/glade/work/taosun/model/V4.5/WRF/tools/standard.exe da_minimisation.f90 > da_minimisation.b +/lib/cpp -P -nostdinc -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -I/glade/work/taosun/model/V4.5/WRF/inc da_minimisation.b > da_minimisation.f +rm -f da_minimisation.b +if fgrep -iq '!$OMP' da_minimisation.f ; then \ + if [ -n "" ] ; then echo COMPILING da_minimisation.f90 WITH OMP ; fi ; \ + time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_minimisation.f ; \ + else \ + if [ -n "" ] ; then echo COMPILING da_minimisation.f90 WITHOUT OMP ; fi ; \ + time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_minimisation.f ; \ + fi + +real 0m8.794s +user 0m7.374s +sys 0m0.455s +rm -f da_test.o +/glade/work/taosun/model/V4.5/WRF/tools/standard.exe da_test.f90 > da_test.b +/lib/cpp -P -nostdinc -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -I/glade/work/taosun/model/V4.5/WRF/inc da_test.b > da_test.f +rm -f da_test.b +if fgrep -iq '!$OMP' da_test.f ; then \ + if [ -n "" ] ; then echo COMPILING da_test.f90 WITH OMP ; fi ; \ + time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_test.f ; \ + else \ + if [ -n "" ] ; then echo COMPILING da_test.f90 WITHOUT OMP ; fi ; \ + time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_test.f ; \ + fi + +real 0m24.385s +user 0m23.550s +sys 0m0.516s +rm -f da_wrfvar_top.o +/glade/work/taosun/model/V4.5/WRF/tools/standard.exe da_wrfvar_top.f90 > da_wrfvar_top.b +/lib/cpp -P -nostdinc -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -I/glade/work/taosun/model/V4.5/WRF/inc da_wrfvar_top.b > da_wrfvar_top.f +rm -f da_wrfvar_top.b +if fgrep -iq '!$OMP' da_wrfvar_top.f ; then \ + if [ -n "" ] ; then echo COMPILING da_wrfvar_top.f90 WITH OMP ; fi ; \ + time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc -I/glade/u/apps/ch/opt/netcdf/4.7.4/intel/19.0.5//include da_wrfvar_top.f ; \ + else \ + if [ -n "" ] ; then echo COMPILING da_wrfvar_top.f90 WITHOUT OMP ; fi ; \ + time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc -I/glade/u/apps/ch/opt/netcdf/4.7.4/intel/19.0.5//include da_wrfvar_top.f ; \ + fi + +real 0m48.714s +user 0m47.196s +sys 0m1.091s +rm -f libwrfvar.a +rm -f da_wrfvar_main.o +ar ru libwrfvar.a copyfile.o amsr2time_.o da_blas.o da_lapack.o da_par_util.o da_par_util1.o da_setup_structures.o da_transfer_model.o da_minimisation.o da_vtox_transforms.o da_obs.o da_chem_sfc.o da_obs_io.o da_join_iv_for_multi_inc.o da_metar.o da_geoamv.o da_polaramv.o da_ships.o da_synop.o da_sound.o da_mtgirs.o da_tamdar.o da_varbc_tamdar.o da_bogus.o da_airep.o da_pilot.o da_radar.o da_rain.o da_gpspw.o da_gpsref.o da_gpseph.o da_ssmi.o module_ssmi.o da_satem.o da_qscat.o da_pseudo.o da_profiler.o da_buoy.o da_dynamics.o da_physics.o f_qv_from_rh.o da_ffts.o module_ffts.o da_test.o da_tools.o da_tools_serial.o da_wrf_interfaces.o da_rsl_interfaces.o da_mat_cv3.o da_rf_cv3.o da_rfz_cv3.o da_recursive_filter.o da_wavelet.o da_interpolation.o da_grid_definitions.o da_statistics.o da_define_structures.o gamma1.o da_spectral.o da_radiance.o da_radiance1.o da_rttov.o da_crtm.o da_varbc.o module_radiance.o da_tracing.o gsi_kinds.o gsi_constants.o gsi_thinning.o mod_clddet_geoir.o da_wrfvar_io.o da_airsr.o da_wrfvar_top.o da_reporting.o da_4dvar.o module_wrf_error.o module_configure.o module_state_description.o module_timing.o module_driver_constants.o module_domain.o module_machine.o module_symbols_util.o module_utility.o module_domain_type.o module_date_time.o module_io_wrf.o module_io.o module_io_domain.o module_io_quilt.o module_dm.o module_comm_dm.o module_bc.o module_model_constants.o module_nesting.o module_tiles.o module_get_file_names.o module_bc_time_utilities.o landread.o da_memory.o wrf_debug.o set_timekeeping.o wrf_shutdown.o init_modules.o mediation_wrfmain.o mediation_integrate.o wrf_num_bytes_between.o input_wrf.o wrf_bdyin.o wrf_bdyout.o output_wrf.o wrf_ext_read_field.o wrf_ext_write_field.o collect_on_comm.o start_domain.o hires_timer.o module_streams.o module_comm_dm.o module_comm_dm_0.o module_comm_dm_1.o module_comm_dm_2.o module_comm_dm_3.o module_comm_dm_4.o module_alloc_space_0.o module_alloc_space_1.o module_alloc_space_2.o module_alloc_space_3.o module_alloc_space_4.o module_alloc_space_5.o module_alloc_space_6.o module_alloc_space_7.o module_alloc_space_8.o module_alloc_space_9.o nl_get_0_routines.o nl_get_1_routines.o nl_get_2_routines.o nl_get_3_routines.o nl_get_4_routines.o nl_get_5_routines.o nl_get_6_routines.o nl_get_7_routines.o nl_set_0_routines.o nl_set_1_routines.o nl_set_2_routines.o nl_set_3_routines.o nl_set_4_routines.o nl_set_5_routines.o nl_set_6_routines.o nl_set_7_routines.o interp_fcn.o sint.o da_netcdf_interface.o +/glade/work/taosun/model/V4.5/WRF/tools/standard.exe da_wrfvar_main.f90 > da_wrfvar_main.b +ar: creating libwrfvar.a +/lib/cpp -P -nostdinc -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -I/glade/work/taosun/model/V4.5/WRF/inc da_wrfvar_main.b > da_wrfvar_main.f +rm -f da_wrfvar_main.b +if fgrep -iq '!$OMP' da_wrfvar_main.f ; then \ + if [ -n "" ] ; then echo COMPILING da_wrfvar_main.f90 WITH OMP ; fi ; \ + time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc -I/glade/u/apps/ch/opt/netcdf/4.7.4/intel/19.0.5//include da_wrfvar_main.f ; \ + else \ + if [ -n "" ] ; then echo COMPILING da_wrfvar_main.f90 WITHOUT OMP ; fi ; \ + time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc -I/glade/u/apps/ch/opt/netcdf/4.7.4/intel/19.0.5//include da_wrfvar_main.f ; \ + fi + +real 0m0.513s +user 0m0.161s +sys 0m0.235s +ranlib libwrfvar.a +rm -f da_wrfvar.exe + +real 0m5.261s +user 0m0.559s +sys 0m4.043s +make[1]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/var/build' +( cd var/obsproc; make -i -r -j 2 BUFR_CPP="-DBUFR" ) +make[1]: Entering directory '/glade/work/taosun/model/V4.5/WRF/var/obsproc' +( cd src ; make -f Makefile -j 2 obsproc.exe ) +make[2]: Entering directory '/glade/work/taosun/model/V4.5/WRF/var/obsproc/src' +make[2]: warning: -jN forced in submake: disabling jobserver mode. +make[2]: 'obsproc.exe' is up to date. +make[2]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/var/obsproc/src' +( /bin/rm -f obsproc.exe ; ln -s src/obsproc.exe . ) +make[1]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/var/obsproc' +build started: Thu Aug 24 22:27:04 MDT 2023 +build completed: Thu Aug 24 22:32:24 MDT 2023 diff --git a/var/build/LICENSE b/var/build/LICENSE new file mode 120000 index 0000000000..b916dd28ca --- /dev/null +++ b/var/build/LICENSE @@ -0,0 +1 @@ +../../external/esmf_time_f90/LICENSE \ No newline at end of file diff --git a/var/build/Makefile b/var/build/Makefile new file mode 120000 index 0000000000..32a5d891c3 --- /dev/null +++ b/var/build/Makefile @@ -0,0 +1 @@ +../../external/esmf_time_f90/Makefile \ No newline at end of file diff --git a/var/build/inc/commit_decl b/var/build/inc/commit_decl new file mode 120000 index 0000000000..023ea77880 --- /dev/null +++ b/var/build/inc/commit_decl @@ -0,0 +1 @@ +/glade/work/taosun/model/V4.5/WRF/inc/commit_decl \ No newline at end of file diff --git a/var/da/da_radar/da_get_innov_vector_radar.inc b/var/da/da_radar/da_get_innov_vector_radar.inc index 44fcc0c83f..c0be817fd3 100644 --- a/var/da/da_radar/da_get_innov_vector_radar.inc +++ b/var/da/da_radar/da_get_innov_vector_radar.inc @@ -50,7 +50,7 @@ subroutine da_get_innov_vector_radar (it, grid, ob, iv) integer :: irv, irvf integer :: irf, irff - real :: alog_10, czr,czs,czg, zrr,zds,zws,zg,rze + real :: alog_10, czr, czds, czws, czg, zrr, zds, zws, zg, rze real :: ob_radar_rf, bg_rze, bg_rf real :: cwr, cws ! weighting coefficient for mixing ratio @@ -63,6 +63,24 @@ subroutine da_get_innov_vector_radar (it, grid, ob, iv) logical :: echo_non_precip, echo_rf_good + !--------------------------------------------------------- + ! for background-dependent hydrmeteor retrieval scheme + !--------------------------------------------------------- + character(len=filename_len) :: hydro_weight_filename + integer :: hydro_weight_unit + integer :: ii, jj, kk, sort, nk + logical :: gr_exist + logical :: file_exist + real :: zerr_os,zews_os,zeds_os,zegr_os + real, allocatable :: count_rr(:,:) + real, allocatable :: ratio_qr(:,:) + real, allocatable :: ze_qr(:,:) + real, allocatable :: ratio_qds(:,:), ratio_qws(:,:) + real, allocatable :: ze_qds(:,:), ze_qws(:,:) + real, allocatable :: ratio_qg(:,:) + real, allocatable :: ze_qg(:,:) + real, allocatable :: rho_s(:,:) + !------------------------ ! for jung et al 2008 !------------------------ @@ -240,6 +258,119 @@ END IF end do end if ! lcl for use_radar_rqv + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + ! background-dependent hydroemetor retrieval scheme ! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + if (use_radar_rhv .and. radar_rhv_opt == 2 ) then + ! allocate variables + allocate (count_rr(kde,6)) + allocate (ratio_qr(kde,6)) + allocate (ratio_qds(kde,6)) + allocate (ratio_qws(kde,6)) + allocate (ratio_qg(kde,6)) + allocate (ze_qr(kde,6)) + allocate (ze_qds(kde,6)) + allocate (ze_qws(kde,6)) + allocate (ze_qg(kde,6)) + allocate (rho_s(kde,6)) + + ! variable initialization + count_rr = 0. + ze_qr = 0. + ze_qws = 0. + ze_qds = 0. + ze_qg = 0. + rho_s = 0. + ratio_qr = 0. + ratio_qws = 0. + ratio_qds = 0. + ratio_qg = 0. + + ! read in historical stastics from file hydro_mean.dat if available + hydro_weight_filename='hydro_mean.dat' + inquire(file=trim(hydro_weight_filename), exist=file_exist) + if (file_exist) then + ! write(*,*) "Read historical statistics of hydrometeors" + call da_get_unit(hydro_weight_unit) + open(unit=hydro_weight_unit, file=trim(hydro_weight_filename), form='FORMATTED') + do sort=1,6 + do kk=kds,kde + read(hydro_weight_unit,'(4(f19.9,2x))') ratio_qr(kk,sort), ratio_qws(kk,sort),ratio_qds(kk,sort), ratio_qg(kk,sort) + end do + end do + close(hydro_weight_unit) + call da_free_unit(hydro_weight_unit) + end if + + ! calculate the contributions of hydrometeors to reflectivity from the background + do kk=kds, kde + do jj=jps, jpe + do ii=ips, ipe + !! calculate background reflectivity + call da_radar_rf(grid%xb%qrn(ii,jj,kk), grid%xb%qsn(ii,jj,kk), grid%xb%qgr(ii,jj,kk), & + grid%xb%t(ii,jj,kk)-273.15, grid%xb%rho(ii,jj,kk), bg_rze) + bg_rf = 10.*log10(bg_rze) + !! get the index of refledctity threshould + if( bg_rf .ge. 5.0 .and. bg_rf .lt. 15.0 ) then + sort=1 + else if( bg_rf .ge. 15.0 .and. bg_rf .lt. 25.0 ) then + sort=2 + else if( bg_rf .ge. 25.0 .and. bg_rf .lt. 35.0 ) then + sort=3 + else if (bg_rf .ge. 35.0 .and. bg_rf .lt. 45.0 ) then + sort=4 + else if (bg_rf .ge. 45.0 .and. bg_rf .lt. 55.0 ) then + sort=5 + else if (bg_rf .ge. 55) then + sort=6 + else + sort=0 ! non-precip + end if + !! Sum of the model states of different model levels and reflectivity threshoulds + if (sort .ne. 0 ) then + ze_qr(kk,sort) = ze_qr(kk,sort) + grid%xb%qrn(ii,jj,kk) + if ( grid%xb%t(ii,jj,kk) > 273.15 ) then + ze_qws(kk,sort) = ze_qws(kk,sort) + grid%xb%qsn(ii,jj,kk) + else + ze_qds(kk,sort) = ze_qds(kk,sort) + grid%xb%qsn(ii,jj,kk) + end if + ze_qg(kk,sort) = ze_qg(kk,sort) + grid%xb%qgr(ii,jj,kk) + rho_s(kk,sort) = rho_s(kk,sort) + grid%xb%rho(ii,jj,kk) + count_rr(kk,sort) = count_rr(kk,sort) + 1. + end if + end do ! west-east + end do ! south-north + end do ! bottom-top + + ! Average over whole domain + do sort=1,6 + do kk=kds,kde + count_rr(kk,sort) = wrf_dm_sum_real(count_rr(kk,sort)) + rho_s(kk,sort) = wrf_dm_sum_real(rho_s(kk,sort)) + ze_qr(kk,sort) = wrf_dm_sum_real(ze_qr(kk,sort)) + ze_qws(kk,sort) = wrf_dm_sum_real(ze_qws(kk,sort)) + ze_qds(kk,sort) = wrf_dm_sum_real(ze_qds(kk,sort)) + ze_qg(kk,sort) = wrf_dm_sum_real(ze_qg(kk,sort)) + end do + end do + + ! Get the reflectivity contributed from each hydrometeor type + do kk=kds,kde + do sort=1,6 + if (count_rr(kk,sort) .gt. 10.) then + if (ze_qr(kk,sort) > 0.) & !! rain water + ratio_qr (kk,sort) = zrr*(rho_s(kk,sort)*ze_qr (kk,sort)/(count_rr(kk,sort)*1.0)**2)**1.75 + if (ze_qws(kk,sort) > 0.) & !! wet snow + ratio_qws(kk,sort) = zws*(rho_s(kk,sort)*ze_qws(kk,sort)/(count_rr(kk,sort)*1.0)**2)**1.75 + if (ze_qds(kk,sort) > 0.) & !! dry snow + ratio_qds(kk,sort) = zds*(rho_s(kk,sort)*ze_qds(kk,sort)/(count_rr(kk,sort)*1.0)**2)**1.75 + if (ze_qg(kk,sort) > 0.) & !! graupel + ratio_qg(kk,sort) = zg*(rho_s(kk,sort)*ze_qg(kk,sort)/(count_rr(kk,sort)**2))**1.75 + end if + end do + end do !bottom-top + end if !! use_radar_rhv .and. radar_rhv_opt == 2 + do n=iv%info(radar)%n1,iv%info(radar)%n2 if ( use_radar_rf .and. radar_rf_opt==1) then @@ -404,7 +535,7 @@ END IF end if ! calculate retrieved hydrometeorological variables - ! Jidong Gao JAS 2013 + ! Background-dependent retrieval scheme (Chen et al. 2020 AR; Chen et al. 2021 QJRMS) if (use_radar_rhv) then if ( echo_rf_good ) then @@ -431,48 +562,114 @@ END IF end if !if echo_non_precip end if - ob_radar_rf = min(ob_radar_rf, 55.0) ! if dBZ>55.0, set to 55.0 + ! The original WRFDA hydrometeor retrieval scheme + if (model_tc(k,n) .ge. 5.0) then + czr = 1.0 + czws = 0.0 + czds = 0.0 + czg = 0.0 + else if (model_tc(k,n) .ge. 0.0) then + czr = (model_tc(k,n)+5.0)/10.0 + czws = (1.0-czr)*zws/(zws+zg) + czds = 0.0 + czg = (1.0-czr)*zg/(zws+zg) + else if (model_tc(k,n) .ge. -5.0) then + czr = (model_tc(k,n)+5.0)/10.0 + czws = 0.0 + czds = (1.0-czr)*zds/(zds+zg) + czg = (1.0-czr)*zg/(zds+zg) + else if (model_tc(k,n) .lt. -5.0) then + czr = 0.0 + czws = 0.0 + czds = zds/(zds+zg) + czg = zg/(zds+zg) + end if + + if (radar_rhv_opt == 2) then + ! backgound-dependent reflectivity retrival scheme (Chen et al. 2020, AR; Chen et al. 2021, QJRMS) + if (ob_radar_rf .ge. 5.0 .and. ob_radar_rf .lt. 15.0) then + sort = 1 + else if (ob_radar_rf .ge. 15.0 .and. ob_radar_rf .lt. 25.0) then + sort = 2 + else if (ob_radar_rf .ge. 25.0 .and. ob_radar_rf .lt. 35.0) then + sort = 3 + else if (ob_radar_rf .ge. 35.0 .and. ob_radar_rf .lt. 45.0) then + sort = 4 + else if (ob_radar_rf .ge. 45.0 .and. ob_radar_rf .lt. 55.0) then + sort = 5 + else if (ob_radar_rf .ge. 55.0) then + sort = 6 + else + sort = 0 + end if + + if (sort > 0) then + zerr_os=iv%info(radar)%dzm(k,n)*ratio_qr (iv%info(radar)%k(k,n),sort) + & + iv%info(radar)%dz(k,n) *ratio_qr (iv%info(radar)%k(k,n)+1,sort) + zews_os=iv%info(radar)%dzm(k,n)*ratio_qws(iv%info(radar)%k(k,n),sort) + & + iv%info(radar)%dz(k,n) *ratio_qws(iv%info(radar)%k(k,n)+1,sort) + zeds_os=iv%info(radar)%dzm(k,n)*ratio_qds(iv%info(radar)%k(k,n),sort) + & + iv%info(radar)%dz(k,n) *ratio_qds(iv%info(radar)%k(k,n)+1,sort) + zegr_os=iv%info(radar)%dzm(k,n)*ratio_qg (iv%info(radar)%k(k,n),sort) + & + iv%info(radar)%dz(k,n) *ratio_qg (iv%info(radar)%k(k,n)+1,sort) + ! detect whether rain/snow/qgraupel exists in certain temperature. + gr_exist = .true. + ! when T < 273.15K + if (model_tc(k,n) .lt. -5.0) zerr_os = 0. + if (model_tc(k,n) .lt. 0.0) zews_os = 0. + ! when T>= 273.15K + if (model_tc(k,n) .ge. 0.0) then + zeds_os = 0. + gr_exist = .false. + do nk = k, iv%info(radar)%levels(n) + if (model_tc(nk,n) .lt. -5.0 .and. ob % radar(n) % rf(nk) .ge. 40.) gr_exist = .true. + end do + end if + if (model_tc(k,n) .ge. 5.0) then + zews_os = 0. + gr_exist = .false. + end if + if (.not. gr_exist) zegr_os = 0. + + ! determine the contributions of each hydrometeor to reflectivity + if ((zerr_os+zews_os+zeds_os+zegr_os) .gt. 0.) then + czr = zerr_os/(zerr_os+zews_os+zeds_os+zegr_os) + czws = zews_os/(zerr_os+zews_os+zeds_os+zegr_os) + czds = zeds_os/(zerr_os+zews_os+zeds_os+zegr_os) + czg = zegr_os/(zerr_os+zews_os+zeds_os+zegr_os) + end if + else + ob_radar_rf = -15.0 !! Assign reflectivity below 5.0 dBZ to -5.0 dbZ for supression + !! No need to tune the weights because of very small impacts + end if + end if + + ! convert dBZ to Z + ob_radar_rf = min(ob_radar_rf, 65.0) ! if dBZ>65.0, set to 65.0 rze = 10.0**(ob_radar_rf*0.1) ! dBZ to Z - if (model_tc(k,n).ge.5.0) then - ! contribution from rain only - ! Z_Qr = 3.63*1.0e9*(rho*Qr)**1.75 - iv % radar(n) % rrno(k) = exp ( log(rze/zrr)/1.75 )/model_rho(k,n) + ! Rain water mixing ratio + if (czr .gt. 0.) then + iv % radar(n) % rrno(k) = exp ( log(czr*rze/zrr)/1.75 )/model_rho(k,n) iv % radar(n) % rrn(k) % qc = 0 + end if - ! rrn and rrno were assigned missing values in read_obs_radar_ascii.inc - ! maximum value check, use the data under threshold 15g/kg - iv % radar(n) % rrno(k) = min(iv%radar(n)%rrno(k), 0.015) - - else if (model_tc(k,n).lt.5.0 .and. model_tc(k,n).gt.-5.0 ) then - ! contribution from rain, snow and graupel - ! Ze = c * Z_Qr + (1-c) * (Z_Qs+Z_Qg) - ! the factor c varies linearly between 0 at t=-5C and 1 at t=5C - czr=(model_tc(k,n)+5)/10.0 - if (model_tc(k,n).le.0.0) then - czs = (1.0-czr)*zds/(zds+zg) ! dry snow - czg = (1.0-czr)*zg/(zds+zg) - iv % radar(n) % rsno(k) = exp ( log(czs*rze/zds)/1.75 )/model_rho(k,n) + ! Snow mixing ratio + if ((czws+czds) .gt. 0.) then + if (model_tc(k,n) .gt. 0.) then + iv % radar(n) % rsno(k) = exp ( log(czws*rze/zws)/1.75 )/model_rho(k,n) + iv % radar(n) % rsn(k) % qc = 0 else - czs = (1.0-czr)*zws/(zws+zg) ! wet snow - czg = (1.0-czr)*zg/(zws+zg) - iv % radar(n) % rsno(k) = exp ( log(czs*rze/zws)/1.75 )/model_rho(k,n) + iv % radar(n) % rsno(k) = exp ( log(czds*rze/zds)/1.75 )/model_rho(k,n) + iv % radar(n) % rsn(k) % qc = 0 end if - iv % radar(n) % rrno(k) = exp ( log(czr*rze/zrr)/1.75 )/model_rho(k,n) - iv % radar(n) % rgro(k) = exp ( log(czg*rze/zg )/1.75 )/model_rho(k,n) - iv % radar(n) % rrn(k) % qc = 0 - iv % radar(n) % rsn(k) % qc = 0 - iv % radar(n) % rgr(k) % qc = 0 + end if - else if (model_tc(k,n).le.-5.0) then - ! contribution from snow and graupel - czs = zds/(zds+zg) - czg = 1.0 - czs - iv % radar(n) % rsno(k) = exp ( log(czs*rze/zds)/1.75 )/model_rho(k,n) + ! Graupel mixing ratio + if (czg .gt. 0.) then iv % radar(n) % rgro(k) = exp ( log(czg*rze/zg )/1.75 )/model_rho(k,n) - iv % radar(n) % rsn(k) % qc = 0 iv % radar(n) % rgr(k) % qc = 0 - end if ! temp + end if if ( radar_rhv_err_opt == 1 ) then ! rainwater error @@ -643,6 +840,17 @@ END IF deallocate (model_qsn) deallocate (model_qgr) + if ( allocated(count_rr) ) deallocate (count_rr) + if ( allocated(ratio_qr) ) deallocate (ratio_qr) + if ( allocated(ratio_qds) ) deallocate (ratio_qds) + if ( allocated(ratio_qws) ) deallocate (ratio_qws) + if ( allocated(ratio_qg) ) deallocate (ratio_qg) + if ( allocated(ze_qr) ) deallocate (ze_qr) + if ( allocated(ze_qds) ) deallocate (ze_qds) + if ( allocated(ze_qws) ) deallocate (ze_qws) + if ( allocated(ze_qg) ) deallocate (ze_qg) + if ( allocated(rho_s) ) deallocate (rho_s) + if ( use_radar_rqv ) then deallocate (model_lcl) deallocate (model_qs_ice) diff --git a/var/da/da_radar/da_radar.f90 b/var/da/da_radar/da_radar.f90 index d971f6f604..507a5df0b8 100644 --- a/var/da/da_radar/da_radar.f90 +++ b/var/da/da_radar/da_radar.f90 @@ -1,20 +1,21 @@ module da_radar use module_domain, only : domain - + use module_dm, only : wrf_dm_sum_real use da_control, only : obs_qc_pointer,max_ob_levels,missing_r, & v_interp_p, v_interp_h, check_max_iv_print, trace_use, & missing, max_error_uv, max_error_t, rootproc, & max_error_p,max_error_q, check_max_iv_unit,check_max_iv, & max_stheight_diff,missing_data,max_error_bq,max_error_slp, & max_error_bt, max_error_buv, radar,fails_error_max, & - use_radar_rv, use_radar_rf,radar_rf_opt,radar_rf_rscl,radar_rv_rscl,rf_noice,rfmin, rf_qthres, use_radar_rhv, use_radar_rqv, & + use_radar_rv, use_radar_rf,radar_rf_opt,radar_rf_rscl,radar_rv_rscl,rf_noice,rfmin, rf_qthres, & + use_radar_rhv, use_radar_rqv, radar_rhv_opt,& below_model_surface,mkz,above_model_lid,& fg_format,fg_format_wrf_arw_regional,fg_format_wrf_nmm_regional,fg_format_wrf_arw_global,& fg_format_kma_global,max_error_rv,max_error_rf, & far_below_model_surface,kms,kme,kts,kte, trace_use_dull,filename_len,& myproc, analysis_date, num_procs , ierr, comm, es_beta, es_gamma, a_ew - use da_control, only : its, ite, jts, jte, ids, ide, jds, jde, ims, ime, jms, jme + use da_control, only : its, ite, jts, jte, ids, ide, jds, jde, ims, ime, jms, jme, ips, ipe, jps, jpe, kds, kde use da_control, only : cloudbase_calc_opt, & radar_non_precip_rf, radar_non_precip_opt, radar_rqv_thresh1, radar_rqv_thresh2, & radar_rqv_rh1, radar_rqv_rh2, radar_non_precip_rh_w, radar_non_precip_rh_i, & From 624c8ad77fb1bb18739bf10b657a37b3407933f1 Mon Sep 17 00:00:00 2001 From: Tao Sun <41139193+mos3r3n@users.noreply.github.com> Date: Sat, 16 Sep 2023 15:17:26 -0600 Subject: [PATCH 02/20] Update registry.var --- Registry/registry.var | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Registry/registry.var b/Registry/registry.var index f71f221047..00a39434a7 100644 --- a/Registry/registry.var +++ b/Registry/registry.var @@ -170,7 +170,7 @@ rconfig logical use_radar_rv namelist,wrfvar4 1 .false. - "rad rconfig logical use_radar_rf namelist,wrfvar4 1 .false. - "reflectivity" "" "" rconfig logical use_radar_rqv namelist,wrfvar4 1 .false. - "retrieved water vapor" "" "" rconfig logical use_radar_rhv namelist,wrfvar4 1 .false. - "retr. hydrometeor var" "" "" -rconfig logical radar_rhv_opt namelist,wrfvar4 1 1 - "hydrometeor retrieval option" "2 is for background-dependent scheme" "" +rconfig integer radar_rhv_opt namelist,wrfvar4 1 1 - "hydrometeor retrieval option" "2 is for background-dependent scheme" "" rconfig integer radar_rf_opt namelist,wrfvar4 1 1 - "reflectivity DA option" "" "" rconfig real rf_qthres namelist,wrfvar4 1 1e-12 - "mixing ratio threshold" "" "" rconfig real rfmin namelist,wrfvar4 1 0.0 - "min rf for no-rain echo" "" "" From 6bfe3da638afea035460daeb18c0232597c71850 Mon Sep 17 00:00:00 2001 From: Tao Sun <41139193+mos3r3n@users.noreply.github.com> Date: Sun, 24 Sep 2023 21:15:35 -0600 Subject: [PATCH 03/20] Update da_get_innov_vector_radar.inc --- var/da/da_radar/da_get_innov_vector_radar.inc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/var/da/da_radar/da_get_innov_vector_radar.inc b/var/da/da_radar/da_get_innov_vector_radar.inc index c0be817fd3..e51bd76f72 100644 --- a/var/da/da_radar/da_get_innov_vector_radar.inc +++ b/var/da/da_radar/da_get_innov_vector_radar.inc @@ -355,6 +355,9 @@ END IF end do ! Get the reflectivity contributed from each hydrometeor type + hydro_weight_file='hydro_mean.dat.upate' + if (rootproc) call da_get_unit(hydro_weight_unit) + if (rootproc) open(unit=hydro_weight_unit, file=trim(hydro_weight_file), form='FORMATTED') do kk=kds,kde do sort=1,6 if (count_rr(kk,sort) .gt. 10.) then @@ -367,8 +370,12 @@ END IF if (ze_qg(kk,sort) > 0.) & !! graupel ratio_qg(kk,sort) = zg*(rho_s(kk,sort)*ze_qg(kk,sort)/(count_rr(kk,sort)**2))**1.75 end if + if (rootproc) & + write(hydro_weight_unit,'(a8, i2, a8, i2, 4(f19.9,2x))'),"sort:", sort, "level:", kk, ratio_qr (kk,sort),ratio_qws(kk,sort), ratio_qds(kk,sort), ratio_qg(kk,sort) end do end do !bottom-top + if (rootproc) close(hydro_weight_unit) + if (rootproc) call da_get_unit(hydro_weight_unit) end if !! use_radar_rhv .and. radar_rhv_opt == 2 do n=iv%info(radar)%n1,iv%info(radar)%n2 From 83476b433d2f6d2bc3315a948a93c44933332d50 Mon Sep 17 00:00:00 2001 From: Tao Sun <41139193+mos3r3n@users.noreply.github.com> Date: Sun, 24 Sep 2023 21:17:35 -0600 Subject: [PATCH 04/20] Delete compile.log --- compile.log | 327 ---------------------------------------------------- 1 file changed, 327 deletions(-) delete mode 100644 compile.log diff --git a/compile.log b/compile.log deleted file mode 100644 index 04d5a707ce..0000000000 --- a/compile.log +++ /dev/null @@ -1,327 +0,0 @@ -Neither WRF_EM_CORE nor WRF_PLUS_CORE - are explicitly specified in shell environment.... - -Will compile with CRTM library - - -============================================================================================== - -V4.5.1 -git commit ed0047d1af6a4f17353f65f11d69488ec795b098 3 files changed, 248 insertions(+), 38 deletions(-) - -Compiling: WRF_DA_CORE WRF_EM_CORE -WRFIO_NCD_LARGE_FILE_SUPPORT=1 - -Linux cheyenne6 4.12.14-95.51-default #1 SMP Fri Apr 17 08:14:12 UTC 2020 (c6bab98) x86_64 x86_64 x86_64 GNU/Linux - -Intel(R) Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 19.0.5.281 Build 20190815 -Copyright (C) 1985-2019 Intel Corporation. All rights reserved. -ifort: warning #10315: specifying -lm before files may supersede the Intel(R) math library and affect performance - -GNU ld (GNU Binutils; SUSE Linux Enterprise 12) 2.32.0.20190909-9.36 -/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: /glade/u/apps/opt/intel/2019u5/compilers_and_libraries_2019.5.281/linux/compiler/lib/intel64_lin/for_main.o: in function `main': -for_main.c:(.text+0x2e): undefined reference to `MAIN__' - -============================================================================================== - -setting parallel make -j 2 -make -i -r MODULE_DIRS=" -I/glade/work/taosun/model/V4.5/WRF/external/esmf_time_f90 -I/glade/work/taosun/model/V4.5/WRF/main -I/glade/work/taosun/model/V4.5/WRF/external/io_netcdf -I/glade/work/taosun/model/V4.5/WRF/external/io_int -I/glade/work/taosun/model/V4.5/WRF/frame -I/glade/work/taosun/model/V4.5/WRF/share -I/glade/work/taosun/model/V4.5/WRF/phys -I/glade/work/taosun/model/V4.5/WRF/wrftladj -I/glade/work/taosun/model/V4.5/WRF/chem -I/glade/work/taosun/model/V4.5/WRF/inc -I/glade/u/apps/ch/opt/netcdf/4.7.4/intel/19.0.5/include " ext -make[1]: Entering directory '/glade/work/taosun/model/V4.5/WRF' --------------------------------------- -if [ 0 -eq 0 ] ; then \ - ( cd frame ; make -i -r externals ) ; \ -else \ - ( cd frame ; make -i -r PLUSFLAG="-DWRFPLUS=1" externals ) ; \ -fi -make[2]: Entering directory '/glade/work/taosun/model/V4.5/WRF/frame' -( cd /glade/work/taosun/model/V4.5/WRF/external/esmf_time_f90 ; \ - make -j 2 FC="ifort -r8 -real-size `expr 8 \* 8` -i4 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian " RANLIB="ranlib" \ - CPP="/lib/cpp -P -nostdinc -I/glade/work/taosun/model/V4.5/WRF/inc -I. -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT" AR="ar" ARFLAGS="ru" ) -make[3]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/esmf_time_f90' -make[3]: Nothing to be done for 'default'. -make[3]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/esmf_time_f90' -( cd /glade/work/taosun/model/V4.5/WRF/external/io_netcdf ; \ - make -j 2 NETCDFPATH="/glade/u/apps/ch/opt/netcdf/4.7.4/intel/19.0.5" RANLIB="ranlib" CPP="/lib/cpp -P -nostdinc" \ - CC="icc" CFLAGS="-w -O3 -ip -DRPC_TYPES=1 -DDM_PARALLEL -DLANDREAD_STUB=1 -DMAX_HISTORY=25 -DNMM_CORE=0" \ - FC="ifort -r8 -real-size `expr 8 \* 8` -i4 -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian " TRADFLAG="-traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT" AR="ar" ARFLAGS="ru" ) -make[3]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_netcdf' -make[3]: Nothing to be done for 'all'. -make[3]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_netcdf' -( cd /glade/work/taosun/model/V4.5/WRF/external/ioapi_share ; \ - make -i -r NATIVE_RWORDSIZE="4" RWORDSIZE="8" AR="ar" ARFLAGS="ru" ) -make[3]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/ioapi_share' -make[3]: Nothing to be done for 'all'. -make[3]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/ioapi_share' -( cd /glade/work/taosun/model/V4.5/WRF/external/io_grib_share ; \ - make -j 2 CC="icc" CFLAGS="-w -O3 -ip -DRPC_TYPES=1 -DDM_PARALLEL -DLANDREAD_STUB=1 -DMAX_HISTORY=25 -DNMM_CORE=0" RM="rm -f" RANLIB="ranlib" CPP="/lib/cpp -P -nostdinc" \ - FC="ifort -r8 -real-size `expr 8 \* 8` -i4 -I. -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian " TRADFLAG="-traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT" AR="ar" ARFLAGS="ru" archive) -make[3]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib_share' -make[4]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib_share' -ar ru ./libio_grib_share.a io_grib_share.o get_region_center.o gridnav.o open_file.o -ranlib ./libio_grib_share.a -make[4]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib_share' -make[3]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib_share' -( cd /glade/work/taosun/model/V4.5/WRF/external/io_grib1 ; \ - make -j 2 CC="icc" CFLAGS="-w -O3 -ip -DRPC_TYPES=1 -DDM_PARALLEL -DLANDREAD_STUB=1 -DMAX_HISTORY=25 -DNMM_CORE=0" RM="rm -f" RANLIB="ranlib" CPP="/lib/cpp -P -nostdinc" \ - FC="ifort -r8 -real-size `expr 8 \* 8` -i4 -I. -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian " TRADFLAG="-traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT" AR="ar" ARFLAGS="ru" archive) -make[3]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1' - Doing make archive on library subdirectory MEL_grib1 -make[4]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/MEL_grib1' -make[5]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/MEL_grib1' -ar ru ../libio_grib1.a FTP_getfile.o apply_bitmap.o display_gribhdr.o gbyte.o grib_dec.o grib_enc.o grib_seek.o gribgetbds.o gribgetbms.o gribgetgds.o gribgetpds.o gribhdr2file.o gribputbds.o gribputgds.o gribputpds.o hdr_print.o init_dec_struct.o init_enc_struct.o init_gribhdr.o init_struct.o ld_dec_lookup.o ld_enc_input.o ld_enc_lookup.o ld_grib_origctrs.o make_default_grbfn.o make_grib_log.o map_lvl.o map_parm.o pack_spatial.o prt_inp_struct.o upd_child_errmsg.o prt_badmsg.o swap.o grib_uthin.o set_bytes.o -ranlib ../libio_grib1.a -make[5]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/MEL_grib1' -make[4]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/MEL_grib1' - Doing make archive on library subdirectory grib1_util -make[4]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/grib1_util' -make[5]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/grib1_util' -ar ru ../libio_grib1.a alloc_2d.o read_grib.o write_grib.o -ranlib ../libio_grib1.a -make[5]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/grib1_util' -make[4]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/grib1_util' - Doing make archive on library subdirectory WGRIB -make[4]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/WGRIB' -make[4]: Nothing to be done for 'archive'. -make[4]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1/WGRIB' -make[4]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1' -ar ru ./libio_grib1.a grib1_routines.o gribmap.o io_grib1.o trim.o -ranlib ./libio_grib1.a -make[4]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1' -make[3]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_grib1' -( cd /glade/work/taosun/model/V4.5/WRF/external/io_int ; \ - make -j 2 CC="mpicc -cc=icc -DFSEEKO64_OK " CFLAGS_LOCAL="-w -O3 -ip -DRPC_TYPES=1 " RM="rm -f" RANLIB="ranlib" CPP="/lib/cpp -P -nostdinc" \ - FC="time mpif90 -f90=ifort -r8 -real-size `expr 8 \* 8` -i4 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian " FGREP="fgrep -iq" \ - TRADFLAG="-traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT" AR="ar" ARFLAGS="ru" ARCHFLAGS="-DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0" all ) -make[3]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/io_int' -Diffwrf io_int will be built later on in this compile. No need to rerun compile. -Diffwrf io_int will be built later on in this compile. No need to rerun compile. -Diffwrf io_int will be built later on in this compile. No need to rerun compile. -Diffwrf io_int will be built later on in this compile. No need to rerun compile. -if [ -f ../../frame/pack_utils.o -a -f ../../frame/clog.o ] ; then \ - time mpif90 -f90=ifort -r8 -real-size 64 -i4 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -I../ioapi_share -o diffwrf diffwrf.f \ - ../../frame/pack_utils.o ../../frame/module_internal_header_util.o ../../frame/module_driver_constants.o ../../frame/module_machine.o ../../frame/module_wrf_error.o ../../frame/wrf_debug.o libwrfio_int.a ; \ -fi -make[3]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/io_int' -( cd /glade/work/taosun/model/V4.5/WRF/external/fftpack/fftpack5 ; \ - make -j 2 FC="ifort" FFLAGS="-r8 -real-size `expr 8 \* 8` -i4 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian " RANLIB="ranlib" AR="ar" \ - ARFLAGS="ru" CPP="/lib/cpp -P -nostdinc" CPPFLAGS="-DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT " RM="rm -f" ) -make[3]: Entering directory '/glade/work/taosun/model/V4.5/WRF/external/fftpack/fftpack5' -ar ru libfftpack.a c1f2kb.o cfft1b.o cmf3kf.o cosqb1.o costmi.o dcosq1f.o dfftb1.o mradb2.o mrfti1.o r1fgkf.o rfft2i.o sinqmi.o z1f2kf.o zfft1f.o zmf4kb.o c1f2kf.o cfft1f.o cmf4kb.o cosqf1.o d1f2kb.o dcosq1i.o dfftf1.o mradb3.o msntb1.o r4_factor.o rfftb1.o sint1b.o z1f3kb.o zfft1i.o zmf4kf.o c1f3kb.o cfft1i.o cmf4kf.o cosqmb.o d1f2kf.o dcosqb1.o dffti1.o mradb4.o msntf1.o r4_mcfti1.o rfftf1.o sint1f.o z1f3kf.o zfft2b.o zmf5kb.o c1f3kf.o cfft2b.o cmf5kb.o cosqmf.o d1f3kb.o dcosqf1.o dsint1b.o mradb5.o r1f2kb.o r4_tables.o rffti1.o sint1i.o z1f4kb.o zfft2f.o zmf5kf.o c1f4kb.o cfft2f.o cmf5kf.o cosqmi.o d1f3kf.o dcost1b.o dsint1f.o mradbg.o r1f2kf.o r8_factor.o rfftmb.o sintb1.o z1f4kf.o zfft2i.o zmfgkb.o c1f4kf.o cfft2i.o cmfgkb.o cost1b.o d1f4kb.o dcost1f.o dsint1i.o mradf2.o r1f3kb.o r8_mcfti1.o rfftmf.o sintf1.o z1f5kb.o zfftmb.o zmfgkf.o c1f5kb.o cfftmb.o cmfgkf.o cost1f.o d1f4kf.o dcost1i.o dsintb1.o mradf3.o r1f3kf.o r8_tables.o rfftmi.o sintmb.o z1f5kf.o zfftmf.o zmfm1b.o c1f5kf.o cfftmf.o cmfm1b.o cost1i.o d1f5kb.o dcostb1.o dsintf1.o mradf4.o r1f4kb.o rfft1b.o sinq1b.o sintmf.o z1fgkb.o zfftmi.o zmfm1f.o c1fgkb.o cfftmi.o cmfm1f.o costb1.o d1f5kf.o dcostf1.o mcsqb1.o mradf5.o r1f4kf.o rfft1f.o sinq1f.o sintmi.o z1fgkf.o zmf2kb.o c1fgkf.o cmf2kb.o cosq1b.o costf1.o d1fgkb.o dfft1b.o mcsqf1.o mradfg.o r1f5kb.o rfft1i.o sinq1i.o xercon.o z1fm1b.o zmf2kf.o c1fm1b.o cmf2kf.o cosq1f.o costmb.o d1fgkf.o dfft1f.o mcstb1.o mrftb1.o r1f5kf.o rfft2b.o sinqmb.o xerfft.o z1fm1f.o zmf3kb.o c1fm1f.o cmf3kb.o cosq1i.o costmf.o dcosq1b.o dfft1i.o mcstf1.o mrftf1.o r1fgkb.o rfft2f.o sinqmf.o z1f2kb.o zfft1b.o zmf3kf.o -ranlib libfftpack.a -make[3]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/external/fftpack/fftpack5' -( if [ ! -e /glade/work/taosun/model/V4.5/WRF/tools/gen_comms.c ] ; then \ - /bin/cp /glade/work/taosun/model/V4.5/WRF/tools/gen_comms_warning /glade/work/taosun/model/V4.5/WRF/tools/gen_comms.c ; \ - cat /glade/work/taosun/model/V4.5/WRF/external/RSL_LITE/gen_comms.c >> /glade/work/taosun/model/V4.5/WRF/tools/gen_comms.c ; fi ) -( if [ ! -e module_dm.F ] ; then /bin/cp module_dm_warning module_dm.F ; \ - cat /glade/work/taosun/model/V4.5/WRF/external/RSL_LITE/module_dm.F >> module_dm.F ; fi ) -make[2]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/frame' -make[1]: Leaving directory '/glade/work/taosun/model/V4.5/WRF' -make -i -r MODULE_DIRS=" -I/glade/work/taosun/model/V4.5/WRF/external/esmf_time_f90 -I/glade/work/taosun/model/V4.5/WRF/main -I/glade/work/taosun/model/V4.5/WRF/external/io_netcdf -I/glade/work/taosun/model/V4.5/WRF/external/io_int -I/glade/work/taosun/model/V4.5/WRF/frame -I/glade/work/taosun/model/V4.5/WRF/share -I/glade/work/taosun/model/V4.5/WRF/phys -I/glade/work/taosun/model/V4.5/WRF/wrftladj -I/glade/work/taosun/model/V4.5/WRF/chem -I/glade/work/taosun/model/V4.5/WRF/inc -I/glade/u/apps/ch/opt/netcdf/4.7.4/intel/19.0.5/include " toolsdir -make[1]: Entering directory '/glade/work/taosun/model/V4.5/WRF' --------------------------------------- -if [ 0 -eq 0 ] ; then \ - ( cd tools ; make -i -r CC_TOOLS_CFLAGS="-DNMM_CORE=0" CC_TOOLS="icc -DIWORDSIZE=4 -DMAX_HISTORY=25" ) ; \ -else \ - ( cd tools ; make -i -r CC_TOOLS_CFLAGS="-DNMM_CORE=0" CC_TOOLS="icc -DIWORDSIZE=4 -DMAX_HISTORY=25 -DWRFPLUS=1" ) ; \ -fi -make[2]: Entering directory '/glade/work/taosun/model/V4.5/WRF/tools' -make[2]: 'registry' is up to date. -make[2]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/tools' -make[1]: Leaving directory '/glade/work/taosun/model/V4.5/WRF' -if [ 1 -ne 0 ] ; then \ - (cd var/external/crtm_2.3.0; make -i -r -j 2) ; \ -fi -make[1]: Entering directory '/glade/work/taosun/model/V4.5/WRF/var/external/crtm_2.3.0' -make[2]: Entering directory '/glade/work/taosun/model/V4.5/WRF/var/external/crtm_2.3.0/libsrc' -makefile:32: warning: overriding recipe for target '.f90.o' -../../../../configure.wrf:419: warning: ignoring old recipe for target '.f90.o' -make[2]: Nothing to be done for 'all'. -make[2]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/var/external/crtm_2.3.0/libsrc' -make[1]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/var/external/crtm_2.3.0' -if [ 1 ] ; then \ - (cd var/external/bufr; \ - make -i -r -j 2 FC="ifort" CC="icc" CPP="/lib/cpp -P -nostdinc" CPPFLAGS="-DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT " CFLAGS="-w -O3 -ip -DRPC_TYPES=1 -DDM_PARALLEL -DLANDREAD_STUB=1 -DMAX_HISTORY=25 -DNMM_CORE=0" FFLAGS="-O3 -FI " RANLIB="ranlib" AR="ar" ARFLAGS="ru" ) ; \ -fi -make[1]: Entering directory '/glade/work/taosun/model/V4.5/WRF/var/external/bufr' -ar ru libbufr.a adn30.o atrcpt.o bfrini.o blocks.o bort.o bort2.o bort_exit.o bvers.o cadn30.o capit.o ccbfl.o chekstab.o chrtrn.o chrtrna.o cktaba.o closbf.o closmg.o cmpia.o cmpmsg.o cmsgini.o cnved4.o cobfl.o conwin.o copybf.o copymg.o copysb.o cpbfdx.o cpdxmm.o cpymem.o cpyupd.o crbmg.o cread.o cwbmg.o datebf.o datelen.o digit.o drfini.o drstpl.o dumpbf.o dxdump.o dxinit.o dxmini.o elemdx.o errwrt.o getabdb.o getbmiss.o getlens.o getntbe.o gets1loc.o gettagpr.o gettbh.o getvalnb.o getwin.o i4dy.o ibfms.o icbfms.o ichkstr.o icmpdx.o icopysb.o icvidx.o idn30.o idxmsg.o ifbget.o ifxy.o igetdate.o igetfxy.o igetntbi.o igetntbl.o igetsc.o igettdi.o inctab.o invcon.o invmrg.o invtag.o invwin.o iok2cpy.o ipkm.o ipks.o ireadmg.o ireadmm.o ireadns.o ireadsb.o irev.o ishrdx.o isize.o istdesc.o iupb.o iupbs01.o iupbs3.o iupm.o iupvs01.o jstchr.o jstnum.o lcmgdf.o lmsg.o lstjpb.o makestab.o maxout.o mesgbc.o mesgbf.o minimg.o mrginv.o msgfull.o msgini.o msgupd.o msgwrt.o mtinfo.o mvb.o nemock.o nemtab.o nemtba.o nemtbax.o nemtbb.o nemtbd.o nenubd.o nevn.o newwin.o nmsub.o nmwrd.o numbck.o nummtb.o numtab.o numtbd.o nvnwin.o nwords.o nxtwin.o openbf.o openbt.o openmb.o openmg.o pad.o padmsg.o parstr.o parusr.o parutg.o pkb.o pkbs1.o pkc.o pkftbv.o pktdd.o pkvs01.o posapx.o rbytes.o rcstpl.o rdbfdx.o rdcmps.o rdmemm.o rdmems.o rdmgsb.o rdmsgb.o rdmsgw.o rdmtbb.o rdmtbd.o rdtree.o rdusdx.o readdx.o readerme.o readlc.o readmg.o readmm.o readmt.o readns.o reads3.o readsb.o restd.o rewnbf.o rjust.o rsvfvm.o rtrcpt.o seqsdx.o setblock.o setbmiss.o sntbbe.o sntbde.o status.o stbfdx.o stdmsg.o stndrd.o stntbi.o stntbia.o strcln.o strcpt.o string.o strnum.o strsuc.o stseq.o tabent.o tabsub.o trybump.o ufbcnt.o ufbcpy.o ufbcup.o ufbdmp.o ufbevn.o ufbget.o ufbin3.o ufbint.o ufbinx.o ufbmem.o ufbmex.o ufbmms.o ufbmns.o ufbovr.o ufbpos.o ufbqcd.o ufbqcp.o ufbrep.o ufbrms.o ufbrp.o ufbrw.o ufbseq.o ufbsp.o ufbstp.o ufbtab.o ufbtam.o ufdump.o upb.o upbb.o upc.o upds3.o upftbv.o ups.o uptdd.o usrtpl.o valx.o wrcmps.o wrdesc.o wrdlen.o wrdxtb.o writcp.o writdx.o writlc.o writsa.o writsb.o wrtree.o wtstat.o -ranlib libbufr.a -make[1]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/var/external/bufr' -if [ ] ; then \ - ( cd var/external/wavelet; \ - make CC=" -DNOUNDERSCORE" RM="rm -f" libWavelet.a; \ - make FC="time mpif90 -f90=ifort" RM="rm -f" lib_wavelet.a ) ; \ -fi -( cd var/build; make depend; make -i -r -j 2 all_wrfvar ) -make[1]: Entering directory '/glade/work/taosun/model/V4.5/WRF/var/build' -da.make:316: warning: overriding recipe for target 'da_update_bc.o' -da.make:309: warning: ignoring old recipe for target 'da_update_bc.o' -makefile:58: warning: overriding recipe for target '.f90.o' -../../configure.wrf:419: warning: ignoring old recipe for target '.f90.o' -make[1]: 'depend' is up to date. -make[1]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/var/build' -make[1]: Entering directory '/glade/work/taosun/model/V4.5/WRF/var/build' -da.make:316: warning: overriding recipe for target 'da_update_bc.o' -da.make:309: warning: ignoring old recipe for target 'da_update_bc.o' -makefile:58: warning: overriding recipe for target '.f90.o' -../../configure.wrf:419: warning: ignoring old recipe for target '.f90.o' -rm -f da_radar.o -make[1]: Circular da_chem_sfc.o <- da_obs.o dependency dropped. -/glade/work/taosun/model/V4.5/WRF/tools/standard.exe da_radar.f90 > da_radar.b -/lib/cpp -P -nostdinc -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -I/glade/work/taosun/model/V4.5/WRF/inc da_radar.b > da_radar.f -rm -f da_radar.b -if fgrep -iq '!$OMP' da_radar.f ; then \ - if [ -n "" ] ; then echo COMPILING da_radar.f90 WITH OMP ; fi ; \ - time mpif90 -f90=ifort -o da_radar.o -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 da_radar.f ; \ - else \ - if [ -n "" ] ; then echo COMPILING da_radar.f90 WITHOUT OMP ; fi ; \ - time mpif90 -f90=ifort -o da_radar.o -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 da_radar.f ; \ - fi - -real 0m12.652s -user 0m11.686s -sys 0m0.479s -rm -f da_obs.o -/glade/work/taosun/model/V4.5/WRF/tools/standard.exe da_obs.f90 > da_obs.b -/lib/cpp -P -nostdinc -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -I/glade/work/taosun/model/V4.5/WRF/inc da_obs.b > da_obs.f -rm -f da_obs.b -if fgrep -iq '!$OMP' da_obs.f ; then \ - if [ -n "" ] ; then echo COMPILING da_obs.f90 WITH OMP ; fi ; \ - time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_obs.f ; \ - else \ - if [ -n "" ] ; then echo COMPILING da_obs.f90 WITHOUT OMP ; fi ; \ - time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_obs.f ; \ - fi - -real 0m8.387s -user 0m7.494s -sys 0m0.374s -rm -f da_obs_io.o -/glade/work/taosun/model/V4.5/WRF/tools/standard.exe da_obs_io.f90 > da_obs_io.b -/lib/cpp -P -nostdinc -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -I/glade/work/taosun/model/V4.5/WRF/inc da_obs_io.b > da_obs_io.f -rm -f da_obs_io.b -if fgrep -iq '!$OMP' da_obs_io.f ; then \ - if [ -n "" ] ; then echo COMPILING da_obs_io.f90 WITH OMP ; fi ; \ - time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_obs_io.f ; \ - else \ - if [ -n "" ] ; then echo COMPILING da_obs_io.f90 WITHOUT OMP ; fi ; \ - time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_obs_io.f ; \ - fi - -real 1m5.739s -user 1m4.579s -sys 0m0.916s -rm -f da_setup_structures.o -/glade/work/taosun/model/V4.5/WRF/tools/standard.exe da_setup_structures.f90 > da_setup_structures.b -/lib/cpp -P -nostdinc -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -I/glade/work/taosun/model/V4.5/WRF/inc da_setup_structures.b > da_setup_structures.f -rm -f da_setup_structures.b -if fgrep -iq '!$OMP' da_setup_structures.f ; then \ - if [ -n "" ] ; then echo COMPILING da_setup_structures.f90 WITH OMP ; fi ; \ - time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_setup_structures.f ; \ - else \ -if [ -n "" ] ; then echo COMPILING da_setup_structures.f90 WITHOUT OMP ; fi ; \ - time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_setup_structures.f ; \ - fi - -real 1m37.116s -user 1m35.601s -sys 0m0.892s -rm -f da_transfer_model.o -/glade/work/taosun/model/V4.5/WRF/tools/standard.exe da_transfer_model.f90 > da_transfer_model.b -/lib/cpp -P -nostdinc -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -I/glade/work/taosun/model/V4.5/WRF/inc da_transfer_model.b > da_transfer_model.f -In file included from da_transfer_model.b:137:0: -da_transfer_xatowrf.inc:715:0: warning: extra tokens at end of #else directive [enabled by default] - #else !! not var4d !! - ^ -rm -f da_transfer_model.b -if fgrep -iq '!$OMP' da_transfer_model.f ; then \ - if [ -n "" ] ; then echo COMPILING da_transfer_model.f90 WITH OMP ; fi ; \ - time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_transfer_model.f ; \ - else \ - if [ -n "" ] ; then echo COMPILING da_transfer_model.f90 WITHOUT OMP ; fi ; \ - time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_transfer_model.f ; \ - fi - -real 0m42.004s -user 0m40.376s -sys 0m0.623s -rm -f da_minimisation.o -/glade/work/taosun/model/V4.5/WRF/tools/standard.exe da_minimisation.f90 > da_minimisation.b -/lib/cpp -P -nostdinc -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -I/glade/work/taosun/model/V4.5/WRF/inc da_minimisation.b > da_minimisation.f -rm -f da_minimisation.b -if fgrep -iq '!$OMP' da_minimisation.f ; then \ - if [ -n "" ] ; then echo COMPILING da_minimisation.f90 WITH OMP ; fi ; \ - time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_minimisation.f ; \ - else \ - if [ -n "" ] ; then echo COMPILING da_minimisation.f90 WITHOUT OMP ; fi ; \ - time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_minimisation.f ; \ - fi - -real 0m8.794s -user 0m7.374s -sys 0m0.455s -rm -f da_test.o -/glade/work/taosun/model/V4.5/WRF/tools/standard.exe da_test.f90 > da_test.b -/lib/cpp -P -nostdinc -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -I/glade/work/taosun/model/V4.5/WRF/inc da_test.b > da_test.f -rm -f da_test.b -if fgrep -iq '!$OMP' da_test.f ; then \ - if [ -n "" ] ; then echo COMPILING da_test.f90 WITH OMP ; fi ; \ - time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_test.f ; \ - else \ - if [ -n "" ] ; then echo COMPILING da_test.f90 WITHOUT OMP ; fi ; \ - time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc da_test.f ; \ - fi - -real 0m24.385s -user 0m23.550s -sys 0m0.516s -rm -f da_wrfvar_top.o -/glade/work/taosun/model/V4.5/WRF/tools/standard.exe da_wrfvar_top.f90 > da_wrfvar_top.b -/lib/cpp -P -nostdinc -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -I/glade/work/taosun/model/V4.5/WRF/inc da_wrfvar_top.b > da_wrfvar_top.f -rm -f da_wrfvar_top.b -if fgrep -iq '!$OMP' da_wrfvar_top.f ; then \ - if [ -n "" ] ; then echo COMPILING da_wrfvar_top.f90 WITH OMP ; fi ; \ - time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc -I/glade/u/apps/ch/opt/netcdf/4.7.4/intel/19.0.5//include da_wrfvar_top.f ; \ - else \ - if [ -n "" ] ; then echo COMPILING da_wrfvar_top.f90 WITHOUT OMP ; fi ; \ - time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc -I/glade/u/apps/ch/opt/netcdf/4.7.4/intel/19.0.5//include da_wrfvar_top.f ; \ - fi - -real 0m48.714s -user 0m47.196s -sys 0m1.091s -rm -f libwrfvar.a -rm -f da_wrfvar_main.o -ar ru libwrfvar.a copyfile.o amsr2time_.o da_blas.o da_lapack.o da_par_util.o da_par_util1.o da_setup_structures.o da_transfer_model.o da_minimisation.o da_vtox_transforms.o da_obs.o da_chem_sfc.o da_obs_io.o da_join_iv_for_multi_inc.o da_metar.o da_geoamv.o da_polaramv.o da_ships.o da_synop.o da_sound.o da_mtgirs.o da_tamdar.o da_varbc_tamdar.o da_bogus.o da_airep.o da_pilot.o da_radar.o da_rain.o da_gpspw.o da_gpsref.o da_gpseph.o da_ssmi.o module_ssmi.o da_satem.o da_qscat.o da_pseudo.o da_profiler.o da_buoy.o da_dynamics.o da_physics.o f_qv_from_rh.o da_ffts.o module_ffts.o da_test.o da_tools.o da_tools_serial.o da_wrf_interfaces.o da_rsl_interfaces.o da_mat_cv3.o da_rf_cv3.o da_rfz_cv3.o da_recursive_filter.o da_wavelet.o da_interpolation.o da_grid_definitions.o da_statistics.o da_define_structures.o gamma1.o da_spectral.o da_radiance.o da_radiance1.o da_rttov.o da_crtm.o da_varbc.o module_radiance.o da_tracing.o gsi_kinds.o gsi_constants.o gsi_thinning.o mod_clddet_geoir.o da_wrfvar_io.o da_airsr.o da_wrfvar_top.o da_reporting.o da_4dvar.o module_wrf_error.o module_configure.o module_state_description.o module_timing.o module_driver_constants.o module_domain.o module_machine.o module_symbols_util.o module_utility.o module_domain_type.o module_date_time.o module_io_wrf.o module_io.o module_io_domain.o module_io_quilt.o module_dm.o module_comm_dm.o module_bc.o module_model_constants.o module_nesting.o module_tiles.o module_get_file_names.o module_bc_time_utilities.o landread.o da_memory.o wrf_debug.o set_timekeeping.o wrf_shutdown.o init_modules.o mediation_wrfmain.o mediation_integrate.o wrf_num_bytes_between.o input_wrf.o wrf_bdyin.o wrf_bdyout.o output_wrf.o wrf_ext_read_field.o wrf_ext_write_field.o collect_on_comm.o start_domain.o hires_timer.o module_streams.o module_comm_dm.o module_comm_dm_0.o module_comm_dm_1.o module_comm_dm_2.o module_comm_dm_3.o module_comm_dm_4.o module_alloc_space_0.o module_alloc_space_1.o module_alloc_space_2.o module_alloc_space_3.o module_alloc_space_4.o module_alloc_space_5.o module_alloc_space_6.o module_alloc_space_7.o module_alloc_space_8.o module_alloc_space_9.o nl_get_0_routines.o nl_get_1_routines.o nl_get_2_routines.o nl_get_3_routines.o nl_get_4_routines.o nl_get_5_routines.o nl_get_6_routines.o nl_get_7_routines.o nl_set_0_routines.o nl_set_1_routines.o nl_set_2_routines.o nl_set_3_routines.o nl_set_4_routines.o nl_set_5_routines.o nl_set_6_routines.o nl_set_7_routines.o interp_fcn.o sint.o da_netcdf_interface.o -/glade/work/taosun/model/V4.5/WRF/tools/standard.exe da_wrfvar_main.f90 > da_wrfvar_main.b -ar: creating libwrfvar.a -/lib/cpp -P -nostdinc -DEM_CORE=1 -DNMM_CORE=0 -DNMM_MAX_DIM=2600 -DDA_CORE=1 -DWRFPLUS=0 -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=8 -DLWORDSIZE=4 -DNONSTANDARD_SYSTEM_FUNC -DWRF_USE_CLM -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -DBUFR -DFFTPACK -DNORESHAPE -DDM_PARALLEL -DNETCDF -DCRTM -DLANDREAD_STUB=1 -DUSE_ALLOCATABLES -Dwrfmodel -DGRIB1 -DINTIO -DKEEP_INT_AROUND -DLIMIT_ARGS -DBUILD_RRTMG_FAST=0 -DBUILD_RRTMK=0 -DBUILD_SBM_FAST=0 -DSHOW_ALL_VARS_USED=0 -DCONFIG_BUF_LEN=65536 -DMAX_DOMAINS_F=21 -DMAX_HISTORY=25 -DNMM_NEST=0 -I. -traditional-cpp -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT -I/glade/work/taosun/model/V4.5/WRF/inc da_wrfvar_main.b > da_wrfvar_main.f -rm -f da_wrfvar_main.b -if fgrep -iq '!$OMP' da_wrfvar_main.f ; then \ - if [ -n "" ] ; then echo COMPILING da_wrfvar_main.f90 WITH OMP ; fi ; \ - time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc -I/glade/u/apps/ch/opt/netcdf/4.7.4/intel/19.0.5//include da_wrfvar_main.f ; \ - else \ - if [ -n "" ] ; then echo COMPILING da_wrfvar_main.f90 WITHOUT OMP ; fi ; \ - time mpif90 -f90=ifort -c -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -r8 -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.3.0/libsrc -I/glade/u/apps/ch/opt/netcdf/4.7.4/intel/19.0.5//include da_wrfvar_main.f ; \ - fi - -real 0m0.513s -user 0m0.161s -sys 0m0.235s -ranlib libwrfvar.a -rm -f da_wrfvar.exe - -real 0m5.261s -user 0m0.559s -sys 0m4.043s -make[1]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/var/build' -( cd var/obsproc; make -i -r -j 2 BUFR_CPP="-DBUFR" ) -make[1]: Entering directory '/glade/work/taosun/model/V4.5/WRF/var/obsproc' -( cd src ; make -f Makefile -j 2 obsproc.exe ) -make[2]: Entering directory '/glade/work/taosun/model/V4.5/WRF/var/obsproc/src' -make[2]: warning: -jN forced in submake: disabling jobserver mode. -make[2]: 'obsproc.exe' is up to date. -make[2]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/var/obsproc/src' -( /bin/rm -f obsproc.exe ; ln -s src/obsproc.exe . ) -make[1]: Leaving directory '/glade/work/taosun/model/V4.5/WRF/var/obsproc' -build started: Thu Aug 24 22:27:04 MDT 2023 -build completed: Thu Aug 24 22:32:24 MDT 2023 From 832350c1e52af4ab0a8e8c229b6842adbda0ab33 Mon Sep 17 00:00:00 2001 From: Tao Sun <41139193+mos3r3n@users.noreply.github.com> Date: Sun, 24 Sep 2023 21:20:23 -0600 Subject: [PATCH 05/20] Update da_get_innov_vector_radar.inc --- var/da/da_radar/da_get_innov_vector_radar.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/da/da_radar/da_get_innov_vector_radar.inc b/var/da/da_radar/da_get_innov_vector_radar.inc index e51bd76f72..6025fd11c1 100644 --- a/var/da/da_radar/da_get_innov_vector_radar.inc +++ b/var/da/da_radar/da_get_innov_vector_radar.inc @@ -295,7 +295,7 @@ END IF open(unit=hydro_weight_unit, file=trim(hydro_weight_filename), form='FORMATTED') do sort=1,6 do kk=kds,kde - read(hydro_weight_unit,'(4(f19.9,2x))') ratio_qr(kk,sort), ratio_qws(kk,sort),ratio_qds(kk,sort), ratio_qg(kk,sort) + read(hydro_weight_unit,'(a8, i2, a8, i2, 4(f19.9,2x))') "sort:", sort, "level:", kk, ratio_qr (kk,sort),ratio_qws(kk,sort), ratio_qds(kk,sort), ratio_qg(kk,sort) end do end do close(hydro_weight_unit) From 464a0e9882e9e3c74ed66bf5827e4dde2b2d3d8a Mon Sep 17 00:00:00 2001 From: mos3r3n Date: Tue, 26 Sep 2023 12:08:37 -0600 Subject: [PATCH 06/20] variable name change --- var/da/da_radar/da_get_innov_vector_radar.inc | 172 ++++++++---------- 1 file changed, 79 insertions(+), 93 deletions(-) diff --git a/var/da/da_radar/da_get_innov_vector_radar.inc b/var/da/da_radar/da_get_innov_vector_radar.inc index 6025fd11c1..2f8a9d79bf 100644 --- a/var/da/da_radar/da_get_innov_vector_radar.inc +++ b/var/da/da_radar/da_get_innov_vector_radar.inc @@ -66,10 +66,11 @@ subroutine da_get_innov_vector_radar (it, grid, ob, iv) !--------------------------------------------------------- ! for background-dependent hydrmeteor retrieval scheme !--------------------------------------------------------- - character(len=filename_len) :: hydro_weight_filename + character(len=filename_len) :: hydro_weight_file integer :: hydro_weight_unit - integer :: ii, jj, kk, sort, nk - logical :: gr_exist + integer :: ii, jj, kk, nk + integer :: h_index, z_index + logical :: qg_exist logical :: file_exist real :: zerr_os,zews_os,zeds_os,zegr_os real, allocatable :: count_rr(:,:) @@ -263,16 +264,16 @@ END IF !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! if (use_radar_rhv .and. radar_rhv_opt == 2 ) then ! allocate variables - allocate (count_rr(kde,6)) - allocate (ratio_qr(kde,6)) - allocate (ratio_qds(kde,6)) - allocate (ratio_qws(kde,6)) - allocate (ratio_qg(kde,6)) - allocate (ze_qr(kde,6)) - allocate (ze_qds(kde,6)) - allocate (ze_qws(kde,6)) - allocate (ze_qg(kde,6)) - allocate (rho_s(kde,6)) + allocate (count_rr(40,6)) + allocate (ratio_qr(40,6)) + allocate (ratio_qds(40,6)) + allocate (ratio_qws(40,6)) + allocate (ratio_qg(40,6)) + allocate (ze_qr(40,6)) + allocate (ze_qds(40,6)) + allocate (ze_qws(40,6)) + allocate (ze_qg(40,6)) + allocate (rho_s(40,6)) ! variable initialization count_rr = 0. @@ -287,15 +288,16 @@ END IF ratio_qg = 0. ! read in historical stastics from file hydro_mean.dat if available - hydro_weight_filename='hydro_mean.dat' - inquire(file=trim(hydro_weight_filename), exist=file_exist) + hydro_weight_file='hydro_mean.dat' + inquire(file=trim(hydro_weight_file), exist=file_exist) if (file_exist) then ! write(*,*) "Read historical statistics of hydrometeors" call da_get_unit(hydro_weight_unit) - open(unit=hydro_weight_unit, file=trim(hydro_weight_filename), form='FORMATTED') - do sort=1,6 - do kk=kds,kde - read(hydro_weight_unit,'(a8, i2, a8, i2, 4(f19.9,2x))') "sort:", sort, "level:", kk, ratio_qr (kk,sort),ratio_qws(kk,sort), ratio_qds(kk,sort), ratio_qg(kk,sort) + open(unit=hydro_weight_unit, file=trim(hydro_weight_file), form='FORMATTED') + do z_index=1,6 + do h_index=1,40 + read(hydro_weight_unit,'(12x, 12x, 4(f19.9,2x))') & + ratio_qr(h_index,z_index),ratio_qws(h_index,z_index), ratio_qds(h_index,z_index), ratio_qg(h_index,z_index) end do end do close(hydro_weight_unit) @@ -310,47 +312,42 @@ END IF call da_radar_rf(grid%xb%qrn(ii,jj,kk), grid%xb%qsn(ii,jj,kk), grid%xb%qgr(ii,jj,kk), & grid%xb%t(ii,jj,kk)-273.15, grid%xb%rho(ii,jj,kk), bg_rze) bg_rf = 10.*log10(bg_rze) - !! get the index of refledctity threshould - if( bg_rf .ge. 5.0 .and. bg_rf .lt. 15.0 ) then - sort=1 - else if( bg_rf .ge. 15.0 .and. bg_rf .lt. 25.0 ) then - sort=2 - else if( bg_rf .ge. 25.0 .and. bg_rf .lt. 35.0 ) then - sort=3 - else if (bg_rf .ge. 35.0 .and. bg_rf .lt. 45.0 ) then - sort=4 - else if (bg_rf .ge. 45.0 .and. bg_rf .lt. 55.0 ) then - sort=5 - else if (bg_rf .ge. 55) then - sort=6 - else - sort=0 ! non-precip - end if + !! get the index of reflectvity + z_index = nint(bg_rf/10.) + z_index = max(z_index, 0) + z_index = min(z_index, 6) + !! get the model height (m) + !! get the height index + h_index = nint(grid%xb%h(ii,jj,kk)/500.) + h_index = max(h_index, 1) + h_index = min(h_index,40) + print*, bg_rf, z_index, grid%xb%h(ii,jj,kk), h_index + !! Sum of the model states of different model levels and reflectivity threshoulds - if (sort .ne. 0 ) then - ze_qr(kk,sort) = ze_qr(kk,sort) + grid%xb%qrn(ii,jj,kk) + if (z_index .ne. 0 ) then + ze_qr(h_index,z_index) = ze_qr(h_index,z_index) + grid%xb%qrn(ii,jj,kk) if ( grid%xb%t(ii,jj,kk) > 273.15 ) then - ze_qws(kk,sort) = ze_qws(kk,sort) + grid%xb%qsn(ii,jj,kk) + ze_qws(h_index,z_index) = ze_qws(h_index,z_index) + grid%xb%qsn(ii,jj,kk) else - ze_qds(kk,sort) = ze_qds(kk,sort) + grid%xb%qsn(ii,jj,kk) + ze_qds(h_index,z_index) = ze_qds(h_index,z_index) + grid%xb%qsn(ii,jj,kk) end if - ze_qg(kk,sort) = ze_qg(kk,sort) + grid%xb%qgr(ii,jj,kk) - rho_s(kk,sort) = rho_s(kk,sort) + grid%xb%rho(ii,jj,kk) - count_rr(kk,sort) = count_rr(kk,sort) + 1. + ze_qg(h_index,z_index) = ze_qg(h_index,z_index) + grid%xb%qgr(ii,jj,kk) + rho_s(h_index,z_index) = rho_s(h_index,z_index) + grid%xb%rho(ii,jj,kk) + count_rr(h_index,z_index) = count_rr(h_index,z_index) + 1. end if end do ! west-east end do ! south-north end do ! bottom-top ! Average over whole domain - do sort=1,6 - do kk=kds,kde - count_rr(kk,sort) = wrf_dm_sum_real(count_rr(kk,sort)) - rho_s(kk,sort) = wrf_dm_sum_real(rho_s(kk,sort)) - ze_qr(kk,sort) = wrf_dm_sum_real(ze_qr(kk,sort)) - ze_qws(kk,sort) = wrf_dm_sum_real(ze_qws(kk,sort)) - ze_qds(kk,sort) = wrf_dm_sum_real(ze_qds(kk,sort)) - ze_qg(kk,sort) = wrf_dm_sum_real(ze_qg(kk,sort)) + do z_index=1,6 + do h_index=1,40 + count_rr(h_index,z_index) = wrf_dm_sum_real(count_rr(h_index,z_index)) + rho_s(h_index,z_index) = wrf_dm_sum_real(rho_s(h_index,z_index)) + ze_qr(h_index,z_index) = wrf_dm_sum_real(ze_qr(h_index,z_index)) + ze_qws(h_index,z_index) = wrf_dm_sum_real(ze_qws(h_index,z_index)) + ze_qds(h_index,z_index) = wrf_dm_sum_real(ze_qds(h_index,z_index)) + ze_qg(h_index,z_index) = wrf_dm_sum_real(ze_qg(h_index,z_index)) end do end do @@ -358,20 +355,21 @@ END IF hydro_weight_file='hydro_mean.dat.upate' if (rootproc) call da_get_unit(hydro_weight_unit) if (rootproc) open(unit=hydro_weight_unit, file=trim(hydro_weight_file), form='FORMATTED') - do kk=kds,kde - do sort=1,6 - if (count_rr(kk,sort) .gt. 10.) then - if (ze_qr(kk,sort) > 0.) & !! rain water - ratio_qr (kk,sort) = zrr*(rho_s(kk,sort)*ze_qr (kk,sort)/(count_rr(kk,sort)*1.0)**2)**1.75 - if (ze_qws(kk,sort) > 0.) & !! wet snow - ratio_qws(kk,sort) = zws*(rho_s(kk,sort)*ze_qws(kk,sort)/(count_rr(kk,sort)*1.0)**2)**1.75 - if (ze_qds(kk,sort) > 0.) & !! dry snow - ratio_qds(kk,sort) = zds*(rho_s(kk,sort)*ze_qds(kk,sort)/(count_rr(kk,sort)*1.0)**2)**1.75 - if (ze_qg(kk,sort) > 0.) & !! graupel - ratio_qg(kk,sort) = zg*(rho_s(kk,sort)*ze_qg(kk,sort)/(count_rr(kk,sort)**2))**1.75 + do z_index=1,6 + do h_index=1,40 + if (count_rr(h_index,z_index) .gt. 10.) then + if (ze_qr(h_index,z_index) > 0.) & !! rain water + ratio_qr(h_index,z_index) = zrr*(rho_s(h_index,z_index)*ze_qr (h_index,z_index)/(count_rr(h_index,z_index)*1.0)**2)**1.75 + if (ze_qws(h_index,z_index) > 0.) & !! wet snow + ratio_qws(h_index,z_index) = zws*(rho_s(h_index,z_index)*ze_qws(h_index,z_index)/(count_rr(h_index,z_index)*1.0)**2)**1.75 + if (ze_qds(h_index,z_index) > 0.) & !! dry snow + ratio_qds(h_index,z_index) = zds*(rho_s(h_index,z_index)*ze_qds(h_index,z_index)/(count_rr(h_index,z_index)*1.0)**2)**1.75 + if (ze_qg(h_index,z_index) > 0.) & !! graupel + ratio_qg(h_index,z_index) = zg*(rho_s(h_index,z_index)*ze_qg(h_index,z_index)/(count_rr(h_index,z_index)**2))**1.75 end if if (rootproc) & - write(hydro_weight_unit,'(a8, i2, a8, i2, 4(f19.9,2x))'),"sort:", sort, "level:", kk, ratio_qr (kk,sort),ratio_qws(kk,sort), ratio_qds(kk,sort), ratio_qg(kk,sort) + write(hydro_weight_unit,'(a10, i2, a10, i2, 4(f19.9,2x))') "z_index:", z_index, "h_index:", h_index, & + ratio_qr(h_index,z_index),ratio_qws(h_index,z_index), ratio_qds(h_index,z_index), ratio_qg(h_index,z_index) end do end do !bottom-top if (rootproc) close(hydro_weight_unit) @@ -395,7 +393,6 @@ END IF dxm = iv%info(radar)%dxm(1,n) dym = iv%info(radar)%dym(1,n) - model_ps(n) = dxm *(dym * grid%xb % psac(i, j) + dy * grid%xb%psac(i+1, j)) + & dx *(dym * grid%xb % psac(i,j+1) + dy * grid%xb%psac(i+1,j+1)) + & grid%xb % ptop @@ -594,49 +591,38 @@ END IF if (radar_rhv_opt == 2) then ! backgound-dependent reflectivity retrival scheme (Chen et al. 2020, AR; Chen et al. 2021, QJRMS) - if (ob_radar_rf .ge. 5.0 .and. ob_radar_rf .lt. 15.0) then - sort = 1 - else if (ob_radar_rf .ge. 15.0 .and. ob_radar_rf .lt. 25.0) then - sort = 2 - else if (ob_radar_rf .ge. 25.0 .and. ob_radar_rf .lt. 35.0) then - sort = 3 - else if (ob_radar_rf .ge. 35.0 .and. ob_radar_rf .lt. 45.0) then - sort = 4 - else if (ob_radar_rf .ge. 45.0 .and. ob_radar_rf .lt. 55.0) then - sort = 5 - else if (ob_radar_rf .ge. 55.0) then - sort = 6 - else - sort = 0 - end if - - if (sort > 0) then - zerr_os=iv%info(radar)%dzm(k,n)*ratio_qr (iv%info(radar)%k(k,n),sort) + & - iv%info(radar)%dz(k,n) *ratio_qr (iv%info(radar)%k(k,n)+1,sort) - zews_os=iv%info(radar)%dzm(k,n)*ratio_qws(iv%info(radar)%k(k,n),sort) + & - iv%info(radar)%dz(k,n) *ratio_qws(iv%info(radar)%k(k,n)+1,sort) - zeds_os=iv%info(radar)%dzm(k,n)*ratio_qds(iv%info(radar)%k(k,n),sort) + & - iv%info(radar)%dz(k,n) *ratio_qds(iv%info(radar)%k(k,n)+1,sort) - zegr_os=iv%info(radar)%dzm(k,n)*ratio_qg (iv%info(radar)%k(k,n),sort) + & - iv%info(radar)%dz(k,n) *ratio_qg (iv%info(radar)%k(k,n)+1,sort) + !! get the index of reflectvity + z_index = int(ob_radar_rf/10. + 0.5) + z_index = max(z_index, 0) + z_index = min(z_index, 6) + !! get the height index + h_index = int(iv%radar(n)%height(k)/500. + 0.5) + h_index = max(h_index, 1) + h_index = min(h_index,40) + + if (z_index > 0) then + zerr_os = ratio_qr (h_index, z_index) + zews_os = ratio_qws(h_index, z_index) + zeds_os = ratio_qds(h_index, z_index) + zegr_os = ratio_qg (h_index, z_index) ! detect whether rain/snow/qgraupel exists in certain temperature. - gr_exist = .true. + qg_exist = .true. ! when T < 273.15K if (model_tc(k,n) .lt. -5.0) zerr_os = 0. if (model_tc(k,n) .lt. 0.0) zews_os = 0. ! when T>= 273.15K if (model_tc(k,n) .ge. 0.0) then zeds_os = 0. - gr_exist = .false. + qg_exist = .false. do nk = k, iv%info(radar)%levels(n) - if (model_tc(nk,n) .lt. -5.0 .and. ob % radar(n) % rf(nk) .ge. 40.) gr_exist = .true. + if (model_tc(nk,n) .lt. -5.0 .and. ob % radar(n) % rf(nk) .ge. 40.) qg_exist = .true. end do end if if (model_tc(k,n) .ge. 5.0) then zews_os = 0. - gr_exist = .false. + qg_exist = .false. end if - if (.not. gr_exist) zegr_os = 0. + if (.not. qg_exist) zegr_os = 0. ! determine the contributions of each hydrometeor to reflectivity if ((zerr_os+zews_os+zeds_os+zegr_os) .gt. 0.) then From a8db7c765a4d9ea85a56ebc9520243bc94fb8c0e Mon Sep 17 00:00:00 2001 From: Tao Sun <41139193+mos3r3n@users.noreply.github.com> Date: Tue, 26 Sep 2023 13:09:02 -0600 Subject: [PATCH 07/20] Update da_get_innov_vector_radar.inc --- var/da/da_radar/da_get_innov_vector_radar.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/da/da_radar/da_get_innov_vector_radar.inc b/var/da/da_radar/da_get_innov_vector_radar.inc index 2f8a9d79bf..d1afa8a1f9 100644 --- a/var/da/da_radar/da_get_innov_vector_radar.inc +++ b/var/da/da_radar/da_get_innov_vector_radar.inc @@ -352,7 +352,7 @@ END IF end do ! Get the reflectivity contributed from each hydrometeor type - hydro_weight_file='hydro_mean.dat.upate' + hydro_weight_file='hydro_mean.dat.update' if (rootproc) call da_get_unit(hydro_weight_unit) if (rootproc) open(unit=hydro_weight_unit, file=trim(hydro_weight_file), form='FORMATTED') do z_index=1,6 From d07a2a37e283cf74c5c3907541ee56ccc172022c Mon Sep 17 00:00:00 2001 From: Tao Sun <41139193+mos3r3n@users.noreply.github.com> Date: Tue, 26 Sep 2023 13:12:12 -0600 Subject: [PATCH 08/20] Update da_get_innov_vector_radar.inc --- var/da/da_radar/da_get_innov_vector_radar.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/da/da_radar/da_get_innov_vector_radar.inc b/var/da/da_radar/da_get_innov_vector_radar.inc index d1afa8a1f9..1a1ae8cad8 100644 --- a/var/da/da_radar/da_get_innov_vector_radar.inc +++ b/var/da/da_radar/da_get_innov_vector_radar.inc @@ -357,7 +357,7 @@ END IF if (rootproc) open(unit=hydro_weight_unit, file=trim(hydro_weight_file), form='FORMATTED') do z_index=1,6 do h_index=1,40 - if (count_rr(h_index,z_index) .gt. 10.) then + if (count_rr(h_index,z_index) .gt. 1.) then if (ze_qr(h_index,z_index) > 0.) & !! rain water ratio_qr(h_index,z_index) = zrr*(rho_s(h_index,z_index)*ze_qr (h_index,z_index)/(count_rr(h_index,z_index)*1.0)**2)**1.75 if (ze_qws(h_index,z_index) > 0.) & !! wet snow From c827763f2c8d70890a926be81b8a1fb8dd337eef Mon Sep 17 00:00:00 2001 From: Tao Sun <41139193+mos3r3n@users.noreply.github.com> Date: Tue, 26 Sep 2023 13:19:14 -0600 Subject: [PATCH 09/20] Update da_get_innov_vector_radar.inc The background-dependent hydrometer retrieval scheme for indirect reflectivity assimilation --- var/da/da_radar/da_get_innov_vector_radar.inc | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/var/da/da_radar/da_get_innov_vector_radar.inc b/var/da/da_radar/da_get_innov_vector_radar.inc index 1a1ae8cad8..d6688689cc 100644 --- a/var/da/da_radar/da_get_innov_vector_radar.inc +++ b/var/da/da_radar/da_get_innov_vector_radar.inc @@ -264,16 +264,16 @@ END IF !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! if (use_radar_rhv .and. radar_rhv_opt == 2 ) then ! allocate variables - allocate (count_rr(40,6)) - allocate (ratio_qr(40,6)) - allocate (ratio_qds(40,6)) - allocate (ratio_qws(40,6)) - allocate (ratio_qg(40,6)) - allocate (ze_qr(40,6)) - allocate (ze_qds(40,6)) - allocate (ze_qws(40,6)) - allocate (ze_qg(40,6)) - allocate (rho_s(40,6)) + allocate (count_rr(40,7)) + allocate (ratio_qr(40,7)) + allocate (ratio_qds(40,7)) + allocate (ratio_qws(40,7)) + allocate (ratio_qg(40,7)) + allocate (ze_qr(40,7)) + allocate (ze_qds(40,7)) + allocate (ze_qws(40,7)) + allocate (ze_qg(40,7)) + allocate (rho_s(40,7)) ! variable initialization count_rr = 0. @@ -294,7 +294,7 @@ END IF ! write(*,*) "Read historical statistics of hydrometeors" call da_get_unit(hydro_weight_unit) open(unit=hydro_weight_unit, file=trim(hydro_weight_file), form='FORMATTED') - do z_index=1,6 + do z_index=1,7 do h_index=1,40 read(hydro_weight_unit,'(12x, 12x, 4(f19.9,2x))') & ratio_qr(h_index,z_index),ratio_qws(h_index,z_index), ratio_qds(h_index,z_index), ratio_qg(h_index,z_index) @@ -313,9 +313,9 @@ END IF grid%xb%t(ii,jj,kk)-273.15, grid%xb%rho(ii,jj,kk), bg_rze) bg_rf = 10.*log10(bg_rze) !! get the index of reflectvity - z_index = nint(bg_rf/10.) + z_index = nint(bg_rf/10.)+1 z_index = max(z_index, 0) - z_index = min(z_index, 6) + z_index = min(z_index, 7) !! get the model height (m) !! get the height index h_index = nint(grid%xb%h(ii,jj,kk)/500.) @@ -340,7 +340,7 @@ END IF end do ! bottom-top ! Average over whole domain - do z_index=1,6 + do z_index=1,7 do h_index=1,40 count_rr(h_index,z_index) = wrf_dm_sum_real(count_rr(h_index,z_index)) rho_s(h_index,z_index) = wrf_dm_sum_real(rho_s(h_index,z_index)) @@ -355,7 +355,7 @@ END IF hydro_weight_file='hydro_mean.dat.update' if (rootproc) call da_get_unit(hydro_weight_unit) if (rootproc) open(unit=hydro_weight_unit, file=trim(hydro_weight_file), form='FORMATTED') - do z_index=1,6 + do z_index=1,7 do h_index=1,40 if (count_rr(h_index,z_index) .gt. 1.) then if (ze_qr(h_index,z_index) > 0.) & !! rain water @@ -592,11 +592,11 @@ END IF if (radar_rhv_opt == 2) then ! backgound-dependent reflectivity retrival scheme (Chen et al. 2020, AR; Chen et al. 2021, QJRMS) !! get the index of reflectvity - z_index = int(ob_radar_rf/10. + 0.5) + z_index = nint(ob_radar_rf/10.+1) z_index = max(z_index, 0) - z_index = min(z_index, 6) + z_index = min(z_index, 7) !! get the height index - h_index = int(iv%radar(n)%height(k)/500. + 0.5) + h_index = nint(iv%radar(n)%height(k)/500.) h_index = max(h_index, 1) h_index = min(h_index,40) @@ -632,7 +632,7 @@ END IF czg = zegr_os/(zerr_os+zews_os+zeds_os+zegr_os) end if else - ob_radar_rf = -15.0 !! Assign reflectivity below 5.0 dBZ to -5.0 dbZ for supression + ob_radar_rf = -15.0 !! Assign reflectivity below -5.0 dBZ to -15.0 dbZ for supression !! No need to tune the weights because of very small impacts end if end if From 7a6082b69063f23d0364c7582a2be3f08b35e894 Mon Sep 17 00:00:00 2001 From: Tao Sun <41139193+mos3r3n@users.noreply.github.com> Date: Tue, 26 Sep 2023 14:49:59 -0600 Subject: [PATCH 10/20] Update da_get_innov_vector_radar.inc --- var/da/da_radar/da_get_innov_vector_radar.inc | 1 - 1 file changed, 1 deletion(-) diff --git a/var/da/da_radar/da_get_innov_vector_radar.inc b/var/da/da_radar/da_get_innov_vector_radar.inc index d6688689cc..362fed5037 100644 --- a/var/da/da_radar/da_get_innov_vector_radar.inc +++ b/var/da/da_radar/da_get_innov_vector_radar.inc @@ -321,7 +321,6 @@ END IF h_index = nint(grid%xb%h(ii,jj,kk)/500.) h_index = max(h_index, 1) h_index = min(h_index,40) - print*, bg_rf, z_index, grid%xb%h(ii,jj,kk), h_index !! Sum of the model states of different model levels and reflectivity threshoulds if (z_index .ne. 0 ) then From dec34f0b072d0e541586e0bb93fe452020b6a724 Mon Sep 17 00:00:00 2001 From: mos3r3n Date: Thu, 5 Oct 2023 21:18:44 -0600 Subject: [PATCH 11/20] modified: var/da/da_radar/da_get_innov_vector_radar.inc --- var/build/inc/commit_decl | 2 +- var/da/da_radar/da_get_innov_vector_radar.inc | 213 +++++++++--------- 2 files changed, 109 insertions(+), 106 deletions(-) diff --git a/var/build/inc/commit_decl b/var/build/inc/commit_decl index 023ea77880..3633942fb9 120000 --- a/var/build/inc/commit_decl +++ b/var/build/inc/commit_decl @@ -1 +1 @@ -/glade/work/taosun/model/V4.5/WRF/inc/commit_decl \ No newline at end of file +/glade/scratch/taosun/temp/WRF/inc/commit_decl \ No newline at end of file diff --git a/var/da/da_radar/da_get_innov_vector_radar.inc b/var/da/da_radar/da_get_innov_vector_radar.inc index 362fed5037..f6c7a9f2ee 100644 --- a/var/da/da_radar/da_get_innov_vector_radar.inc +++ b/var/da/da_radar/da_get_innov_vector_radar.inc @@ -50,7 +50,7 @@ subroutine da_get_innov_vector_radar (it, grid, ob, iv) integer :: irv, irvf integer :: irf, irff - real :: alog_10, czr, czds, czws, czg, zrr, zds, zws, zg, rze + real :: alog_10, czrn, czds, czws, czgr, zrn, zds, zws, zgr, rze real :: ob_radar_rf, bg_rze, bg_rf real :: cwr, cws ! weighting coefficient for mixing ratio @@ -63,29 +63,29 @@ subroutine da_get_innov_vector_radar (it, grid, ob, iv) logical :: echo_non_precip, echo_rf_good - !--------------------------------------------------------- + !-------------------------------------------------------- ! for background-dependent hydrmeteor retrieval scheme - !--------------------------------------------------------- + !-------------------------------------------------------- character(len=filename_len) :: hydro_weight_file integer :: hydro_weight_unit integer :: ii, jj, kk, nk - integer :: h_index, z_index - logical :: qg_exist - logical :: file_exist - real :: zerr_os,zews_os,zeds_os,zegr_os - real, allocatable :: count_rr(:,:) - real, allocatable :: ratio_qr(:,:) - real, allocatable :: ze_qr(:,:) - real, allocatable :: ratio_qds(:,:), ratio_qws(:,:) - real, allocatable :: ze_qds(:,:), ze_qws(:,:) - real, allocatable :: ratio_qg(:,:) - real, allocatable :: ze_qg(:,:) - real, allocatable :: rho_s(:,:) + integer :: h_index, z_index + logical :: file_exist, qg_exist + real :: zern_ratio, zews_ratio, zeds_ratio, zegr_ratio + real, allocatable :: num_sample(:,:) + real, allocatable :: avg_zern(:,:) + real, allocatable :: avg_zeds(:,:) + real, allocatable :: avg_zews(:,:) + real, allocatable :: avg_zegr(:,:) + real, allocatable :: avg_qrn(:,:) + real, allocatable :: avg_qds(:,:) + real, allocatable :: avg_qws(:,:) + real, allocatable :: avg_qgr(:,:) + real, allocatable :: ave_rho(:,:) !------------------------ ! for jung et al 2008 !------------------------ - real :: qvp,qra,qsn,qgr ! mixing ratio real :: dqra,dqsn,dqgr,dtmk,dqvp real :: dqnr,dqns,dqng @@ -102,10 +102,10 @@ subroutine da_get_innov_vector_radar (it, grid, ob, iv) ! Ze=zv*(ro*v)**1.75 ! Zdb=10*log10(Ze) - zrr = 3.63*1.00e+9 ! rainwater + zrn = 3.63*1.00e+9 ! rainwater zds = 9.80*1.00e+8 ! dry snow zws = 4.26*1.00e+11 ! wet snow - zg = 4.33*1.00e+10 ! grauple + zgr = 4.33*1.00e+10 ! grauple !------------------------ ! for jung et al 2008 @@ -264,28 +264,28 @@ END IF !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! if (use_radar_rhv .and. radar_rhv_opt == 2 ) then ! allocate variables - allocate (count_rr(40,7)) - allocate (ratio_qr(40,7)) - allocate (ratio_qds(40,7)) - allocate (ratio_qws(40,7)) - allocate (ratio_qg(40,7)) - allocate (ze_qr(40,7)) - allocate (ze_qds(40,7)) - allocate (ze_qws(40,7)) - allocate (ze_qg(40,7)) - allocate (rho_s(40,7)) + allocate (num_sample(40,7)) + allocate (avg_zern(40,7)) + allocate (avg_zeds(40,7)) + allocate (avg_zews(40,7)) + allocate (avg_zegr(40,7)) + allocate (avg_qrn(40,7)) + allocate (avg_qds(40,7)) + allocate (avg_qws(40,7)) + allocate (avg_qgr(40,7)) + allocate (ave_rho(40,7)) ! variable initialization - count_rr = 0. - ze_qr = 0. - ze_qws = 0. - ze_qds = 0. - ze_qg = 0. - rho_s = 0. - ratio_qr = 0. - ratio_qws = 0. - ratio_qds = 0. - ratio_qg = 0. + num_sample = 0. + avg_qrn = 0. + avg_qws = 0. + avg_qds = 0. + avg_qgr = 0. + ave_rho = 0. + avg_zern = 0. + avg_zews = 0. + avg_zeds = 0. + avg_zegr = 0. ! read in historical stastics from file hydro_mean.dat if available hydro_weight_file='hydro_mean.dat' @@ -294,10 +294,11 @@ END IF ! write(*,*) "Read historical statistics of hydrometeors" call da_get_unit(hydro_weight_unit) open(unit=hydro_weight_unit, file=trim(hydro_weight_file), form='FORMATTED') + read(unit=hydro_weight_unit) ! skip one line for the header do z_index=1,7 do h_index=1,40 - read(hydro_weight_unit,'(12x, 12x, 4(f19.9,2x))') & - ratio_qr(h_index,z_index),ratio_qws(h_index,z_index), ratio_qds(h_index,z_index), ratio_qg(h_index,z_index) + read(hydro_weight_unit,'(6x, 6x, 4(f19.9,2x))') & + avg_zern(h_index,z_index),avg_zews(h_index,z_index), avg_zeds(h_index,z_index), avg_zegr(h_index,z_index) end do end do close(hydro_weight_unit) @@ -316,7 +317,6 @@ END IF z_index = nint(bg_rf/10.)+1 z_index = max(z_index, 0) z_index = min(z_index, 7) - !! get the model height (m) !! get the height index h_index = nint(grid%xb%h(ii,jj,kk)/500.) h_index = max(h_index, 1) @@ -324,29 +324,31 @@ END IF !! Sum of the model states of different model levels and reflectivity threshoulds if (z_index .ne. 0 ) then - ze_qr(h_index,z_index) = ze_qr(h_index,z_index) + grid%xb%qrn(ii,jj,kk) + avg_qrn(h_index,z_index) = avg_qrn(h_index,z_index) + grid%xb%qrn(ii,jj,kk) if ( grid%xb%t(ii,jj,kk) > 273.15 ) then - ze_qws(h_index,z_index) = ze_qws(h_index,z_index) + grid%xb%qsn(ii,jj,kk) + avg_qws(h_index,z_index) = avg_qws(h_index,z_index) + grid%xb%qsn(ii,jj,kk) else - ze_qds(h_index,z_index) = ze_qds(h_index,z_index) + grid%xb%qsn(ii,jj,kk) + avg_qds(h_index,z_index) = avg_qds(h_index,z_index) + grid%xb%qsn(ii,jj,kk) end if - ze_qg(h_index,z_index) = ze_qg(h_index,z_index) + grid%xb%qgr(ii,jj,kk) - rho_s(h_index,z_index) = rho_s(h_index,z_index) + grid%xb%rho(ii,jj,kk) - count_rr(h_index,z_index) = count_rr(h_index,z_index) + 1. + avg_qgr(h_index,z_index) = avg_qgr(h_index,z_index) + grid%xb%qgr(ii,jj,kk) + ave_rho(h_index,z_index) = ave_rho(h_index,z_index) + grid%xb%rho(ii,jj,kk) + num_sample(h_index,z_index) = num_sample(h_index,z_index) + 1. end if end do ! west-east end do ! south-north end do ! bottom-top - ! Average over whole domain + ! sum over whole domain and the do average do z_index=1,7 do h_index=1,40 - count_rr(h_index,z_index) = wrf_dm_sum_real(count_rr(h_index,z_index)) - rho_s(h_index,z_index) = wrf_dm_sum_real(rho_s(h_index,z_index)) - ze_qr(h_index,z_index) = wrf_dm_sum_real(ze_qr(h_index,z_index)) - ze_qws(h_index,z_index) = wrf_dm_sum_real(ze_qws(h_index,z_index)) - ze_qds(h_index,z_index) = wrf_dm_sum_real(ze_qds(h_index,z_index)) - ze_qg(h_index,z_index) = wrf_dm_sum_real(ze_qg(h_index,z_index)) + num_sample(h_index,z_index) = wrf_dm_sum_real(num_sample(h_index,z_index)) + if (num_sample(h_index,z_index) .gt. 0) then + ave_rho(h_index,z_index) = wrf_dm_sum_real(ave_rho(h_index,z_index)) / num_sample(h_index,z_index) + avg_qrn(h_index,z_index) = wrf_dm_sum_real(avg_qrn(h_index,z_index)) / num_sample(h_index,z_index) + avg_qws(h_index,z_index) = wrf_dm_sum_real(avg_qws(h_index,z_index)) / num_sample(h_index,z_index) + avg_qds(h_index,z_index) = wrf_dm_sum_real(avg_qds(h_index,z_index)) / num_sample(h_index,z_index) + avg_qgr(h_index,z_index) = wrf_dm_sum_real(avg_qgr(h_index,z_index)) / num_sample(h_index,z_index) + end if end do end do @@ -354,21 +356,23 @@ END IF hydro_weight_file='hydro_mean.dat.update' if (rootproc) call da_get_unit(hydro_weight_unit) if (rootproc) open(unit=hydro_weight_unit, file=trim(hydro_weight_file), form='FORMATTED') + if (rootproc) write(hydro_weight_unit,'(2(a8,2x), 4(a19,2x))') & + "z_index:", "h_index:", "===Rainwater===", "===Wet snow===", "===Dray snow===", "===Graupel===" do z_index=1,7 do h_index=1,40 - if (count_rr(h_index,z_index) .gt. 1.) then - if (ze_qr(h_index,z_index) > 0.) & !! rain water - ratio_qr(h_index,z_index) = zrr*(rho_s(h_index,z_index)*ze_qr (h_index,z_index)/(count_rr(h_index,z_index)*1.0)**2)**1.75 - if (ze_qws(h_index,z_index) > 0.) & !! wet snow - ratio_qws(h_index,z_index) = zws*(rho_s(h_index,z_index)*ze_qws(h_index,z_index)/(count_rr(h_index,z_index)*1.0)**2)**1.75 - if (ze_qds(h_index,z_index) > 0.) & !! dry snow - ratio_qds(h_index,z_index) = zds*(rho_s(h_index,z_index)*ze_qds(h_index,z_index)/(count_rr(h_index,z_index)*1.0)**2)**1.75 - if (ze_qg(h_index,z_index) > 0.) & !! graupel - ratio_qg(h_index,z_index) = zg*(rho_s(h_index,z_index)*ze_qg(h_index,z_index)/(count_rr(h_index,z_index)**2))**1.75 + if (num_sample(h_index,z_index) .gt. 100.) then !! The threshold 100 is used for num_sample to make the statisctic more confidential + if (avg_qrn(h_index,z_index) > 0.) & !! rain water + avg_zern(h_index,z_index) = zrn*(ave_rho(h_index,z_index)*avg_qrn(h_index,z_index))**1.75 + if (avg_qws(h_index,z_index) > 0.) & !! wet snow + avg_zews(h_index,z_index) = zws*(ave_rho(h_index,z_index)*avg_qws(h_index,z_index))**1.75 + if (avg_qds(h_index,z_index) > 0.) & !! dry snow + avg_zeds(h_index,z_index) = zds*(ave_rho(h_index,z_index)*avg_qds(h_index,z_index))**1.75 + if (avg_qgr(h_index,z_index) > 0.) & !! graupel + avg_zegr(h_index,z_index) = zgr*(ave_rho(h_index,z_index)*avg_qgr(h_index,z_index))**1.75 end if if (rootproc) & - write(hydro_weight_unit,'(a10, i2, a10, i2, 4(f19.9,2x))') "z_index:", z_index, "h_index:", h_index, & - ratio_qr(h_index,z_index),ratio_qws(h_index,z_index), ratio_qds(h_index,z_index), ratio_qg(h_index,z_index) + write(hydro_weight_unit,'(2(i8, 2x), 4(f19.9,2x))') z_index, h_index, & + avg_zern(h_index,z_index),avg_zews(h_index,z_index), avg_zeds(h_index,z_index), avg_zegr(h_index,z_index) end do end do !bottom-top if (rootproc) close(hydro_weight_unit) @@ -567,25 +571,25 @@ END IF ! The original WRFDA hydrometeor retrieval scheme if (model_tc(k,n) .ge. 5.0) then - czr = 1.0 + czrn = 1.0 czws = 0.0 czds = 0.0 - czg = 0.0 + czgr = 0.0 else if (model_tc(k,n) .ge. 0.0) then - czr = (model_tc(k,n)+5.0)/10.0 - czws = (1.0-czr)*zws/(zws+zg) + czrn = (model_tc(k,n)+5.0)/10.0 + czws = (1.0-czrn)*zws/(zws+zgr) czds = 0.0 - czg = (1.0-czr)*zg/(zws+zg) + czgr = (1.0-czrn)*zgr/(zws+zgr) else if (model_tc(k,n) .ge. -5.0) then - czr = (model_tc(k,n)+5.0)/10.0 + czrn = (model_tc(k,n)+5.0)/10.0 czws = 0.0 - czds = (1.0-czr)*zds/(zds+zg) - czg = (1.0-czr)*zg/(zds+zg) + czds = (1.0-czrn)*zds/(zds+zgr) + czgr = (1.0-czrn)*zgr/(zds+zgr) else if (model_tc(k,n) .lt. -5.0) then - czr = 0.0 + czrn = 0.0 czws = 0.0 - czds = zds/(zds+zg) - czg = zg/(zds+zg) + czds = zds/(zds+zgr) + czgr = zgr/(zds+zgr) end if if (radar_rhv_opt == 2) then @@ -600,35 +604,34 @@ END IF h_index = min(h_index,40) if (z_index > 0) then - zerr_os = ratio_qr (h_index, z_index) - zews_os = ratio_qws(h_index, z_index) - zeds_os = ratio_qds(h_index, z_index) - zegr_os = ratio_qg (h_index, z_index) + zern_ratio = avg_zern(h_index, z_index) + zews_ratio = avg_zews(h_index, z_index) + zeds_ratio = avg_zeds(h_index, z_index) + zegr_ratio = avg_zegr(h_index, z_index) ! detect whether rain/snow/qgraupel exists in certain temperature. qg_exist = .true. ! when T < 273.15K - if (model_tc(k,n) .lt. -5.0) zerr_os = 0. - if (model_tc(k,n) .lt. 0.0) zews_os = 0. + if (model_tc(k,n) .lt. -5.0) zern_ratio = 0. + if (model_tc(k,n) .lt. 0.0) zews_ratio = 0. ! when T>= 273.15K if (model_tc(k,n) .ge. 0.0) then - zeds_os = 0. + zeds_ratio = 0. qg_exist = .false. do nk = k, iv%info(radar)%levels(n) if (model_tc(nk,n) .lt. -5.0 .and. ob % radar(n) % rf(nk) .ge. 40.) qg_exist = .true. end do end if if (model_tc(k,n) .ge. 5.0) then - zews_os = 0. - qg_exist = .false. + zews_ratio = 0. end if - if (.not. qg_exist) zegr_os = 0. + if (.not. qg_exist) zegr_ratio = 0. ! determine the contributions of each hydrometeor to reflectivity - if ((zerr_os+zews_os+zeds_os+zegr_os) .gt. 0.) then - czr = zerr_os/(zerr_os+zews_os+zeds_os+zegr_os) - czws = zews_os/(zerr_os+zews_os+zeds_os+zegr_os) - czds = zeds_os/(zerr_os+zews_os+zeds_os+zegr_os) - czg = zegr_os/(zerr_os+zews_os+zeds_os+zegr_os) + if ((zern_ratio+zews_ratio+zeds_ratio+zegr_ratio) .gt. 0.) then + czrn = zern_ratio/(zern_ratio+zews_ratio+zeds_ratio+zegr_ratio) + czws = zews_ratio/(zern_ratio+zews_ratio+zeds_ratio+zegr_ratio) + czds = zeds_ratio/(zern_ratio+zews_ratio+zeds_ratio+zegr_ratio) + czgr = zegr_ratio/(zern_ratio+zews_ratio+zeds_ratio+zegr_ratio) end if else ob_radar_rf = -15.0 !! Assign reflectivity below -5.0 dBZ to -15.0 dbZ for supression @@ -641,8 +644,8 @@ END IF rze = 10.0**(ob_radar_rf*0.1) ! dBZ to Z ! Rain water mixing ratio - if (czr .gt. 0.) then - iv % radar(n) % rrno(k) = exp ( log(czr*rze/zrr)/1.75 )/model_rho(k,n) + if (czrn .gt. 0.) then + iv % radar(n) % rrno(k) = exp ( log(czrn*rze/zrn)/1.75 )/model_rho(k,n) iv % radar(n) % rrn(k) % qc = 0 end if @@ -658,8 +661,8 @@ END IF end if ! Graupel mixing ratio - if (czg .gt. 0.) then - iv % radar(n) % rgro(k) = exp ( log(czg*rze/zg )/1.75 )/model_rho(k,n) + if (czgr .gt. 0.) then + iv % radar(n) % rgro(k) = exp ( log(czgr*rze/zgr)/1.75 )/model_rho(k,n) iv % radar(n) % rgr(k) % qc = 0 end if @@ -832,16 +835,16 @@ END IF deallocate (model_qsn) deallocate (model_qgr) - if ( allocated(count_rr) ) deallocate (count_rr) - if ( allocated(ratio_qr) ) deallocate (ratio_qr) - if ( allocated(ratio_qds) ) deallocate (ratio_qds) - if ( allocated(ratio_qws) ) deallocate (ratio_qws) - if ( allocated(ratio_qg) ) deallocate (ratio_qg) - if ( allocated(ze_qr) ) deallocate (ze_qr) - if ( allocated(ze_qds) ) deallocate (ze_qds) - if ( allocated(ze_qws) ) deallocate (ze_qws) - if ( allocated(ze_qg) ) deallocate (ze_qg) - if ( allocated(rho_s) ) deallocate (rho_s) + if ( allocated(num_sample) ) deallocate (num_sample) + if ( allocated(avg_zern) ) deallocate (avg_zern) + if ( allocated(avg_zeds) ) deallocate (avg_zeds) + if ( allocated(avg_zews) ) deallocate (avg_zews) + if ( allocated(avg_zegr) ) deallocate (avg_zegr) + if ( allocated(avg_qrn) ) deallocate (avg_qrn) + if ( allocated(avg_qds) ) deallocate (avg_qds) + if ( allocated(avg_qws) ) deallocate (avg_qws) + if ( allocated(avg_qgr) ) deallocate (avg_qgr) + if ( allocated(ave_rho) ) deallocate (ave_rho) if ( use_radar_rqv ) then deallocate (model_lcl) From c6ed2e7d7652e9928d09e8b61008ca40ab5be7ad Mon Sep 17 00:00:00 2001 From: mos3r3n Date: Thu, 5 Oct 2023 22:38:03 -0600 Subject: [PATCH 12/20] modified: var/da/da_radar/da_get_innov_vector_radar.inc --- var/da/da_radar/da_get_innov_vector_radar.inc | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/var/da/da_radar/da_get_innov_vector_radar.inc b/var/da/da_radar/da_get_innov_vector_radar.inc index f6c7a9f2ee..0bc90906af 100644 --- a/var/da/da_radar/da_get_innov_vector_radar.inc +++ b/var/da/da_radar/da_get_innov_vector_radar.inc @@ -291,14 +291,13 @@ END IF hydro_weight_file='hydro_mean.dat' inquire(file=trim(hydro_weight_file), exist=file_exist) if (file_exist) then - ! write(*,*) "Read historical statistics of hydrometeors" call da_get_unit(hydro_weight_unit) open(unit=hydro_weight_unit, file=trim(hydro_weight_file), form='FORMATTED') - read(unit=hydro_weight_unit) ! skip one line for the header + read(unit=hydro_weight_unit, fmt='(A)') do z_index=1,7 do h_index=1,40 - read(hydro_weight_unit,'(6x, 6x, 4(f19.9,2x))') & - avg_zern(h_index,z_index),avg_zews(h_index,z_index), avg_zeds(h_index,z_index), avg_zegr(h_index,z_index) + read(hydro_weight_unit, fmt='(2(10x), 4(f19.9,2x))') & + avg_zern(h_index,z_index), avg_zews(h_index,z_index), avg_zeds(h_index,z_index), avg_zegr(h_index,z_index) end do end do close(hydro_weight_unit) @@ -356,11 +355,11 @@ END IF hydro_weight_file='hydro_mean.dat.update' if (rootproc) call da_get_unit(hydro_weight_unit) if (rootproc) open(unit=hydro_weight_unit, file=trim(hydro_weight_file), form='FORMATTED') - if (rootproc) write(hydro_weight_unit,'(2(a8,2x), 4(a19,2x))') & - "z_index:", "h_index:", "===Rainwater===", "===Wet snow===", "===Dray snow===", "===Graupel===" + if (rootproc) write(unit=hydro_weight_unit, fmt='(2(a8,2x), 4(a19,2x))') & + "z_index:", "h_index:", "===Rainwater===", "===Wet snow===", "===Dray snow===", "===Graupel===" do z_index=1,7 do h_index=1,40 - if (num_sample(h_index,z_index) .gt. 100.) then !! The threshold 100 is used for num_sample to make the statisctic more confidential + if (num_sample(h_index,z_index) .gt. 10.) then if (avg_qrn(h_index,z_index) > 0.) & !! rain water avg_zern(h_index,z_index) = zrn*(ave_rho(h_index,z_index)*avg_qrn(h_index,z_index))**1.75 if (avg_qws(h_index,z_index) > 0.) & !! wet snow @@ -371,8 +370,8 @@ END IF avg_zegr(h_index,z_index) = zgr*(ave_rho(h_index,z_index)*avg_qgr(h_index,z_index))**1.75 end if if (rootproc) & - write(hydro_weight_unit,'(2(i8, 2x), 4(f19.9,2x))') z_index, h_index, & - avg_zern(h_index,z_index),avg_zews(h_index,z_index), avg_zeds(h_index,z_index), avg_zegr(h_index,z_index) + write(unit=hydro_weight_unit, fmt='(2(i8, 2x), 4(f19.9,2x))') z_index, h_index, & + avg_zern(h_index,z_index),avg_zews(h_index,z_index), avg_zeds(h_index,z_index), avg_zegr(h_index,z_index) end do end do !bottom-top if (rootproc) close(hydro_weight_unit) From 6fafedd2e7b5c01af7311bef5074458a1960ff22 Mon Sep 17 00:00:00 2001 From: Tao Sun <41139193+mos3r3n@users.noreply.github.com> Date: Thu, 5 Oct 2023 22:43:23 -0600 Subject: [PATCH 13/20] Update da_get_innov_vector_radar.inc --- var/da/da_radar/da_get_innov_vector_radar.inc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/var/da/da_radar/da_get_innov_vector_radar.inc b/var/da/da_radar/da_get_innov_vector_radar.inc index 0bc90906af..18d1f9427d 100644 --- a/var/da/da_radar/da_get_innov_vector_radar.inc +++ b/var/da/da_radar/da_get_innov_vector_radar.inc @@ -530,7 +530,7 @@ END IF end if end if - ! calculate background/model reflectivity + ! Calculate background/model reflectivity if (use_radar_rhv .or. use_radar_rqv) then if ( echo_rf_good ) then call da_radar_rf (model_qrn(k,n),model_qsn(k,n),model_qgr(k,n),model_tc(k,n),model_rho(k,n),bg_rze) @@ -540,7 +540,7 @@ END IF end if end if - ! calculate retrieved hydrometeorological variables + ! Calculate retrieved hydrometeorological variables ! Background-dependent retrieval scheme (Chen et al. 2020 AR; Chen et al. 2021 QJRMS) if (use_radar_rhv) then if ( echo_rf_good ) then @@ -623,7 +623,7 @@ END IF if (model_tc(k,n) .ge. 5.0) then zews_ratio = 0. end if - if (.not. qg_exist) zegr_ratio = 0. + if (.not. qg_exist .or. model_tc(k,n) .ge. 10.0) zegr_ratio = 0. ! determine the contributions of each hydrometeor to reflectivity if ((zern_ratio+zews_ratio+zeds_ratio+zegr_ratio) .gt. 0.) then From 7a604686ef60dd8bd8c67fe823350f54ce634940 Mon Sep 17 00:00:00 2001 From: Tao Sun <41139193+mos3r3n@users.noreply.github.com> Date: Thu, 5 Oct 2023 22:49:13 -0600 Subject: [PATCH 14/20] Update da_get_innov_vector_radar.inc --- var/da/da_radar/da_get_innov_vector_radar.inc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/var/da/da_radar/da_get_innov_vector_radar.inc b/var/da/da_radar/da_get_innov_vector_radar.inc index 18d1f9427d..2fbb2e09b9 100644 --- a/var/da/da_radar/da_get_innov_vector_radar.inc +++ b/var/da/da_radar/da_get_innov_vector_radar.inc @@ -620,9 +620,7 @@ END IF if (model_tc(nk,n) .lt. -5.0 .and. ob % radar(n) % rf(nk) .ge. 40.) qg_exist = .true. end do end if - if (model_tc(k,n) .ge. 5.0) then - zews_ratio = 0. - end if + if (model_tc(k,n) .ge. 5.0) zews_ratio = 0. if (.not. qg_exist .or. model_tc(k,n) .ge. 10.0) zegr_ratio = 0. ! determine the contributions of each hydrometeor to reflectivity From f546508125539b454853dc2a4c1141f0c3706bc4 Mon Sep 17 00:00:00 2001 From: Tao Sun <41139193+mos3r3n@users.noreply.github.com> Date: Thu, 5 Oct 2023 23:43:15 -0600 Subject: [PATCH 15/20] Delete var/build/inc/commit_decl --- var/build/inc/commit_decl | 1 - 1 file changed, 1 deletion(-) delete mode 120000 var/build/inc/commit_decl diff --git a/var/build/inc/commit_decl b/var/build/inc/commit_decl deleted file mode 120000 index 3633942fb9..0000000000 --- a/var/build/inc/commit_decl +++ /dev/null @@ -1 +0,0 @@ -/glade/scratch/taosun/temp/WRF/inc/commit_decl \ No newline at end of file From 0a121fa5ceaefe0e0d5eedacc81d18ce05e7b721 Mon Sep 17 00:00:00 2001 From: Tao Sun <41139193+mos3r3n@users.noreply.github.com> Date: Thu, 5 Oct 2023 23:43:46 -0600 Subject: [PATCH 16/20] Delete var/build/LICENSE --- var/build/LICENSE | 1 - 1 file changed, 1 deletion(-) delete mode 120000 var/build/LICENSE diff --git a/var/build/LICENSE b/var/build/LICENSE deleted file mode 120000 index b916dd28ca..0000000000 --- a/var/build/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../external/esmf_time_f90/LICENSE \ No newline at end of file From 45aa253a9887125eb921541b471aa07e9546f34b Mon Sep 17 00:00:00 2001 From: Tao Sun <41139193+mos3r3n@users.noreply.github.com> Date: Thu, 5 Oct 2023 23:44:01 -0600 Subject: [PATCH 17/20] Delete var/build/Makefile --- var/build/Makefile | 1 - 1 file changed, 1 deletion(-) delete mode 120000 var/build/Makefile diff --git a/var/build/Makefile b/var/build/Makefile deleted file mode 120000 index 32a5d891c3..0000000000 --- a/var/build/Makefile +++ /dev/null @@ -1 +0,0 @@ -../../external/esmf_time_f90/Makefile \ No newline at end of file From 8ede1f495c88081570cbf7408cfface289f123cc Mon Sep 17 00:00:00 2001 From: Tao Sun <41139193+mos3r3n@users.noreply.github.com> Date: Mon, 18 Dec 2023 15:24:41 -0700 Subject: [PATCH 18/20] Update da_get_innov_vector_radar.inc --- var/da/da_radar/da_get_innov_vector_radar.inc | 104 +++++++++--------- 1 file changed, 54 insertions(+), 50 deletions(-) diff --git a/var/da/da_radar/da_get_innov_vector_radar.inc b/var/da/da_radar/da_get_innov_vector_radar.inc index 2fbb2e09b9..7cd9dc18c1 100644 --- a/var/da/da_radar/da_get_innov_vector_radar.inc +++ b/var/da/da_radar/da_get_innov_vector_radar.inc @@ -68,20 +68,21 @@ subroutine da_get_innov_vector_radar (it, grid, ob, iv) !-------------------------------------------------------- character(len=filename_len) :: hydro_weight_file integer :: hydro_weight_unit + integer :: tot_h_index, tot_z_index integer :: ii, jj, kk, nk - integer :: h_index, z_index + integer :: h_index, z_index logical :: file_exist, qg_exist - real :: zern_ratio, zews_ratio, zeds_ratio, zegr_ratio - real, allocatable :: num_sample(:,:) - real, allocatable :: avg_zern(:,:) - real, allocatable :: avg_zeds(:,:) - real, allocatable :: avg_zews(:,:) - real, allocatable :: avg_zegr(:,:) - real, allocatable :: avg_qrn(:,:) - real, allocatable :: avg_qds(:,:) - real, allocatable :: avg_qws(:,:) - real, allocatable :: avg_qgr(:,:) - real, allocatable :: ave_rho(:,:) + real :: zern_ratio, zews_ratio, zeds_ratio, zegr_ratio ! contributions of each hydrometeor to total reflectivity + real, allocatable :: num_sample(:,:) !number of samples from background + real, allocatable :: avg_zern(:,:) ! ze contributed by bin-averaged rainwater + real, allocatable :: avg_zeds(:,:) ! ze contributed by bin-averaged dry snow + real, allocatable :: avg_zews(:,:) ! ze contributed by bin-averaged wet snow + real, allocatable :: avg_zegr(:,:) ! ze contributed by bin-averaged graupel + real, allocatable :: avg_qrn(:,:) ! bin-averaged rainwater + real, allocatable :: avg_qds(:,:) ! bin-averaged dry snow + real, allocatable :: avg_qws(:,:) ! bin-averaged wet snow + real, allocatable :: avg_qgr(:,:) ! bin-averaged graupel + real, allocatable :: ave_rho(:,:) ! bin-averaged air density !------------------------ ! for jung et al 2008 @@ -259,23 +260,26 @@ END IF end do end if ! lcl for use_radar_rqv - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - ! background-dependent hydroemetor retrieval scheme ! - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + ! background-dependent hydrometer retrieval scheme ! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! if (use_radar_rhv .and. radar_rhv_opt == 2 ) then - ! allocate variables - allocate (num_sample(40,7)) - allocate (avg_zern(40,7)) - allocate (avg_zeds(40,7)) - allocate (avg_zews(40,7)) - allocate (avg_zegr(40,7)) - allocate (avg_qrn(40,7)) - allocate (avg_qds(40,7)) - allocate (avg_qws(40,7)) - allocate (avg_qgr(40,7)) - allocate (ave_rho(40,7)) - - ! variable initialization + !! allocate variables + tot_h_index = 40 ! from 500 m to 20 km, at an interval of 500 m + tot_z_index = 7 ! from -5 dBZ to 65 dBZ, at an interval of 10 dBZ + allocate (num_sample(tot_h_index,tot_z_index)) + allocate (avg_zern(tot_h_index,tot_z_index))) + allocate (avg_zeds(tot_h_index,tot_z_index))) + allocate (avg_zews(tot_h_index,tot_z_index))) + allocate (avg_zegr(tot_h_index,tot_z_index))) + allocate (avg_qrn(tot_h_index,tot_z_index))) + allocate (avg_qds(tot_h_index,tot_z_index))) + allocate (avg_qws(tot_h_index,tot_z_index)) + allocate (avg_qws(tot_h_index,tot_z_index)) + allocate (avg_qgr(tot_h_index,tot_z_index)) + allocate (ave_rho(tot_h_index,tot_z_index)) + + !! variable initialization num_sample = 0. avg_qrn = 0. avg_qws = 0. @@ -287,15 +291,15 @@ END IF avg_zeds = 0. avg_zegr = 0. - ! read in historical stastics from file hydro_mean.dat if available + !! read historical statistics from hydro_mean.dat if available hydro_weight_file='hydro_mean.dat' inquire(file=trim(hydro_weight_file), exist=file_exist) if (file_exist) then call da_get_unit(hydro_weight_unit) open(unit=hydro_weight_unit, file=trim(hydro_weight_file), form='FORMATTED') read(unit=hydro_weight_unit, fmt='(A)') - do z_index=1,7 - do h_index=1,40 + do z_index=1,tot_z_index + do h_index=1,tot_h_index read(hydro_weight_unit, fmt='(2(10x), 4(f19.9,2x))') & avg_zern(h_index,z_index), avg_zews(h_index,z_index), avg_zeds(h_index,z_index), avg_zegr(h_index,z_index) end do @@ -304,7 +308,7 @@ END IF call da_free_unit(hydro_weight_unit) end if - ! calculate the contributions of hydrometeors to reflectivity from the background + !! calculate sum of background states in the current processor do kk=kds, kde do jj=jps, jpe do ii=ips, ipe @@ -314,14 +318,14 @@ END IF bg_rf = 10.*log10(bg_rze) !! get the index of reflectvity z_index = nint(bg_rf/10.)+1 - z_index = max(z_index, 0) - z_index = min(z_index, 7) + z_index = max(z_index, 0) ! set to non-precip if below -5 dBZ + z_index = min(z_index, tot_z_index) ! set to 65 dBZ if above !! get the height index h_index = nint(grid%xb%h(ii,jj,kk)/500.) - h_index = max(h_index, 1) - h_index = min(h_index,40) + h_index = max(h_index, 1) ! set to 500 m if below + h_index = min(h_index,tot_h_index) ! set to 20 km if above - !! Sum of the model states of different model levels and reflectivity threshoulds + !! Sum of the model states of different model levels and reflectivity thresholds if (z_index .ne. 0 ) then avg_qrn(h_index,z_index) = avg_qrn(h_index,z_index) + grid%xb%qrn(ii,jj,kk) if ( grid%xb%t(ii,jj,kk) > 273.15 ) then @@ -337,9 +341,9 @@ END IF end do ! south-north end do ! bottom-top - ! sum over whole domain and the do average - do z_index=1,7 - do h_index=1,40 + !! sum of all processors and get the averaged background states + do z_index=1,tot_z_index + do h_index=1,tot_h_index num_sample(h_index,z_index) = wrf_dm_sum_real(num_sample(h_index,z_index)) if (num_sample(h_index,z_index) .gt. 0) then ave_rho(h_index,z_index) = wrf_dm_sum_real(ave_rho(h_index,z_index)) / num_sample(h_index,z_index) @@ -351,14 +355,14 @@ END IF end do end do - ! Get the reflectivity contributed from each hydrometeor type + !! calculate the contributions of each hydrometeor to total reflectivity and save them to hydro_mean.dat.update hydro_weight_file='hydro_mean.dat.update' if (rootproc) call da_get_unit(hydro_weight_unit) if (rootproc) open(unit=hydro_weight_unit, file=trim(hydro_weight_file), form='FORMATTED') if (rootproc) write(unit=hydro_weight_unit, fmt='(2(a8,2x), 4(a19,2x))') & - "z_index:", "h_index:", "===Rainwater===", "===Wet snow===", "===Dray snow===", "===Graupel===" - do z_index=1,7 - do h_index=1,40 + "z_index:", "h_index:", "===Rainwater===", "===Wet snow===", "===Dry snow===", "===Graupel===" + do z_index=1,tot_z_index + do h_index=1,tot_h_index if (num_sample(h_index,z_index) .gt. 10.) then if (avg_qrn(h_index,z_index) > 0.) & !! rain water avg_zern(h_index,z_index) = zrn*(ave_rho(h_index,z_index)*avg_qrn(h_index,z_index))**1.75 @@ -596,23 +600,23 @@ END IF !! get the index of reflectvity z_index = nint(ob_radar_rf/10.+1) z_index = max(z_index, 0) - z_index = min(z_index, 7) + z_index = min(z_index, tot_z_index) !! get the height index h_index = nint(iv%radar(n)%height(k)/500.) h_index = max(h_index, 1) - h_index = min(h_index,40) + h_index = min(h_index, tot_h_index) if (z_index > 0) then zern_ratio = avg_zern(h_index, z_index) zews_ratio = avg_zews(h_index, z_index) zeds_ratio = avg_zeds(h_index, z_index) zegr_ratio = avg_zegr(h_index, z_index) - ! detect whether rain/snow/qgraupel exists in certain temperature. + ! detect whether rain/snow/graupel exists in certain temperatures. qg_exist = .true. ! when T < 273.15K if (model_tc(k,n) .lt. -5.0) zern_ratio = 0. if (model_tc(k,n) .lt. 0.0) zews_ratio = 0. - ! when T>= 273.15K + ! when T >= 273.15K if (model_tc(k,n) .ge. 0.0) then zeds_ratio = 0. qg_exist = .false. @@ -631,7 +635,7 @@ END IF czgr = zegr_ratio/(zern_ratio+zews_ratio+zeds_ratio+zegr_ratio) end if else - ob_radar_rf = -15.0 !! Assign reflectivity below -5.0 dBZ to -15.0 dbZ for supression + ob_radar_rf = -15.0 !! Assign reflectivity below -5.0 dBZ to -15.0 dbZ for suppression !! No need to tune the weights because of very small impacts end if end if @@ -640,7 +644,7 @@ END IF ob_radar_rf = min(ob_radar_rf, 65.0) ! if dBZ>65.0, set to 65.0 rze = 10.0**(ob_radar_rf*0.1) ! dBZ to Z - ! Rain water mixing ratio + ! Rainwater mixing ratio if (czrn .gt. 0.) then iv % radar(n) % rrno(k) = exp ( log(czrn*rze/zrn)/1.75 )/model_rho(k,n) iv % radar(n) % rrn(k) % qc = 0 From 0a38f0eb117dfdd69207547857b810b1e7157ad9 Mon Sep 17 00:00:00 2001 From: Tao Sun <41139193+mos3r3n@users.noreply.github.com> Date: Mon, 18 Dec 2023 15:39:17 -0700 Subject: [PATCH 19/20] statistics file for radar_rhv_opt = 2 --- var/run/hydro_mean.dat | 281 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 281 insertions(+) create mode 100644 var/run/hydro_mean.dat diff --git a/var/run/hydro_mean.dat b/var/run/hydro_mean.dat new file mode 100644 index 0000000000..8eb4898a78 --- /dev/null +++ b/var/run/hydro_mean.dat @@ -0,0 +1,281 @@ +z_index: h_index: ===Rainwater=== ===Wet snow=== ===Dry snow=== ===Graupel=== + 1 1 1.110364621 0.000000000 0.000000000 0.000000000 + 1 2 1.191557061 0.000000000 0.000000000 0.000000000 + 1 3 1.161192223 0.000000422 0.000000000 0.000000012 + 1 4 1.184153769 0.000000491 0.000000000 0.000000861 + 1 5 1.215461736 0.000001245 0.000000000 0.000032498 + 1 6 1.249331021 0.000003465 0.000000000 0.000434329 + 1 7 1.188016575 0.004044376 0.000000000 0.006002718 + 1 8 0.658994592 0.258770821 0.000000000 0.023394588 + 1 9 0.076126130 0.493034557 0.041413365 0.089647445 + 1 10 0.018769813 0.001490633 0.602470884 0.246930429 + 1 11 0.012606547 0.000000000 0.682771950 0.218481389 + 1 12 0.006803642 0.000000000 0.774319410 0.166622734 + 1 13 0.002194630 0.000000000 0.973009700 0.103653619 + 1 14 0.000539458 0.000000000 1.057978759 0.062300466 + 1 15 0.000082431 0.000000000 1.124476300 0.031163022 + 1 16 0.000006093 0.000000000 1.181231493 0.016328655 + 1 17 0.000000633 0.000000000 1.186018000 0.008443903 + 1 18 0.000000026 0.000000000 1.184349250 0.005027429 + 1 19 0.000000000 0.000000000 1.204235782 0.002984170 + 1 20 0.000000000 0.000000000 1.247787931 0.001683112 + 1 21 0.000000000 0.000000000 1.182761010 0.001269201 + 1 22 0.000000000 0.000000000 1.147730129 0.001016334 + 1 23 0.000000000 0.000000000 1.081208081 0.001700866 + 1 24 0.000000000 0.000000000 1.058804569 0.002569211 + 1 25 0.000000000 0.000000000 1.069680539 0.004297983 + 1 26 0.000000000 0.000000000 1.105473007 0.007288858 + 1 27 0.000000000 0.000000000 1.123479694 0.012151141 + 1 28 0.000000000 0.000000000 1.077309190 0.021671793 + 1 29 0.000000000 0.000000000 1.052393202 0.048595214 + 1 30 0.000000000 0.000000000 1.075984323 0.070006682 + 1 31 0.000000000 0.000000000 0.931566007 0.133371018 + 1 32 0.000000000 0.000000000 0.747305077 0.325729422 + 1 33 0.000000000 0.000000000 0.644699148 0.487301524 + 1 34 0.000000000 0.000000000 0.450743857 0.445289492 + 1 35 0.000000000 0.000000000 0.000000000 0.000000000 + 1 36 0.000000000 0.000000000 0.000000000 0.000000000 + 1 37 0.000000000 0.000000000 0.000000000 0.000000000 + 1 38 0.000000000 0.000000000 0.000000000 0.000000000 + 1 39 0.000000000 0.000000000 0.000000000 0.000000000 + 1 40 0.000000000 0.000000000 0.000000000 0.000000000 + 2 1 11.485129451 0.000000000 0.000000000 0.000003007 + 2 2 11.396482615 0.000000000 0.000000000 0.000002900 + 2 3 11.185311921 0.000000000 0.000000000 0.000009683 + 2 4 11.235017166 0.000000000 0.000000000 0.000194856 + 2 5 11.906867881 0.000000000 0.000000000 0.002666470 + 2 6 11.398847925 0.000004541 0.000000000 0.022052947 + 2 7 11.083775847 0.033225508 0.000000000 0.146095935 + 2 8 5.601100129 3.143440880 0.000000000 0.453400773 + 2 9 0.385149278 4.427440268 0.842305357 1.350949073 + 2 10 0.074431311 0.005787899 7.263531568 2.738786067 + 2 11 0.061621934 0.000000000 8.502123869 2.235457196 + 2 12 0.025156071 0.000000000 9.505179215 1.626797976 + 2 13 0.010992198 0.000000000 10.101719191 1.078340551 + 2 14 0.003244363 0.000000000 10.231194394 0.741196853 + 2 15 0.000662645 0.000000000 10.552275893 0.472961157 + 2 16 0.000098238 0.000000000 11.064867118 0.251980352 + 2 17 0.000012384 0.000000000 11.666488175 0.141560635 + 2 18 0.000000634 0.000000000 12.120665829 0.083122906 + 2 19 0.000000010 0.000000000 12.226585112 0.057658141 + 2 20 0.000000001 0.000000000 11.835602963 0.052477660 + 2 21 0.000000000 0.000000000 10.691880050 0.053115267 + 2 22 0.000000000 0.000000000 10.217975933 0.045675562 + 2 23 0.000000000 0.000000000 10.638193393 0.080667913 + 2 24 0.000000000 0.000000000 10.270044193 0.097538724 + 2 25 0.000000000 0.000000000 10.790678433 0.129937144 + 2 26 0.000000000 0.000000000 10.138613304 0.195182422 + 2 27 0.000000000 0.000000000 10.388859246 0.390972109 + 2 28 0.000000000 0.000000000 10.026214473 0.655879823 + 2 29 0.000000000 0.000000000 10.448562136 1.164410662 + 2 30 0.000000000 0.000000000 9.255934098 1.542579014 + 2 31 0.000000000 0.000000000 6.739038416 3.212334382 + 2 32 0.000000000 0.000000000 4.253683315 5.936382508 + 2 33 0.000000000 0.000000000 2.620775698 6.022844513 + 2 34 0.000000000 0.000000000 1.516023585 4.217000919 + 2 35 0.000000000 0.000000000 0.000000000 0.000000000 + 2 36 0.000000000 0.000000000 0.000000000 0.000000000 + 2 37 0.000000000 0.000000000 0.000000000 0.000000000 + 2 38 0.000000000 0.000000000 0.000000000 0.000000000 + 2 39 0.000000000 0.000000000 0.000000000 0.000000000 + 2 40 0.000000000 0.000000000 0.000000000 0.000000000 + 3 1 109.932737059 0.000000000 0.000000000 0.007300182 + 3 2 122.092308392 0.000000000 0.000000000 0.004750457 + 3 3 108.299617642 0.000000000 0.000000000 0.012055900 + 3 4 101.792502801 0.000000000 0.000000000 0.030280001 + 3 5 100.160428959 0.000000000 0.000000000 0.116610347 + 3 6 103.856724007 0.000012841 0.000000000 0.481703396 + 3 7 98.090295840 0.378111314 0.000000000 3.373334736 + 3 8 37.170010844 43.881337887 0.000000000 7.231537025 + 3 9 1.986512900 59.245030215 3.788333765 14.542833224 + 3 10 0.257588682 0.079139965 59.148690698 33.963358072 + 3 11 0.142639374 0.000000000 74.379298950 24.212025312 + 3 12 0.062449161 0.000000000 85.695554670 16.296630658 + 3 13 0.044433424 0.000000000 90.834574411 11.697786901 + 3 14 0.013513088 0.000000000 100.614643042 7.783517598 + 3 15 0.002632258 0.000000000 105.313449943 4.882578074 + 3 16 0.000608011 0.000000000 104.875563707 3.515404060 + 3 17 0.000127344 0.000000000 100.332384837 2.697175298 + 3 18 0.000011229 0.000000000 94.444999278 2.283756425 + 3 19 0.000000849 0.000000000 91.343376648 2.281776948 + 3 20 0.000000114 0.000000000 90.858339122 2.950994033 + 3 21 0.000000018 0.000000000 95.499549882 3.737628459 + 3 22 0.000000000 0.000000000 95.559053301 3.206116511 + 3 23 0.000000000 0.000000000 93.723659784 4.629463735 + 3 24 0.000000000 0.000000000 93.300850497 5.858860033 + 3 25 0.000000000 0.000000000 95.178401387 7.444054514 + 3 26 0.000000000 0.000000000 97.461499396 8.145390824 + 3 27 0.000000000 0.000000000 87.133350811 11.663855996 + 3 28 0.000000000 0.000000000 80.834832519 13.460996914 + 3 29 0.000000000 0.000000000 84.814338244 15.834966383 + 3 30 0.000000000 0.000000000 69.391744019 33.927804794 + 3 31 0.000000000 0.000000000 30.083735714 58.070284810 + 3 32 0.000000000 0.000000000 12.257326573 55.287309841 + 3 33 0.000000000 0.000000000 0.000000000 0.000000000 + 3 34 0.000000000 0.000000000 0.000000000 0.000000000 + 3 35 0.000000000 0.000000000 0.000000000 0.000000000 + 3 36 0.000000000 0.000000000 0.000000000 0.000000000 + 3 37 0.000000000 0.000000000 0.000000000 0.000000000 + 3 38 0.000000000 0.000000000 0.000000000 0.000000000 + 3 39 0.000000000 0.000000000 0.000000000 0.000000000 + 3 40 0.000000000 0.000000000 0.000000000 0.000000000 + 4 1 582.593809462 0.000000000 0.000000000 0.275695684 + 4 2 862.795555369 0.000000000 0.000000000 0.445421273 + 4 3 891.383213768 0.000000000 0.000000000 1.101761842 + 4 4 847.098276169 0.000000000 0.000000000 3.643758990 + 4 5 788.052922707 0.000000001 0.000000000 9.016362689 + 4 6 775.932257572 0.000351128 0.000000000 27.869731729 + 4 7 684.552482610 6.937820624 0.000000000 96.504729633 + 4 8 165.141711916 602.918935837 0.000000000 77.354169482 + 4 9 11.110636789 841.094650399 6.179351624 73.141773422 + 4 10 2.592036028 2.737345087 258.937787057 546.620437475 + 4 11 0.844255872 0.000000000 393.879602971 428.287945544 + 4 12 0.317489641 0.000000000 499.466047843 305.905580600 + 4 13 0.191266101 0.000000000 549.092489790 245.526019251 + 4 14 0.082059535 0.000000000 610.522719671 187.512000878 + 4 15 0.053360187 0.000000000 631.848753741 158.688350577 + 4 16 0.034991483 0.000000000 658.186633724 154.982817570 + 4 17 0.017887056 0.000000000 682.103320599 165.294918242 + 4 18 0.003462044 0.000000000 686.448995011 171.743749840 + 4 19 0.000334653 0.000000000 671.701302583 174.346198287 + 4 20 0.000028286 0.000000000 660.096023344 185.927444415 + 4 21 0.000004650 0.000000000 701.677255663 200.345430022 + 4 22 0.000000131 0.000000000 721.448748841 200.200056715 + 4 23 0.000000000 0.000000000 692.662575998 173.064245844 + 4 24 0.000000000 0.000000000 737.784120807 182.548421609 + 4 25 0.000000000 0.000000000 770.023711050 158.227222727 + 4 26 0.000000000 0.000000000 793.757906639 155.100836077 + 4 27 0.000000000 0.000000000 741.519916987 201.064163937 + 4 28 0.000000000 0.000000000 672.930450614 237.650181985 + 4 29 0.000000000 0.000000000 443.019863425 306.677426487 + 4 30 0.000000000 0.000000000 190.427776503 401.203266619 + 4 31 0.000000000 0.000000000 73.085580942 376.938006133 + 4 32 0.000000000 0.000000000 0.000000000 0.000000000 + 4 33 0.000000000 0.000000000 0.000000000 0.000000000 + 4 34 0.000000000 0.000000000 0.000000000 0.000000000 + 4 35 0.000000000 0.000000000 0.000000000 0.000000000 + 4 36 0.000000000 0.000000000 0.000000000 0.000000000 + 4 37 0.000000000 0.000000000 0.000000000 0.000000000 + 4 38 0.000000000 0.000000000 0.000000000 0.000000000 + 4 39 0.000000000 0.000000000 0.000000000 0.000000000 + 4 40 0.000000000 0.000000000 0.000000000 0.000000000 + 5 1 0.000000000 0.000000000 0.000000000 0.000000000 + 5 2 5578.212864738 0.000000000 0.000000000 5.008952656 + 5 3 5372.103162093 0.000000000 0.000000000 15.041257061 + 5 4 5409.303983283 0.000000000 0.000000000 53.293005337 + 5 5 5618.973616023 0.000000000 0.000000000 143.608558988 + 5 6 4879.392758682 0.000059368 0.000000000 577.809533511 + 5 7 4349.351164642 2.596033085 0.000000000 1801.203238199 + 5 8 854.397245908 4577.243654527 0.000000000 921.156400737 + 5 9 75.919974478 9679.349939645 0.367917266 405.301875485 + 5 10 30.335561303 461.116686680 412.412251661 5431.263523222 + 5 11 21.568149623 0.000000000 943.750748633 7496.776413933 + 5 12 6.205921446 0.000000000 1263.739261662 7039.395051868 + 5 13 3.792888765 0.000000000 1407.049350326 6724.745434684 + 5 14 3.038712738 0.000000000 1790.658381642 5919.476026227 + 5 15 2.853361147 0.000000000 2068.818886995 5413.289648478 + 5 16 2.403568418 0.000000000 2216.382731337 5005.192492141 + 5 17 1.565186269 0.000000000 2320.988829920 4802.670353956 + 5 18 0.376286682 0.000000000 2400.454833272 4344.940778358 + 5 19 0.036770184 0.000000000 2588.226752918 3615.891464519 + 5 20 0.002523353 0.000000000 2787.011057487 3022.057443383 + 5 21 0.000221743 0.000000000 2508.866032337 3016.475286259 + 5 22 0.000017548 0.000000000 2586.553484818 3026.145356612 + 5 23 0.000000002 0.000000000 3070.760438617 1818.735698531 + 5 24 0.000000000 0.000000000 2372.313361303 2504.319989388 + 5 25 0.000000000 0.000000000 2670.223119035 1809.783614435 + 5 26 0.000000000 0.000000000 2097.739600125 2207.333859109 + 5 27 0.000000000 0.000000000 1778.791933499 2413.184645816 + 5 28 0.000000000 0.000000000 1151.672803739 2910.940558316 + 5 29 0.000000000 0.000000000 712.314792483 2915.130593453 + 5 30 0.000000000 0.000000000 0.000000000 0.000000000 + 5 31 0.000000000 0.000000000 0.000000000 0.000000000 + 5 32 0.000000000 0.000000000 0.000000000 0.000000000 + 5 33 0.000000000 0.000000000 0.000000000 0.000000000 + 5 34 0.000000000 0.000000000 0.000000000 0.000000000 + 5 35 0.000000000 0.000000000 0.000000000 0.000000000 + 5 36 0.000000000 0.000000000 0.000000000 0.000000000 + 5 37 0.000000000 0.000000000 0.000000000 0.000000000 + 5 38 0.000000000 0.000000000 0.000000000 0.000000000 + 5 39 0.000000000 0.000000000 0.000000000 0.000000000 + 5 40 0.000000000 0.000000000 0.000000000 0.000000000 + 6 1 0.000000000 0.000000000 0.000000000 0.000000000 + 6 2 0.000000000 0.000000000 0.000000000 0.000000000 + 6 3 0.000000000 0.000000000 0.000000000 0.000000000 + 6 4 0.000000000 0.000000000 0.000000000 0.000000000 + 6 5 0.000000000 0.000000000 0.000000000 0.000000000 + 6 6 0.000000000 0.000000000 0.000000000 0.000000000 + 6 7 0.000000000 0.000000000 0.000000000 0.000000000 + 6 8 585.441438425 54783.345060723 0.000000000 435.573114800 + 6 9 274.433475945 58482.456351137 0.000000000 1681.712939361 + 6 10 336.916776730 72160.296616061 7.104634902 7034.338489053 + 6 11 525.273471409 0.000000000 471.183532054 50751.765613477 + 6 12 100.010286359 0.000000000 617.046488536 51050.961892201 + 6 13 34.699959319 0.000000000 870.849970379 46579.609004041 + 6 14 32.881914560 0.000000000 1047.803060470 42096.679451858 + 6 15 34.787300955 0.000000000 998.529025322 39468.443642318 + 6 16 34.937999378 0.000000000 912.658347862 37910.400787624 + 6 17 29.476320004 0.000000000 946.200593796 37480.851970615 + 6 18 13.600879797 0.000000000 830.800168234 36555.339790068 + 6 19 0.000000000 0.000000000 0.000000000 0.000000000 + 6 20 0.000000000 0.000000000 0.000000000 0.000000000 + 6 21 0.000000000 0.000000000 0.000000000 0.000000000 + 6 22 0.000000000 0.000000000 0.000000000 0.000000000 + 6 23 0.000000000 0.000000000 0.000000000 0.000000000 + 6 24 0.000000000 0.000000000 0.000000000 0.000000000 + 6 25 0.000000000 0.000000000 0.000000000 0.000000000 + 6 26 0.000000000 0.000000000 0.000000000 0.000000000 + 6 27 0.000000000 0.000000000 0.000000000 0.000000000 + 6 28 0.000000000 0.000000000 0.000000000 0.000000000 + 6 29 0.000000000 0.000000000 0.000000000 0.000000000 + 6 30 0.000000000 0.000000000 0.000000000 0.000000000 + 6 31 0.000000000 0.000000000 0.000000000 0.000000000 + 6 32 0.000000000 0.000000000 0.000000000 0.000000000 + 6 33 0.000000000 0.000000000 0.000000000 0.000000000 + 6 34 0.000000000 0.000000000 0.000000000 0.000000000 + 6 35 0.000000000 0.000000000 0.000000000 0.000000000 + 6 36 0.000000000 0.000000000 0.000000000 0.000000000 + 6 37 0.000000000 0.000000000 0.000000000 0.000000000 + 6 38 0.000000000 0.000000000 0.000000000 0.000000000 + 6 39 0.000000000 0.000000000 0.000000000 0.000000000 + 6 40 0.000000000 0.000000000 0.000000000 0.000000000 + 7 1 0.000000000 0.000000000 0.000000000 0.000000000 + 7 2 0.000000000 0.000000000 0.000000000 0.000000000 + 7 3 0.000000000 0.000000000 0.000000000 0.000000000 + 7 4 0.000000000 0.000000000 0.000000000 0.000000000 + 7 5 0.000000000 0.000000000 0.000000000 0.000000000 + 7 6 0.000000000 0.000000000 0.000000000 0.000000000 + 7 7 0.000000000 0.000000000 0.000000000 0.000000000 + 7 8 0.000000000 0.000000000 0.000000000 0.000000000 + 7 9 2.583919647 368559.529798930 0.000000000 293.474202984 + 7 10 75.463310355 380388.338450024 0.000000000 3151.421917646 + 7 11 0.000000000 0.000000000 0.000000000 0.000000000 + 7 12 0.000000000 0.000000000 0.000000000 0.000000000 + 7 13 0.000000000 0.000000000 0.000000000 0.000000000 + 7 14 0.000000000 0.000000000 0.000000000 0.000000000 + 7 15 0.000000000 0.000000000 0.000000000 0.000000000 + 7 16 0.000000000 0.000000000 0.000000000 0.000000000 + 7 17 0.000000000 0.000000000 0.000000000 0.000000000 + 7 18 0.000000000 0.000000000 0.000000000 0.000000000 + 7 19 0.000000000 0.000000000 0.000000000 0.000000000 + 7 20 0.000000000 0.000000000 0.000000000 0.000000000 + 7 21 0.000000000 0.000000000 0.000000000 0.000000000 + 7 22 0.000000000 0.000000000 0.000000000 0.000000000 + 7 23 0.000000000 0.000000000 0.000000000 0.000000000 + 7 24 0.000000000 0.000000000 0.000000000 0.000000000 + 7 25 0.000000000 0.000000000 0.000000000 0.000000000 + 7 26 0.000000000 0.000000000 0.000000000 0.000000000 + 7 27 0.000000000 0.000000000 0.000000000 0.000000000 + 7 28 0.000000000 0.000000000 0.000000000 0.000000000 + 7 29 0.000000000 0.000000000 0.000000000 0.000000000 + 7 30 0.000000000 0.000000000 0.000000000 0.000000000 + 7 31 0.000000000 0.000000000 0.000000000 0.000000000 + 7 32 0.000000000 0.000000000 0.000000000 0.000000000 + 7 33 0.000000000 0.000000000 0.000000000 0.000000000 + 7 34 0.000000000 0.000000000 0.000000000 0.000000000 + 7 35 0.000000000 0.000000000 0.000000000 0.000000000 + 7 36 0.000000000 0.000000000 0.000000000 0.000000000 + 7 37 0.000000000 0.000000000 0.000000000 0.000000000 + 7 38 0.000000000 0.000000000 0.000000000 0.000000000 + 7 39 0.000000000 0.000000000 0.000000000 0.000000000 + 7 40 0.000000000 0.000000000 0.000000000 0.000000000 From a63577e3e4c5374ac5c49076d73f48111aa53f43 Mon Sep 17 00:00:00 2001 From: Tao Sun <41139193+mos3r3n@users.noreply.github.com> Date: Mon, 18 Dec 2023 16:37:26 -0700 Subject: [PATCH 20/20] Update da_get_innov_vector_radar.inc --- var/da/da_radar/da_get_innov_vector_radar.inc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/var/da/da_radar/da_get_innov_vector_radar.inc b/var/da/da_radar/da_get_innov_vector_radar.inc index 7cd9dc18c1..bddcda85c3 100644 --- a/var/da/da_radar/da_get_innov_vector_radar.inc +++ b/var/da/da_radar/da_get_innov_vector_radar.inc @@ -73,7 +73,7 @@ subroutine da_get_innov_vector_radar (it, grid, ob, iv) integer :: h_index, z_index logical :: file_exist, qg_exist real :: zern_ratio, zews_ratio, zeds_ratio, zegr_ratio ! contributions of each hydrometeor to total reflectivity - real, allocatable :: num_sample(:,:) !number of samples from background + real, allocatable :: num_sample(:,:) ! number of samples from the background real, allocatable :: avg_zern(:,:) ! ze contributed by bin-averaged rainwater real, allocatable :: avg_zeds(:,:) ! ze contributed by bin-averaged dry snow real, allocatable :: avg_zews(:,:) ! ze contributed by bin-averaged wet snow @@ -268,12 +268,12 @@ END IF tot_h_index = 40 ! from 500 m to 20 km, at an interval of 500 m tot_z_index = 7 ! from -5 dBZ to 65 dBZ, at an interval of 10 dBZ allocate (num_sample(tot_h_index,tot_z_index)) - allocate (avg_zern(tot_h_index,tot_z_index))) - allocate (avg_zeds(tot_h_index,tot_z_index))) - allocate (avg_zews(tot_h_index,tot_z_index))) - allocate (avg_zegr(tot_h_index,tot_z_index))) - allocate (avg_qrn(tot_h_index,tot_z_index))) - allocate (avg_qds(tot_h_index,tot_z_index))) + allocate (avg_zern(tot_h_index,tot_z_index)) + allocate (avg_zeds(tot_h_index,tot_z_index)) + allocate (avg_zews(tot_h_index,tot_z_index)) + allocate (avg_zegr(tot_h_index,tot_z_index)) + allocate (avg_qrn(tot_h_index,tot_z_index)) + allocate (avg_qds(tot_h_index,tot_z_index)) allocate (avg_qws(tot_h_index,tot_z_index)) allocate (avg_qws(tot_h_index,tot_z_index)) allocate (avg_qgr(tot_h_index,tot_z_index))