From 408471698496ff914e72506e06956a32a70c6c86 Mon Sep 17 00:00:00 2001 From: "Ting.Lei-NOAA" Date: Wed, 11 Dec 2024 20:17:49 +0000 Subject: [PATCH 1/5] add ?data_all=0 initialization --- fix | 2 +- regression/regression_param.sh | 28 ++++++++++++++-------------- src/gsi/combine_radobs.f90 | 3 ++- src/gsi/read_NASA_LaRC_cloud.f90 | 1 + src/gsi/read_abi.f90 | 1 + src/gsi/read_ahi.f90 | 1 + src/gsi/read_airs.f90 | 2 ++ src/gsi/read_amsr2.f90 | 1 + src/gsi/read_amsre.f90 | 1 + src/gsi/read_atms.f90 | 1 + src/gsi/read_avhrr.f90 | 1 + src/gsi/read_avhrr_navy.f90 | 1 + src/gsi/read_bufrtovs.f90 | 1 + src/gsi/read_cris.f90 | 1 + src/gsi/read_dbz_nc.f90 | 1 + src/gsi/read_dbz_netcdf.f90 | 1 + src/gsi/read_fl_hdob.f90 | 1 + src/gsi/read_gmi.f90 | 1 + src/gsi/read_goesimg.f90 | 1 + src/gsi/read_goesndr.f90 | 1 + src/gsi/read_gps.f90 | 1 + src/gsi/read_iasi.f90 | 1 + src/gsi/read_lidar.f90 | 1 + src/gsi/read_mitm_mxtm.f90 | 1 + src/gsi/read_modsbufr.f90 | 2 +- src/gsi/read_nsstbufr.f90 | 1 + src/gsi/read_obs.F90 | 2 +- src/gsi/read_pblh.f90 | 1 + src/gsi/read_prepbufr.f90 | 1 + src/gsi/read_radar.f90 | 1 + src/gsi/read_radar_wind_ascii.f90 | 1 + src/gsi/read_rapidscat.f90 | 1 + src/gsi/read_saphir.f90 | 1 + src/gsi/read_satmar.f90 | 1 + src/gsi/read_satwnd.f90 | 1 + src/gsi/read_seviri.f90 | 1 + src/gsi/read_sfcwnd.f90 | 1 + src/gsi/read_ssmi.f90 | 1 + src/gsi/read_ssmis.f90 | 1 + src/gsi/read_tcps.f90 | 1 + src/gsi/read_viirs.f90 | 1 + src/gsi/read_wcpbufr.f90 | 1 + ush/build.sh | 6 ++++-- 43 files changed, 61 insertions(+), 20 deletions(-) diff --git a/fix b/fix index 92de100c4..15ffa6030 160000 --- a/fix +++ b/fix @@ -1 +1 @@ -Subproject commit 92de100c4d5893e9d6409afbdda6937b0de1cb3b +Subproject commit 15ffa60307bbc19746d8caeb41782de0b7604be6 diff --git a/regression/regression_param.sh b/regression/regression_param.sh index a4f5d7035..8ab49e951 100755 --- a/regression/regression_param.sh +++ b/regression/regression_param.sh @@ -72,8 +72,8 @@ case $regtest in topts[1]="0:10:00" ; popts[1]="18/8/" ; ropts[1]="/1" topts[2]="0:10:00" ; popts[2]="18/10/" ; ropts[2]="/2" elif [[ "$machine" = "wcoss2" ]]; then - topts[1]="0:10:00" ; popts[1]="12/8/" ; ropts[1]="/1" - topts[2]="0:10:00" ; popts[2]="12/10/" ; ropts[2]="/2" + topts[1]="1:10:00" ; popts[1]="12/8/" ; ropts[1]="/1" + topts[2]="1:10:00" ; popts[2]="12/10/" ; ropts[2]="/2" fi if [ "$debug" = ".true." ] ; then @@ -102,8 +102,8 @@ case $regtest in topts[1]="0:15:00" ; popts[1]="18/1/" ; ropts[1]="/1" topts[2]="0:15:00" ; popts[2]="18/2/" ; ropts[2]="/1" elif [[ "$machine" = "wcoss2" ]]; then - topts[1]="0:15:00" ; popts[1]="64/1/" ; ropts[1]="/1" - topts[2]="0:15:00" ; popts[2]="128/2/" ; ropts[2]="/1" + topts[1]="1:15:00" ; popts[1]="64/1/" ; ropts[1]="/1" + topts[2]="1:15:00" ; popts[2]="128/2/" ; ropts[2]="/1" fi if [ "$debug" = ".true." ] ; then @@ -132,8 +132,8 @@ case $regtest in topts[1]="0:15:00" ; popts[1]="18/1/" ; ropts[1]="/1" topts[2]="0:15:00" ; popts[2]="18/2/" ; ropts[2]="/1" elif [[ "$machine" = "wcoss2" ]]; then - topts[1]="0:15:00" ; popts[1]="64/1/" ; ropts[1]="/1" - topts[2]="0:15:00" ; popts[2]="128/2/" ; ropts[2]="/1" + topts[1]="1:15:00" ; popts[1]="64/1/" ; ropts[1]="/1" + topts[2]="1:15:00" ; popts[2]="128/2/" ; ropts[2]="/1" fi if [ "$debug" = ".true." ] ; then @@ -161,8 +161,8 @@ case $regtest in topts[1]="0:15:00" ; popts[1]="18/1/" ; ropts[1]="/1" topts[2]="0:15:00" ; popts[2]="18/2/" ; ropts[2]="/1" elif [[ "$machine" = "wcoss2" ]]; then - topts[1]="0:15:00" ; popts[1]="64/1/" ; ropts[1]="/1" - topts[2]="0:15:00" ; popts[2]="128/2/" ; ropts[2]="/1" + topts[1]="1:15:00" ; popts[1]="64/1/" ; ropts[1]="/1" + topts[2]="1:15:00" ; popts[2]="128/2/" ; ropts[2]="/1" fi if [ "$debug" = ".true." ] ; then @@ -191,8 +191,8 @@ case $regtest in topts[1]="0:15:00" ; popts[1]="4/4/" ; ropts[1]="/1" topts[2]="0:15:00" ; popts[2]="6/6/" ; ropts[2]="/1" elif [[ "$machine" = "wcoss2" ]]; then - topts[1]="0:15:00" ; popts[1]="28/1/" ; ropts[1]="/1" - topts[2]="0:15:00" ; popts[2]="28/2/" ; ropts[2]="/1" + topts[1]="1:15:00" ; popts[1]="28/1/" ; ropts[1]="/1" + topts[2]="1:15:00" ; popts[2]="28/2/" ; ropts[2]="/1" fi if [ "$debug" = ".true." ] ; then @@ -221,8 +221,8 @@ case $regtest in topts[1]="0:30:00" ; popts[1]="8/6/" ; ropts[1]="/1" topts[2]="0:30:00" ; popts[2]="8/8/" ; ropts[2]="/1" elif [[ "$machine" = "wcoss2" ]]; then - topts[1]="0:30:00" ; popts[1]="14/8/" ; ropts[1]="/1" - topts[2]="0:30:00" ; popts[2]="14/14/" ; ropts[2]="/2" + topts[1]="1:30:00" ; popts[1]="14/8/" ; ropts[1]="/1" + topts[2]="1:30:00" ; popts[2]="14/14/" ; ropts[2]="/2" fi if [ "$debug" = ".true." ] ; then @@ -251,8 +251,8 @@ case $regtest in topts[1]="0:10:00" ; popts[1]="12/3/" ; ropts[1]="/1" topts[2]="0:10:00" ; popts[2]="12/5/" ; ropts[2]="/2" elif [[ "$machine" = "wcoss2" ]]; then - topts[1]="0:10:00" ; popts[1]="16/2/" ; ropts[1]="/1" - topts[2]="0:10:00" ; popts[2]="16/4/" ; ropts[2]="/2" + topts[1]="1:10:00" ; popts[1]="16/2/" ; ropts[1]="/1" + topts[2]="1:10:00" ; popts[2]="16/4/" ; ropts[2]="/2" fi if [ "$debug" = ".true." ] ; then diff --git a/src/gsi/combine_radobs.f90 b/src/gsi/combine_radobs.f90 index 7692bdef3..b1cc24933 100644 --- a/src/gsi/combine_radobs.f90 +++ b/src/gsi/combine_radobs.f90 @@ -116,6 +116,7 @@ subroutine combine_radobs(mype_sub,mype_root,& end if deallocate(icrit) allocate(data_all_in(nele,ndata)) + data_all_in=zero !$omp parallel do private(kk,k,l) do kk=1,ndata k=nloc(kk) @@ -133,7 +134,7 @@ subroutine combine_radobs(mype_sub,mype_root,& deallocate(nloc) ! get all data on process mype_root -! data_all(:,:) = zero + data_all(:,:) = zero call mpi_reduce(data_all_in,data_all,nele*ndata,mpi_rtype,mpi_sum,& mype_root,mpi_comm_sub,ierror) deallocate(data_all_in) diff --git a/src/gsi/read_NASA_LaRC_cloud.f90 b/src/gsi/read_NASA_LaRC_cloud.f90 index 05889e2d6..5b926a5e2 100644 --- a/src/gsi/read_NASA_LaRC_cloud.f90 +++ b/src/gsi/read_NASA_LaRC_cloud.f90 @@ -99,6 +99,7 @@ subroutine read_NASA_LaRC_cloud(nread,ndata,nouse,infile,obstype,lunout,sis,nob !maxobs=(1800*700 + 1500*850)*1 maxobs=(12250000) allocate(cdata_all(maxdat,maxobs)) + cdata_all=zero !satfile='lgycldbufr' satfile=trim(infile) allocate(lat_l(maxobs)) diff --git a/src/gsi/read_abi.f90 b/src/gsi/read_abi.f90 index eaa6b1675..1e63a1189 100644 --- a/src/gsi/read_abi.f90 +++ b/src/gsi/read_abi.f90 @@ -227,6 +227,7 @@ subroutine read_abi(mype,val_abi,ithin,rmesh,jsatid,& nreal = maxinfo + nstinfo nele = nreal + nchanl allocate(data_all(nele,itxmax),nrec(itxmax)) + data_all=zero ! Reopen unit to bufr file diff --git a/src/gsi/read_ahi.f90 b/src/gsi/read_ahi.f90 index 5191bbee1..ab7effa22 100644 --- a/src/gsi/read_ahi.f90 +++ b/src/gsi/read_ahi.f90 @@ -216,6 +216,7 @@ subroutine read_ahi(mype,val_img,ithin,rmesh,jsatid,gstime,& nreal = maxinfo + nstinfo nele = nreal + nchanl allocate(data_all(nele,itxmax),nrec(itxmax)) + data_all=zero call closbf(lnbufr) close(lnbufr) diff --git a/src/gsi/read_airs.f90 b/src/gsi/read_airs.f90 index c5392dad1..13b0d0a87 100644 --- a/src/gsi/read_airs.f90 +++ b/src/gsi/read_airs.f90 @@ -384,9 +384,11 @@ subroutine read_airs(mype,val_airs,ithin,isfcalc,rmesh,jsatid,gstime,& ! The number of channels in obtained from the satinfo file being used. nele=nreal+satinfo_nchan allocate(data_all(nele,itxmax),nrec(itxmax)) + data_all=zero allocate(allchan(3,1)) ! actual values set after ireadsb allocate(bufr_chan_test(1))! actual values set after ireadsb + ! Big loop to read data file nrec=999999 next=0 diff --git a/src/gsi/read_amsr2.f90 b/src/gsi/read_amsr2.f90 index 9d8d4944d..214156ec9 100644 --- a/src/gsi/read_amsr2.f90 +++ b/src/gsi/read_amsr2.f90 @@ -488,6 +488,7 @@ subroutine read_amsr2(mype,val_amsr2,ithin,rmesh,jsatid,gstime,& nreal = maxinfo + nstinfo nele = nreal + nchanl allocate(data_all(nele,itxmax),nrec(itxmax)) + data_all=zero nrec=999999 obsloop: do iobs = 1, num_obs diff --git a/src/gsi/read_amsre.f90 b/src/gsi/read_amsre.f90 index ef0c2ad2b..3da89878b 100755 --- a/src/gsi/read_amsre.f90 +++ b/src/gsi/read_amsre.f90 @@ -350,6 +350,7 @@ subroutine read_amsre(mype,val_amsre,ithin,isfcalc,rmesh,jsatid,gstime,& ! Allocate local array to contain observation information nele=nreal+nchanl allocate(data_all(nele,itxmax),nrec(itxmax)) + data_all=zero ! Big loop to read data file next=0 diff --git a/src/gsi/read_atms.f90 b/src/gsi/read_atms.f90 index c6ed15906..4ede95fac 100644 --- a/src/gsi/read_atms.f90 +++ b/src/gsi/read_atms.f90 @@ -290,6 +290,7 @@ subroutine read_atms(mype,val_tovs,ithin,isfcalc,& nreal = maxinfo + nstinfo nele = nreal + nchanl allocate(data_all(nele,itxmax),nrec(itxmax)) + data_all=zero nrec=999999 ! IFSCALC setup diff --git a/src/gsi/read_avhrr.f90 b/src/gsi/read_avhrr.f90 index c1509828a..47d5456da 100755 --- a/src/gsi/read_avhrr.f90 +++ b/src/gsi/read_avhrr.f90 @@ -292,6 +292,7 @@ subroutine read_avhrr(mype,val_avhrr,ithin,rmesh,jsatid,& if ( imesh == 1 ) then allocate( data_all(nele,itxmax) ) + data_all=zero endif open(lnbufr,file=trim(infile),form='unformatted') ! open bufr data file diff --git a/src/gsi/read_avhrr_navy.f90 b/src/gsi/read_avhrr_navy.f90 index dd5a64083..f69f590f7 100644 --- a/src/gsi/read_avhrr_navy.f90 +++ b/src/gsi/read_avhrr_navy.f90 @@ -237,6 +237,7 @@ subroutine read_avhrr_navy(mype,val_avhrr,ithin,rmesh,jsatid,& nreal = maxinfo + nstinfo nele = nreal + nchanl allocate(data_all(nele,itxmax),nrec(itxmax)) + data_all=zero open(lnbufr,file=trim(infile),form='unformatted') ! open bufr data file diff --git a/src/gsi/read_bufrtovs.f90 b/src/gsi/read_bufrtovs.f90 index 2fc14b5cd..2ef6433e8 100644 --- a/src/gsi/read_bufrtovs.f90 +++ b/src/gsi/read_bufrtovs.f90 @@ -489,6 +489,7 @@ subroutine read_bufrtovs(mype,val_tovs,ithin,isfcalc,& hdr1b ='SAID FOVN YEAR MNTH DAYS HOUR MINU SECO CLAT CLON CLATH CLONH HOLS SACV' hdr2b ='SAZA SOZA BEARAZ SOLAZI' allocate(data_all(nele,itxmax),data1b8(nchanl),data1b4(nchanl),nrec(itxmax)) + data_all=zero next=0 diff --git a/src/gsi/read_cris.f90 b/src/gsi/read_cris.f90 index d5668f886..768ea71f7 100644 --- a/src/gsi/read_cris.f90 +++ b/src/gsi/read_cris.f90 @@ -449,6 +449,7 @@ subroutine read_cris(mype,val_cris,ithin,isfcalc,rmesh,jsatid,gstime,& ! The number of channels is obtained from the satinfo file being used. nele=nreal+satinfo_nchan allocate(data_all(nele,itxmax),nrec(itxmax)) + data_all=zero allocate(temperature(1)) ! actual values set after ireadsb allocate(allchan(2,1)) ! actual values set after ireadsb allocate(bufr_chan_test(1))! actual values set after ireadsb diff --git a/src/gsi/read_dbz_nc.f90 b/src/gsi/read_dbz_nc.f90 index f06545afa..b7c7a866b 100644 --- a/src/gsi/read_dbz_nc.f90 +++ b/src/gsi/read_dbz_nc.f90 @@ -220,6 +220,7 @@ subroutine read_dbz_nc(nread,ndata,nodata,infile,lunout,obstype,sis,hgtl_full,no !--Allocate cdata_all array allocate(cdata_all(maxdat,maxobs),rthin(maxobs),rusage(maxobs)) + cdata_all=zero rmesh=rmesh_dbz zmesh=zmesh_dbz diff --git a/src/gsi/read_dbz_netcdf.f90 b/src/gsi/read_dbz_netcdf.f90 index 193449b46..862b7c55b 100644 --- a/src/gsi/read_dbz_netcdf.f90 +++ b/src/gsi/read_dbz_netcdf.f90 @@ -265,6 +265,7 @@ subroutine read_dbz_mrms_netcdf(nread,ndata,nodata,infile,obstype,lunout,sis,nob !--Allocate cdata_all array allocate(cdata_all(maxdat,maxobs)) + cdata_all=zero lunrad=31 ! get the time from the file name diff --git a/src/gsi/read_fl_hdob.f90 b/src/gsi/read_fl_hdob.f90 index 4041740d5..7b69895fe 100644 --- a/src/gsi/read_fl_hdob.f90 +++ b/src/gsi/read_fl_hdob.f90 @@ -387,6 +387,7 @@ subroutine read_fl_hdob(nread,ndata,nodata,infile,obstype,lunout,gstime,twind,si ! Allocate array to hold data allocate(cdata_all(nreal,maxobs),rusage(maxobs),rthin(maxobs)) + cdata_all=zero ! Initialize cdata_all = zero diff --git a/src/gsi/read_gmi.f90 b/src/gsi/read_gmi.f90 index 6ad4d829a..e540bf3e5 100644 --- a/src/gsi/read_gmi.f90 +++ b/src/gsi/read_gmi.f90 @@ -594,6 +594,7 @@ subroutine read_gmi(mype,val_gmi,ithin,rmesh,jsatid,gstime,& nreal = maxinfo + nstinfo nele = nreal + nchanl allocate(data_all(nele,itxmax),nrec(itxmax)) + data_all=zero nrec=999999 if (mype==0) write(*,*) 'read_gmi num_obs before thinning: ', num_obs diff --git a/src/gsi/read_goesimg.f90 b/src/gsi/read_goesimg.f90 index bf40a1f16..2c4aafe63 100644 --- a/src/gsi/read_goesimg.f90 +++ b/src/gsi/read_goesimg.f90 @@ -216,6 +216,7 @@ subroutine read_goesimg(mype,val_img,ithin,rmesh,jsatid,gstime,& nreal = maxinfo + nstinfo nele = nreal + nchanl allocate(data_all(nele,itxmax),nrec(itxmax)) + data_all=zero next=0 nrec=999999 diff --git a/src/gsi/read_goesndr.f90 b/src/gsi/read_goesndr.f90 index 7c55b6ab4..77ab97a30 100644 --- a/src/gsi/read_goesndr.f90 +++ b/src/gsi/read_goesndr.f90 @@ -271,6 +271,7 @@ subroutine read_goesndr(mype,val_goes,ithin,rmesh,jsatid,infile,& nreal = maxinfo + nstinfo nele = nreal + nchanl allocate(data_all(nele,itxmax),nrec(itxmax)) + data_all=zero ! Big loop to read data file nrec=999999 diff --git a/src/gsi/read_gps.f90 b/src/gsi/read_gps.f90 index c0cef658a..d2e6055e0 100644 --- a/src/gsi/read_gps.f90 +++ b/src/gsi/read_gps.f90 @@ -201,6 +201,7 @@ subroutine read_gps(nread,ndata,nodata,infile,lunout,obstype,twind, & ! Allocate work array to hold observations allocate(cdata_all(nreal,maxobs)) + cdata_all=zero ! Big loop over the bufr file diff --git a/src/gsi/read_iasi.f90 b/src/gsi/read_iasi.f90 index edd7a9b50..d2d221efd 100644 --- a/src/gsi/read_iasi.f90 +++ b/src/gsi/read_iasi.f90 @@ -434,6 +434,7 @@ subroutine read_iasi(mype,val_iasi,ithin,isfcalc,rmesh,jsatid,gstime,& ! The number of channels in obtained from the satinfo file being used. nele=nreal+satinfo_nchan allocate(data_all(nele,itxmax),nrec(itxmax)) + data_all=zero allocate(temperature(1)) ! dependent on # of channels in the bufr file allocate(allchan(2,1)) ! actual values set after ireadsb allocate(bufr_chan_test(1))! actual values set after ireadsb diff --git a/src/gsi/read_lidar.f90 b/src/gsi/read_lidar.f90 index ad5b27b78..4966534c6 100644 --- a/src/gsi/read_lidar.f90 +++ b/src/gsi/read_lidar.f90 @@ -142,6 +142,7 @@ subroutine read_lidar(nread,ndata,nodata,infile,obstype,lunout,twind,sis,nobs) endif allocate(cdata_all(maxdat,maxobs)) + cdata_all=zero ! Time offset diff --git a/src/gsi/read_mitm_mxtm.f90 b/src/gsi/read_mitm_mxtm.f90 index 393e997e3..e30054e19 100644 --- a/src/gsi/read_mitm_mxtm.f90 +++ b/src/gsi/read_mitm_mxtm.f90 @@ -223,6 +223,7 @@ subroutine read_mitm_mxtm(nread,ndata,nodata,infile,obstype,lunout,gstime,sis,no end if allocate(cdata_all(nreal,maxobs)) + cdata_all=zero kxall=0 iout=0 diff --git a/src/gsi/read_modsbufr.f90 b/src/gsi/read_modsbufr.f90 index f2fab23a8..87b9c4361 100644 --- a/src/gsi/read_modsbufr.f90 +++ b/src/gsi/read_modsbufr.f90 @@ -142,7 +142,7 @@ subroutine read_modsbufr(nread,ndata,nodata,gstime,infile,obstype,lunout, & nreal=maxinfo+nstinfo allocate(data_all(nreal,maxobs)) - data_all = zero + data_all=zero if(oberrflg)then diff --git a/src/gsi/read_nsstbufr.f90 b/src/gsi/read_nsstbufr.f90 index 97096f376..65eaf719a 100644 --- a/src/gsi/read_nsstbufr.f90 +++ b/src/gsi/read_nsstbufr.f90 @@ -147,6 +147,7 @@ subroutine read_nsstbufr(nread,ndata,nodata,gstime,infile,obstype,lunout, & nreal=maxinfo+nstinfo allocate(data_all(nreal,maxobs)) + data_all=zero if(oberrflg)then diff --git a/src/gsi/read_obs.F90 b/src/gsi/read_obs.F90 index aa0f11b4e..9865817d6 100644 --- a/src/gsi/read_obs.F90 +++ b/src/gsi/read_obs.F90 @@ -1956,7 +1956,7 @@ subroutine read_obs(ndata,mype) ! Deallocate arrays containing full horizontal surface fields call destroy_sfc ! Sum and distribute number of obs read and used for each input ob group - + write(6,*)'thinkdebndate3 is ',ndat call mpi_allreduce(ndata1,ndata,ndat*3,mpi_integer,mpi_sum,mpi_comm_world,& ierror) diff --git a/src/gsi/read_pblh.f90 b/src/gsi/read_pblh.f90 index 1ff2cd2c2..9594987bc 100644 --- a/src/gsi/read_pblh.f90 +++ b/src/gsi/read_pblh.f90 @@ -152,6 +152,7 @@ subroutine read_pblh(nread,ndata,nodata,infile,obstype,lunout,twindin,& end do ! while ireadmg allocate(cdata_all(nreal,maxobs)) + cdata_all=zero nread=0 nchanl=0 ilon=2 diff --git a/src/gsi/read_prepbufr.f90 b/src/gsi/read_prepbufr.f90 index f281573a4..4ec2965b4 100644 --- a/src/gsi/read_prepbufr.f90 +++ b/src/gsi/read_prepbufr.f90 @@ -900,6 +900,7 @@ subroutine read_prepbufr(nread,ndata,nodata,infile,obstype,lunout,twindin,sis,& ! loop over convinfo file entries; operate on matches allocate(cdata_all(nreal,maxall),rusage(maxall),rthin(maxall)) + cdata_all=zero nread=0 ntest=0 nvtest=0 diff --git a/src/gsi/read_radar.f90 b/src/gsi/read_radar.f90 index 84a4f4fbc..418720a45 100644 --- a/src/gsi/read_radar.f90 +++ b/src/gsi/read_radar.f90 @@ -361,6 +361,7 @@ subroutine read_radar(nread,ndata,nodata,infile,lunout,obstype,twind,sis,hgtl_fu end if allocate(cdata_all(maxdat,maxobs),rusage(maxobs),rthin(maxobs)) + cdata_all=zero rusage=.true. rthin=.false. diff --git a/src/gsi/read_radar_wind_ascii.f90 b/src/gsi/read_radar_wind_ascii.f90 index b79904273..02efc626c 100644 --- a/src/gsi/read_radar_wind_ascii.f90 +++ b/src/gsi/read_radar_wind_ascii.f90 @@ -269,6 +269,7 @@ subroutine read_radar_wind_ascii(nread,ndata,nodata,infile,lunout,obstype,sis,hg !--Allocate cdata_all array allocate(cdata_all(maxdat,maxobs),rusage(maxobs),rthin(maxobs)) + cdata_all=zero rmesh=rmesh_vr diff --git a/src/gsi/read_rapidscat.f90 b/src/gsi/read_rapidscat.f90 index f1fffd43a..51c9074c1 100644 --- a/src/gsi/read_rapidscat.f90 +++ b/src/gsi/read_rapidscat.f90 @@ -337,6 +337,7 @@ subroutine read_rapidscat(nread,ndata,nodata,infile,obstype,lunout,gstime,twind, ! Loop over convinfo file entries; operate on matches allocate(cdata_all(nreal,maxobs),rusage(maxobs),rthin(maxobs)) + cdata_all=zero nread=0 ntest=0 nvtest=0 diff --git a/src/gsi/read_saphir.f90 b/src/gsi/read_saphir.f90 index 06e992b03..b5fdc384f 100644 --- a/src/gsi/read_saphir.f90 +++ b/src/gsi/read_saphir.f90 @@ -402,6 +402,7 @@ subroutine read_saphir(mype,val_tovs,ithin,isfcalc,& nreal = maxinfo + nstinfo nele = nreal + nchanl allocate(data_all(nele,itxmax),nrec(itxmax)) + data_all=zero nrec=999999 ObsLoop: do iob = 1, num_obs diff --git a/src/gsi/read_satmar.f90 b/src/gsi/read_satmar.f90 index e9062a65f..2ccb3740b 100644 --- a/src/gsi/read_satmar.f90 +++ b/src/gsi/read_satmar.f90 @@ -243,6 +243,7 @@ subroutine read_satmar (nread, ndata, nodata, & ! ! Allocate Arrays for all the data allocate (data_all (nreal, cnt),rusage(cnt),rthin(cnt)) + data_all=zero ! ! Loop over file open(lun11,file=trim(infile),action='read',form='unformatted') diff --git a/src/gsi/read_satwnd.f90 b/src/gsi/read_satwnd.f90 index 56283306f..6c2fba8be 100644 --- a/src/gsi/read_satwnd.f90 +++ b/src/gsi/read_satwnd.f90 @@ -662,6 +662,7 @@ subroutine read_satwnd(nread,ndata,nodata,infile,obstype,lunout,gstime,twind,sis ilon=2 ilat=3 allocate(cdata_all(nreal,maxobs),rthin(maxobs),rusage(maxobs)) + cdata_all=zero rusage = .true. rthin = .false. diff --git a/src/gsi/read_seviri.f90 b/src/gsi/read_seviri.f90 index 485ac4723..2aa8225b4 100644 --- a/src/gsi/read_seviri.f90 +++ b/src/gsi/read_seviri.f90 @@ -242,6 +242,7 @@ subroutine read_seviri(mype,val_sev,ithin,rmesh,jsatid,& nreal = maxinfo + nstinfo nele = nreal + nchanl allocate(data_all(nele,itxmax),nrec(itxmax)) + data_all=zero ! Reopen unit to bufr file diff --git a/src/gsi/read_sfcwnd.f90 b/src/gsi/read_sfcwnd.f90 index 07fed808c..b3c50d86b 100644 --- a/src/gsi/read_sfcwnd.f90 +++ b/src/gsi/read_sfcwnd.f90 @@ -329,6 +329,7 @@ subroutine read_sfcwnd(nread,ndata,nodata,infile,obstype,lunout,gstime,twind,sis ! Loop over convinfo file entries; operate on matches allocate(cdata_all(nreal,maxobs),rusage(maxobs),rthin(maxobs)) + cdata_all=zero nread=0 ntest=0 nvtest=0 diff --git a/src/gsi/read_ssmi.f90 b/src/gsi/read_ssmi.f90 index cece78ac0..d2b74ae28 100755 --- a/src/gsi/read_ssmi.f90 +++ b/src/gsi/read_ssmi.f90 @@ -266,6 +266,7 @@ subroutine read_ssmi(mype,val_ssmi,ithin,rmesh,jsatid,gstime,& nreal = maxinfo + nstinfo nele = nreal + nchanl allocate(data_all(nele,itxmax),nrec(itxmax)) + data_all=zero ! Big loop to read data file nrec=999999 diff --git a/src/gsi/read_ssmis.f90 b/src/gsi/read_ssmis.f90 index c6a1af226..90997d954 100755 --- a/src/gsi/read_ssmis.f90 +++ b/src/gsi/read_ssmis.f90 @@ -606,6 +606,7 @@ subroutine read_ssmis(mype,val_ssmis,ithin,isfcalc,rmesh,jsatid,gstime,& nreal = maxinfo + nstinfo nele = nreal + nchanl allocate(data_all(nele,itxmax),nrec(itxmax)) + data_all=zero nrec=999999 obsloop: do iobs = 1, num_obs diff --git a/src/gsi/read_tcps.f90 b/src/gsi/read_tcps.f90 index d50ab5788..6729e5d97 100644 --- a/src/gsi/read_tcps.f90 +++ b/src/gsi/read_tcps.f90 @@ -82,6 +82,7 @@ subroutine read_tcps(nread,ndata,nodata,infile,obstype,lunout,sis,nobs) endfile=.false. allocate(cdata_all(maxdat,maxobs)) + cdata_all=zero open(lunin,file=trim(infile),form='formatted',action='read') call datelen(10) diff --git a/src/gsi/read_viirs.f90 b/src/gsi/read_viirs.f90 index ab80642f2..b1af8ca82 100644 --- a/src/gsi/read_viirs.f90 +++ b/src/gsi/read_viirs.f90 @@ -238,6 +238,7 @@ subroutine read_sst_viirs(mype,val_viirs,ithin,rmesh,jsatid,& if ( imesh == 1 ) then allocate( data_all(nele,itxmax) ) + data_all=zero endif open(lnbufr,file=trim(infile),form='unformatted') ! open bufr data file diff --git a/src/gsi/read_wcpbufr.f90 b/src/gsi/read_wcpbufr.f90 index 65e70f4be..dcf5bafb2 100644 --- a/src/gsi/read_wcpbufr.f90 +++ b/src/gsi/read_wcpbufr.f90 @@ -300,6 +300,7 @@ subroutine read_wcpbufr(nread,ndata,nodata,infile,obstype,lunout,twindin,sis,& ! loop over convinfo file entries; operate on matches allocate(cdata_all(nreal,maxobs),rusage(maxobs),rthin(maxobs)) + cdata_all=zero nread=0 ntest=0 nvtest=0 diff --git a/ush/build.sh b/ush/build.sh index a133889ea..189c78f3a 100755 --- a/ush/build.sh +++ b/ush/build.sh @@ -6,7 +6,8 @@ set -eux readonly DIR_ROOT=$(cd "$(dirname "$(readlink -f -n "${BASH_SOURCE[0]}" )" )/.." && pwd -P) # User Options -BUILD_TYPE=${BUILD_TYPE:-"Release"} +#ctlBUILD_TYPE=${BUILD_TYPE:-"Release"} +BUILD_TYPE=${BUILD_TYPE:-"Debug"} CMAKE_OPTS=${CMAKE_OPTS:-} COMPILER=${COMPILER:-"intel"} BUILD_DIR=${BUILD_DIR:-"${DIR_ROOT}/build"} @@ -29,7 +30,8 @@ module list set -x # Set CONTROLPATH variable to user develop installation -CONTROLPATH="$DIR_ROOT/../develop/install/bin" +#clt CONTROLPATH="$DIR_ROOT/../develop/install/bin" +CONTROLPATH="/lfs/h2/emc/da/noscrub/Ting.Lei/dr-emc-gsi-release/GSI/install/bin" # Collect BUILD Options CMAKE_OPTS+=" -DCMAKE_BUILD_TYPE=$BUILD_TYPE" From cf187e74ecb58c5b3549eb3087e589bea2fd92cd Mon Sep 17 00:00:00 2001 From: Tinglei-daprediction Date: Tue, 21 Jan 2025 22:53:32 +0000 Subject: [PATCH 2/5] for debug --- modulefiles/gsi_wcoss2.intel.lua | 6 +++++- src/gsi/CMakeLists.txt | 2 ++ ush/build.sh | 6 +++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/modulefiles/gsi_wcoss2.intel.lua b/modulefiles/gsi_wcoss2.intel.lua index c3bfd1156..116baedb9 100644 --- a/modulefiles/gsi_wcoss2.intel.lua +++ b/modulefiles/gsi_wcoss2.intel.lua @@ -9,7 +9,9 @@ local cmake_ver= os.getenv("cmake_ver") or "3.20.2" local python_ver=os.getenv("python_ver") or "3.8.6" local prod_util_ver=os.getenv("prod_util_ver") or "2.0.10" -local netcdf_ver=os.getenv("netcdf_ver") or "4.7.4" +local zlib_ver=os.getenv("zlib_ver") or "1.2.11" +local hdf5_ver=os.getenv("hdf5_ver") or "1.14.0" +local netcdf_ver=os.getenv("netcdf_ver") or "4.9.2" local bufr_ver=os.getenv("bufr_ver") or "11.7.0" local bacio_ver=os.getenv("bacio_ver") or "2.4.1" local w3emc_ver=os.getenv("w3emc_ver") or "2.9.2" @@ -32,6 +34,8 @@ load(pathJoin("python", python_ver)) load(pathJoin("prod_util", prod_util_ver)) +load(pathJoin("zlib", zlib_ver)) +load(pathJoin("hdf5", hdf5_ver)) load(pathJoin("netcdf", netcdf_ver)) load(pathJoin("bufr", bufr_ver)) load(pathJoin("bacio", bacio_ver)) diff --git a/src/gsi/CMakeLists.txt b/src/gsi/CMakeLists.txt index f894b0a8a..d7a02ed99 100644 --- a/src/gsi/CMakeLists.txt +++ b/src/gsi/CMakeLists.txt @@ -62,6 +62,7 @@ find_package(NetCDF REQUIRED Fortran) if(OPENMP) find_package(OpenMP REQUIRED) endif() +find_package(ZLIB REQUIRED) # NCEPLibs dependencies find_package(bacio REQUIRED) @@ -157,6 +158,7 @@ target_link_libraries(gsi_fortran_obj PUBLIC w3emc::w3emc_d) target_link_libraries(gsi_fortran_obj PUBLIC sp::sp_d) target_link_libraries(gsi_fortran_obj PUBLIC bufr::bufr_d) target_link_libraries(gsi_fortran_obj PUBLIC crtm::crtm) +target_link_libraries(gsi_fortran_obj PUBLIC ZLIB::ZLIB) if(GSI_MODE MATCHES "Regional") target_link_libraries(gsi_fortran_obj PUBLIC wrf_io::wrf_io) endif() diff --git a/ush/build.sh b/ush/build.sh index 189c78f3a..24800041a 100755 --- a/ush/build.sh +++ b/ush/build.sh @@ -6,8 +6,8 @@ set -eux readonly DIR_ROOT=$(cd "$(dirname "$(readlink -f -n "${BASH_SOURCE[0]}" )" )/.." && pwd -P) # User Options -#ctlBUILD_TYPE=${BUILD_TYPE:-"Release"} -BUILD_TYPE=${BUILD_TYPE:-"Debug"} +BUILD_TYPE=${BUILD_TYPE:-"Release"} +#BUILD_TYPE=${BUILD_TYPE:-"Debug"} CMAKE_OPTS=${CMAKE_OPTS:-} COMPILER=${COMPILER:-"intel"} BUILD_DIR=${BUILD_DIR:-"${DIR_ROOT}/build"} @@ -31,7 +31,7 @@ set -x # Set CONTROLPATH variable to user develop installation #clt CONTROLPATH="$DIR_ROOT/../develop/install/bin" -CONTROLPATH="/lfs/h2/emc/da/noscrub/Ting.Lei/dr-emc-gsi-release/GSI/install/bin" +CONTROLPATH="/lfs/h2/emc/da/noscrub/Ting.Lei/dr-gsi-release/GSI/install/bin" # Collect BUILD Options CMAKE_OPTS+=" -DCMAKE_BUILD_TYPE=$BUILD_TYPE" From 5d25c86c8472545a9f30dee921cdb512b393d991 Mon Sep 17 00:00:00 2001 From: Tinglei-daprediction Date: Wed, 22 Jan 2025 15:46:57 +0000 Subject: [PATCH 3/5] for debug --- .../gsiapp_compiler_flags_Intel_Fortran.cmake | 2 +- src/gsi/intrad.f90 | 24 ++++++++++++------- src/gsi/setupbend.f90 | 3 ++- src/gsi/setuprad.f90 | 12 ++++++---- 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/gsi/cmake/gsiapp_compiler_flags_Intel_Fortran.cmake b/src/gsi/cmake/gsiapp_compiler_flags_Intel_Fortran.cmake index b1d28132d..50f80562e 100644 --- a/src/gsi/cmake/gsiapp_compiler_flags_Intel_Fortran.cmake +++ b/src/gsi/cmake/gsiapp_compiler_flags_Intel_Fortran.cmake @@ -14,7 +14,7 @@ set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -fp-model strict") # DEBUG FLAGS #################################################################### -set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -init=snan,arrays -fp-model source -debug -ftrapuv -warn all,nointerfaces -check all,noarg_temp_created -fp-stack-check -fstack-protector") +set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -init=snan,arrays -fp-model source -debug -ftrapuv -warn all,nointerfaces -check all,noarg_temp_created -fp-stack-check -fstack-protector -fpe0") #################################################################### # LINK FLAGS diff --git a/src/gsi/intrad.f90 b/src/gsi/intrad.f90 index b062ec953..b8eead0e8 100644 --- a/src/gsi/intrad.f90 +++ b/src/gsi/intrad.f90 @@ -445,7 +445,8 @@ subroutine intrad_(radhead,rval,sval,rpred,spred) enddo tdir=zero -!$omp parallel do schedule(dynamic,1) private(k,i1,i2,i3,i4) +!clt #!$omp parallel do schedule(dynamic,1) private(k,i1,i2,i3,i4) +!$omp parallel do schedule(static,1) private(k,i1,i2,i3,i4) do k=1,nsig i1 = i1n(k) i2 = i2n(k) @@ -514,7 +515,8 @@ subroutine intrad_(radhead,rval,sval,rpred,spred) if (.not. ladtest_obs) then allocate(biasvect(radptr%nchan)) -!$omp parallel do schedule(dynamic,1) private(nn,n,ic1,ix1,val_quad) +!clt !$omp parallel do schedule(dynamic,1) private(nn,n,ic1,ix1,val_quad) +!$omp parallel do schedule(static,1) private(nn,n,ic1,ix1,val_quad) do nn=1,radptr%nchan ic1=radptr%icx(nn) ix1=(ic1-1)*npred @@ -526,7 +528,8 @@ subroutine intrad_(radhead,rval,sval,rpred,spred) end do end if -!$omp parallel do schedule(dynamic,1) private(nn,k,ncr1,val_quad,mm) +!clt !$omp parallel do schedule(dynamic,1) private(nn,k,ncr1,val_quad,mm) +!$omp parallel do schedule(static,1) private(nn,k,ncr1,val_quad,mm) do nn=1,radptr%nchan ! include observation increment and lapse rate contributions to bias correction @@ -567,7 +570,8 @@ subroutine intrad_(radhead,rval,sval,rpred,spred) if (l_do_adjoint) then if (.not. lsaveobsens) then -!$omp parallel do schedule(dynamic,1) private(nn,ic,cg_rad,wnotgross,wgross,p0) +!clt !$omp parallel do schedule(dynamic,1) private(nn,ic,cg_rad,wnotgross,wgross,p0) +!$omp parallel do schedule(static,1) private(nn,ic,cg_rad,wnotgross,wgross,p0) do nn=1,radptr%nchan ic=radptr%icx(nn) if( .not. ladtest_obs) val(nn)=val(nn)-radptr%res(nn) @@ -591,7 +595,8 @@ subroutine intrad_(radhead,rval,sval,rpred,spred) if( .not. ladtest_obs) then if(radptr%luse)then if (radptr%use_corr_obs) then -!$omp parallel do schedule(dynamic,1) private(n,nn,ix,ncr1,ncr2,mm) +!clt !$omp parallel do schedule(dynamic,1) private(n,nn,ix,ncr1,ncr2,mm) +!$omp parallel do schedule(static,1) private(n,nn,ix,ncr1,ncr2,mm) do nn=1,radptr%nchan ncr1 = radptr%iccerr(nn)+nn ncr2 = ncr1 @@ -607,7 +612,8 @@ subroutine intrad_(radhead,rval,sval,rpred,spred) enddo enddo else -!$omp parallel do schedule(dynamic,1) private(n,nn,ix) +!clt !$omp parallel do schedule(dynamic,1) private(n,nn,ix) +!$omp parallel do schedule(static,1) private(n,nn,ix) do nn=1,radptr%nchan ix=(radptr%icx(nn)-1)*npred do n=1,npred @@ -622,7 +628,8 @@ subroutine intrad_(radhead,rval,sval,rpred,spred) ! Begin adjoint -!$omp parallel do schedule(dynamic,1) private(k,nn) +!clt !$omp parallel do schedule(dynamic,1) private(k,nn) +!$omp parallel do schedule(static,1) private(k,nn) do k=1,nsigradjac tval(k)=zero @@ -635,7 +642,8 @@ subroutine intrad_(radhead,rval,sval,rpred,spred) ! Distribute adjoint contributions over surrounding grid points -!$omp parallel do schedule(dynamic,1) private(k,i1,i2,i3,i4,mm) +!clt !$omp parallel do schedule(dynamic,1) private(k,i1,i2,i3,i4,mm) +!$omp parallel do schedule(static,1) private(k,i1,i2,i3,i4,mm) do k=1,nsig i1 = i1n(k) i2 = i2n(k) diff --git a/src/gsi/setupbend.f90 b/src/gsi/setupbend.f90 index 607311f34..18d6c082c 100644 --- a/src/gsi/setupbend.f90 +++ b/src/gsi/setupbend.f90 @@ -475,7 +475,8 @@ subroutine setupbend(obsLL,odiagLL, & top_layer_SR=0 bot_layer_SR=0 -!$omp parallel do schedule(dynamic,1) private(k,qmean,tmean,fact,pw,pressure,nrefges1,nrefges2,nrefges3) +!clt !$omp parallel do schedule(dynamic,1) private(k,qmean,tmean,fact,pw,pressure,nrefges1,nrefges2,nrefges3) +!$omp parallel do schedule(static,1) private(k,qmean,tmean,fact,pw,pressure,nrefges1,nrefges2,nrefges3) do k=1,nsig zges(k) = (termr*hges(k)) / (termrg-hges(k)) ! eq (23) at interface (topo corrected) gp2gm(k,i)= termr/(termrg-hges(k))+((termr*hges(k))/(termrg-hges(k))**2) diff --git a/src/gsi/setuprad.f90 b/src/gsi/setuprad.f90 index 136568d1f..d14c9bfc3 100644 --- a/src/gsi/setuprad.f90 +++ b/src/gsi/setuprad.f90 @@ -1100,7 +1100,8 @@ subroutine setuprad(obsLL,odiagLL,lunin,mype,aivals,stats,nchanl,nreal,nobs,& predbias=zero -!$omp parallel do schedule(dynamic,1) private(i,mm,j,k,tlap,node,bias) +!clt !$omp parallel do schedule(dynamic,1) private(i,mm,j,k,tlap,node,bias) +!$omp parallel do schedule(static,1) private(i,mm,j,k,tlap,node,bias) do i=1,nchanl mm=ich(i) @@ -1218,7 +1219,8 @@ subroutine setuprad(obsLL,odiagLL,lunin,mype,aivals,stats,nchanl,nreal,nobs,& kmax = 0 if (lwrite_peakwt .or. passive_bc) then -!$omp parallel do schedule(dynamic,1) private(i,k,ptau5derivmax,ptau5deriv) +!clt !$omp parallel do schedule(dynamic,1) private(i,k,ptau5derivmax,ptau5deriv) +!$omp parallel do schedule(static,1) private(i,k,ptau5derivmax,ptau5deriv) do i=1,nchanl ptau5derivmax = -9.9e31_r_kind ! maximum of weighting function is level at which transmittance @@ -1244,7 +1246,8 @@ subroutine setuprad(obsLL,odiagLL,lunin,mype,aivals,stats,nchanl,nreal,nobs,& cld_rbc_idx2=zero if (radmod%lcloud_fwd .and. radmod%ex_biascor .and. eff_area) then ierrret=0 -!$omp parallel do schedule(dynamic,1) private(i,mm,j) +!clt !$omp parallel do schedule(dynamic,1) private(i,mm,j) +!$omp parallel do schedule(static,1) private(i,mm,j) do i=1,nchanl mm=ich(i) tsim_bc(i)=tsim(i) @@ -1784,7 +1787,8 @@ subroutine setuprad(obsLL,odiagLL,lunin,mype,aivals,stats,nchanl,nreal,nobs,& account_for_corr_obs = .false. varinv0=zero raterr2 = zero -!$omp parallel do schedule(dynamic,1) private(ii,m,k,asum) +!clt !$omp parallel do schedule(dynamic,1) private(ii,m,k,asum) +!$omp parallel do schedule(static,1) private(ii,m,k,asum) do ii=1,nchanl m=ich(ii) if (varinv(ii)>tiny_r_kind .and. iuse_rad(m)>=1) then From 97dc3588d4291c030ecfa1971e3080e1ba58e856 Mon Sep 17 00:00:00 2001 From: Tinglei-daprediction Date: Mon, 27 Jan 2025 16:47:17 +0000 Subject: [PATCH 4/5] for debug --- src/gsi/cmake/gsiapp_compiler_flags_Intel_Fortran.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gsi/cmake/gsiapp_compiler_flags_Intel_Fortran.cmake b/src/gsi/cmake/gsiapp_compiler_flags_Intel_Fortran.cmake index 50f80562e..af9af8449 100644 --- a/src/gsi/cmake/gsiapp_compiler_flags_Intel_Fortran.cmake +++ b/src/gsi/cmake/gsiapp_compiler_flags_Intel_Fortran.cmake @@ -8,7 +8,8 @@ set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -g -traceback -assume byterecl - # RELEASE FLAGS #################################################################### -set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -fp-model strict") +#clt set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -fp-model strict") +set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -fp-model strict -fimf-precision=hight -assume protect_parens -fma -qopt-report=3") #################################################################### # DEBUG FLAGS From 546b29c63936dfa123ce5c7b9d764d038f748615 Mon Sep 17 00:00:00 2001 From: Tinglei-daprediction Date: Mon, 27 Jan 2025 22:14:34 +0000 Subject: [PATCH 5/5] change gsi_wcoss2.intel.lua --- modulefiles/gsi_wcoss2.intel.lua | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/modulefiles/gsi_wcoss2.intel.lua b/modulefiles/gsi_wcoss2.intel.lua index 116baedb9..c3bfd1156 100644 --- a/modulefiles/gsi_wcoss2.intel.lua +++ b/modulefiles/gsi_wcoss2.intel.lua @@ -9,9 +9,7 @@ local cmake_ver= os.getenv("cmake_ver") or "3.20.2" local python_ver=os.getenv("python_ver") or "3.8.6" local prod_util_ver=os.getenv("prod_util_ver") or "2.0.10" -local zlib_ver=os.getenv("zlib_ver") or "1.2.11" -local hdf5_ver=os.getenv("hdf5_ver") or "1.14.0" -local netcdf_ver=os.getenv("netcdf_ver") or "4.9.2" +local netcdf_ver=os.getenv("netcdf_ver") or "4.7.4" local bufr_ver=os.getenv("bufr_ver") or "11.7.0" local bacio_ver=os.getenv("bacio_ver") or "2.4.1" local w3emc_ver=os.getenv("w3emc_ver") or "2.9.2" @@ -34,8 +32,6 @@ load(pathJoin("python", python_ver)) load(pathJoin("prod_util", prod_util_ver)) -load(pathJoin("zlib", zlib_ver)) -load(pathJoin("hdf5", hdf5_ver)) load(pathJoin("netcdf", netcdf_ver)) load(pathJoin("bufr", bufr_ver)) load(pathJoin("bacio", bacio_ver))