; --------------------------------------------------------------------------- ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Program Name: CFS2Hydro_forcing_ESMFregrid_h.ncl ; ; ; ; National Water Model (NWM) WRF-hydro forcing engine is developed by ; ; National Center for Atmospheric Research (NCAR), under the sponsorship ; ; of National Water Center (NWC). ; ; ; ; Team Members: ; ; NCAR Staff: Linlin Pan, Wei Yu, and David Gochis ; ; NWC/OWP Staff: Brian Cosgrove, Zhengtao Cui, Cham Pham, and James Taft ; ; ; ; This is a ncl program to perform regridding for the long range forcing. ; ; ; ; Input: source file, weighting file, output file ; ; ; ; Output: regrided cfs ; ; ; ; For non-fatal errors output is witten to $DATA/logs ; ; ; ; Author(s)/Contact(s): Linlin Pan, lpan@ucar.edu ; ; Origination Sept., 2015 ; ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ;---------------------------------------------------------------------- load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl" load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" load "$NCARG_ROOT/lib/ncarg/nclscripts/contrib/ut_string.ncl" ;load "./ESMF_regridding.ncl" load "$NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl" begin ;---------------------------------------------------------------------- ; Source, destination , and weight filenames for generating ; ESMF_regridding weights ;---------------------------------------------------------------------- wgtFileName_conserve = wgtFileName_in if ( .not.isfilepresent( dstGridName ) ) then print( " ... source grid file not found : "+ dstGridName ) exit end if ;---------------------------------------------------------------------- ; read in source and destination grid netCDF files ;---------------------------------------------------------------------- ;--- destination grid data dstfile = addfile( dstGridName ,"r") dlon3d=dstfile->XLONG_M ;(USER'S NEED TO CONFIRM THIS VARIABLE IS WHAT IS IN THEIR DATA FILE) dlat3d=dstfile->XLAT_M ;(USER'S NEED TO CONFIRM THIS VARIABLE IS WHAT IS IN THEIR DATA FILE) dlon2d=dlon3d(0,:,:) dlat2d=dlat3d(0,:,:) dims=dimsizes(dlat2d) outFile = getenv("outFile") ; ;dg NEED TO EDIT INPUT DATA TIME INTERVAL HERE... ; dt=3600.0 ;forcing data timestep in seconds... (USER'S MUST ENTER/CONFIRM THIS IS SET TO DATA TIMESTEP (or INTERVAL)) flag=0 ;WRF - flag for removing accum precip... (DO NOT CHANGE THIS) ;---------------------------------------------------------------------- ; Open source data files to be regridded... ;---------------------------------------------------------------------- ; ;dg NEED TO EDIT INPUT AND OUTPUT DIRECTORIES HERE... ; outdir = "./output_files/" ; directory where output forcing data will be placed. set to dirm for overwriting the original file ; if(.not. isfilepresent(outdir)) then ; system("mkdir "+outdir) ; end if srcfilename = getenv ("srcFile") datfils = systemfunc ("/bin/ls -1 "+srcfilename) ;list of file names num_datfils = dimsizes(datfils) wgtFileName = wgtFileName_in opt = True opt@WgtFileName = wgtFileName opt@CopyVarAtts = True opt@CopyVarCoords = False opt@Debug = True do ifil = 0,num_datfils-1,1 ; loop through datafiles one at a time datfile = addfile( datfils(ifil), "r") print( " ... Open input file : "+ datfils(ifil) ) names = getfilevarnames(datfile) ;---------------------------------------------------------------------- ; Temporary output ;---------------------------------------------------------------------- system("rm -f test.nc") ; ncdf->lat = dlat2d ;output lat ; ncdf->lon = dlon2d ;output lon ;---------------------------------------------------------------------- ; Processing...no further mods should be required... ;---------------------------------------------------------------------- ;do v=6,6 ; print("lv_HTGL2 = "+ datfile->lv_HTGL2) ; print("lv_HTGL5 = "+ datfile->lv_HTGL5) ; print("lv_HTGL9 = "+ datfile->lv_HTGL9) ncdf= addfile(outdir+"/"+outFile,"c") HGT = ESMF_regrid_with_weights(datfile->hgt , wgtFileName, opt) ncdf->HGT = HGT end do ; end do for file loop end